I work for a company that provides a web app where we would like to give the user some sort of "digital safe". In this safe, the user can store and download whichever files he wants.
The idea is that the system generates a symmetric key for an user and this key will be used for encrypting and decrypting the files inside the safe. This key will only be generated once for the user and as soon as he downloads it, it will be deleted from the server. If the user wants to see what is inside the safe or wants to put a new file inside, he will have to provide this key. As all files would be encrypted at rest, this should keep us safe in case someone gets access to these files on the server. Plus, if someone manages to steal a users account and password, they still wouldn't be able to see the files unless they also managed to steal the key.
The objective is to really transfer the responsibility of keeping this key safe to the user. We are aware if he loses this key he will never be able to retrieve what stores in the safe again. The idea is to make us less accountable for what he is storing in the safe and to show that not even we, the creators of the web app, have access to his data.
So, summary: disclosure is important. We want to let the user encrypt files and protect them from ourselves and from potential intruders, even if the user's username and password leaks. Letting the user be responsible for his key should make us less accountable.
Is it a terrible idea to let the user be responsible for his encrypted data?
