¿Por qué se considera MD5 un algoritmo vulnerable?

7

Sé que MD5 es el algoritmo de hashing más vulnerable, y particularmente vulnerable a las colisiones. Pero la vulnerabilidad de colisión no es muy arriesgada y alguien podría usar eso como una ventaja, pero eso es por pura suerte.

Bien, digamos que almaceno las contraseñas utilizando MD5. Hay algunas cadenas en colisión aquí: enlace Pero es menos probable que un usuario utilice este tipo de cadenas como su contraseña. Por eso depende de la suerte.

Y ahora, digamos que un usuario ha usado una de estas cadenas. Para que un atacante use esta vulnerabilidad de colisión, él / ella debe conocer la contraseña original y saber que hay otra cadena de colisión para ella. Pero si el atacante ya conoce la contraseña original, ¿por qué molestarse en colisión? ¿Hay alguna forma en que el atacante pueda usar esto como una ventaja?

    
pregunta mzcoxfde 30.09.2016 - 18:09
fuente

2 respuestas

9
  

Sé que MD5 es el algoritmo de hashing más vulnerable

Bueno, técnicamente (somos técnicos por aquí) hay peores algoritmos que MD5.

  

y particularmente vulnerable a las colisiones

Sí, la gente puede crear un hash deseado con un texto plano diferente. Es probable que esto no ocurra al azar, pero podría ocurrir de manera maliciosa.

  

Pero la vulnerabilidad de colisión no es muy arriesgada y alguien podría usar eso como una ventaja, pero eso es por pura suerte.

No pura suerte. Existen técnicas para encontrar un texto simple que produce un MD5 deseado. Ese es un buen tema para una pregunta diferente.

  

Bien, digamos que almaceno contraseñas utilizando MD5.

Auch. La razón principal por la que no debería usar MD5 es porque se trata de un hash de propósito general (rápido) .

Debería utilizar un Hash de contraseña (lento) como

  • Se suele recomendar BCrypt , pero asegúrese de ejecutar un hash SHA-2 rápido en los datos de entrada, por lo que BCrypt no truncará las contraseñas súper largas
  • PBKDF2 pero eso es menos resistente a GPU porque tiene menos requisitos de memoria.
  • SCrypt es mejor que BCrypt si tiene un factor de trabajo suficientemente alto. De lo contrario es peor contra las GPUs. (de nuevo, debido a requisitos de memoria más altos o más bajos)
  • El ganador de la Competición de hash de contraseñas puede ser incluso mejor que el mencionado anteriormente, pero aún no ha superado la prueba del tiempo, por lo que No lo uses todavía. Se llama Argon2 y tiene configuraciones de Factor de trabajo separadas para el tiempo de CPU y la carga de memoria. (bonito!)
  • Se puede usar SHA-2 repetitivo en lugar de PBKDF2 (aún no es resistente a GPU), pero esto es más difícil de implementar la repetición de manera eficiente (es decir, para ser resistente a la fuerza bruta) porque SHA-2 es en realidad un Propósito General (Rápido ) Hash.

La mayoría de estas opciones generan sal aleatoria de forma predeterminada, ¡pero debes verificar si este es el caso!

Es mejor incluir un poco de Pepper (~ 72 bits de entropía) antes de la Contraseña antes del hash. Pepper puede ser el mismo para todos sus usuarios, pero debe almacenarse en un archivo fuera de la base de datos para que no se pueda encontrar ese componente a través de Inyección SQL.

Asegúrese de que su factor de trabajo requiera aproximadamente 100 ms (con la protección DoS adecuada) en su hardware de destino (sabiendo que los atacantes usarán un hardware más rápido para la fuerza bruta)

Por supuesto, ninguna cantidad de hash protegerá a password s débil, así que incluya los requisitos de seguridad de la contraseña.

  

vulnerabilidad de colisión ... ¿hay alguna forma en que el atacante pueda usar esto como una ventaja?

En el contexto del almacenamiento de hash de contraseñas, esto probablemente no ayude al atacante.

    
respondido por el George Bailey 30.09.2016 - 18:30
fuente
1

La razón principal por la que se atacan los algoritmos hash hoy en día no tiene nada que ver con las contraseñas. Creo que MD5 sigue siendo razonablemente seguro cuando se trata del hashing de contraseñas. siempre y cuando uses sales para vencer las tablas del arco iris e iterar el algoritmo muchas veces para reducir la velocidad de adivinación de fuerza bruta (sin embargo, realmente deberías usar un algoritmo estándar en su lugar ). El problema es con las firmas digitales o los certificados X.509, respectivamente.

Desde hace 10 años existe el "ataque de prefijo elegido" en las firmas que usan md5. En 2006 o 2007, un equipo alrededor de Arjen Lenstra de la universidad técnica Eindhoven creó un certificado deshonesto que tenía el mismo hash MD5 que uno emitido por un CA comercial. El ataque requirió una gran capacidad de computación y la configuración fue extremadamente sofisticada, pero el resultado fue que MD5 se vio comprometido. Consulte aquí y aquí .

La misma técnica también se empleó en el famoso ataque de LLAMA.

Como notó correctamente, cuando se trata de hashes de contraseña, la situación es completamente diferente porque se debe generar una colisión sin conocer el texto sin formato. Cuando se trata de firmas digitales, generalmente se conoce el texto plano y, por supuesto, esto abre vectores de ataque adicionales como muestra el trabajo citado anteriormente.

    
respondido por el kaidentity 30.09.2016 - 22:02
fuente

Lea otras preguntas en las etiquetas