9 de noviembre de 2014

Genaralización de ataques de colisión MD5, demostrando ineficacia del algoritmo

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