En criptografía , un ataque de preimagen a las funciones hash criptográficas intenta encontrar un mensaje que tenga un valor hash específico. Una función hash criptográfica debe resistir ataques a su preimagen (conjunto de posibles entradas).
En el contexto de un ataque, existen dos tipos de resistencia a la preimagen:
- Resistencia a la preimagen : para prácticamente todas las salidas preespecificadas, es computacionalmente inviable encontrar cualquier entrada que genere esa salida mediante hash; es decir, dado y , es difícil encontrar un x tal que h ( x ) = y . [ 1 ]
- Resistencia a la segunda preimagen : para una entrada especificada, es computacionalmente inviable encontrar otra entrada que produzca la misma salida; es decir, dado x , es difícil encontrar una segunda entrada x ′ ≠ x tal que h ( x ) = h ( x ′) . [ 1 ]
Estos se pueden comparar con una resistencia a colisiones , en la que es computacionalmente inviable encontrar dos entradas distintas x , x ′ que produzcan la misma salida; es decir, tales que h ( x ) = h ( x ′) . [ 1 ]
La resistencia a colisiones implica resistencia a la segunda preimagen, pero no garantiza la resistencia a la preimagen. [ 1 ] Sin embargo, bajo ciertas suposiciones del rango de la función hash, la resistencia a colisiones sí implica resistencia a la preimagen (por una implicación provisional) [ 1 ] . A la inversa, un ataque a la segunda preimagen implica un ataque a colisiones (trivialmente, ya que, además de x ′ , x ya se conoce desde el principio). Mediante la implicación provisional, un ataque a la preimagen también implicará un ataque a la segunda preimagen, que luego también se extiende a un ataque a colisiones.
Ataques de preimagen aplicada
Por definición, una función hash ideal es aquella en la que la forma más rápida de calcular una primera o segunda preimagen es mediante un ataque de fuerza bruta . Para un hash de n bits, este ataque tiene una complejidad temporal de 2 n , que se considera demasiado alta para un tamaño de salida típico de n = 128 bits. Si dicha complejidad es la mejor que puede lograr un adversario, entonces la función hash se considera resistente a la preimagen. Sin embargo, existe un resultado general que indica que las computadoras cuánticas realizan un ataque de preimagen estructurado en, lo que también implica una segunda preimagen [ 2 ] y, por lo tanto, un ataque de colisión.
Mediante el criptoanálisis de ciertas funciones hash, se pueden encontrar ataques de preimagen más rápidos , específicos de cada función. Ya se han descubierto algunos ataques de preimagen importantes, pero aún no son prácticos. Si se descubriera un ataque de preimagen práctico, afectaría drásticamente a muchos protocolos de Internet. En este caso, "práctico" significa que un atacante con recursos suficientes podría ejecutarlo. Por ejemplo, un ataque de preimagen que cuesta billones de dólares y tarda décadas en generar la preimagen de un valor hash o un mensaje no es práctico; uno que cuesta unos pocos miles de dólares y tarda unas pocas semanas podría ser muy práctico.
Todos los ataques prácticos o casi prácticos conocidos actualmente [ 3 ] [ 4 ] sobre MD5 y SHA-1 son ataques de colisión . [ 5 ] En general, un ataque de colisión es más fácil de realizar que un ataque de preimagen, ya que no está restringido por ningún valor fijo (cualquier par de valores pueden usarse para colisionar). La complejidad temporal de un ataque de colisión por fuerza bruta, en contraste con el ataque de preimagen, es solo.
Ataques al espacio de preimagen restringido
La inviabilidad computacional de un ataque de primera preimagen sobre una función hash ideal presupone que el conjunto de posibles entradas hash es demasiado grande para una búsqueda por fuerza bruta. Sin embargo, si se sabe que un valor hash dado se ha generado a partir de un conjunto de entradas relativamente pequeño o ordenado por probabilidad, entonces una búsqueda por fuerza bruta puede ser efectiva. La viabilidad depende del tamaño del conjunto de entradas y de la velocidad o el coste de calcular la función hash.
Un ejemplo común es el uso de hashes para almacenar datos de validación de contraseñas para la autenticación. En lugar de almacenar el texto plano de las contraseñas de los usuarios, un sistema de control de acceso almacena un hash de la contraseña. Cuando un usuario solicita acceso, la contraseña que envía se cifra y se compara con el valor almacenado. Si se roban los datos de validación almacenados, el ladrón solo tendrá los valores hash, no las contraseñas. Sin embargo, la mayoría de los usuarios eligen contraseñas de forma predecible y muchas contraseñas son lo suficientemente cortas como para que se puedan probar todas las combinaciones posibles si se utilizan hashes rápidos, incluso si el hash está clasificado como seguro contra ataques de preimagen. [ 6 ] Se han creado hashes especiales llamados funciones de derivación de clave para ralentizar las búsquedas. Véase Descifrado de contraseñas . Para un método para evitar la prueba de contraseñas cortas, véase salt (criptografía) .
Véase también
- ataque de cumpleaños
- Función hash criptográfica
- Resumen de seguridad de la función hash
- Amabilidad con los rompecabezas
- Mesa arcoíris
- oráculo aleatorio
- RFC 4270 : Ataques a funciones hash criptográficas en protocolos de Internet
Referencias
- 1 2 3 4 5 Rogaway, P.; Shrimpton, T. (2004). "Fundamentos de la función hash criptográfica: definiciones, implicaciones y separaciones para la resistencia a la preimagen, la resistencia a la segunda preimagen y la resistencia a la colisión" (PDF) . Cifrado rápido de software . Notas de clase en ciencias de la computación. Vol. 3017. Springer-Verlag. págs. 371–388 . doi : 10.1007/978-3-540-25937-4_24 . ISBN 978-3-540-22171-5Consultado el 17 de noviembre de 2012 .
- ↑ Daniel J. Bernstein (12 de noviembre de 2010). "Ataques cuánticos contra Blue Midnight Wish, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Shabal, SHAvite-3, SIMD y Skein" (PDF) . Universidad de Illinois en Chicago . Consultado el 29 de marzo de 2020 .
- ↑ Bruce Morton; Clayton Smith (30 de enero de 2014). "Por qué necesitamos migrar a SHA-2" . Consejo de Seguridad de la Autoridad de Certificación .
- ↑ "Blog de seguridad en línea de Google: Anuncio de la primera colisión SHA1" . Consultado el 23 de febrero de 2017 .
- ↑ "MD5 y perspectivas" . 1 de enero de 2009.
- ↑ Goodin, Dan (10 de diciembre de 2012). "Un clúster de 25 GPU descifra todas las contraseñas estándar de Windows en menos de 6 horas" . Ars Technica . Consultado el 23 de noviembre de 2020 .
- ataques criptográficos