En la criptografía de clave pública , una huella digital de clave pública es una secuencia corta de bytes que se utiliza para identificar una clave pública más larga . Las huellas digitales se crean aplicando una función hash criptográfica a una clave pública. Dado que las huellas digitales son más cortas que las claves a las que se refieren, se pueden utilizar para simplificar determinadas tareas de gestión de claves. En el software de Microsoft , se utiliza "huella digital" en lugar de "huella digital".
Creación de huellas digitales de clave pública
Una huella digital de clave pública generalmente se crea mediante los siguientes pasos:
- Una clave pública (y opcionalmente algunos datos adicionales) se codifica en una secuencia de bytes. Para garantizar que la misma huella digital se pueda volver a crear más tarde, la codificación debe ser determinista y cualquier dato adicional debe intercambiarse y almacenarse junto con la clave pública. Los datos adicionales suelen ser información que cualquier persona que utilice la clave pública debería conocer. Ejemplos de datos adicionales incluyen: con qué versiones de protocolo se debe usar la clave (en el caso de huellas dactilares PGP ); y el nombre del titular de la clave (en el caso de huellas dactilares de ancla de confianza X.509 , donde los datos adicionales consisten en un certificado autofirmado X.509 ).
- Los datos producidos en el paso anterior se procesan con una función hash criptográfica como SHA-1 o SHA-2 .
- Si lo desea, la salida de la función hash se puede truncar para proporcionar una huella digital más corta y conveniente.
Este proceso produce una huella digital corta que se puede utilizar para autenticar una clave pública mucho más grande. Por ejemplo, mientras que una clave pública RSA típica tendrá 2048 bits de longitud o más, las huellas digitales MD5 o SHA-1 típicas tienen solo 128 o 160 bits de longitud.
Cuando se muestran para inspección humana, las huellas digitales generalmente se codifican en cadenas hexadecimales . A continuación, estas cadenas se formatean en grupos de caracteres para facilitar su lectura. Por ejemplo, una huella digital MD5 de 128 bits para SSH se mostraría de la siguiente manera:
43: 51: 43: a1: b5: fc: 8b: b7: 0a: 3a: a9: b1: 0f: 66: 73: a8
Uso de huellas digitales de clave pública para la autenticación de clave
Cuando se recibe una clave pública a través de un canal que no es de confianza, como Internet , el destinatario a menudo desea autenticar la clave pública. Las huellas dactilares pueden ayudar a lograr esto, ya que su pequeño tamaño les permite pasar por canales confiables donde las claves públicas no caben fácilmente.
Por ejemplo, si Alice desea autenticar una clave pública como perteneciente a Bob, puede contactar a Bob por teléfono o en persona y pedirle que le lea su huella dactilar, o darle un trozo de papel con la huella dactilar escrita. Luego, Alice puede verificar que esta huella digital de confianza coincida con la huella digital de la clave pública. Intercambiar y comparar valores como este es mucho más fácil si los valores son huellas digitales cortas en lugar de claves públicas largas.
Las huellas dactilares también pueden ser útiles al automatizar el intercambio o el almacenamiento de datos de autenticación de claves. Por ejemplo, si los datos de autenticación de claves deben transmitirse a través de un protocolo o almacenarse en una base de datos donde el tamaño de una clave pública completa es un problema, el intercambio o el almacenamiento de huellas digitales puede ser una solución más viable.
Además, las huellas dactilares se pueden consultar con motores de búsqueda para garantizar que la clave pública que un usuario acaba de descargar pueda ser vista por motores de búsqueda de terceros. Si el motor de búsqueda devuelve resultados que hacen referencia a la huella digital vinculada a los sitios adecuados, uno puede sentirse más seguro de que la clave no está siendo inyectada por un atacante, como un ataque Man-in-the-middle .
PGP desarrolló la lista de palabras PGP para facilitar el intercambio de huellas dactilares de clave pública a través de canales de voz.
Huellas digitales de clave pública en la práctica
En sistemas como SSH, los usuarios pueden intercambiar y verificar huellas digitales manualmente para realizar la autenticación de clave. Una vez que un usuario ha aceptado la huella digital de otro usuario, esa huella digital (o la clave a la que se refiere) se almacenará localmente junto con un registro del nombre o la dirección del otro usuario, de modo que las comunicaciones futuras con ese usuario puedan autenticarse automáticamente.
En sistemas como PKI basado en X.509 , las huellas digitales se utilizan principalmente para autenticar claves raíz. Estas claves raíz emiten certificados que se pueden utilizar para autenticar claves de usuario. Este uso de certificados elimina la necesidad de una verificación manual de huellas dactilares entre usuarios.
En sistemas como PGP o Groove , las huellas dactilares se pueden usar para cualquiera de los enfoques anteriores: se pueden usar para autenticar claves que pertenecen a otros usuarios o claves que pertenecen a autoridades emisoras de certificados. En PGP, los usuarios normales pueden emitir certificados entre sí, formando una red de confianza , y las huellas digitales se utilizan a menudo para ayudar en este proceso (por ejemplo, en las partes de firma de claves ).
En sistemas como CGA o SFS y la mayoría de las redes peer-to-peer criptográficas , las huellas digitales están integradas en formatos de nombre y dirección preexistentes (como direcciones IPv6 , nombres de archivos u otras cadenas de identificación). Si las direcciones y los nombres ya se intercambian a través de canales confiables, este enfoque permite que las huellas dactilares se acumulen en ellos. [1]
En PGP, la mayoría de las claves se crean de tal manera que lo que se denomina "ID de clave" es igual a los 32 o 64 bits inferiores, respectivamente, de una huella digital de clave. PGP usa ID de clave para referirse a claves públicas para una variedad de propósitos. Estas no son, propiamente hablando, huellas dactilares, ya que su corta longitud les impide poder autenticar de forma segura una clave pública. Los ID de clave de 32 bits no deben usarse ya que el hardware actual puede generar un ID de clave de 32 bits en solo 4 segundos. [2]
Seguridad de las huellas dactilares de la clave pública
La principal amenaza para la seguridad de una huella dactilar es un ataque de segunda preimagen , en el que un atacante construye un par de claves cuya clave pública codifica una huella dactilar que coincide con la huella dactilar de la víctima. El atacante podría entonces presentar su clave pública en lugar de la clave pública de la víctima para hacerse pasar por la víctima.
Una amenaza secundaria para algunos sistemas es un ataque de colisión , en el que un atacante construye varios pares de claves que codifican su propia huella digital. Esto puede permitir a un atacante repudiar las firmas que ha creado o causar otra confusión.
Para evitar ataques de preimagen, la función hash criptográfica utilizada para una huella digital debe poseer la propiedad de resistencia a la segunda preimagen. Si los ataques de colisión son una amenaza, la función hash también debe poseer la propiedad de resistencia a colisiones. Si bien es aceptable truncar la salida de la función hash en aras de huellas dactilares más cortas y utilizables, las huellas dactilares truncadas deben ser lo suficientemente largas para preservar las propiedades relevantes de la función hash contra ataques de búsqueda por fuerza bruta.
En la práctica, la mayoría de las huellas dactilares que se utilizan habitualmente en la actualidad se basan en hashes MD5 o SHA-1 no truncados. A partir de 2017, se pueden encontrar colisiones pero no preimágenes en MD5 y SHA-1. Por lo tanto, es probable que el futuro traiga un uso cada vez mayor de funciones hash más nuevas, como SHA-256 . Sin embargo, es más probable que las huellas dactilares basadas en SHA-256 y otras funciones hash con longitudes de salida largas se trunquen que las huellas dactilares MD5 o SHA-1 (relativamente cortas).
En situaciones en las que la longitud de la huella dactilar debe minimizarse a toda costa, la seguridad de la huella dactilar se puede incrementar aumentando el costo de cálculo de la huella dactilar. Por ejemplo, en el contexto de las direcciones generadas criptográficamente , esto se llama "Extensión Hash" y requiere que cualquiera que calcule una huella digital busque una suma hash comenzando con un número fijo de ceros, [3] que se supone que es una operación costosa.
Ver también
Referencias
- ^ David Mazières ; M. Frans Kaashoek (septiembre de 1998). Escapando de los males del control centralizado con nombres de ruta de autocertificación ( PostScript ) . Actas del 8º taller europeo ACM SIGOPS: Soporte para la composición de aplicaciones distribuidas. Sintra, Portugal: MIT . Consultado el 23 de diciembre de 2006 .
- ^ Evil 32: Comprueba tus huellas dactilares GPG
- ^ Aura, Tumas (marzo de 2005). "Extensión Hash" . Direcciones generadas criptográficamente (CGA) . IETF . segundo. 7.2. doi : 10.17487 / RFC3972 . RFC 3972 . Consultado el 2 de enero de 2018 .