Implementación de colisión en MD5

Este artículo describe la Implementación de colisión en MD5 (Xiaoyun Wang y Hongbo Yu) creada por Peter Selinger.

El algoritmo de Xiaoyun Wang y Hongbo Yu[1]​ puede ser utilizado para crear archivos de longitud arbitraria que tengan hash MD5 idéntico y que difieren en solo 128 bytes en algún lugar en mitad del fichero (archivo).

El método de Wang y Yu hace posible, para un vector de inicialización s, encontrar dos pares de bloques M, M' y N, N' tales que: f ( f (s, M), M') = f ( f (s, N), N') Observación: Nótese que esto funciona para cualquier vector de inicialización y no solo para el estándar.

Podemos usar esto para generar dos programas que difieren en esos bloques y tienen el mismo valor de hash con MD5 pero que se comportaran de forma muy distinta: Programa 1: Programa 2: Existe una implementación del proceso descrito en el apartado anterior creada por Patrick Stach, puede descargarse desde su web donde aparece una detallada explicación de su funcionamiento y uso en inglés.

Después compilamos este programa: Y se lo pasamos como argumento al ejecutable que nos proporciona, el programa se pone inmediatamente a buscar una colisión por nosotros: Pasadas unas horas el programa encuentra los bloques que necesita para formar la colisión.