30

Dropbox have recently published How Dropbox securely stores your passwords

Is this really more secure than using bcrypt with a complexity of 11 or 12 ?

The password "chain" is secure as its weakest part, so is there any point adding the extra 2 parts in ?

I understand that the Global "pepper" means that a DB dump protects the hashes until that pepper is found, and then each hash is still salted per user, but how much would that slow down people reversing the passwords in the event of a DB leak over simply bcrypting them ?

enter image description here

exussum
  • 403
  • 4
  • 7
  • 26
    Based on that diagram, I'd go through the bottom, where the layers of encryption are thinner. – flith Dec 20 '16 at 08:20
  • 1
    If the HSM storing the global pepper is secure enough and the pepper is unexportable from it (it was generated inside the HSM and could never leave it) then the possible attacker would not be able to get all the hashes together. He would be forced do decrypt the hashes one by one using the services of the HSM and there could be some limits enforced like maximum number of hash decryptions per a time period. --- Alternatively the passwords could be checked completely inside the HSM so the hash would be never exposed unecnrypted but I think that such a powerful HSM cluster would be too expensive. – pabouk - Ukraine stay strong Dec 20 '16 at 08:44

3 Answers3

30

Is this really more secure than using bcrypt with a complexity of 11 or 12 ?

It depends. Obviously if you consider everything on their servers compromised this isn't more secure than using a higher workload for the password hashing scheme (PHS). If you assume they can guard their pepper better than their password database then the passwords are irrecoverable from the dump.

The password "chain" is secure as its weakest part, so is there any
point adding the extra 2 parts in ?

A chain isn't really the correct analogy here. Assume an attacker can brute-force infinitely many bcrypt hashes but can't get the pepper. There's no way such an attacker could recover the passwords because he can't obtain the hashes required to brute-force them.

A better analogy would be an onion. You can't get to the core (the password) without going through all the layers (pepper, bcrypt, SHA-512).

I understand that the Global "pepper" means that a DB dump protects the hashes until that pepper is found, and then each hash is still salted per user, but how much would that slow down people reversing the passwords in the event of a DB leak over simply bcrypting them ?

The pepper is a 256-bit AES key. If an attacker doesn't get hands on this one there's no way they can recover the hashes and thus potentially the passwords. However as soon as you have exfiltrated the key, the additional AES encryption has just about 0 influence on the run-time required for brute-forcing a key. So you win in case you can protect the key and you lose nothing if you can't do that.

SEJPM
  • 45,967
  • 7
  • 99
  • 205
  • 4
  • for saying it's not chain, but onion. That come up my mind when I was reading the question.
  • – Marek Dec 20 '16 at 11:29
  • That's not a pepper, is it? A pepper has to be added before hashing. Furthermore, it says "AES256 Encryption with Global Pepper", not "as". – UTF-8 Dec 20 '16 at 15:19
  • @UTF-8 a pepper is a secret value that is used somehow during the process of hashing a password. This may be done like here with encryption, with HMAC'ing or with simple prepending to the password or with something inherent to the PHS. – SEJPM Dec 20 '16 at 16:55
  • Am I the only one the read Orge? – coteyr Dec 20 '16 at 17:21