I have a small embedded device (let's call it "eDev") that needs to upload sensitive information to a cloud storage server (lets call it "CSS").
The requirements for communication are as follows:
- Strong Asymetric encryption on the communication between eDev and CSS.
- eDev and CSS should be authenticated to each other (certificate).
- Data sent from eDev to CSS needs to be encrypted in such a way that the eDev has no way to decrypt it (in other words, I as the developer of eDev should have no way of decrypting data uploaded by a user).
- All encryption should support perfect forward secrecy.
- In case eDev is lost or malfunctions, there should be a way for the user to still be able to retain his decryption key for the cloud stored data.
Here are my constraints and assumptions:
- eDev (the user) registers to the CSS using email only, no password needed.
- initially, I control the eDev hardware and can write anything to it.
- The only place that can store any unencrypted user data (including encryption/decryption keys) is eDev.
What encryption types do I need to fulfill these requirements?
Strong Asymetric encryption on the communication
...on the playoad? Why?? $\endgroup$