GNU/Linux >> Tutoriales Linux >  >> Linux

Firmas digitales con GnuPG

En un artículo anterior, presenté GnuPG mediante la verificación de un archivo firmado y el cifrado de un archivo para un destinatario mediante el uso de una clave pública. También he compartido cómo crear un par de claves y exportar una clave pública para que podamos recibir mensajes cifrados. En este artículo, demostraré cómo firmar archivos antes de compartirlos por correo electrónico o publicarlos en un sitio web.

Con GnuPG, existen múltiples métodos para firmar un archivo.

$ gpg --help | grep -i sign
Sign, check, encrypt or decrypt
 -s, --sign          make a signature
     --clear-sign     make a clear text signature
 -b, --detach-sign   make a detached signature
     --verify          verify a signature

A medida que se discuta cada opción, firmaré un archivo de texto simple.

$ cat sample.txt 
Sample text for gpg signing

Hacer una firma

Con el --sign opción, el archivo se cifra efectivamente con la clave privada. La clave pública es necesaria para ver el contenido del archivo. Esto obliga al destinatario a verificar el origen y elimina cualquier contenido de texto claro del tránsito. No es privado ya que cualquier persona con la clave pública puede descifrar el archivo.

$ gpg -s sample.txt

Esto da como resultado un archivo llamado sample.txt.gpg.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data

Para verificar solo la firma, use --verify opción. Para ver el contenido y mostrar la verificación de la firma, use --decrypt opción.

$ gpg --decrypt sample.txt.gpg 
Sample text for gpg signing

gpg: Signature made Sat 30 May 2020 09:16:24 AM EDT
gpg:             using DSA key 15AC***********
...omitted...

Hacer una firma separada

La opción de firma separada está disponible para brindar a todos la opción de ver el mensaje sin tener la clave pública. Esto crea un archivo de firma separado que se usa para verificar el mensaje original si se desea. En su forma más simple, este archivo contiene un hash del mensaje original y está encriptado con la clave privada. Cualquiera que tenga la clave pública puede abrir la firma y luego comparar hashes para verificar la integridad del archivo firmado.

Cree el archivo de firma utilizando --detach-sign opción.

$ gpg -b sample.txt

El resultado es un .sig separado. archivo de datos.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data
sample.txt.sig: data

Si no desea compartir, publicar o enviar por correo electrónico un archivo de datos, puede firmar el archivo con --armor y creará un archivo de texto ASCII con la firma. También utilizará el .asc extensión en lugar de .sig extensión:

$ cat sample.txt.asc 
-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJ
dC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8=
=IvP/
-----END PGP SIGNATURE-----

El archivo de texto sin formato original y el archivo de firma independiente deben estar disponibles para el destinatario.

Para verificar la firma, especifique el archivo de firma y luego el archivo original.

$ gpg --verify sample.txt.sig sample.txt

Si se han utilizado los nombres predeterminados, puede omitir el nombre del archivo sin cifrar.

$ gpg --verify sample.txt.sig 
gpg: assuming signed data in 'sample.txt'
gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT
...omitted...

Hacer una firma de texto claro

El --clear-sign La opción es una opción más nueva en términos de la larga historia de GPG y es muy común para los archivos publicados en sitios web como los archivos de descarga CHECKSUM de Fedora. Los contenidos son legibles por cualquier persona. La información de la firma también está disponible en el mismo archivo para aquellos que quieran verificar el origen e integridad de los contenidos.

El --clear-sign la opción creará un nuevo archivo con .asc extensión.

$ gpg --clear-sign sample.txt
$ file sample*
sample.txt:     ASCII text
sample.txt.asc: ASCII text
sample.txt.gpg: data
sample.txt.sig: data

Para verificar la firma, use --verify opción:

$ gpg --verify sample.txt.asc 
gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT
...omitted...
gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!

Tenga en cuenta que se muestra un mensaje durante el proceso de verificación advirtiendo que el archivo original asociado no está verificado. Puede cambiar el nombre de este archivo antes de publicarlo en su sitio web. La verificación seguirá comprobando el contenido del archivo.

Si bien este suele ser el método más conveniente para los consumidores de sus productos, hay una advertencia en la página del manual de GPG que indica que las firmas separadas son la mejor opción cuando se requiere una verificación completa.

Desde la página man de gpg:

Nota:Al verificar una firma de texto simple, GPG verifica solo lo que constituye los datos firmados de texto simple y no cualquier dato adicional fuera de la firma de texto simple o las líneas del encabezado que siguen directamente a la línea del marcador de guión. La opción --output se puede usar para escribir los datos reales firmados, pero también hay otras trampas con este formato. Se sugiere evitar firmas de texto claro en favor de firmas separadas.

Usar un par de llaves específico

Todos los ejemplos anteriores se firmaron con la primera clave privada disponible en mi conjunto de claves. Es posible que desee utilizar una clave diferente cuando estoy firmando un archivo para su publicación en un sitio web. Se crea un par de claves específicamente para el proyecto o producto. El par de claves puede incluso estar en un nuevo llavero compartido.

$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>

Cuando un archivo está firmado o encriptado, asegúrese de especificar también el --keyring opción.

Incluso si solo una persona está usando la clave para firmar archivos, haga un par de claves separado para usar para firmar. No utilice la misma clave para otras tareas diarias, como el cifrado de correo electrónico personal. Puede enumerar los nombres de claves privadas disponibles con gpg --list-secret . La identificación, el nombre o el correo electrónico se pueden usar para identificar la llave.

Para firmar el archivo con una clave específica de un conjunto de claves, use el --local-user opción de identidad.

$ gpg --local-user "My Project 2" --clear-sign sample.txt

Terminar

Si su archivo de texto simple es una lista de hashes de suma de verificación para las descargas de sus productos, ese archivo, cualquier archivo de firma y la clave pública utilizada para verificar las firmas se pueden publicar en un sitio web. Los consumidores pueden verificar las descargas antes de instalar cualquier software en sus sistemas.

[ ¿Quiere obtener más información sobre seguridad? Consulte la lista de verificación de cumplimiento y seguridad de TI. ]


Linux
  1. Vim:¿Crear archivo con +x bit?

  2. ¿Reemplazar nueva línea con Nul?

  3. Verifique los permisos de archivos de Linux con ls

  4. Cómo firmar digitalmente un archivo en Linux usando GnuPg (firmas digitales)

  5. Trazar archivo .gnu con gnuplot

Toca una orquesta digital con Linux Sampler

Comando de cola de Linux con ejemplos

Comando WC de Linux con ejemplos

Encuentra archivos perdidos con Scalpel

Uso del comando Linux mv con ejemplos

¿Cómo rellenar un archivo con FF usando dd?