¿Qué tan débil es MD5 como una función de hashing de contraseña?

16

Un profesor nos dijo hoy, que el MD5 es débil. Entiendo su cadena de pensamiento, pero he señalado que IMHO MD5 es una buena forma de proceder si se usan sales dinámicas largas (aunque realmente largas) y pimienta estática.

Él me miró y dijo ¡NO!

En mi humilde opinión, la posibilidad de "fuerza bruta" un hash md5 con cualquier diccionario es incluso simple. Si usara una sal dinámica / variada, se endurecería para obtener una coincidencia con una complejidad de O (2 ^ n) y si utilizo una pimienta antes y después de mi hash de contraseña con sal no sería 100% seguro, pero podría tomar. mucho tiempo para computarlo ..

    
pregunta Alex Tape 28.02.2014 - 17:18
fuente

2 respuestas

30

Hay muchas debilidades criptográficas conocidas en MD5 que lo hacen inutilizable como algoritmo de compendio de mensajes, pero no todos estos también se aplican en el contexto del hashing de contraseñas. Pero incluso cuando asumimos que no existen, MD5 sigue siendo un mal algoritmo de hashing de contraseñas por una simple razón: Es demasiado rápido .

En cualquier escenario en el que un atacante haya obtenido las contraseñas con hash, debe asumir que también obtuvo la sal de cada contraseña y la pimienta.

La única razón para usar un pimiento es que no puedes usar una tabla de arco iris precomputada antes del ataque, porque necesitas una diferente para cada base de datos. La única razón para usar un salt es que no puede usar la misma tabla de arco iris para toda la base de datos de contraseñas, porque la misma contraseña para dos cuentas diferentes tendrá un hash diferente.

La longitud de la pimienta y la sal no importan mucho. Su único propósito es asegurarse de que cada valor sea único. Una mayor duración no hace que el ataque sea mucho más difícil (hay más datos para el hash, pero eso es un aumento lineal a lo sumo).

La conclusión es que solo se necesita un poco de sal para asegurarse de que el atacante debe forzar con la fuerza bruta todas las contraseñas posibles para encontrar el hash correcto para cada cuenta.

Y ahí es donde entra en juego la debilidad del MD5: es un algoritmo rápido y que conserva la memoria. Eso significa que un atacante puede calcular el hash de un gran número de contraseñas por segundo. Mediante el uso de hardware especializado (como matrices FPGA o ASIC) con un valor de unos pocos miles de dólares, puede calcular los hashes de todas las posibles contraseñas de 8 caracteres para una sal determinada en pocas horas.

Para una mejor seguridad, use un algoritmo lento como bcrypt. Significa que su sistema necesita más ciclos de CPU para autenticar a los usuarios, pero la recompensa suele valer la pena porque un atacante también necesitará mucha más capacidad de procesamiento para forzar la base de datos de contraseñas en caso de que la obtengan.

    
respondido por el Philipp 28.02.2014 - 17:38
fuente
13

La gravedad del peligro en el uso de MD5 depende de su uso, pero no hay ninguna razón convincente para usarlo.

MD5 no debe utilizarse para firmas porque es posible (y sigue siendo posible más a lo largo del tiempo) evitar las protecciones ofrecidas al firmar MD5 cuando se usa.

Si, por otro lado, su propósito es blanqueamiento datos aleatorios para obtener una distribución más consistente de unos y ceros , entonces MD5 es tan bueno como siempre lo fue. Tenga en cuenta que esta no es una operación sensible a la seguridad ; no hay un vector de ataque porque no hay un objetivo, nada que ganar o perder a través del conocimiento del algoritmo, solo una transformación simple donde la salida es verdaderamente aleatoria porque la entrada es verdaderamente aleatoria.

En algún lugar entre estos dos extremos encontrarás todas las demás operaciones. A medida que aumenta la sensibilidad de lo que está haciendo y su dependencia de la irreversibilidad del hash criptográfico, también aumenta el peligro de usar MD5.

Pero la mejor razón para no usar MD5 es la misma razón para no usar triple-DES: hay mejores opciones disponibles y ninguna ventaja de usar el algoritmo anterior. MD5 está muerto; Puede ser útil en ciertas circunstancias limitadas, pero la mejor opción es evitarlo por completo para no usarlo accidentalmente en un lugar donde la seguridad sea importante.

    
respondido por el tylerl 28.02.2014 - 20:05
fuente

Lea otras preguntas en las etiquetas