Firmas y autenticación con GPG

Índice

Firmas electrónicas con GPG

Para firmar un documento:

❯ gpg --detach-sign ficherofirmado.txt 

Para verificar que la firma que se ha recibido es correcta:

❯ gpg --verify doc_p2.txt.sig doc_p2.txt
gpg: Firmado el vie 13 dic 2024 14:30:16 CET
gpg:                usando RSA clave XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Firma correcta de "raulhr <raul@correo.org>" [desconocido]
gpg: ATENCIÓN: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas dactilares de la clave primaria: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX

Al verificar la firma aparece un mensaje que indica que la firma es correcta pero que procede de un par de calves con un nivel de confianza desconocido y, por tanto, no hay certezas de que la firma pertenezca realmente al propietario que ha firmado el documento.

Para evitar que aparezca este aviso, se debe indicar un nivel de confianza para la clave pública del remitente del mensaje, de manera que, al verificar la firma, no haya ninguna duda de que el firmante del documento es quien dice ser.

Firma de claves públcias con GPG

Para descargar las claves públicas de otras personas hay que buscar las claves en el servidor y, a continuación, descargarlas.

❯ gpg --keyserver pgp.rediris.es --search-key kiko@correo.org
❯ gpg --keyserver pgp.rediris.es --recv-key XXXXXXXXXXXXXXX

Después, se edita para modificar el nivel de confianza.

❯ gpg --edit-key XXXXXXXXXXXXXXX
gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: SC  
     confianza: desconocida      validez: desconocida
sub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: E   
[  desconocida ] (1). Kiko <kiko@correo.org>

gpg> trust
pub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: SC  
     confianza: desconocida      validez: desconocida
sub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: E   
[  desconocida ] (1). Kiko <kiko@correo.org>

Por favor, decida su nivel de confianza en que este usuario
verifique correctamente las claves de otros usuarios (mirando
pasaportes, comprobando huellas dactilares en diferentes fuentes...)

  1 = No lo sé o prefiero no decirlo
  2 = NO tengo confianza
  3 = Confío un poco
  4 = Confío totalmente
  5 = confío absolutamente
  m = volver al menú principal

¿Su decisión? 5
¿De verdad quiere asignar absoluta confianza a esta clave? (s/N) s

pub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: SC  
     confianza: absoluta      validez: absoluta
sub  rsa3072/XXXXXXXXXXXXXXX
     creado: 2024-12-13  caduca: 2026-12-13  uso: E   
[  absoluta ] (1). Kiko <kiko@correo.org>

Finalmente, tras firmar la clave, se devuelve a su propietario firmada.

Por otra parte, cuando la clave propia ha recibido varias firmas de otras personas se vuelve a subir al servidor de claves. Así, cuando alguien la descargue verá que es una clave de confianza sin confía también en alguno de los firmantes.

❯ gpg --keyserver pgp.rediris.es --send-keys 6E42360E895488ED

Para ver las firmas que tiene una clave se usa la opción --list-sigs del comando gpg.

❯ gpg --list-sig 4A914508FF0E1A5087F727166E42360E895488ED
pub   rsa3072 2024-12-12 [SC] [caduca: 2026-12-12]
      4A914508FF0E1A5087F727166E42360E895488ED
uid        [  absoluta ] Javi Huete <Javi@correo.org>
sig 3        6E42360E895488ED 2024-12-12  Javi Huete <Javi@correo.org>
sig          XXXXXXXXXXXXXXX 2024-12-13  Kiko <kiko@correo.org>
sig          XXXXXXXXXXXXXXX 2024-12-15  Juan Pineda <juan@correo.org
sig          XXXXXXXXXXXXXXX 2024-12-16  Alejandro <alejandro@correo.com>
sub   rsa3072 2024-12-12 [E] [caduca: 2026-12-12]
sig          XXXXXXXXXXXXXXX 2024-12-12  Javi Huete <Javi@correo.org>

Después de haber firmado la clave pública de otra persona y haber indicado el nivel de confianza como “absoluta”, la verificación de su firma no devuelve ningún mensaje de advertencia.

❯ gpg --verify doc_p2.txt.sig doc_p2.txt
gpg: Firmado el vie 13 dic 2024 14:30:16 CET
gpg:                usando RSA clave XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Firma correcta de "raulhr <raul@correo.org>" [absoluta]

Aunque una clave pública no esté verificada en mi anillo de claves, las claves públicas de quienes han firmado su clave sí tienen mi confianza en el keyring. Así, al verificar la firma de un documento de esta persona, la confianza es “total” aunque yo no haya firmado su clave.

❯ gpg --verify validado.txt.sig validado.txt
gpg: Firmado el mié 18 dic 2024 08:53:38 CET
gpg:                usando RSA clave XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Firma correcta de "Iván <ivan@correo.org>" [total]
comments powered by Disqus

Relacionados

Qué es ARP y cómo funciona

El protocolo de resolución de direcciones (ARP) es el protocolo de comunicaciones responsable de encontrar la dirección MAC que corresponde a una determinada dirección IP. Lo hace a través de un conjunto de tramas de petición y respuesta.

Leer

Gestión de almacenamiento en Openstack

En este post se muestran algunos ejemplos de funcionamiento del cliente de OpenStack para la gestión del almacenamiento.

Leer

Instalación de Debian 12 bajo LVM en Proxmox

Proxmox Virtual Environment, o Proxmox VE, entorno de virtualización de servidores de código abierto basado en Debian. En este post se usa este entorno para crear una máquina virtual en la que se instala un sistema operativo Debian 12 bajo volúmenes lógicos (lvm).

Leer