¿Por qué la gente todavía usa / recomienda MD5 si se ha roto desde 1996?

51

Todavía es una forma comúnmente recomendada de hash de contraseñas, incluso si su inseguridad se había demostrado en 1996:

  

Por lo tanto, sugerimos que en el futuro MD5 ya no se deba implementar en aplicaciones como los esquemas de firma, donde se requiere una función de hash resistente a la colisión. Según nuestro conocimiento actual, las mejores recomendaciones para alternativas a MD5 son SHA-1 y RIPEMD-160.

(El estado de MD5 después de un ataque reciente, CryptoBytes, RSA Laboratories, VOLUMEN 2, NÚMERO 2 - VERANO DE 1996)

Incluso después de este estudio, y de todos los próximos artículos sobre sus defectos, se ha recomendado como función de hashing de contraseña en aplicaciones web, desde entonces.

Incluso se utiliza en la firma digital de algunas Autoridades de certificación (según enlace )

¿Cuál es la razón por la que este algoritmo de resumen de mensajes no está prohibido todavía en el sentido de seguridad?

Enlaces, me tomó unos minutos encontrarlos

pregunta Marek Sebera 07.06.2012 - 17:18
fuente

8 respuestas

69

Para complementar la buena respuesta de @D.W .: para el hashing de contraseñas, MD5 no está más dañado que cualquier otra función hash (pero no la use) .

La imagen completa: MD5 es una función hash criptográfica que, como tal, se espera que cumpla tres características:

  • Resistencia a las imágenes previas: dado x , es imposible encontrar m de manera que MD5 (m) = x .
  • Resistencia a las segundas preimágenes: dado m , no es factible encontrar m ' distinto de m y tal que MD5 (m) = MD5 (m ') .
  • Resistencia a las colisiones: no es factible encontrar m y m ', distintos entre sí, y de tal manera que MD5 (m) = MD5 (m ') .

MD5 está completamente dañado en lo que respecta a colisiones , pero no para imágenes previas o segundas imágenes previas. Además, el ataque de 1996 (por Dobbertin) no rompió MD5 en absoluto; fue una "colisión en la función de compresión", es decir, un ataque a uno de los elementos internos de MD5, pero no la función completa. Los criptógrafos lo tomaron como una bandera de advertencia, y tenían razón porque el ataque de colisión real que se publicó en 2004 (por Wang) se construyó a partir de los hallazgos de Dobbertin. Pero el MD5 se rompió solo en 2004, no en 1996, y fue un ataque de colisión .

Las colisiones no son relevantes para la seguridad de hashing de contraseñas. La mayoría de los usos de una función hash para el hashing de contraseñas dependen de la resistencia de preimagen o de otras propiedades (por ejemplo, qué tan bien funciona la función hash cuando se usa dentro de HMAC , algo que no se puede reducir a ninguna de las propiedades anteriores). El MD5 realmente se ha "debilitado" con respecto a las imágenes previas, pero solo de manera teórica, porque el costo del ataque es todavía miles de millones de veces demasiado caro para ser realmente probado (por lo que el MD5 no está "realmente" roto con respecto a las pre-imágenes, no de una manera práctica).

Pero no uses MD5 de todos modos . No debido a ninguna debilidad criptográfica, sino porque MD5 está sin sal y muy rápido . Eso es exactamente lo que no desea en una función de hash de contraseña. Las personas que "recomiendan MD5" para el hashing de contraseñas simplemente no saben nada, y son un testimonio de una Verdad que siempre debe tener en cuenta: no todo lo que se encuentra en Internet es correcto y confiable. Se conocen mejores soluciones para el hashing de contraseñas y se han utilizado y desplegado durante más de una década. Consulte esta respuesta para obtener detalles y sugerencias.

    
respondido por el Thomas Pornin 03.03.2013 - 18:14
fuente
27

¿Qué quieres decir con "prohibido"? ¿Quién "prohibiría" el uso de MD5? No es como si tuviéramos algunos croptos internacionales que arrestan a personas que usan ROT13 y otros esquemas criptográficos inseguros.

O, para ser un poco más serio: los criptógrafos ya recomiendan que los nuevos sistemas eviten el MD5, y recomiendan que los sistemas existentes migren fuera del MD5. No sé qué más cree usted que los criptógrafos pueden hacer al respecto.

Afirma que MD5 es una "forma comúnmente recomendada de hash de contraseñas", pero no proporciona evidencia de esta reclamación. No creo que la afirmación sea correcta. Esa no ha sido mi experiencia.

La conclusión es que la comunidad criptográfica ya ya está hablando con bastante claridad, con una sola voz, sobre este tema, y la mayoría de las personas ya están migrando fuera de MD5. Los casos en los que se sigue utilizando MD5 son la excepción, no la norma.

