En 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 hacen referencia, pueden utilizarse para simplificar ciertas tareas de gestión de claves. En el software de Microsoft , se utiliza "thumbprint" en lugar de "fingerprint".
Creación de huellas digitales de clave pública
Normalmente, la creación de una huella digital de clave pública se realiza siguiendo 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 pueda recrearse posteriormente, 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. Algunos ejemplos de datos adicionales son: las versiones de protocolo con las que debe utilizarse la clave (en el caso de huellas digitales PGP ); y el nombre del titular de la clave (en el caso de huellas digitales de ancla de confianza X.509 , donde los datos adicionales consisten en un certificado autofirmado X.509 ).
- Los datos generados en el paso anterior se someten a una función hash criptográfica como SHA-1 o SHA-2 .
- Si se desea, la salida de la función hash se puede truncar para obtener una huella digital más corta y práctica.
Este proceso genera una huella digital corta que puede utilizarse para autenticar una clave pública mucho más larga. Por ejemplo, mientras que una clave pública RSA típica tiene una longitud de 2048 bits o más, las huellas digitales MD5 o SHA-1 típicas tienen solo 128 o 160 bits.
Cuando se muestran para su inspección humana, las huellas digitales suelen codificarse en cadenas hexadecimales . Estas cadenas se formatean posteriormente 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 claves
Cuando se recibe una clave pública a través de un canal no confiable, como Internet , el destinatario suele querer autenticarla . Las huellas digitales pueden ayudar a lograrlo, ya que su pequeño tamaño permite transmitirlas a través de 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 contactarlo por teléfono o en persona y pedirle que le lea su huella dactilar o que le entregue un trozo de papel con la huella escrita. Alice puede entonces verificar que esta huella dactilar de confianza coincide con la huella dactilar de la clave pública. Intercambiar y comparar valores de esta manera es mucho más fácil si se trata de huellas dactilares cortas en lugar de claves públicas largas.
Las huellas digitales también pueden ser útiles para automatizar el intercambio o el almacenamiento de datos de autenticación clave. Por ejemplo, si es necesario transmitir datos de autenticación clave mediante un protocolo o almacenarlos en una base de datos donde el tamaño de una clave pública completa representa un problema, entonces intercambiar o almacenar huellas digitales puede ser una solución más viable.
Además, las huellas digitales se pueden consultar en los motores de búsqueda para garantizar que la clave pública que un usuario acaba de descargar sea visible para motores de búsqueda de terceros. Si el motor de búsqueda devuelve resultados que hacen referencia a la huella digital vinculada al sitio o sitios web correctos, se puede tener mayor seguridad de que la clave no está siendo inyectada por un atacante, como en un ataque de intermediario (Man-in-the-middle) .
PGP desarrolló la lista de palabras PGP para facilitar el intercambio de huellas digitales de claves públicas 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 manualmente sus huellas digitales para autenticarse mediante claves. Una vez que un usuario acepta la huella digital de otro, esta (o la clave a la que hace referencia) se almacena localmente junto con el nombre o la dirección del otro usuario, de modo que las futuras comunicaciones con él se autentiquen automáticamente.
En sistemas como la infraestructura de clave pública (PKI) basada en X.509 , las huellas digitales se utilizan principalmente para autenticar las claves raíz. Estas claves raíz emiten certificados que se pueden usar para autenticar las claves de usuario. El uso de certificados elimina la necesidad de verificar manualmente las huellas digitales entre usuarios.
En sistemas como PGP o Groove , las huellas digitales se pueden usar para cualquiera de los enfoques mencionados: para autenticar claves pertenecientes a otros usuarios o claves pertenecientes 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 facilitar este proceso (por ejemplo, en las partes firmantes de claves ).
En sistemas como CGA o SFS y la mayoría de las redes criptográficas peer-to-peer , las huellas digitales se integran en formatos de direcciones y nombres 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 de confianza, este enfoque permite que las huellas digitales se incorporen a ellos. [ 1 ]
En PGP, la mayoría de las claves se crean de tal manera que el llamado "ID de clave" es igual a los 32 o 64 bits inferiores, respectivamente, de una huella digital de clave. PGP utiliza los ID de clave para referirse a las claves públicas con diversos fines. En realidad, no son huellas digitales, ya que su corta longitud impide autenticar de forma segura una clave pública. No se deben usar ID de clave de 32 bits, ya que el hardware actual puede generar un ID de clave de 32 bits que genere una colisión en tan solo 4 segundos. [ 2 ]
Seguridad de las huellas digitales de clave pública
La principal amenaza a 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 genera una huella dactilar que coincide con la de la víctima. El atacante podría entonces presentar su clave pública en lugar de la de la víctima para suplantar su identidad.
Una amenaza secundaria para algunos sistemas es el ataque de colisión , en el que un atacante construye múltiples pares de claves que, al generar su propia huella digital, pueden generar una función hash. Esto puede permitirle refutar las firmas que ha creado o causar otras confusiones.
Para prevenir ataques de preimagen, la función hash criptográfica utilizada para generar una huella digital debe poseer resistencia a la segunda preimagen. Si existe riesgo de ataques de colisión, la función hash también debe ser resistente a colisiones. Si bien es aceptable truncar la salida de la función hash para obtener huellas digitales más cortas y útiles, estas deben ser lo suficientemente largas como para preservar las propiedades relevantes de la función hash frente a ataques de fuerza bruta .
En la práctica, la mayoría de las huellas digitales utilizadas hoy en día se basan en funciones hash MD5 o SHA-1 sin truncar. A partir de 2017, se pueden encontrar colisiones, pero no preimágenes, en MD5 y SHA-1. Por lo tanto, es probable que en el futuro aumente el uso de funciones hash más recientes, como SHA-256 . Sin embargo, las huellas digitales basadas en SHA-256 y otras funciones hash con longitudes de salida largas tienen más probabilidades de estar truncadas que las huellas digitales MD5 o SHA-1 (relativamente cortas).
En situaciones donde la longitud de la huella digital debe minimizarse a toda costa, la seguridad de la huella digital puede reforzarse aumentando el costo de su cálculo. Por ejemplo, en el contexto de las direcciones generadas criptográficamente , esto se denomina "extensión de hash" y requiere que cualquier persona que calcule una huella digital busque una suma hash que comience con un número fijo de ceros, [ 3 ] lo cual se supone que es una operación costosa.
Véase también
Referencias
- ↑ David Mazières ; M. Frans Kaashoek (septiembre de 1998). Escapando de los males del control centralizado con rutas de acceso autocertificables ( 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 digitales GPG
- ↑ Aura, Tumas (marzo de 2005). "Extensión de hash" . Direcciones generadas criptográficamente (CGA) . IETF . sec. 7.2. doi : 10.17487/RFC3972 . RFC 3972. Consultado el 2 de enero de 2018 .
- Criptografía de clave pública
- Algoritmos de huellas dactilares