Inteligencia de datos de Platón.
Búsqueda vertical y Ai.

Seguridad seria: MD5 considerado dañino, por una suma de $ 600,000

Fecha:

En una fascinante deliberación legal dictada por el regulador francés de protección de datos CNIL (Comisión Nacional de Computación y Libertades), la compañía energética Électricité de France, o EDF para abreviar, ha sido multa de 600,000 euros (alrededor de $ 600,000).

La declaración legal es, a la manera de tales cosas, bastante larga y (al menos para los que no son abogados) lingüísticamente compleja, lo que significa que necesita un dominio razonable del francés para comprender todos los entresijos del asunto, pero el caso general se reduce a cuatro infracciones.

Los tres primeros se ocupan de las interacciones generales relacionadas con los datos con los clientes, y abarcan:

  • Envío de correos electrónicos de marketing comercial sin el debido consentimiento.
  • Recolectando datos sin aclarar qué ni por qué.
  • No manejar las solicitudes de manera confiable cuando los clientes pidieron ver sus datos, o eliminarlos.

Pero es la última queja la que despertó nuestro interés: Sur le manquement à l'obligation d'asurer la sécurité des données.

En inglés, esto se traduce vagamente como falla al almacenar datos de forma segura, y se relaciona muy específicamente con el manejo inseguro de contraseñas.

MD5 considerado dañino

El regulador señaló, entre otras cosas, que a pesar de afirmar que estaba salteando y luego codificando contraseñas utilizando un algoritmo de cifrado aceptado, EDF todavía tenía más de 25,000 5 contraseñas de usuarios "aseguradas" con un solo hash MD2022 en julio de XNUMX.

Como habrá escuchado muchas veces en Naked Security, almacenar el hash criptográfico de una contraseña significa que puede validar una contraseña cuando se presenta simplemente volviendo a calcular su hash y comparándolo con el hash de la contraseña que se eligió originalmente.

Si los valores hash coinciden, puede inferir con seguridad que las contraseñas coinciden, sin necesidad de almacenar la contraseña real.

Cuando se presenta, la contraseña solo debe mantenerse temporalmente en la memoria y puede descartarse tan pronto como se calcule su hash.

Siempre que el algoritmo hash se considere criptográficamente seguro, no se puede "ejecutar a la inversa" de manera útil, por lo que no puede trabajar hacia atrás desde el hash para revelar nada sobre la contraseña en sí. (Un hash de este tipo se conoce en la jerga como un función unidireccional.)

De manera similar, un algoritmo hash decente le impide comenzar con un hash conocido e idear algún valor de entrada (cualquier entrada, no necesariamente la contraseña original) que produzca el hash deseado.

Tendría que probar entrada tras entrada hasta que tuviera suerte, lo que para hashes incluso de 128 bits llevaría demasiado tiempo para ser un ataque practicable. (Se dice que un hash con la precaución de seguridad de no permitirle descifrar múltiples entradas con la misma salida es resistente a colisiones.)

Pero MD5, como probablemente sepa, tiene problemas significativos con las colisiones, al igual que su sucesor inmediato SHA-1 (ambos hashes salieron a principios de la década de 1990).

En estos días, no se recomienda el uso de ningún algoritmo en ningún lugar, por nadie, para ningún propósito, dado que existen alternativas similares pero aún seguras que pueden usarse fácilmente para reemplazarlos, como SHA-256 y SHA-512:

Los hashes MD5 tienen una longitud de 128 bits o 16 bytes. SHA-256 y SHA-512 son 2x y 4x más largos respectivamente. Pero no es solo esta longitud adicional de hash lo que los hace más adecuados. Su principal ventaja sobre MD5 es que no tienen ningún problema específico conocido con las colisiones, por lo que, como resultado, su seguridad criptográfica generalmente no se considera dudosa.

Salado y estirado

En resumen, no esperaría que ninguna empresa, y mucho menos un gigante del sector energético como EDF, utilice MD5 para ningún propósito criptográfico, y mucho menos para proteger las contraseñas.

Peor aún, sin embargo, fue la falta de salazón, que es donde una porción de datos que se elige aleatoriamente para cada usuario se mezcla con la contraseña antes de que se calcule su hash.

El motivo de un salt es simple: garantiza que los valores hash de las posibles contraseñas no se puedan calcular por adelantado y luego traerlos para ayudar con un ataque.

Sin saltear, cada vez que cualquier usuario elige la contraseña 123456, los ladrones saben de antemano cuál sería su hash.

