Incident Response, Security and Forensics"

.

lunes, 22 de diciembre de 2008

La otra realidad

Muchos mitos han caído, entre ellos el famoso MD5. MD5 es uno de los algoritmos criptográficos diseñados por el profesor Ronald Rivest del MIT. Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad.

A pesar de su amplia difusión actual, la sucesión de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisión de hash plantea una serie de dudas acerca de su uso futuro.

una colisión de hash es una situación que se produce cuando dos entradas distintas a una función de hash producen la misma salida.

El tema de las colisiones en funciones hash (y en concreto MD5) no es ni mucho menos nuevo y tiene una importante repercusión en el mundo de la criptografía, dado que dichas funciones son usadas en firmas digitales.

Deciros que en el sistema judicial (por lo menos en España) es ampliamente reconocido el uso de la integridad para las evidencias utilizando MD5 y quizás la cuestión es plantear si debemos pasar a otro sistema mas robusto de huella (Hash).

Vamos a ver unos ejemplos de la colisión de Hash.

En el directorio nos encontramos con dos ficheros de extensión HTML (t1 y t2), si nos fijamos bien en los tamaños vemos que son iguales, pero si vemos el contenido comprobamos que es distinto.


Tamaños identicos


Contenido de t1.html


Contenido de t2.html

En este caso es normal pensar que su Hash es distinto dado que es diferente su contenido.

Vamos a comprobarlo ejecutando md5sum (es igual en Linux que Windows)



Comprobamos que el Hash es identico, cosa que no es verdad. ¿que ha ocurrido? muy facil, estos ficheros han sido sometidos a un proceso de colisiones Hash. Por lo tanto la prueba de la evidencia queda comprometida y si yo fuera jurista diria que la prueba es invalida.

Por lo tanto y volviendo al planteamiento inicial yo diria ¿debemos de seguir admitiendo la verificación de la integridad con MD5?

Existe un ejemplo muy bueno escrito en C# para Windows por Eduardo Díaz en CodeProject

El artículo describe la realización de un programa en C# para demostrar cómo se pueden explotar las colisiones encontradas en MD5 para crear dos archivos con el mismo valor de hash...

Se incluyen código fuente y demo compilada.

Otras referencias:

1 comentarios:

Gracias por la mención, hay algunas mejoras a ese ejemplo que han sido propuestas por otros:

http://www.lnds.net/2007/10/mi_mayor_aporte_a_la_seguridad_informati.html