Al permitir que un usuario cambie las contraseñas, ¿debo generar una nueva sal?

8

En mi base de datos, tengo una columna para la contraseña hash y la sal. Mi aplicación permite a los usuarios cambiar su contraseña. ¿Debo usar la misma sal para la contraseña, o debo generar una nueva? ¿Importa a la seguridad de la aplicación?

Ivan
fuente

Respuestas:

14

Si. Siempre genere una nueva sal cuando se cambia la contraseña .

Considere los siguientes dos escenarios:

Conocido no cambia la sal

Sé que no estás cambiando la sal por tus contraseñas. Veo que admintiene una sal que es 'xyz', y ahora muevo la mesa del arco iris por esa sal. No importa a qué cambie su contraseña de administrador, lo sé.

Contraseñas repetidas

Sé que el usuario tenía una contraseña hash de 'xyz: abcdef' ( xyzes la sal, abcdefes la contraseña hash). Luego, más tarde, veo que la información en hash es 'xyz: 012345' - ok, cambiaron su contraseña. Sin embargo, más tarde veo la contraseña con algoritmo hash como 'xyz: abcdef' y sé que ha cambiado es una copia de la primera contraseña.

Estos dos escenarios en los que se proporciona información innecesaria al atacante se evitan trivialmente al generar sal nueva cada vez que se genera una contraseña.


Notarás que las cursivas en "cuando se cambia la contraseña" arriba. Esto se agregó después de un comentario de darkhogg preguntando si cambiar la sal con más frecuencia es "mejor, peor o simplemente inútil".

En Security.SE la pregunta de ¿Con qué frecuencia debo restablecer mi sal? responde esto. Cambiar la sal con más frecuencia que los cambios de contraseña le da a un posible atacante más información sobre la contraseña que solo un hash.

Cambiar la sal más a menudo que la contraseña no significa que la nueva información dificultará más a un atacante porque la misma contraseña correcta seguirá funcionando sin importar cuál sea la sal.

Comunidad
fuente
Esto podría ser suficiente para otra pregunta, pero ... ¿Cambiar la sal de vez en cuando (por ejemplo, 10-30 días) después de un inicio de sesión exitoso sería mejor, peor o simplemente inútil?
Darkhogg
@Darkhogg esa es una pregunta interesante y probablemente sea ​​algo para dirigirse a Security.SE para preguntar.
3
Creo que acabo de encontrar mi respuesta, la vincularé por seguridad
.stackexchange.com