¿Qué es una ID de clave OpenPGP / GnuPG?

25

Entiendo la utilidad del bloque de teclas en sí y de un hash de la clave, pero no sé por qué sería necesaria información adicional, por lo que no puedo comenzar a adivinar la utilidad de un bit de información adicional.

Específicamente,

  • ¿Qué significa
  • donde se usa, y
  • (¿cómo) se puede determinar dado el bloque de clave pública?

Suele mencionarse de forma tangencial y de pasada, lo que genera confusión, ya que claramente la caminata espacial reconoce una diferencia entre la huella digital y la identificación , mientras que parte de la documentación de GPG presentada por Fedora incluye la frase

Para KEYNAME, sustituya la ID de clave o la huella digital de su par de claves principal,

lo que hace que parezca que los dos comparten el mismo propósito; pero eso no tiene sentido porque si ese fuera el caso, ¿por qué necesitarías ambos para empezar?

Tiro de Partia
fuente
La utilidad gpg le permite especificar, ya sea para su conveniencia. Si especifica una huella digital, buscará la huella digital y si especifica la ID, buscará una ID que sea igual o contenga la cadena que especifique. La identificación es a menudo un identificador legible por humanos para la clave. La huella digital en general se describe en en.wikipedia.org/wiki/Public_key_fingerprint . ¿Cuál es el problema que realmente tienes?
Jason C
@JasonC Spacewalk quiere una ID, así como una huella digital y una URL para el bloque de claves, pero los repositorios (por ejemplo, EPEL ) solo proporcionan el bloque de claves. Ahora, sé que puedo obtener la huella digital simplemente tomando un hash del bloque de teclas, pero no sé si se supone que debo obtener la identificación de otro lugar, decidir sobre una y cargarla en una base de datos antes de decirle caminata espacial al respecto, o simplemente invente uno para la caminata espacial. Básicamente, es un problema de caminata espacial que se vuelve mucho más fácil una vez que sé más sobre cómo se usan las ID de GPG.
Parthian Shot
@JasonC Más sucintamente: descargaré RPM firmados, y todo lo que tengo es el bloque de teclas, así que necesito saber si decido sobre una ID o si el emisor decide sobre una ID.
Parthian Shot
¿ Siguió las instrucciones de instalación de EPEL / Spacewalk de fedorahosted.org/spacewalk/wiki/HowToInstall#EPELrepository o wiki.centos.org/HowTos/PackageManagement/… y Spacewalk realmente no puede administrar los paquetes de EPEL? ¿ Es relevante access.redhat.com/site/solutions/308983 ?
Jason C
1
Si funciona sin que lo completes, entonces sabe cómo administrarlo sin que lo especifiques, y completarlo no es útil. Sin embargo, visite web.archive.org/web/20130821232554/http://centosforge.com/node/… que le indica cómo obtener una huella digital e identificación para Spacewalk. Instrucciones similares en darkoperator.com/blog/2011/12/16/… . Más información en google.com/search?q=spacewalk%20package%20key%20id
Jason C

Respuestas:

29

De RFC 4880 :

Una huella digital V4 es el hash SHA-1 de 160 bits del octeto 0x99, seguido de la longitud del paquete de dos octetos, seguido del paquete completo de clave pública que comienza con el campo de versión. La ID de clave son los 64 bits de orden inferior de la huella digital.

Para las claves V3, el cálculo es similar, pero se omite la longitud de la clave.

En otras palabras, la huella digital se calcula a partir de una constante, la longitud del paquete y, finalmente, una parte del paquete de clave pública. Explicación adicional sobre lo que está incluido (y, por lo tanto, cómo calcularlo) en el RFC vinculado.

La identificación de la clave (larga) está representada por los 64 bits más bajos, y se usa porque la huella digital completa es un valor largo y poco elegante. Aún más a menudo, se utiliza la identificación de clave corta formada por los 32 bits de orden más bajo. A menudo se considera que estas ID de clave corta tienen una probabilidad demasiado alta de colisiones y el uso de al menos la ID larga, si no se recomienda incluso la huella digital completa.

Recapitulado en pocas palabras:

La huella digital es el valor hash calculado a partir del paquete de clave pública. Las ID clave son parte de la huella digital:

Fingerprint: 0D69 E11F 12BD BA07 7B37  26AB 4E1F 799A A4FF 2279
Long key ID:                                4E1F 799A A4FF 2279
Short key ID:                                         A4FF 2279

A veces, los ID tienen el prefijo 0xya que son valores hexadecimales.

Jens Erat
fuente
1
Enlace muy útil a la información sobre colisiones, gracias. Es posible que desee cambiar la respuesta para decir que incluso las teclas largas son falsificables y, por lo tanto, no se recomiendan.
zkilnbqi
Si bien las ID de clave corta se falsifican con mucha facilidad, las ID de clave larga son 2 ^ 32 veces más difíciles de colisionar y aún se consideran apropiadas. Incluso las huellas digitales se pueden falsificar, incluso son aún más difíciles de falsificar (debido a la gran cantidad de posibles huellas digitales).
Jens Erat
1
Me convenció el enlace que incluiste en tu respuesta. Ahora mi firma dice "[email protected] pgp.mit.edu ID a partir del 22/03/2015" Tiene mucho más sentido. Si alguien quiere enviarle un mensaje cifrado o verificar que ha firmado uno, tendrá que encontrar su clave pública en el servidor de claves de todos modos, por lo que no hay ninguna ventaja en usar la ID de la clave.
zkilnbqi