Le guardaré el detalle de los problemas, pero avíseme si necesita información adicional que no esté mencionando aquí.
La configuración básica es que tengo una aplicación web, y en el navegador el usuario ingresará información relativamente confidencial que se transmitirá al servidor a través de https. A diferencia de las contraseñas para los inicios de sesión, esta información enviada por los usuarios deberá estar disponible / legible para los usuarios en el futuro y, por lo tanto, encriptada de manera reversible.
He encontrado algunas publicaciones relevantes, pero no estoy seguro si las entiendo completamente. Mi pensamiento inicial fue el siguiente:
- Pídale al usuario que envíe un código de acceso junto con su información confidencial.
- En el lado del servidor, cifro la información confidencial usando su contraseña a través de AES, etc.
- Almaceno la información cifrada en mi base de datos y descarto el código de acceso.
- Cuando el usuario necesita ver la información confidencial, le pido que escriba el código de acceso nuevamente, que luego se envía al servidor.
- Una vez que obtengo el código de acceso, lo uso para descifrar la información de mi base de datos y enviar la información descifrada al navegador.
La conclusión es que nunca almaceno el código de acceso utilizado como clave para el cifrado . Ahora esto va a sonar ingenuo y amplio, pero ¿puede alguien darme una idea de si este procedimiento sería seguro o no? Supongo que, como la clave no se encuentra en ningún lugar del servidor, la información es tan segura / insegura como el propio método de cifrado AES.
¿Cómo codificar datos confidenciales en la base de datos de una aplicación web?
He estado leyendo la respuesta del enlace anterior, que implica varias capas adicionales de cifrado. Probablemente pueda implementarlo, pero ¿son esos pasos adicionales necesarios para mi propósito? Y si es así, ¿cómo esos pasos lo hacen más seguro de lo que he descrito anteriormente? Por ejemplo, en el peor de los casos, si se compromete todo el servidor, ¿sería más conveniente este último método?
¡Gracias!