Estoy desarrollando una aplicación web que almacena datos encriptados en un servidor. Quiero derivar la clave de cifrado y la clave de inicio de sesión de una única contraseña de usuario, por lo que quiero usar libsodiums crypto_pwhash para generar una clave lo suficientemente larga, que pueda dividir en dos. La idea es que el servidor no pueda descifrar los datos cifrados.
Para usar esta función necesita sal. Entiendo que la sal puede no ser secreta, pero se debe almacenar en algún lugar.
-
Si lo guardo en el servidor, se debe recuperar antes de la autenticación (porque es necesario para obtener la clave de inicio de sesión). Esto permitiría probar si existe un nombre de usuario sin conocer su clave de inicio de sesión. No estoy seguro si eso sería un riesgo de seguridad.
-
¿Podría derivar la sal de otra manera? ¿Qué pasaría si simplemente me diera el nombre de usuario? ¿O la propia contraseña? ¿O correría el riesgo de no tener suficiente entropía?