Existen varias formas de comprobar la integridad de un
archivo. Una de ellas, y muy utilizada en la red es el cálculo de códigos MD5.
Si un archivo ha sido modificado o está mal descargado el MD5 no debería ser
idéntico al del archivo original, sin embargo, parece que este algoritmo no
ofrece tanta integridad como debería.
En el año 2007 un investigador llamado Nat McHugh
encontró una vulnerabilidad muy grave en el hash MD5. A partir de dos imágenes
totalmente diferentes sacadas de Internet consiguió que gracias a un ordenador
en pocas horas se computara un código idéntico MD5 en ambas imágenes. Esto fue
posible atacando los principales punto de inflexión de este tipo de hash y
añadiendo una cadena binaria al final del archivo para conseguir engañar al
código.
Una vez se calculó este tipo de hash McHugh fue capaz
de enviar a través de Internet una imagen suplantada sin que el sistema de
destino se diera cuenta de ello. En el siguiente enlace el investigador explica
cómo calcular la parte de código binaria que debemos añadir. Resumiendo el
proceso, para que el código MD5 sea el mismo ambos archivos deben tener la
misma cantidad de bits y se debe saber con certeza qué bits exactos se deben
añadir manualmente para ello. Una vez que ambos archivos tienen los mismos bits
simplemente se debe realizar un ataque de fuerza bruta para buscar dos partes
idénticas en los archivos para generar dicho código.
Realizar estas configuraciones era un proceso bastante
costoso que requería de una supercomputadora para no tardar demasiado tiempo en
calcular los algoritmos necesarios, sin embargo, la tecnología ha avanzado
enormemente en estos 7 años, y ahora este tipo de ataques está al alcance de
cualquiera. Se ha podido demostrar cómo en un sistema Linux se ha podido
automatizar todo el proceso mediante un script de forma que en menos de 10 horas
y con un coste de 50 céntimos de euro un usuario convencional podría generar un
código MD5 idéntico a otro, pudiendo engañar a cualquier sistema con que un
fichero está íntegro cuando en realidad no es así.
Este tipo de ataques se denominan colisiones MD5 y
demuestra que dicho código es débil, inseguro y no recomendado como capa de
seguridad para usos prácticos.
Fuente: Seguridad Unam