Un aspecto de la seguridad me ha molestado durante mucho tiempo: ¿Por qué hay una certeza positiva acerca de la importancia de los algoritmos de hash y las sales, pero la seguridad de la contraseña nunca se menciona o se considera un asunto "filosófico"? >
Para mí, hay tres componentes de una implementación de hash correcta:
- Algoritmo lento y sin colisiones.
- Buena sal al azar.
- Contraseña segura a prueba de ataques del diccionario.
Un fallo en cualquier componente hará que todo el hash sea inútil. Así que, para mí, no tiene sentido hacer una escena sobre el uso de MD5, pero luego permitirles usar 12345 como contraseña. . Para mí, la seguridad de la contraseña es inseparable y estrictamente un asunto técnico, de no menos importancia que los otros dos aspectos.
Sin embargo, cuando se trata de una simple pregunta en particular, ¡no hay ninguna respuesta en particular!
¿Quieres una sugerencia de algoritmo hash? ¡A su servicio!
¿Quieres saber cómo conseguir una buena sal? ¡Hay mil maneras!
¿Quieres saber cuál debería ser la fuerza de contraseña mínima aceptable? Err ... ya sabes, hay una compensación y algunos asuntos políticos del tipo, así que "usa lo mejor que puedas".
¿Pero existe una definición técnica y práctica para la tecnología "use lo mejor que pueda"? ¿Al igual que uno sobre algoritmos de hash?
O, en otras palabras, ¿por qué hay siempre una recomendación para el algoritmo de hash y una cierta ("usa esto"), pero nunca hay una recomendación para la fortaleza de la contraseña (" Permitir al menos esa fuerza o entender el riesgo ")? O siempre un enorme énfasis en el algoritmo que se debe usar y no preocuparse por la fortaleza de la contraseña. ¿No puede esto dejar la impresión de que el algoritmo de hash es suficiente, lo que deja al programador deficiente con una falsa sensación de seguridad?