Un sistema que estoy implementando requiere que un usuario cree un solo usuario, con una sola contraseña de inicio de sesión.
Quiero tener una contraseña única para el sistema, y no requerir varias entradas de contraseña diferentes para cifrar / descifrar archivos después de iniciar sesión (el propósito principal de este sistema).
La forma en que lo he implementado es: cuando el usuario configura por primera vez la contraseña de la cuenta,
- la contraseña está hash (cifrada) *
- se genera una sal *
- se genera una clave criptográfica utilizando PBKDF2 (basado en la sal)
- Se generan 256 bits aleatorios
- los 256 bits se cifran con la clave derivada utilizando PBKDF2 *
Toda la información "*" anterior se almacena en una base de datos
Los 256 bits descifrados se utilizan para el cifrado / descifrado real del archivo.
La razón por la que lo hago de esta manera es que si un solo usuario decide cambiar su contraseña, los archivos aún serán descifrables (solo tengo que volver a cifrar los 256 bits aleatorios con la nueva contraseña).
¿Es este un enfoque común y seguro?