Incluso si el usuario elige una contraseña más adecuada, como 34DF6467!Lqa9, puede saber de antemano que su hash MD5 será 7063a00e 41866d47 f6226e60 67986e91.

Si tiene una lista lo suficientemente larga de contraseñas precalculadas, o de contraseñas parcialmente calculadas (conocidas bastante espléndidamente en la jerga como mesa arcoiris), es posible que pueda recuperar la contraseña a través de la tabla en lugar de probar trillones de combinaciones de contraseñas hasta que tenga suerte.

La salazón significa que necesitaría una tabla de arcoíris completa y precalculada para cada usuario (la tabla está determinada por la combinación de salt + contraseña), y no podrá calcular cada tabla de arco iris, una tarea que puede llevar varias semanas y ocupar terabytes de espacio en disco, hasta que recupere las sales de todos modos,

Pero hay más que debes hacer.

Incluso si incluye un salt, de modo que no se puedan usar "diccionarios de hash" precalculados, y utiliza un algoritmo criptográfico confiable como SHA-512, un solo cálculo de hash es lo suficientemente rápido como para que los atacantes que han adquirido una base de datos de hash puedan Todavía pruebe miles de millones de contraseñas posibles por segundo, o incluso más.

Así que deberías usar lo que se llama se extiende también, donde no solo agrega la contraseña inicial, sino que luego pasa la entrada a través del algoritmo hash miles de veces o más en un bucle, lo que hace que los ataques consuman mucho más tiempo para cualquier delincuente que quiera intentarlo.

A diferencia de la suma repetida, en la que puede usar una única multiplicación como atajo para reemplazar, digamos, el cálculo 5+5+5+5+5+5 con 6×5, no hay atajos para hashes repetidos. Para codificar una entrada 1000 veces se requieren 1000 "vueltas" del controlador de cálculo criptográfico.

No es solo un problema de MD5

Irónicamente, parece que aunque EDF solo tenía 25,800 5 contraseñas codificadas con MD512 y afirmó en su defensa que en su lugar usaba principalmente SHA-XNUMX, todavía no siempre salaba o estiraba los hashes almacenados.

El regulador informa que 11,200,000 2,400,000 5 contraseñas se habían salteado y cifrado correctamente, pero había 512 XNUMX XNUMX que simplemente se habían cifrado directamente una vez, ya sea con MDXNUMX o SHA-XNUMX.

Aparentemente, EDF ahora tiene su almacenamiento de contraseñas a la altura, pero la compañía fue multada con EUR 600,000 de todos modos, y seguirá cotizando en línea en el “paso travieso” de la CNIL durante los próximos dos años.

No podemos estar seguros de qué multa se habría impuesto si la sentencia hubiera implicado solo un hashing deficiente, y EDF no hubiera tenido que responder también por los otros tres delitos de protección de datos enumerados al principio...

… ¡pero demuestra que las malas elecciones criptográficas pueden costarle dinero en más de un sentido!

¿Qué hacer?

Guarda las contraseñas de tus clientes segura!

El costo computacional adicional de salting-and-stretching se puede elegir para que los usuarios individuales no sufran inconvenientes cuando inicien sesión, pero los posibles atacantes vean aumentadas sus velocidades de ataque en varios órdenes de magnitud.

Un ataque de recuperación de contraseña que podría tardar una semana en extraer el 10 % de las contraseñas almacenadas como simples hashes de una sola vez, en teoría, tardaría 200 años (10,000 10,000 semanas) si hiciera que el coste de calcular cada contraseña de prueba fuera XNUMX XNUMX veces mayor .

Lea nuestras excelente articulo explicativo sobre este mismo tema:

En resumen, recomendamos el PBKDF2 algoritmo de "estiramiento" con SHA-256 como su hash central, con un aleatorio por usuario salt of 16 bytes (128 bits) o más.

Esto coincide con las recomendaciones de la última sentencia de la CNIL.

CNIL no ofrece consejos sobre la cantidad de iteraciones de PBKDF2, pero como verá en nuestro artículo, nuestro consejo (octubre de 2022) es usar 200,000 or more. (Puede aumentar regularmente la cantidad de bucles para mantenerse al día con el aumento de la potencia informática).

Si no desea utilizar PBKDF2, le sugerimos leer sobre los algoritmos bcrypt, scrypt y Argon2 para ayudarle a tomar una sabia elección.

¡No te dejes atrapar por el paso travieso criptográfico!


punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?