Editar (6/17): veo que has agregado algunos enlaces que mencionan el uso de MD5 para el hash. Todo lo que prueban es que algunas personas de las que nunca he oído hablar están confundidas. ¿Y qué? Probablemente debería ser escéptico al tomar consejos de personas que, de todos modos, no han establecido una reputación positiva en la comunidad de seguridad / criptografía. Y no entiendo cómo puede criticar a la comunidad de seguridad / criptografía por el hecho de que algunas personas que no están en la comunidad están confundidas. ¿Qué, exactamente, se supone que debemos hacer? Ya hacemos todo lo posible para expandir el conocimiento sobre la forma correcta de hacerlo. Siento que realmente estás culpando a la gente equivocada.

De todos modos, para responder a tu pregunta sobre por qué algunas personas aún recomiendan MD5: bueno, vaya, probablemente es porque esa gente no sabe nada mejor. No sé qué más puede decir nadie sobre el tema, o qué más espera que diga alguien.

    
respondido por el D.W. 07.06.2012 - 20:10
fuente
8

Creo que lo que estás viendo es la larga cola de la web. Puedo encontrar artículos de 2006 que recomiendan MD5 para el hashing de contraseñas (por ejemplo, enlace ) - todavía 10 años después de su fecha de referencia.

Sin embargo, estamos hablando sobre el momento para obtener algo de la investigación de vanguardia en las revistas de criptografía revisadas por expertos para recomendar la práctica entre los profesionales de la vida diaria que no leen revistas de criptografía y ni siquiera son expertos en ese campo. Lo que probablemente sucedió es que debido a que en 1990 todos "sabían" que MD5 era bueno para las contraseñas, les dijeron a todos que MD5 era bueno para las contraseñas. Desde finales de la década de 1990, algunas personas dijeron que el MD5 era malo para las contraseñas, pero la mayoría de las personas "sabían" que era bueno para las contraseñas y esto era lo que recomendaban a los demás.

En estos días, hay un grupo lo suficientemente grande de personas que "saben" que bcrypt es bueno para las contraseñas, que está empezando a ver esas recomendaciones, pero los artículos que dicen que MD5 es bueno para las contraseñas Aún no se han desintegrado los índices de los buscadores. Con el tiempo, lo harán.

Lo que significa que dentro de una década volverá aquí y hará la pregunta "¿por qué las personas siguen recomendando el uso de un factor de trabajo bcrypt de 10 cuando esta revista dice que debe usar al menos 150 ? "...

Poul Henning-Kamp movió originalmente la función crypt () de UNIX de DES a MD5. Aquí explica que el hecho de que la gente esté usando MD5 demuestra que no lo describió con éxito lo que estaba tratando de hacer: hacer que el hashing de contraseñas sea más complejo, no instalar MD5 como un shibboleth.

    
respondido por el user185 08.06.2012 - 10:45
fuente
4

Tienes varios usos de MD5

Comprobación de integridad

Verificar que el archivo que ha descargado o recibido es el original al verificar el hash del archivo. Se ha demostrado que puede crear fácilmente un archivo que tenga la misma suma de comprobación.

La colisión en MD5 es fácil de producir . MD5 no debe utilizarse para ese propósito.

La gente aún propone la suma de comprobación MD5 mientras descarga iso y esas cosas, pero a menudo también proporciona la suma de comprobación SHA. Esto se puede explicar porque MD5 es mucho más rápido y generalmente implementado.

Comprobación de contraseña

En lugar de almacenar una contraseña en texto simple, almacena el hash de la contraseña. Algunos sitios web todavía usan MD5 para hacer eso. El problema aquí no es encontrar una colisión, sino verificar una tabla de arco iris o una enorme base de datos de suma de comprobación MD5.

Como puede producir millones de sumas de comprobación MD5 muy rápidamente, puede forzar una contraseña en su propia PC. No debe usar MD5 para hashear su contraseña por ese motivo, pero sobre todo, debe agregar a salt .

Si tiene una contraseña muy compleja (larga con caracteres especiales) y una sal compleja única para cada contraseña almacenada, no es un problema para usted usar MD5. No digo que debas (no deberías) pero no es un gran problema de seguridad usar MD5 si la contraseña será difícil de forzar y el uso de la tabla de arco iris se evita por la sal. Por supuesto, en su sitio web, no es fácil (y apreciado) forzar a los usuarios a tener una contraseña compleja, por lo que si un usuario se registra 12345, no importa qué función hash utilice, se romperá.

