1
0
mirror of https://github.com/bitwarden/help synced 2025-12-11 13:53:26 +00:00
Files
help/_articles/security/what-encryption-is-used.md
fred_the_tech_writer 9e5eec3ac4 Security Content (#342)
* Data use (#336)

* re-purpose article for data use considerations

* Update stored-data.md

* security - everything but faqs

* security faqs

* split data article

* faq update

* faq fix

* faq fix #?

* title fix

* list reposition & title change

* faq fix

* final fixes
2021-01-05 08:47:39 -05:00

56 lines
3.6 KiB
Markdown

---
layout: article
title: Encryption
categories: [security]
featured: true
popular: false
tags: [encryption]
order: 03
redirect_from:
- /article/password-salt-hash/
- /article/how-is-data-securely-transmitted-and-stored/
---
Bitwarden uses [AES-CBC](#aes-cbc) 256-bit encryption for your Vault data, and [PBKDF2](#pbkdf2) SHA-256 to derive your encryption key.
Bitwarden **always** encrypts and/or hashes your data on your local device before anything is sent to cloud servers for storage. **Bitwarden servers are only used for storing encrypted data.** For more information, see [Storage]({% link _articles/security/data-storage.md %}).
Vault data can only be decrypted using the key derived from your master password. Bitwarden is a zero knowledge solution, meaning you are the only party with access to your key and the ability to decrypt your Vault data.
{% callout success %}
We encourage you to visit our [Interactive Cryptography Page](https://bitwarden.com/help/crypto.html){:target="\_blank"} to see for yourself how Bitwarden encrypts your data.
{% endcallout %}
## AES-CBC
[AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard){:target="\_blank"}-CBC [(Cipher Block Chaining)](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_block_chaining_(CBC)){:target="blank"}, used to encrypt Vault data, is a standard in cryptography and used by the US government and other government agencies around the world for protecting top-secret data. With proper implementation and a strong encryption key (your master password), AES is considered unbreakable.
## PBKDF2
[PBKDF2][pbkdf2]{:target="blank"} SHA-256 is used to derive the encryption key from your master password. Bitwarden [salts and hashes](https://www.okta.com/blog/2019/03/what-are-salted-passwords-and-password-hashing/){:target="\_blank"} your master password with your email address **locally**, before transmission to our servers. Once a Bitwarden server receives the hashed password, it is salted again with a cryptographically secure random value, hashed again, and stored in our database.
The default iteration count used with PBKDF2 is 100,001 iterations on the client (*client-side iteration count is configurable from your account settings*), and then an additional 100,000 iterations when stored on our servers (for a total of 200,001 iterations by default). The Organization key is shared via [RSA-2048][rsa]{:target="blank"}.
The utilized hash functions are one-way hashes, meaning they **cannot be reverse engineered** by anyone at Bitwarden to reveal your master password. Even if Bitwarden were to be hacked, there would be no method by which your master password could be obtained.
## Invoked Crypto Libraries
**Bitwarden does not write any cryptographic code.** Bitwarden only invokes crypto from popular and reputable crypto libraries that are written and maintained by cryptography experts. The following crypto libraries are used:
- JavaScript (Web Vault, Browser Extension, Desktop, and CLI)
- [Web Crypto][webcrypto]{:target="blank"}
- [Node.js Crypto][nodecrypto]{:target="blank"}
- [Forge][forge]{:target="blank"}
- C# (Mobile)
- CommonCrypto (iOS, Apple)
- Javax.Crypto (Android, Oracle)
- [BouncyCastle][bouncy]{:target="blank"} (Android)
[aes]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
[pbkdf2]: https://en.wikipedia.org/wiki/PBKDF2
[rsa]: https://en.wikipedia.org/wiki/RSA_numbers#RSA-2048
[forge]: https://github.com/digitalbazaar/forge
[webcrypto]: https://w3c.github.io/webcrypto/Overview.html
[bouncy]: http://www.bouncycastle.org/csharp/
[nodecrypto]: https://nodejs.org/api/crypto.html