Pregunta

Al escribir una aplicación nueva promedio en 2009, ¿cuál es la función de compendio más razonable para usar, en términos de seguridad y rendimiento? (¿Y cómo puedo determinar esto en el futuro, según cambien las condiciones?)

Cuando similar < a href = "https://stackoverflow.com/questions/184089/what-is-the-strongest-hashing-algorithm-commonly-available-today"> questions were preguntado anteriormente, las respuestas han incluido SHA1, SHA2, SHA-256, SHA-512, MD5, bCrypt y Blowfish.

Me doy cuenta de que, en gran medida, cualquiera de estos podría funcionar, si se usa de manera inteligente, pero prefiero no tirar un dado y elegir uno al azar. Gracias.

¿Fue útil?

Solución

Sigo las pautas de NIST / FIPS :

  

15 de marzo de 2006: la familia SHA-2 de   funciones hash (es decir, SHA-224,   SHA-256, SHA-384 y SHA-512) pueden ser   utilizado por las agencias federales para todos   aplicaciones que utilizan hash seguro   algoritmos Las agencias federales deben   Deje de usar SHA-1 para digital   firmas, sellado de tiempo digital y   otras aplicaciones que requieran   resistencia a la colisión tan pronto como   Práctico, y debe utilizar el SHA-2.   Familia de funciones hash para estos   aplicaciones después de 2010. Después de 2010,   Las agencias federales pueden usar SHA-1 solamente   para las siguientes aplicaciones:   autenticación de mensajes basada en hash   códigos (HMACs); derivación clave   funciones (KDFs); y número aleatorio   generadores (RNGs). Independientemente de su uso,   NIST fomenta la aplicación y   diseñadores de protocolo para utilizar el SHA-2   Familia de funciones hash para todos los nuevos   aplicaciones y protocolos.

Otros consejos

Dices " función de compendio " ;; presumiblemente eso significa que desea utilizarlo para calcular resúmenes de " long " mensajes (no solo hashing " mensajes " " " " " como contraseñas). Eso significa que bCrypt y opciones similares están fuera; están diseñados para ser lentos para inhibir los ataques de fuerza bruta en las bases de datos de contraseñas. MD5 está completamente roto, y SHA-0 y SHA-1 están demasiado debilitados para ser una buena elección. Blowfish es un cifrado de flujo (aunque se puede ejecutar en un modo que produce resúmenes), por lo que tampoco es una buena elección.

Eso deja varias familias de funciones hash, incluyendo SHA-2, HAVAL, RIPEMD, WHIRLPOOL y otras. De estos, la familia SHA-2 es la más analizada por criptoanálisis, por lo que sería mi recomendación para uso general. Recomendaría SHA2-256 o SHA2-512 para aplicaciones típicas, ya que esos dos tamaños son los más comunes y es probable que SHA-3 los admita en el futuro.

Realmente depende de para qué lo necesites.

Si necesita seguridad real, ya que la capacidad de encontrar una colisión podría comprometer fácilmente su sistema, usaría algo como SHA-256 o SHA-512, ya que son muy recomendados por varias agencias.

Si necesita algo que sea rápido y se pueda usar para identificar algo de manera única, pero no existen requisitos de seguridad reales (es decir, un atacante no podría hacer nada desagradable si encontrara una colisión) entonces usaría algo como MD5.

MD4, MD5 y SHA-1 han demostrado ser más fáciles de romper, en el sentido de encontrar una colisión a través de un método de ataque de cumpleaños, de lo esperado. RIPEMD-160 está bien considerado, pero con solo 160 bits, un ataque de cumpleaños solo necesita 2 ^ 80 operaciones, por lo que no durará para siempre. Whirlpool tiene excelentes características y parece ser el más fuerte del lote, aunque no tiene el mismo respaldo que SHA-256 o SHA-512, en el sentido de que si hubo un problema con SHA-256 o SHA-512, Es más probable que lo averigüe a través de los canales adecuados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top