A medida que muchas organizaciones pasan de los documentos en papel a los documentos digitales, se requieren firmas digitales para administrar cualquier documento digital confidencial. Las firmas digitales se pueden usar para autenticar la fuente del mensaje, de modo que el receptor pueda decidir si confiar o no en el remitente. Hoy en día, se usa más ampliamente para la distribución de software y las transacciones financieras.
En la criptografía de clave pública, es posible utilizar una clave privada para firmar un archivo. Cualquiera que tenga la clave pública correspondiente puede verificar si el archivo fue firmado por la clave privada. Cualquiera que no tenga la clave privada no puede falsificar dicha firma.
Las firmas digitales se pueden usar para la autenticación del remitente y el no repudio. El firmante no puede alegar que no firmó el documento.
Hoy en día, las firmas digitales juegan un papel clave en la distribución de software. Cuando instala cualquier software de debian mirror, una vez que se descarga el software, verificará si el software proviene de una fuente confiable mediante la verificación de la firma, lo que garantiza que el paquete proviene de una fuente confiable.
Ahora, veremos los diversos métodos para firmar documentos usando la herramienta GnuPG.
Si es nuevo en la herramienta GnuPG, primero debe comprender cómo usar los comandos gpg básicos.
Una firma digital, certifica y marca de tiempo un documento. Si el documento se modifica de alguna manera, la verificación de la firma fallará.
1. Crear firma digital para un archivo
Para firmar digitalmente un documento se utiliza la opción de firmar. Se le pedirá que ingrese su contraseña para desbloquear la clave privada que se usa para firmar el documento.
$ gpg --sign file.txt You need a passphrase to unlock the secret key for user: "lakshmanan (This is lakshmans key) " 2048-bit RSA key, ID 3630F8D6, created 2012-12-30 Enter passphrase:
Ahora creará un archivo llamado "archivo.txt.gpg" en formato binario. El archivo de entrada se comprime antes de firmar el archivo.
2. Verificar firma digital
Dado un documento firmado, puede verificar la firma usando la opción -verify.
$ gpg --verify file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
El comando anterior verifica que la firma realizada sea buena.
3. Extraiga el documento del archivo
Para extraer el documento original del archivo firmado, utilice la opción –descifrar. Puede usar –output para especificar el archivo de salida para almacenar el contenido real del archivo.
$ gpg --output doc.txt --decrypt file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Ahora el documento real se guardará en el archivo doc.txt.
4. Para borrar firmar los documentos
Un uso común de las firmas digitales es enviar correos electrónicos. En tal caso, no es deseable comprimir el archivo en binario y firmarlo. Puede usar la opción –clearsign para envolver el archivo con firmas blindadas ASCII.
$ gpg --output file.sig --clearsign file.txt
Ahora se creará un archivo ASCII llamado file.sig que contiene la firma digital y el archivo en sí.
$ cat file.sig -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This is a test file -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAEBAgAGBQJQ8af1AAoJEHUf3BE2MPjWJ6QIAIoM7vZlvVD4PR4TgqKkUAr5 S4Pc/7tjkEquBcPfzHgm6MPdTd7kIvUzwHNkkST0FyB2cLzvx8wNf7Zp/kDYL0Uz /7UCocMPsDBYHasUY4XRfCDUkF0ER/NAFdiL9AUTvQf6oQxwuQG9sWxb6tcK8eiV U7BBvQvMl6RszP+e7VXgcDbNeYMrTDwrivP9BKwAFuBtZmRg0vQKnjenUyVJL6gJ tndkwtOd1XGpc5ZKCTRSKOoTonuUQAD1q0Pi6nmeaNskSqwVOxzQcV6lQ8nHJTh2 XfKSAopNriv405YfC1KO5H2Ffzee2jx+o3HqxfU1vQbHtP7uf4QqxUc2HtDnRNQ= =PN+K -----END PGP SIGNATURE-----
Verificar el documento claro firmado es similar a verificar el documento binario firmado.
5. Crear firma separada
En caso de firmas separadas, se crea un nuevo archivo como firma. Puede usar la opción –detach-sign para crear una firma separada.
$ gpg --armor --detach-sig file.txt
Ahora se creará un archivo ASCII llamado file.txt.asc que contiene la firma separada. Puede usar –output para cambiar el nombre del archivo de firma separado.
6. Verifica la firma separada
Para verificar una firma separada, debe tener tanto el archivo de firma como el archivo de datos.
$ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Intentemos editar el archivo.txt. Agregue algo de contenido al archivo.txt e intente verificar la firma.
$ echo "Append" >> file.txt $ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: BAD signature from "lakshmanan (This is lakshmans key) "
Ahora la verificación falló diciendo firma INCORRECTA ya que se modificó el contenido.
7. Cifrar y firmar un documento
En una de nuestras publicaciones anteriores, también discutimos en detalle cómo cifrar y descifrar un archivo usando GnuPG. Pero, si desea cifrar y firmar un documento al mismo tiempo, haga lo siguiente:
$ gpg --sign --encrypt --recipient raman file.txt
El comando anterior encripta el archivo.txt y firma el documento digitalmente. El destinatario puede verificar la firma y descifrar el documento usando la opción de descifrado.