Cómo se relacionan la huella digital y las identificaciones de clave larga y corta
Cada clave OpenPGP tiene una huella digital adjunta, calculada principalmente a partir de su paquete de claves públicas que también contiene el tiempo de creación. El cálculo se define en RFC 4880, OpenPGP, 12.2. Identificación de claves y huellas digitales .
Hay identificadores de clave cortos y largos, que se parecen a los 32 bits respectivos de la huella digital. Por ejemplo, mirando los ID de mi clave OpenPGP:
fingerprint: 0D69 E11F 12BD BA07 7B37 26AB 4E1F 799A A4FF 2279
long id: 4E1F 799A A4FF 2279
short id: A4FF 2279
Se utilizan las huellas dactilares y las ID de clave, ya que compartir y comparar una clave completa con, por lo general, 1024 a 8096 bits (agregando algunos más para los encabezados como la fecha de creación) es muy impráctico.
Uso de ID de clave larga
Siempre que especifique claves OpenPGP, no solo puede pasar identificadores de clave cortos, sino también identificadores de clave largos e incluso huellas dactilares completas. En lugar de pasar el ID de clave corta
gpg --recv-keys A4FF2279
siempre puedes escribir la ID de clave larga
gpg --recv-keys 4E1F799AA4FF2279
o incluso la huella digital completa (recomendada para scripts y propósitos similares)
gpg --recv-keys 0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
Imprimir ID de clave larga
¿Pero desde dónde tomar la ID de clave larga? Si alguien pasó su ID corta, no puede hacer nada más que intentar obtener todas las claves para esa ID y ver si hay una colisión (y esperar que nadie le esté ocultando la clave real, y solo pasar la falsa).
Entonces, cada vez que entregue su ID de clave OpenPGP, ¡anuncie la ID larga! Puede hacer que GnuPG imprima este fácilmente agregando la opción --keyid-format long
:
gpg --keyid-format long --list-keys [email protected]
Esta opción toma los valores short
o 0xshort
para las ID de clave corta (sin o con 0x
prefijado para indicar que es un número hexadecimal) y long
o 0xlong
para las ID de clave larga.
Configuración de ID de clave larga como predeterminadas
Para asegurarse de que GnuPG siempre esté imprimiendo la ID de clave larga, agregue la opción a su archivo ~/.gnupg/gpg.conf
eliminando el --
. Por ejemplo, he configurado GnuPG para que siempre imprima el ID de clave larga prefijada 0x
-prefigurado agregando una línea
keyid-format 0xlong
Imprimiendo la huella digital
Lamentablemente, no puede configurar GnuPG para que imprima toda la huella digital de esta manera, probablemente porque rompería el formato de salida de GnuPG para casi todos los tamaños de pantalla. En su lugar, solicítelo ejecutando
gpg --fingerprint 4E1F799AA4FF2279
que volcará algo como
pub 8192R/0x4E1F799AA4FF2279 2012-12-25
Key fingerprint = 0D69 E11F 12BD BA07 7B37 26AB 4E1F 799A A4FF 2279
Como esto tiene la desventaja de contener espacios (cosa mala para usarlos en las secuencias de comandos), podría usar la salida legible por máquina delimitada por dos puntos:
gpg --with-colons --fingerprint 4E1F799AA4FF2279
Para filtrar todo menos la huella dactilar, también usa grep
y cut
:
gpg --with-colons --fingerprint 4E1F799AA4FF2279 | grep fpr | cut -d ':' -f 10