2

Bitwarden claims that it is more secure than traditional cloud password managers (such as Google) as it only stores the encrypted version of the passwords database. But for some reason the password you use to authenticate on their website is the same as the vault password - meaning that the company could potentially decrypt your entire vault when you login or simply store the password in plaintext to be able to decrypt anyone's vault at any time.

I've tried looking into their settings and I don't see a way to enable separate passwords for the vault and for the Web UI. Am I missing something or is Bitwarden actually extremely unsecure, presuming you don't trust the owners of their backend?

9
  • So, how do you think it would work if you had a separate password? They still need to store and protect that. If they are malicious, then it doesn't matter how many passwords you have.
    – schroeder
    Dec 21, 2020 at 8:28
  • 3
    This question would also be valid for LastPass. They also have the same password on the (potentially offline) vault and the Web UI.
    – Marcel
    Dec 21, 2020 at 8:29
  • 1
    @schroeder one password for the Web UI, which just let's you tweak account settings. Then you download the full password dump and decrypt it with your second password, which doesn't ever leave your device for any reason. Dec 21, 2020 at 8:33
  • That's not just a password management thing you propose. You are proposing converting it to a non-cloud-based solution. To do what you propose, you could just as easily use any cloud storage solution (Dropbox, etc.)
    – schroeder
    Dec 21, 2020 at 8:49
  • 1
    I think what you mean is "zero knowledge" and they explain all that in their FAQ: bitwarden.com/blog/post/…
    – schroeder
    Dec 21, 2020 at 8:59

1 Answer 1

5

The user password is pre-hashed with a slow password hashing function on the client side, twice, using different algorithms and/or salts. One hash is used to generate a login token (used like a password) which is sent to the server (where it gets additional hashing, and possibly also requires stuff like MFA). The other one is used as a "password-derived key" that is the first step to obtaining the master key for decrypting the database.

Typically the master key is stored on the server, alongside the user's data, in encrypted form. This encrypted master key, along with the encrypted data, is transmitted to the user upon successful authentication. A simple implementation is to encrypt the master key with the password-derived key; this encrypted master key can only be decrypted on the client (the server never sees the password-derived key). More advanced schemes involving public key cryptography are sometimes used to enable sharing select data with other users, without giving them access to your master key or any data you didn't want to share. The password-derived key is not itself used to encrypt/decrypt the data, because then if the user changed their password it would be necessary to re-encrypt everything. Instead, changing a password just requires decrypting the master key with the old password-derived key, and re-encrypting it with the new one.

1
  • Key Encryption Key is what described there. Also, one can share the key encrypted with the public key and data in the encrypted form.
    – kelalaka
    Dec 23, 2020 at 22:00

You must log in to answer this question.

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