Estoy desarrollando un servidor (Java + Spring) y quiero cifrar los datos confidenciales de los usuarios en la base de datos, utilizando una clave específica para cada uno.
Pensé en cifrar los datos del usuario usando su contraseña como base para la clave pero ...
- Solo estoy almacenando contraseñas con hash (bcrypt) en la base de datos
- El usuario solo envía la contraseña al servidor cuando crea su cuenta e inicia sesión. Para la autenticación de la solicitud, utiliza JWT (solo contiene la identificación del usuario, con un secreto seguro y un tiempo de caducidad bajo) generado después de cada inicio de sesión.
Pensé en almacenar la contraseña como texto sin formato en la base de datos, pero eso me lleva al mismo problema: si la db se ve comprometida, un atacante podría descifrar fácilmente el contenido del usuario.
¿Hay alguna manera de lograr esto?