¿Qué tan seguro es MD5?

No espero ver preimágenes MD5 en los próximos 6 a 12 meses. Los criptógrafos que conozco que tendrían la mejor experiencia en la creación de preimágenes se centran en encontrar colisiones en SHA-1, que parece estar “tan cerca”. Además, la comunidad tiene una estrategia viable para avanzar en colisiones en SHA-1 basándose en el trabajo seminal de Wang en 2004 con colisiones en MD4 y MD5 y en trabajos más recientes sobre colisiones en SHA-0.

Los pocos que no están enfocados en las colisiones SHA-1 están ocupados con la competencia SHA-3. Por lo tanto, no hay mucho ancho de banda de investigación en la comunidad para preimágenes en el futuro cercano. Esa es mi opinión, ayway.

Dicho esto, Wang salió “de la nada” en 2004, por lo que siempre es peligroso hacer este tipo de apuestas. Si tiene MD5 en su aplicación, debe comenzar a alejarse de él ahora. Aunque todavía no sabemos cómo hacer preimágenes, sí sabemos cómo hacer colisiones de prefijos elegidos, donde podemos especificar los prefijos de los dos mensajes en colisión. Este código se publica y continúa mejorando en velocidad.
http://code.google.com/p/hashclash/

Las colisiones de prefijo elegido pueden plantear problemas que al principio no son obvios. Por ejemplo, nuestro equipo pudo utilizar colisiones de prefijo elegido para obtener un “certificado de entidad certificadora no autorizada” de RapidSSL:
http://www.win.tue.nl/hashclash/…

En pocas palabras: no espero imágenes previas en MD5 durante al menos 6 a 12 meses, pero aún debe alejarse de MD5 hoy.

Extremadamente inseguro. Las tablas de arcoíris pueden ser derrotadas al salar la contraseña, pero el hecho es que el algoritmo MD5 fue diseñado para ser extremadamente rápido (estaba destinado a generar un hash único para grandes bloques de texto y datos binarios). Mucho más seguro es un hash diseñado para ser intencionalmente lento; bcrypt es un ejemplo. Dado que un hash lento tarda una cantidad de tiempo no trivial en ejecutarse (desde decenas de milisegundos hasta varios segundos, dependiendo) y es resistente a la aceleración incluso en hardware especializado, es significativamente más difícil lograr una fuerza bruta efectiva. Con las GPU modernas, capaces de generar miles de millones de hashes por segundo, tanto sha1 como md5 deben considerarse débiles. Dado que este es un problema perfectamente paralelo, cualquier contraseña cifrada con md5 o sha1 debe considerarse dentro del alcance de cualquier atacante moderadamente bien financiado.

Como nota al margen, el hashing varias veces (hash un hash) te hace menos seguro en lugar de más seguro: antes de hash tu contenido original tienes un gran espacio de búsqueda de valores posibles, mientras que después de hacerlo has limitado al conjunto de cadenas alfanuméricas de una longitud fija que reducen el conjunto de valores que el atacante necesita escanear.

Para obtener información sobre la fuerza bruta MD5 de alto rendimiento en las GPU del consumidor, consulte: http://bvernoux.free.fr/md5/inde

La gente ha generado tablas de arco iris que asignan el texto de entrada a la salida hash MD5. Las tablas son bastante grandes (130 GB) y la búsqueda puede ser lenta, pero actualmente son la mejor manera de encontrar el texto plano y el hash MD5. Hasta donde sé, nadie ha creado una función inversa rápida para MD5 que no implique tablas de arco iris.

MD5 Rainbow Tables: http://www.freerainbowtables.com