Este es un proyecto cancelado que no recibe actualizaciones. No obstante, puedes acceder a su archivo como referencia.

Versión Cero

MD5 y la crónica de una muerte anunciada

Parece que algo tan simple como una debilidad en un algoritmo de “hashing” como MD5 puede echar por tierra el sistema de distribución de software de muchas empresas , particulares y comunidades de Sw. Libre.

Como se puede leer en el siguiente artículo MD5 Considered Harmful Someday (PDF) el algoritmo MD5 tiene una debilidad que podría hacer que 2 archivos diferentes tuviesen la misma firma digital, siendo por tanto posible que alguien modificase la composición de un paquete RPM, por ejemplo, sustituyendo ejecutables normales por ejecutables maliciosos.

Parece incluso que la propia Microsoft dejará de utilizar MD5, MD4 y DES en su nueva versión de S.O. Vista.

Se llega incluso hasta el punto de que en un foro de desarrolladores C# se realiza una implementación práctica de este exploit en el algoritmo más utilizado para “firmar” software.

Comentarios
1 Albin
24 septiembre 2005, 12:16

Yo siempre pensé que dos ficheros diferentes podían generar el mismo MD5 por una cuestión muy simple, un MD5 tiene una cantidad de combinaciones finita, mientras que cualquier longitud de datos con la cual se quisiera obtener un MD5 son una cantidad de combinaciones infinita, o finita gigante. Pero pensé que la gracia estaba en que no podía “preveerse” no podía saberse cómo cambiar el original de manera que se obtuviera el hash deseado.
2 marcio
24 septiembre 2005, 13:46

#1 pensás bien, el artículo está mal. MD5 y los algoritmos de hash más conocidos permiten generar el mismo resumen a partir de diferentes archivos. La gracia está en lo complejo de lograr dos resúmenes iguales. El problema de md5 fue que encontraron la forma de bajar la cantidad de operaciones necesarias en varios órdenes de magnitud por lo que encontrar un gemelo pasó de ser casi imposible a bastante posible
3 Eduardo Diaz
24 septiembre 2005, 18:43

Como autor del artículo que mencionas debo aclarar ciertos aspectos.

1. Hay un viejo resultado sobre MD5 que dice: si MD5(x) = MD5(y) entonces MD5(x+q) = MD5(y+q)

Es este principio el que se explota en el artículo, dado que existen dos vectores x, y que tienen el mismo hash md5, se construye un archivo de distribucion de la siguiente manera:

HEADER:x
SELECTOR:if (HEADER = X) execute good() else execute evil()
GOOD: good()
EVIL: evil()

2. El exploit ataca al proceso de distribucion de software, requiere tener acceso a cierta parte del proceso, como bien explica Erik Westerman.

3. MD5 ha sido quebrado para todos los efectos practicos, en particular gracias al uso de las tablas Rainbow.

4.- Por su naturaleza todos los algoritmos de hash tienen colisiones, pero la probabilidad de encontrar colisiones depende del tamaño del alfabeto que uses en tu mensaje. Lo interesante es que ahora hay un ataque diferencial que establece las condiciones necesarias para poder encontrar un texto que genere el mismo hash a partir de uno dado. Estas condiciones restringen el universo de posibles colisiones que se pueden encontrar, pero creo que no es lejano el día en que podamos modificar el encabezamiento de un archivo binario, como para poder hackear un archivo distribuido con MD5 como check sum.

5. Se ha sugerido usar varios algoritmos de hash como firmas digitales, lo que seguramente mejoraría la seguridad, porque hace el problema más intratable para un hacker. POr ejemplo, se puede distribuir un archivo con su firma MD5 y su firma SHA1, y esa combinación es, naturalmente mucho más fuerte, y prolonga la vida útil de estos algoritmos.

Personalmente, creo que la reacción de Microsoft es exagerada, pero me pareció importante destacarla dentro del artículo, con el fin de despertar a la comunidad sobre la importancia de estos temas.

Gracias por tu mención.

Eduardo Díaz
4 Javier Gómez
26 septiembre 2005, 10:15

Primero de todo, felicitar a Eduardo Díaz por el artículo que referencié en el origen de la noticia. También me gustaría comentar a título personal que la reacción de MS, si bien a priori puede parecer exagerada, tiene cierta lógica.

Recordemos que históricamente a MS se le han atribuido importantes debilidades en materia de seguridad, por lo que desde un punto de vista empresarial, podría considerar variar “funcionalidades” de sus nuevos sw.’s para evitar comentarios negativos, especialmente cuando se tiende a “magnificar” (esto es sin ánimo de polémica) cualquier defecto que pudiesen distribuir en sus versiones.
Acerca - Contacto - Información legal y técnica - Condiciones de uso - Noticias sobre el mundo del Desarrollo de Software.