2010-01-22 20 views

Respuesta

57

Depende de su caso de uso. No se puede reclamar ampliamente "superioridad". (Es decir, sí puede, en algunos casos, pero para ser estricto al respecto, no se puede).

pero hay zonas donde se ha roto MD5:

  1. Para empezar: MD5 es viejo y común. Hay toneladas de tablas arcoiris contra ella, y son fáciles de encontrar. Por lo tanto, si usa contraseñas hash (¡sin vergüenza!) - usando md5 - es mejor que no las utilice, son muy fáciles de encontrar. Incluso si estás mezclando con sales simples realmente.
  2. En segundo lugar, MD5 ya no es seguro como una función de cifrado hash (de hecho, ni siquiera se considera una función de cifrado hash, como señala el Forked One). Puede generar diferentes mensajes con hash al mismo valor. Entonces, si tiene un certificado SSL con un hash MD5, puedo generar un certificado duplicado que diga lo que quiero, que produzca the same hash. Esto es generalmente lo que las personas quieren decir cuando dicen que MD5 está 'roto' - cosas como esta.
  3. En tercer lugar, de forma similar a los mensajes, también puede generar diferentes archivos that hash to the same value por lo que usar MD5 como una suma de comprobación de archivos está 'roto'.

Ahora, SHA-512 es un algoritmo hash SHA-2 Family. SHA-1 es considerado como 'eh' en estos días, lo ignoraré. Sin embargo, SHA-2 tiene relativamente pocos ataques en su contra. La principal de la que habla Wikipedia es a reduced-round preimage attack lo que significa que si usas SHA-512 de una manera horriblemente incorrecta, puedo romperla. Es obvio que no es probable que lo estés usando de esa manera, pero los ataques solo mejoran, y es un buen trampolín hacia más investigaciones para romper el SHA-512 de la misma forma en que se rompe el MD5.

Sin embargo, de todas las funciones Hash disponibles, la familia SHA-2 es actualmente la más sólida, y la mejor opción considerando lo común, el análisis y la seguridad. (Pero no necesariamente velocidad. Si está en sistemas integrados, necesita realizar un análisis completo).

+6

"porque puedes generar diferentes mensajes con hash al mismo valor". - esa es la razón por la que ya no se considera un hash criptográfico, ya que ya no cumple con todos los requisitos (http://en.wikipedia.org/wiki/Funcion_de_Hora_criptográfica) –

+1

+1 en la información útil – WarmWaffles

0

Necesita un diccionario mucho más grande para hacer un mapa al revés, y tiene menos posibilidades de colisión.

10

MD5 se ha roto criptográficamente desde hace bastante tiempo ahora colisión. Esto básicamente significa que algunas de las propiedades usualmente garantizadas por algoritmos hash ya no se mantienen. Por ejemplo, es posible encontrar colisiones hash en mucho menos tiempo que potencialmente necesario para la longitud de salida.

SHA-512 (una de las funciones de hash de la familia SHA-2) es, por ahora, lo suficientemente segura pero posiblemente no mucho más en el futuro previsible. Es por eso que el NIST comenzó un concurso para SHA-3.

En general, usted quiere que los algoritmos hash sean one-way funciones. Mapean alguna entrada a alguna salida. Por lo general, la salida es de una longitud fija, lo que proporciona un "resumen" de la entrada original. Las propiedades comunes son, por ejemplo, que pequeños cambios en la entrada producen grandes cambios en la salida (lo que ayuda a detectar alteraciones) y que la función no es fácilmente reversible. Para esta última propiedad, la longitud de la salida ayuda mucho porque proporciona un límite superior teórico para la complejidad de un ataque de colisión. Sin embargo, los defectos en el diseño o la implementación a menudo resultan en una complejidad reducida para los ataques. Una vez que se conocen, es hora de evaluar si todavía está usando una función hash. Si la complejidad del ataque cae lo suficiente, los ataques prácticos se ponen fácilmente en el rango de personas sin equipos informáticos especializados.

Nota: He estado hablando solo de un tipo de ataque aquí. La realidad es mucho más matizada pero también mucho más difícil de entender. Dado que las funciones hash se usan con mucha frecuencia para verificar la integridad del archivo/mensaje, la cuestión de la colisión es probablemente la más fácil de entender y seguir.

+1

Tenga en cuenta que SHA-512 es uno de los algoritmos dentro de la familia SHA-2. (Explicando la referencia a SHA-3.) – yfeldblum

+0

Gracias, Justicia. Incluido :-) – Joey

