Firmas y autenticación con GPG
- Javi Huete
- Seguridad
- January 14, 2025
Í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]