La razón por la que la gente todavía lo usa es porque aún es la función hash más conocida y aún era aceptable hace algunos años. Las personas con poco conocimiento criptográfico pueden utilizarlo.

    
respondido por el Martin Trigaux 08.06.2012 - 09:46
fuente
3

No creo que sea recomendado. Wikipedia indica que MD5 se considera roto y se recomienda que la familia SHA-2 o SHA lo reemplace. También eche un vistazo a Devise , una gema de rubíes que maneja la autorización. Tiene un tipo diferente de encriptador.

    
respondido por el Travis Pessetto 07.06.2012 - 20:14
fuente
2
  

Incluso después de este estudio, y de todos los próximos artículos sobre sus defectos, se ha recomendado como función hash de contraseña en aplicaciones web, desde entonces.

Sí, y?

El hashing de la contraseña es solo una pérdida de tiempo.

MD5 ^ n (MD5 iterado n veces) es tan bueno como SHA1 ^ m (para m como time(MD5^n) >= time(SHA1^m) ) para perder tiempo .

Nadie ha sugerido ninguna forma de calcular MD5 ^ n de forma que sea más rápida que el obvio MD5 o MD5^(n-1) . Ni siquiera hay el comienzo de una idea para hacer eso.

Aquí no se rompe nada.

Para el desperdicio de espacio de tiempo, debe considerar scrypt .

    
respondido por el curiousguy 08.06.2012 - 04:21
fuente
0

Esta es una información oficial sobre MD5: MD5 vulnerable a ataques de colisión Para mayor seguridad se debe considerar SHA-2. Nadie impide que los usuarios utilicen MD5, pero no para los datos que desea mantener privados.

Rendimiento de los algoritmos hash

Como se muestra en el diagrama "Rendimiento de algoritmos hash", SHA256 es mucho más rápido que MD5.

Este es un buen recurso a considerar, el autor busca en las contraseñas filtradas de LinkedIn- cola (.) acm (.) org / detail.cfm? id = 2254400 & ref = fullrss, también muestra algunas formas de cómo proteger las contraseñas.

    
respondido por el user1652382 04.05.2013 - 14:24
fuente
0

El problema del hash de contraseña y el uso de tablas de arco iris se debe a la seguridad de un servidor web que se explota a través de una debilidad subyacente.

Primero están todos estos sitios web que pretenden ofrecer una prueba simple para ver si su contraseña es segura ... Ummm, veamos estos sitios como "phishing" y todas las personas que están haciendo estos sitios están alimentando una mesa de arco iris. . Esa es una parte del problema.

En segundo lugar, están las personas que utilizan los servicios de hospedaje web en los que el objetivo es recaudar dinero y olvidarse de la seguridad del servidor web. Estos hosts deben colocarse contra la pared y disparar IMHO, parte de la seguridad del inicio de sesión de un usuario proviene de la seguridad de un servidor web y las tecnologías subyacentes están actualizadas para evitar el uso de exploits conocidos.

En tercer lugar, una vez que la gente se mete en sus cabezas gruesas, si bien MD5 no es resistente a las colisiones o prefiero lo más robusto que pueda ser, todavía es difícil que una cuenta de usuario sea hackeada a menos que tenga un host web en ejecución Un sistema explotable, su codificación web no es robusta y usted se expone al usar un sitio que afirma verificar la seguridad de su contraseña.

Para la gran parte MD5 + un valor Salt es una seguridad adecuada para el inicio de sesión de un usuario en un foro web siempre que el sistema y el software mencionados anteriormente no sean explotables. Una vez que tenga un sistema que ha sido explotado por una debilidad, ejecutar una consulta para valores hash conocidos que no usan un sistema de salado expondrá una cuarta debilidad ... el usuario final.

El cuarto es el usuario final, su seguridad web es, en última instancia, tan fuerte como el enlace más débil y para muchos verán al usuario final como solo eso y los administradores deben recordar que son usuarios finales de un sistema y son igualmente como vulnerable a comprometer la seguridad de un sistema mediante el uso de una programación o software descuidado que se rompe fácilmente, la seguridad de la contraseña es deficiente y tampoco se puede cambiar el inicio de sesión de ADMIN o el uso de un software que aún hoy insiste en tener el nombre de inicio de sesión de administrador como administrador y también en el uso de cuentas de superusuario .

No hace falta decirlo, así que lo diré de todos modos, el MD5 no está resquebrajado, está diseñado a la inversa a través de usuarios débiles, software débil y la incapacidad de la gente para entender una tecnología. Si el MD5 está roto, también lo están SHA y AES, y así sucesivamente ...

    
respondido por el Mark Giblin 25.02.2014 - 13:25
fuente

Lea otras preguntas en las etiquetas