I am looking into allowing user of our website to upload their file directly to GCE storage without sending the file to our server.
But we want the file to first be encrypted before saving it on GCE. The client does not need access to the file nor the encryption key it generated once it is done with the upload.
Therefore, what I am thinking about is:
- client (javascript running in browser) generate a random symmetric key, encrypt the file and upload it to GCE
- client send the key to the server and destroy it
Communication between client & servers is of course over https.
Questions:
- Is this approach secure? If not, why?
- Would it be better to use a hybrid encryption? Using a public-key to encrypt the newly generated symmetric key before sending it to the server. If so, what's the benefit?
Correct me if wrong, but I would prefer to avoid only using asymmetric encryption since we may encrypt rather large file and I believe asymmetric encryption does not perform well in that case.
Thanks