November 12, 2008
Goal: Security done right
Protecting the privacy of our users’ data is a top priority for us here at Backblaze, and that means encryption. But providing a service that is extremely easy to use is also a key part of our vision and far too often encryption makes a product hard to use. This trade-off was unacceptable to us so we set out to build a system that delivers military-grade encryption without compromise! Here is the full list of our requirements:
1) Protect data with military-grade encryption
2) Implement encryption transparently so users don’t have to deal with it
3) Allow Online Backup users to change their password without re-encrypting their data
4) In business environments, allow IT access to data without the user’s password
The solution: Military grade encryption made easy
To accomplish the ambitious goals above we used a mix of public/private and symmetric key algorithms. The math behind this cryptography is hard but the idea is simple…. Public/private keys allow you to encrypt data with one key and decrypt it with another one. Typically data is encrypted with the public key and decrypted with a private key that is kept secret but the reverse also works. This is very useful because it allows us to encrypt data in the background without requiring the user to type in their password.
Unfortunately, public/private key algorithms are slow and can’t be used to encrypt a large amount of data. Symmetric key algorithms use the same key to encrypt and decrypt data and are very fast on large amounts of data. But since the same key is used to decrypt the data, the data is only secure if the symmetric key is secure.
Combining these algorithms, here’s how our system works.
We generate a new 2048-bit RSA public/private key pair when our client is installed, store the public key on the local disk, and transmit the private key to our datacenter via HTTPS. Then, for each backup session, we generate a new random 128-bit AES symmetric key which we use to encrypt the user’s data. We secure the 128-bit AES key by encrypting it with the user’s public key and transmit the encrypted file along with the encrypted key to our datacenter over HTTPS. We destroy the unencrypted 128-bit AES key at the end of each backup session and never write it to disk. To decrypt a file, the user’s private key is used to decrypt the 128-bit AES which is then used to decrypt the file.
The user’s private key which is stored safely in our data center is protected by a password that is highly guarded. But for some users, this is not good enough. We also allow Online Backup users to secure their backup with a Private Encryption Key (PEK). When this is done, it is impossible to access the data without the PEK. This also means we can’t help the user if they ever forget this password so we don’t recommend it for most users.
The real beauty of this scheme becomes clear when you look back at our goals above. AES is the encryption standard adopted by the US government to protect classified information. #1 solved. Using the user’s public key we can safely run transparently in the background without compromising security. #2 check. Since a PEK is used to secure the private key rather than to encrypt the data directly, the PEK can be changed by re-encrypting only the private key with a new one. #3 accomplished. Last but not least, you can make several copies of the user’s private key and encrypt each copy with a different password to provide IT access to data without the need to share passwords. #4 done!
Articles in this section
- Disabling The "Locate My Computer" Feature
- Backblaze Maintenance Schedule
- U.S. East Data Region FAQ
- How to find your userPub.pem file on Windows
- Why is my hard drive listed twice?
- Why am I receiving a pop-up about a missing or duplicate .bzvol?
- Where are iCloud files located in my backup? (Mac)
- Migrate data from old computer to new computer with Backblaze
- Why does Backblaze need my private encryption key to restore?
- Version History: Stopping, or resetting progressive billing on the Forever setting.