La herramienta GPG permite realizar la firma de archivos utilizando una pareja de claves privada y pública que tengamos generadas con esa misma herramienta.
Recuerda que para comprobar las firmas que tienes instaladas en tu ordenador puedes utilizar las opciones -k (para mostrar las claves públicas) y -K (para mostrar las claves privadas).
Utilizando tu clave privada puedes firmar cualquier tipo de archivo. Cuando otra persona reciba tu documento firmado, esa otra persona debe tener tu clave pública para verificar que el documento recibido realmente es tuyo y que le ha llegado en perfectas condiciones.
Firma de documentos de texto plano
Si dispones de un documento de texto, y sólo quieres que incluya tu firma, sin cifrar su contenido, debes usar la opción --clearsign seguido del nombre del archivo que quieres firmar:
{code class="brush:plain;gutter:false"}
gpg --clearsign nombreArchivoFirmar
{/code}
Por ejemplo, si dispones de un archivo como el siguiente:
Al firmarlo, te solicita la contraseña de tu clave privada y genera otro archivo con el mismo nombre y la extensión .asc:
En el contenido del nuevo archivo puedes comprobar que se divide en dos partes:
- Contenido original del documento (BEGIN PGP SIGNED MESSAGE)
- Código correspondiente a tu firma digital (BEGIN ... END PGP SIGNATURE)
Verificación de la firma de un archivo
Cuando otra persona, que tiene nuestra clave pública, reciba un archivo formado por nosotros, o bien, si nosotros queremos comprobar un archivo que nos manda firmada otra persona y tenemos su clave pública, podemos verificar la firma y que el archivo está correcto indicando simplemente el nombre del archivo o con la opción --verify seguido del nombre del archivo firmado a verificar:
{code class="brush:plain;gutter:false"}
gpg nombreArchivoFirmado
gpg --verify nombreArchivoFirmado
{/code}
Firma a un archivo ilegible
Si deseas que el contenido del archivo que se encuentra firmado sólo pueda ser leído por el destinatario, o si se trata de un archivo binario (imagen, vídeo, etc) que no contiene información de texto plano visible, sólo deberás indicar la opción -s (--sign) al generar el archivo firmado.
{code class="brush:plain;gutter:false"}
gpg --sign nombreArchivoFirmar
{/code}
Es este caso se genera un archivo con la extensión gpg que si se intenta mostrar ofrecerá un contenido como el de la imagen:
Generación de firma en un archivo separado
Si se desea mantener intacto el archivo orginal, pero que vaya acompañado de otro archivo con una firma digital, debes usar la opción --detach-sign (-b). De esta manera se crea un archivo con la extensión sig que contiene la firma. En este caso debes recordar que si quieres enviar el archivo firmado, debes enviar los dos archivos, el original y el que contiene la firma (sig).
{code class="brush:plain;gutter:false"}
gpg --detach-sign nombreArchivoFirmar
{/code}