¿Es posible forzar un archivo para generar una firma MD5 específica?

5

A veces se usa MD5 para validar que un archivo descargado es realmente válido.

Así que quiero saber si es posible que un pirata informático modifique un archivo e introduzca algún código malicioso Y haga que ese archivo genere el MD5 original.

Ejemplo

Original program

MD5:

eac2a0844b652ecea010ec38960d18ba

Código malicioso

Original program
Malicious Code

MD5:

5c07d676b765510db628978dc593aa0d

Código malicioso + bits aleatorios para modificar el MD5

Original program
Malicious Code
00000000000000000000000000000000

MD5:

0ade6514efd2d247105ba6249e31ae47

Código malicioso + bits aleatorios para modificar el MD5

Original program
Malicious Code
00000000000000000000000000000001

MD5:

1a499c7ad2755cd66eeea78f5b56f6d0

... varias combinaciones más tarde ...

Código malicioso + bits correctos para modificar el MD5

Original program
Malicious Code
d1bf573000019911b85cbeb24503e745

MD5:

eac2a0844b652ecea010ec38960d18ba //Just an example, real MD5: 882789190dcfee14d563913d345054e0

Con tiempo suficiente, ¿podría un usuario malintencionado encontrar una cadena que genere el MD5 original?

    
pregunta IAmJulianAcosta 01.03.2016 - 00:12
fuente

1 respuesta

8

Tipo de. Pero llevaría mucho tiempo.

Ser capaz de crear un archivo que tiene un hash conocido específico se conoce como un ataque de pre-imagen. Un ejemplo sería yo pidiendo un archivo que hace hash a beefbeefbeefbeefbeefbeefbeefbeef . La única forma de hacer esto, teóricamente, es intentar calcular los hash para cada entrada posible a MD5 hasta que encuentre una entrada que proporcione este hash. No hay garantía de que exista esta entrada (aunque es probable que lo haga) y es totalmente posible que encontrarla tomaría un tiempo de escala universal, incluso con la velocidad del hashing MD5 en los procesadores modernos. Existe un ataque conocido que debilita la resistencia de pre-imagen MD5 de 2 < sup> 128 a 2 123.4 . Eso va de 10 22 milenios, con un hash por microsegundo, a 10 20 milenios, ¡así que todavía no es particularmente práctico!

Crear otro archivo con el mismo hash que uno existente se conoce como un segundo ataque previo a la imagen. Este es un caso especial de colisión de hash: normalmente, solo desea buscar dos cadenas que tengan el mismo hash de salida. Hay algunos de estos conocidos, e incluso puede generar su propio . Sin embargo, en su caso, está dejando la primera entrada sin tocar y está buscando una segunda entrada que contenga la primera entrada e incluya algún otro contenido específico. Eso reduce enormemente el conjunto potencial de entradas a la función hash, lo que significa que está buscando algo que podría no existir en absoluto dentro de un subconjunto de las entradas. Y la única forma de encontrarlo es probar el hashing de todos los valores válidos, hasta que encuentre uno.

En teoría, es posible que puedas encontrar una entrada de este tipo, pero puede que no exista en absoluto, y encontrarla podría llevar más tiempo de lo que el universo ha existido. ¡Probablemente no valga la pena preocuparse!

Por cierto, esta es la razón por la cual el MD5 está bien para ser utilizado como una suma de comprobación para descargas o similar: poder generar un archivo distinto con la misma suma de comprobación que un original fijo sería un golpe computacional y se perdería un poco si se usa simplemente Para manipular las descargas. Por lo general, es mucho más fácil modificar las cadenas MD5 enumeradas para las descargas.

    
respondido por el Matthew 01.03.2016 - 10:38
fuente

Lea otras preguntas en las etiquetas