Funciones Hash Criptográficas
Una función hash criptográfica comprime una entrada arbitraria en un resumen corto de longitud fija de una manera unidireccional y resistente a colisiones, sirviendo como un bloque de construcción básico para la integridad, la autenticación y muchos protocolos de nivel superior.
Definition
Una función hash criptográfica es una función determinista que mapea entradas de longitud arbitraria a una salida de longitud fija (resumen) de tal manera que es inviable encontrar una preimagen, una segunda preimagen o dos entradas distintas que produzcan la misma salida.
Scope
Este tema cubre las propiedades de seguridad de las funciones hash (resistencia a preimagen, segunda preimagen y colisión), sus construcciones internas (Merkle-Damgaard, esponja), las familias estandarizadas SHA-2 y SHA-3, y aplicaciones como la verificación de integridad, el almacenamiento de contraseñas, el compromiso y la prueba de trabajo. Aborda ataques criptoanalíticos, incluyendo el límite de cumpleaños y las rupturas de MD5 y SHA-1. Excluye los códigos de autenticación con clave, que se tratan en códigos de autenticación de mensajes, aunque muchos MAC se construyen a partir de funciones hash.
Core questions
- ¿Qué distingue una función hash criptográfica de una suma de verificación ordinaria o una función de tabla hash?
- ¿Por qué la resistencia a preimagen, segunda preimagen y colisión son distintas, y cómo se relacionan?
- ¿Por qué la paradoja del cumpleaños limita la resistencia a colisiones a la mitad de la longitud del resumen?
- ¿Cómo extienden las construcciones Merkle-Damgaard y de esponja una compresión de tamaño fijo a una entrada arbitraria?
- ¿Cómo se utilizan las funciones hash para comprometer datos, verificar la integridad y almacenar contraseñas?
Key concepts
- resumen del mensaje
- resistencia a preimagen
- resistencia a segunda preimagen
- resistencia a colisiones
- ataque de cumpleaños
- construcción Merkle-Damgaard
- construcción de esponja (Keccak)
- ataque de extensión de longitud
- prueba de trabajo
Key theories
- Resistencia a colisiones y el límite de cumpleaños
- Debido a la paradoja del cumpleaños, un ataque genérico de búsqueda de colisiones en un hash de n bits tiene éxito en aproximadamente 2^(n/2) operaciones; por lo tanto, la resistencia a colisiones requiere resúmenes aproximadamente el doble del nivel de seguridad deseado (por ejemplo, 256 bits para una seguridad de 128 bits).
- Construcciones iteradas y de esponja
- El paradigma Merkle-Damgaard construye un hash completo iterando una función de compresión de entrada fija sobre bloques de mensajes; la construcción de esponja utilizada por SHA-3 (Keccak) absorbe la entrada y exprime la salida de un gran estado de permutación, evitando debilidades de extensión de longitud.
Mechanisms
Un hash Merkle-Damgaard rellena el mensaje, lo divide en bloques y aplica iterativamente una función de compresión que mezcla cada bloque en un valor de encadenamiento en ejecución, produciendo el valor final como el resumen. La construcción de esponja de SHA-3, en cambio, absorbe bloques de mensajes mediante la aplicación de XOR a una parte de un estado grande permutado por la función Keccak-f, y luego exprime los bits del resumen, lo que evita la propiedad de extensión de longitud inherente a Merkle-Damgaard simple.
Clinical relevance
Las funciones hash son omnipresentes: verifican la integridad de las descargas de software, anclan firmas digitales (que firman un hash, no el documento completo), indexan contenido en Git y redes de entrega de contenido, aseguran el almacenamiento de contraseñas mediante funciones lentas de derivación de claves (bcrypt, Argon2), y proporcionan la prueba de trabajo y los árboles de Merkle subyacentes a las cadenas de bloques. La ruptura práctica de la resistencia a colisiones de MD5 y SHA-1 forzó la migración a SHA-2 en todo internet.
Evidence & guidelines
SHA-2 (SHA-256, SHA-512) se especifica en FIPS 180-4 y SHA-3 en FIPS 202; ambos están aprobados por el NIST. MD5 y SHA-1 están desaconsejados para uso de seguridad después de los ataques de colisión demostrados (siendo la colisión SHAttered SHA-1 de 2017 un hito). Para el almacenamiento de contraseñas, los estándares recomiendan funciones resistentes a la memoria como Argon2 en lugar de un hash simple.
History
La familia MD (MD4 y MD5 de Rivest) y SHA-0/SHA-1 diseñados por la NSA dominaron la década de 1990. Los ataques de colisión de Xiaoyun Wang (2004-2005) rompieron MD5 y debilitaron SHA-1, lo que impulsó la competencia abierta SHA-3 del NIST (2007-2012), ganada por el diseño de esponja Keccak de Bertoni, Daemen, Peeters y Van Assche. SHA-1 fue prácticamente roto por la colisión SHAttered en 2017.
Key figures
- Ralph Merkle
- Ivan Damgaard
- Guido Bertoni
- Joan Daemen
- Xiaoyun Wang
Related topics
Seminal works
- nist2015sha3
- katz2020
- menezes1996
Frequently asked questions
- ¿Por qué no puedo simplemente aplicar un hash a una contraseña y almacenar el resumen?
- Los hashes criptográficos simples son rápidos, lo que permite a los atacantes probar miles de millones de conjeturas por segundo contra una base de datos robada. El almacenamiento de contraseñas, en cambio, utiliza funciones deliberadamente lentas, con sal y resistentes a la memoria (bcrypt, scrypt, Argon2) para que la fuerza bruta de cada contraseña sea costosa.
- ¿Está roto SHA-256 ahora que SHA-1 lo está?
- No. SHA-1 y SHA-256 son algoritmos diferentes; los ataques de colisión en SHA-1 no se transfieren a SHA-2. SHA-256 sigue sin romperse y es el hash de propósito general recomendado, junto con SHA-3.