Aquí hay un plan en el que estoy pensando. No he visto esta propuesta, así que pensé en preguntar.
Amenaza de la que estamos protegiéndonos:
Una computadora portátil perdida o robada que lleva a la exposición de información sensible.
Descripción del proyecto:
Desarrollar una aplicación de cliente de escritorio para permitir a los usuarios que viajan recopilar datos cuando no están conectados a la red. Se trata de datos confidenciales y debe estar encriptado en reposo. Obviamente, la clave para el cifrado no se puede almacenar en el cliente en ningún lugar, por lo que usaré una generación de clave basada en contraseña para cifrar los datos. Contraseña hash almacenada en el cliente. Esto está en las computadoras portátiles que no controlamos, por lo que no podemos aplicar el cifrado de todo el disco.
Esto está bien hasta que el usuario olvide su contraseña u otro usuario se haga cargo del trabajo o el usuario cambie su contraseña. El administrador necesita una forma de rescatar datos encriptados. Por lo tanto, la propuesta es guardar una copia de los datos encriptados utilizando una clave pública generada por el administrador, que posee la clave privada asociada. Esta copia se guarda por transacción o cuando el usuario finaliza la sesión.
Preguntas :
- ¿Existe algún defecto en este enfoque?
- ¿Se ha resuelto esto de otra manera?
Similar a: Cifrado de los datos del usuario usando una contraseña y olvidé mi contraseña
Excepto que se trata de una aplicación web y no se sugiere un par de claves público-privadas.
Actualización: este es un cliente Java (utilizando Java Web Start) en Windows.