¿Por qué el hash de una contraseña con múltiples funciones de hash es inútil?

13

Leí en línea que es inútil y, básicamente, poco práctico para hash una contraseña con múltiples algoritmos de hash (y no solo uno) Antes de guardarlos en una base de datos. Realmente no entiendo por qué es eso. Si alguien obtiene una lista de hashes y no sabe qué funciones de hash se utilizaron, ¿cómo se pueden descifrar las contraseñas? Parece que usar una combinación de múltiples funciones hash haría que las contraseñas sean más seguras ... pero aparentemente no lo hacen. ¿Por qué no?

Me refiero específicamente a la sección titulada "Double Hashing & Wacky Hash Functions" en esta publicación de blog .

    
pregunta ninesalt 31.07.2016 - 10:12
fuente

3 respuestas

11

La suposición siempre es que cualquier atacante conocerá el software utilizado, incluida la configuración como el hash. Siempre existe el riesgo de que esa información se filtre, por lo que los sistemas robustos deben ser seguros incluso si se conoce su origen. (Tal vez el atacante compró la misma pieza de software) Además, si el atacante obtiene de alguna manera solo una contraseña, y el hash correspondiente, es relativamente fácil averiguar cuál de un conjunto de funciones hash plausibles produce ese hash.

En cuanto al uso de múltiples hashes para una contraseña al mismo tiempo, el problema es que generalmente hace posible la fuerza bruta de los hashes concentrándose en el más débil o más fácil de calcular (elegido por el atacante).

No había ningún enlace, así que no sé exactamente a qué situación se refiere, por supuesto.

    
respondido por el ilkkachu 31.07.2016 - 10:59
fuente
7

Consulte esta pregunta relacionada sobre por qué es una mala idea combina múltiples funciones de hash .

  

Si alguien obtiene una lista de hashes y no sabe cuál es la función de hash, ¿cómo se pueden descifrar las contraseñas?

Parece que desea defenderse contra el caso de que un atacante haya obtenido acceso a su base de datos, pero no a su código fuente. Sin embargo, apilar múltiples funciones hash conocidas no es un buen enfoque para esto.

Si un atacante puede registrar una cuenta ellos mismos, tendrán una combinación de contraseña y hash, lo que hará que sea bastante fácil adivinar las funciones de hash utilizadas. Incluso si no tienen esto, es probable que la combinación bruta de funciones hash usadas sea fácil.

Por lo tanto, realmente no ganas nada simplemente combinando algunas funciones hash conocidas, y escribir tu propio desde cero es obviamente una mala idea.

Si desea un secreto adicional de su base de código en lugar de la base de datos, puede considerar agregar un pepper , que no solo es más seguro que la combinación de funciones hash, sino que también es más fácil de mantener que algunas funciones (combinación) personalizadas de hash.

    
respondido por el tim 31.07.2016 - 12:32
fuente
3

Puede que no sea completamente inútil, pero tal vez sea demasiado cerca de dos ideas muy malas, a saber, seguridad a través de la oscuridad y rodando tu propia criptografía.

Ilkkachu mencionó anteriormente que asumimos que el atacante conoce la implementación específica (principio de Kerckhoff). Si este no es el caso, estamos tentados a confiar en los detalles de nuestra implementación para la seguridad, y esto crea un punto débil adicional. En segundo lugar, cualquier cosa que vaya más allá de los estándares diseñados por expertos es arriesgado, porque es muy, muy difícil estar seguro de que no ha agregado ninguna vulnerabilidad.

    
respondido por el tao_oat 31.07.2016 - 12:30
fuente

Lea otras preguntas en las etiquetas