Estoy en el proceso de actualizar varios proyectos para que no utilicen varios hashes de contraseñas basados en MD5 inseguros/horriblemente inseguros. Ahora estoy, al menos, un poco mejor informado sobre las mejores prácticas, pero aún me pregunto si estoy haciendo algo mal. No he visto el proceso específico que estoy implementando usado en otro lugar, but at least one SO user seems to want to do something similar. En mi caso:¿Hay alguna ventaja de volver a hashtar contraseñas almacenadas en el momento del inicio de sesión?
Las contraseñas de contraseña se generan mediante bcrypt. (Dado que las opciones correctas parecen ser bcrypt, scrypt, o pbkdf2 y bcrypt fue más fácilmente accesible para mí en PHP.)
Se utiliza una sal diferente, aleatoria para cada hash. (Para evitar que los atacantes generen una tabla personalizada de arcoíris calculada con una única sal estática).
El hash, la configuración del algoritmo y el sal se almacenan juntos. (Dado que eso es lo que la función crypt de PHP me da para el valor hash)
Después de un inicio de sesión exitoso, el hash se vuelve a calcular con un nuevo sal aleatorio.
Es el último paso que me estoy preguntando. Mi intención aquí es permitir las actualizaciones del algoritmo de hash a medida que pasa el tiempo, de modo que los usuarios que inicien sesión regularmente tendrán sus contraseñas almacenadas en el formato más seguro disponible.
Mis preguntas son:
Es esto una pérdida de tiempo?
¿Hay algún peligro al hacer esto?
RE # 2 Creo que OP significaba peligros o vulnerabilidades específicas del enfoque al volver a mezclar con nuevas sales en cada inicio de sesión. – delnan
Agregué dos oraciones para hablar de eso, gracias @delnan –
He vuelto a haschar una contraseña hash, pero no de una manera que se relacione directamente con esta pregunta.Como una actualización única para todos los usuarios que usan contraseñas inseguras, almaceno un hash de su contraseña hash (así tengo bcrypt of md5) marcado para poder detectarlo. Esa es la razón original por la que empecé a volver a cifrar contraseñas en cada inicio de sesión, esto permitió actualizar esos casos especiales cuando los usuarios iniciaron sesión. – flergl