I'm tasked with adding a backup feature to our software. This backup feature should store the customer's database on external memory. One of the requirements for this feature is that the backup should be encrypted. The goal of this encryption is that the customer database is relatively safe when someone leaves a USB-drive with a backup on it laying around. These are not the most stringent security requirements so the backup and encryption features were easy to implement but the real trouble is that encrypting/decrypting the backup requires a key. I'm not sure how we should manage customer keys.
- The customers know absolutely nothing about IT
- Entering an encryption key in the control panel of the software is a big hurdle.
It would be nice if the key could be derived from something. For example from the computer's hardware. But that would make the backups useless if they computer breaks down and needs to be replaced. Its also dubious how safe such a derived key could be.
- In any case the client should definitely not be the one responsible for the generation or safekeeping of the key
They will definitely forget it so the key should come from us or the computer
- Its preferred that only the customer has easy access to that data, but I do not see how we could both manage the key for the client, and not know the key.
Does anybody know of a (standardized) solution to storing keys for customers? Preferably something that minimizes any administrative hassle?