0

So there are a few cloud storage services such as mega.nz, syn.com and others which state that they use zero knowledge encryption. This would mean that they don't have access to the private keys which are required to decrypt and view the content stored by a user on their cloud storage.

If that is the case, then how is it possible to do the following?

  1. I login to my account and I can view all the content and even stream it (for example, videos can be played directly). Does it mean that all this is decrypted on the fly when I login to the account?

  2. If I generate a download link and share it with another user, how are they able to download the content using that download link even though they don't have the password to my account which would be required to decrypt the content?

Or does mega.nz store the information required to decrypt the content in the link itself? For instance, decryption key is a part of the download link?

I wonder if there is a way to actually verify that these cloud storage services which claim to use zero knowledge encryption are indeed using it? Maybe there is some type of third party audit done to confirm this?

2
  • The answer will vary wildly from provider to provider, so I think your best bet would be to ask them. Presumably the encryption key is only available to you upon login. A stupid simple way of doing it would be to have you generate the key, encrypt it with your password, and then store the encrypted key and your data with them. Without your password they cannot decrypt it. Commented Sep 1, 2020 at 20:38
  • As for confirming whether or not they do what they say: that is simply impossible. You must take their word for it. Commented Sep 1, 2020 at 20:38

1 Answer 1

3

Or does mega.nz store the information required to decrypt the content in the link itself? For instance, decryption key is a part of the download link?

Exactly. You can notice that their link contain a hash and a bunch of characters. Anything after the # is not sent to the web server in the petition (that's supposed to contain the anchor to which the client browser should jump). The encryption key is provided to the other party in that section of the link there. The browser javascript is able to access that part of the url and decrypt it completely client side (note that as the javascript is also provided by the cloud storage, they could use a "malicious" javascript to leak it to them).

I wonder if there is a way to actually verify that these cloud storage services which claim to use zero knowledge encryption are indeed using it?

You could use a third-party program to operate with their service. If they are following their documented api and encrypting locally the file contents, then the service supports not knowing the contents of the file (this doesn't mean it won't leak them otherwise, but it's possible). Quoting from an old megatools changelog entry:

Megareg tool is now implemented, and can be used to register new accounts without the need for Mega website. Unless you login to Mega, Mega will never be able to get your password key.

Generally, local clients or web extensions are safer than the site javascript, as that one is under complete control of the website. If you are a trusted client which only shares with the service files encrypted locally (in a safe way, etc.). then you can be sure they won't be able to access your files.

(Note that they might gain that ability once you provide them your password through their web interface!)

Additionally, for your peace of mind, you could always encrypt a file locally before uploading to a cloud ervice, even if it's one which supposedly encrypts the file itself in a way that the service is unable to access them.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .