Decir que MD5 no es lo suficientemente seguro es un malentendido que raya en un mito urbano.
MD5 se puede usar para crear un resumen de hash a partir de una entrada larga. Gregory Delrue da un ejemplo de cómo usa MD5 para reducir un archivo a un valor hash, solo para que pueda verificar si hay duplicados. Este es un ejemplo de muchos usos legítimos para MD5. MD5 también tiene la ventaja de que funciona bastante rápido, por lo que si desea, por ejemplo, generar hashes para unos pocos miles de archivos, puede hacerlo con un buen rendimiento.
Tienes que entender lo que las personas quieren decir cuando dicen que MD5 está “roto”.
- ¿Qué tan importante es proporcionar API de servicios web para un sitio web hoy en día?
- ¿Qué necesito para alojar una base de datos y una aplicación web?
- ¿Qué tipo de arquitectura permite que los sitios web de SaaS como Salesforce.com eviten que los complementos subóptimos los eliminen?
- ¿Por qué Quora tiene una interfaz mediocre mientras que la mayoría de las nuevas empresas basadas en web tienen una interfaz de usuario increíble?
- ¿Cuáles son las aplicaciones creadas en Java?
¿Significa esto que podrían revertir un hash MD5 y descubrir la entrada original? ¡No!
La debilidad en MD5 y SHA1 es que no son suficientemente resistentes a las colisiones. Por ejemplo, los investigadores demostraron que podían generar un segundo archivo de entrada que producía el mismo hash MD5 que un primer archivo de entrada conocido . Pero todavía no pueden revertir un hash.
En otras palabras, si una aplicación almacena su contraseña como un hash MD5, nadie puede descubrir cuál es su contraseña. Pero si les dice su contraseña , pueden crear una contraseña diferente que produzca el mismo hash MD5.
Del mismo modo, si usa MD5 para demostrar la autenticidad de, por ejemplo, un certificado SSL, y comparte el archivo del certificado, entonces alguien puede sustituir un certificado diferente que produce el mismo hash MD5.
Por lo tanto, MD5 no es inútil, es solo que no debe usarse como un algoritmo de hash seguro . Es decir, si confía en un resumen de hash para asegurarse de que un archivo es el original, entonces debe usar un algoritmo de hash más fuerte. La recomendación actual de NIST es usar SHA256. Otras buenas opciones son Bcrypt (Blowfish) o PBKDF2.
MD5 es adecuado en el ejemplo de Gregory porque supongo que si encuentra dos hash MD5 que son iguales, realiza una comparación completa entre los dos archivos que aparecen como duplicados.