La base de datos de mi aplicación web almacena datos confidenciales. Un atacante no debería tener acceso a estos datos si obtiene acceso a la base de datos. Por eso quiero cifrar estos datos confidenciales en la base de datos.
Primero quería cifrar los datos de los usuarios con el nombre de usuario o la contraseña como clave. El problema con este enfoque es que el usuario puede cambiar su nombre de usuario y contraseña. En el caso de que el usuario cambie su nombre de usuario, la aplicación ya no podrá descifrar los datos cifrados con su antiguo nombre de usuario. Además, el atacante tiene acceso al nombre de usuario del usuario. Por lo tanto, esta no sería una solución muy segura.
La única otra idea que tengo es cifrar todos los datos del usuario con una clave global. Un inconveniente de esto es que todo el sistema se basa en una clave. En este escenario, no puedo cambiar la clave debido a la incompatibilidad de la nueva clave y los datos antiguos.
¿Tiene alguna idea mejor sobre este problema?