Here's what I would like to do: have a client side that generates and processes the user's data, then encrypts it and stores in a database - in order to later retrieve, decrypt and process the data further.
The server would authorize the user somehow and then let them save and retrieve their data. Ideally, the server should know nothing about the encryption/decryption keys.
Now if the user loses their keys (e.g. local disk crashed), I'd like them to be able to retrieve those keys from some secure place, ideally authorised by the same account as the server database, but not stored at the same server.
How would you approach this scheme and what services exist that would allow me to do this?