Soy bastante nuevo en todo el negocio de hash de contraseñas, por lo que podría faltar algo obvio.
Estaba mirando el algoritmo bcrypt, en particular BCrypt.Net , y me preguntaba si no sería más seguro ¿Para calcular una sal única para cada usuario en lugar de una sal aleatoria?
En este momento, la sal y la carga de trabajo (# rondas) están expuestas en la cadena de contraseña con hash. ($ 2a $ + carga de trabajo de 2 dígitos + $ + 22 caracteres de sal + 31 caracteres de contraseña de hash) ¿No estamos ayudando a los posibles piratas informáticos dándoles la sal (si, por ejemplo, quieren forzar la contraseña del administrador)?
¿No podríamos calcular la sal para cada usuario mediante hash (por ejemplo, con MD5 o SHA1) su dirección de correo electrónico?
Si luego solo guardamos los 31 últimos caracteres de la contraseña hash de bcrypt, omitiendo el identificador, la carga de trabajo (si la mantenemos fija) y, lo más importante, la sal. ¿No sería esto mucho más difícil para la persona que intenta encontrar la contraseña?
(Y en el lado positivo, obtendríamos algo de espacio en la base de datos para grandes bases de datos de usuarios, ya que la contraseña es de solo 31 caracteres en lugar de 60)
Probablemente me esté perdiendo algo obvio, ya que no puedo ser la primera persona en hacer esta reflexión.
Marc