1
0
mirror of https://github.com/bitwarden/help synced 2026-01-06 02:23:22 +00:00

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
This commit is contained in:
fred_the_tech_writer
2021-01-05 08:47:39 -05:00
committed by GitHub
parent 2cdca9f136
commit 9e5eec3ac4
17 changed files with 256 additions and 231 deletions

View File

@@ -1,33 +1,51 @@
---
layout: article
title: What encryption is being used?
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]{:target="blank"} 256 bit encryption as well as [PBKDF2][pbkdf2]{:target="blank"} to secure your data.
Bitwarden uses [AES-CBC](#aes-cbc) 256-bit encryption for your Vault data, and [PBKDF2](#pbkdf2) SHA-256 to derive your encryption key.
[AES-CBC][aes]{:target="blank"} 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.
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 %}).
[PBKDF2][pbkdf2]{:target="blank"} SHA-256 is used to derive the encryption key from your master password. This key is then salted and hashed. The default iteration count used with PBKDF2 is 100,001 iterations on the client (this 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"}.
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.
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:
{% 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 %}
- JavaScript (web, browser extension, desktop, and CLI vaults)
## 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 vault)
- C# (Mobile)
- CommonCrypto (iOS, Apple)
- Javax.Crypto (Android, Oracle)
- [BouncyCastle][bouncy]{:target="blank"} (Android)
Bitwarden **always** encrypts and/or hashes your data on your local device before it is ever sent to the cloud servers for syncing. The Bitwarden servers are only used for storing encrypted data. It is not possible to get your unencrypted data from the Bitwarden cloud servers.
For examples of how this encryption is used, please visit our [cryptography example page.](https://bitwarden.com/help/crypto.html)
[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