Ataque de preimagen


En criptografía , un ataque previo a la imagen en las funciones hash criptográficas intenta encontrar un mensaje que tenga un valor hash específico. Una función hash criptográfica debe resistir los ataques a su preimagen (conjunto de posibles entradas).

Estos se pueden comparar con una resistencia de colisión , en la que no es computacionalmente factible encontrar dos entradas distintas x , x ′ que tengan la misma salida; es decir, tal que h ( x ) = h ( x ′) . [1]

La resistencia a la colisión implica la resistencia de la segunda preimagen, pero no garantiza la resistencia de la preimagen. [1] Por el contrario, un ataque de segunda preimagen implica un ataque de colisión (trivialmente, ya que, además de x ′, x ya se conoce desde el principio).

Por definición, una función hash ideal es tal que la forma más rápida de calcular una primera o segunda preimagen es a través de un ataque de fuerza bruta . Para un hash de n bits, este ataque tiene una complejidad de tiempo de 2 n , que se considera demasiado alta para un tamaño de salida típico de n = 128 bits. Si tal complejidad es lo mejor que puede lograr un adversario, entonces la función hash se considera resistente a la imagen previa. Sin embargo, hay un resultado general de que las computadoras cuánticas realizan un ataque de preimagen estructurado en 2 n = 2 n /2 , lo que también implica una segunda preimagen [2] y, por lo tanto, un ataque de colisión.

Se pueden encontrar ataques de preimagen más rápidos mediante el criptoanálisis de ciertas funciones hash, y son específicos de esa función. Ya se han descubierto algunos ataques de preimagen significativos, pero aún no son prácticos. Si se descubre un ataque de preimagen práctico, afectaría drásticamente a muchos protocolos de Internet. En este caso, "práctico" significa que podría ser ejecutado por un atacante con una cantidad razonable de recursos. Por ejemplo, un ataque de generación previa de imágenes que cuesta billones de dólares y toma décadas para generar una imagen previa de un valor hash deseado o un mensaje no es práctico; uno que cueste unos cuantos miles de dólares y tome algunas semanas podría ser muy práctico.

Todos los ataques prácticos o casi prácticos actualmente conocidos [3] [4] [5] en MD5 y SHA-1 son ataques de colisión [ cita requerida ] . En general, un ataque de colisión es más fácil de montar que un ataque de preimagen, ya que no está restringido por ningún valor establecido (se pueden usar dos valores cualesquiera para colisionar). La complejidad temporal de un ataque de colisión de fuerza bruta, en contraste con el ataque de preimagen, es de solo 2 n /2 .