Me gustaría saber / saber cómo otras compañías enfrentan el problema de almacenar las claves de cifrado. Quiero cifrar la dirección de correo electrónico del usuario (y otra información confidencial) pero (porque quiero poder enviarle un correo electrónico al usuario) Necesito cifrado de dos maneras para descifrarlo.
Hice algunas investigaciones pero todavía no lo entiendo completamente. Es por eso que estoy por tu experiencia.
La pregunta, qué debe usar como clave de cifrado (como la contraseña con hash) o dónde / cómo debe almacenar una clave generada.
Sería inútil almacenar la clave en la misma base de datos porque si se compromete, la clave también se filtrará y los datos se podrán descifrar. Pero los datos deben ser accesibles por el programa ...
Así que estaba pensando ( y compartan su opinión / experiencia ) sobre una base de datos sqLite que vincula la cadena de caracteres de (bcrypt hashed password + mt_rand 64 bit of clave de cifrado de longitud variable) a un user_id. Solo se podrá acceder al archivo desde el código (o desde el exterior si nginx / linux está comprometido). Y si un usuario solicita datos que están cifrados, el sistema usará la identificación del usuario para buscar la clave de cifrado dentro de la base de datos sqlite y usar esa clave para descifrar los datos de la base de datos mysql.
Una mejor manera sería que ni siquiera yo pudiera acceder a los datos (como el hashing), sino que el sistema podría descifrarlos, pero no creo que eso sea posible.
nota al pie, aunque solucionaría este problema dejando la respuesta, también comparte recursos , no solo me ayudaría a resolver mi problema. Pero también aprendiendo a ser mejores en seguridad.