Here is a plan I am thinking about. I haven't seen this proposed, so I thought I would ask about it.
Threat we are guarding against:
A lost or stolen laptop leading to exposure of sensitive information.
Project Description:
Developing a desktop client app to allow traveling users to collect data when not connected to network. It is sensitive data and needs to be encrypted at rest. Obviously, key to encryption cannot be stored in client anywhere, so I will use a password based key generation to encrypt the data. Password hash stored in client. This is on laptops that we do not control, so we can't enforce whole-disk encryption.
This is fine until the user forgets their password or another user takes over the job or the user changes their password. Administrator needs a way to rescue encrypted data. So, proposal is to save a copy of the data encrypted using a public key generated by the administrator, who holds the associated private key. This copy is saved either per transaction or when the user ends the session.
Questions:
- Is there a flaw in this approach?
- Has this been solved another way?
Similar to: Encrypting user data using password and forgot my password
Except that that is about a web application and a public-private key pair is not suggested.
Update: This is a Java client (using Java Web Start) on Windows.