Quick Links

Recent revelations about government surveillance have raised the question: why don't cloud services encrypt your data? Well, they generally do encrypt your data, but they have the key so they can decrypt it any time they like.

The real question is: Why don't web services encrypt and decrypt your data locally, so that it's stored in an encrypted form no one can snoop on? LastPass does this with your password database, after all.

How End-to-End Encryption Would Be Different

To be clear, your data probably is encrypted. Let's take Dropbox for example. When you connect to Dropbox, Dropbox transfers all data over an encrypted connection so no one can snoop on it in transit. Dropbox also promises that they store your files on their servers in encrypted form.

However, encryption is a lock, and whether something is locked is less important than who has the key. Dropbox has the encryption key to view all your files on their servers, so while it's true that it's encrypted, it's also true that Dropbox has full access to them and that they could cooperate with government surveillance or a rogue employee could snoop through your files.

The idea of "end-to-end encryption" -- you could also refer to it as "local encryption and decryption" -- is different. With end-to-end encryption, the data is decrypted only at the end points. In other words, an email sent with end-to-end encryption would be encrypted at the source, unreadable to service providers like Gmail in transit, and then decrypted at its endpoint. Crucially, the email would only be decrypted for the end user on their computer and would remain in encrypted, unreadable form to an email service like Gmail, which wouldn't have the keys available to decrypt it. This is much more difficult.

Download and Local Decryption

As we mentioned above, LastPass uses local encryption and decryption via your web browser. It downloads an encrypted blob containing your passwords, decrypts it with your password, and allows you to access your passwords. Note that LastPass must download your entire vault of passwords and other data to decrypt it. In the case of LastPass, this works just fine -- it's a fairly small file.

However, it wouldn't be anywhere near as easy to do this with other web services. For example, if Gmail worked similarly, Gmail would have to download a file representing your entire 5 GB email inbox to your computer. It could perhaps use HTML5's LocalStorage specification for this, if LocalStorage could store more data. This file would then have to be decrypted locally to provide access to your email inbox, which would take a while.

It's possible that Gmail could do this differently, with a separate file representing each new, encrypted email. But there's so much more complexity involved in architecting an email client this way.

This would actually be more-or-less impossible today -- LocalStorage is often limited to 5 MB or less per website in popular browsers. The spec says that users should be able to increase this limit if they like, but few browsers implement this.

lastpass-decryptiong-passwords

No Secure Web Apps

Cloud storage services like SpiderOak and Wuala are different from Dropbox -- they provide complete local encryption and decryption. Install the desktop program for SpiderOak or Wuala and they'll encrypt your files before uploading them, so the service itself never knows what you're storing, and your encryption key is required to access them.

However, these services are different from Dropbox in other ways, too -- they don't encourage the use of a web interface for easy access. It's easy for Dropbox to provide a web app that allows you to access your files, because it understands what those files are. SpiderOak and Wuala don't understand what you're storing, so it's much easier for them to just allow you to download all the encrypted blobs with your desktop program and let the desktop program do the hard work.

These services would have to allow you to decrypt and understand the encrypted file names, download the encrypted file to your browser (perhaps via LocalStorage), use a decryption algorithm to decrypt it locally, then prompt you to save it to your computer. Because of LocalStorage's limitations, this would be impossible in practice.

SpiderOak actually does provide a web app, although they recommend against using it because it must store your SpiderOak encryption key in memory on their servers while you access your files. They say that they provide it as a result of "overwhelming customer demand" -- even on a service best-known for its encryption and security, customers overwhelmingly demand more convenient, insecure options.

No Spam Filtering, Search, and Other Smart Features

Services like Gmail are special because they provide additional services instead of just being a box that holds all your email. For example, Gmail examines incoming email and runs a spam filter against it to determine whether it's junk. Gmail indexes your email so you can quickly search through it. Gmail looks at an email's contents partly to determine whether it's important and allows you to set up filters that automatically perform actions based on an email's content.

All of these features rely on Gmail -- and Google -- being able to understand your email and having access. If they didn't have access, they couldn't perform spam filtering, enable filtering of emails based on their contents, or allow you to search your inbox. So many of the most important features depend on the service having access to your files.

No Password Recovery

Most online services offer password recovery mechanisms. However, for truly secure local encryption, there can't be a password recovery mechanism. You have your encryption key, which decrypts your files. If you lose access to this key, you won't be able to decrypt your files.

It would be impossible to offer a "password reset" mechanism unless the service knew the contents of the data. Services can do this now because your password is just a way to authenticate with your account -- it's not a mandatory code that makes your data accessible. Even if services could easily move to end-to-end encryption, this would give them pause -- many average users would forget their encryption keys, lose their data, complain, and then move to an unencrypted provider. The service would be encouraged to relax the encryption.

SpiderOak tries to help its users by offering to send them a password hint they provided when setting up the account, but it can't reset the password completely. Forget your password and your files are gone, assuming they're not stored on a local computer.

spideroak-password-hint

They Want to Sell Your Data or Target Ads

We're not going to pretend otherwise: Many services also want to analyze your personal data and use it to make money. Google scans your emails and uses the information they have about you to present targeted ads, but at least they don't sell that personal information to other companies. Facebook does sell your personal information directly to other companies.

Services need access to your data so they can do this, so they're incentivized not to provide strong, end-to-end encryption.

gmail-sponsored-ads

These are far from the only reasons why local encryption and decryption of your personal data is a non-starter for the vast majority of cloud services. We hope that it has shed some light on the difficult problems involved and explained why so much of your data is theoretically readable by other people. There may be easier ways to implement some encryption features -- for example, by allowing users to send an encrypted email via Gmail -- but don't expect everything to become locally encrypted and decrypted any time soon.

Image Credit: Andy Roberts on Flickr