0

Es simple, MD5 se rompe;) (ver Wikipedia)

Bruce Schneier escribió sobre el ataque que "[w] e ya sabía que MD5 es una función hash roto" y que "nadie ya debería usar MD5 ".

3

Hay un par de puntos que no se abordan aquí, y creo que es por la falta de la comprensión de lo que un hash es, cómo funciona, y cuánto tiempo se necesita para atacar con éxito, usando arco iris o cualquier otro método actualmente conocido por el hombre ...

Matemáticamente hablando, MD5 no es "roto" si usted sala los intentos de aceleración y aceleración (incluso por 1 segundo), su seguridad estaría tan "rota" como lo haría si un atacante se abalanza lentamente sobre su pared de acero sólido de 1 pie con una cuchara de madera:

Tomará miles de años, y para entonces todos los involucrados estarán muertos; Hay cosas mas importantes de que preocuparse.

Si bloquea su cuenta antes del 20 intento ... problema resuelto. 20 hits en tu muro = 0.0000000001% de probabilidad de que hayan terminado. Literalmente, hay una mejor probabilidad estadística de que en realidad eres Jesús.

You're thinking about it wrong.

También es importante tener en cuenta que absolutamente cualquier función hash va a ser vulnerables a las colisiones en virtud de lo que un hash es: "una (pequeña) Identificación única de otra cosa".

Cuando aumenta el espacio de bits, disminuye las tasas de colisión, pero también aumenta el tamaño de la identificación y el tiempo que lleva calcularla.

Vamos a hacer un pequeño experimento mental ...

SHA-2, si existiera, tendría 4 posibles identificadores únicos totales para otra cosa ... 00, 01, 10 & 11. Se producirá colisiones obviamente ¿Ves el problema aquí? Un hash es solo una identificación generada de lo que intenta identificar.

MD5 es realmente muy bueno al elegir aleatoriamente un número basado en una entrada. SHA en realidad no es mucho mejor en eso; SHA solo tiene un espacio masivo para las identificaciones.

El método utilizado es aproximadamente el 0,1% del motivo por el que las colisiones son menos probables. La verdadera razón es el espacio de bit más grande.

Este es, literalmente, el único motivo por el que SHA-256 y SHA-512 son menos vulnerables a las colisiones; porque usan un espacio más grande para una identificación única.

Los métodos reales que SHA-256 y SHA-512 usan para generar el hash son de hecho mejores, pero no demasiado; los mismos ataques de arcoiris funcionarían si tuvieran menos bits en sus ID, y los archivos e incluso las contraseñas pueden tener identificaciones idénticas usando SHA-256 y SHA-512, es mucho menos probable porque usa más bits.

el verdadero problema es cómo se implementa la seguridad de su

Si permite ataques automatizados para que alcance su punto final autenticación de 1.000 veces por segundo, vas a quedar forzado. Si acelera a 1 intento por 3 segundos y bloquea la cuenta durante 24 horas después del décimo intento, no es así.

Si almacena las contraseñas sin sal (una sal es solo un secreto añadido al generador, lo que dificulta la identificación de contraseñas incorrectas como "31337" o "contraseña") y tiene muchos usuarios, usted va a para ser pirateado Si los sala, incluso si usa MD5, no lo es.

Considerando que MD5 usa 128 bits (32 bytes en HEX, 16 bytes en binario), y SHA 512 solo tiene 4 veces el espacio, pero prácticamente elimina la proporción de colisiones al proporcionar 2^384 ID más posibles ... Ir con SHA -512, todo el tiempo.

Pero si le preocupa lo que realmente va a pasar si usa MD5, y no comprende las diferencias reales y reales, es probable que siga siendo pirateado, ¿tiene sentido?

Cuestiones relacionadas