Entonces, digamos que tengo un mensaje secreto que quiero cifrar y almacenar en mi base de datos, desde donde un usuario autenticado puede recuperar, descifrar, leer y actualizar el mensaje.
EDITAR: el problema que encuentro es este: no tiene sentido usar la misma contraseña para la autorización y el descifrado. Por lo general, una contraseña con hash se almacena en la base de datos para verificar al usuario. Pero si también uso la contraseña hash para cifrar el mensaje, todo lo que debe hacer un pirata informático una vez que vea que la base de datos descifra el mensaje con la contraseña hash
De hacer algunas búsquedas de stackoverflow (http://stackoverflow.com/questions/2388256/secure-encrypted-database-design?rq=1), ahora corríjame si lo entendí incorrectamente, parece que la solución es para cifrar el mensaje secreto con claves públicas, descifrar el mensaje con claves privadas y luego cifrar simétricamente estas claves privadas con frases de contraseña del usuario. Las claves privadas cifradas se pueden almacenar en la base de datos. En resumen, así es como funciona: el usuario proporciona una frase de paso, que descifra la clave privada como se almacena en la base de datos, que luego se utiliza para descifrar el mensaje secreto tal como está almacenado en la base de datos.
Ahora, mi pregunta es esta: ¿puede usar la frase de contraseña para autenticar y descifrar el mensaje? No quiero que los piratas informáticos puedan adivinar las frases de contraseña hasta que la clave privada se haya descifrado correctamente, por lo que una autenticación de usuario (es decir, un nombre de usuario, una contraseña, una contraseña almacenada en la base de datos) sería buena. Sin embargo, la idea de tener que ingresar una contraseña para la autenticación y una frase de contraseña para descifrar el mensaje parece excesiva.
Creo que puedo estar malinterpretando la publicación enlazada, pero mi pregunta final es cómo puedo estructurar el sistema de seguridad para que el mensaje pueda cifrarse en la base de datos (en caso de que alguien obtenga acceso no autorizado a la base de datos) sin tener La contraseña de una persona es la clave para el descifrado.