Keeping Passwords Secure
facebook.com
facebook.com
2. After the data has been downloaded and parsed, an automated system checks each one of them against the Facebook internal databases to see if any of the email addresses and hashed passwords match valid login information on Facebook. We hash each password using our _internal password hashing algorithm_ and the unique salt for that person. Since Facebook stores passwords securely as hashes, we can't simply compare a password directly to the database. We need to hash it first and compare the hashes.
This seems to imply Facebook is rolling their own cryptography...
Its also very self-serving of them to recommend Facebook Login without even mentioning OpenID. Facebook Login in no way improves the security of your Facebook account, in fact I'd argue its likely to do the opposite due to phishing etc. It seems pretty transparent they're pushing an agenda in the guise of security advise, here.
Tweaking a password hashing algorithm (for example, changing the initialization constant in bcrypt) does not hurt security, and means that the attacker will not have sufficient information to crack the passwords with just a database dump, and even if they have everything a work factor should still deter cracking. Using md5 with the output xored against a constant would not, however, do much good.
HASHED_SALTED_PASSWORD = BCRYPT(PASSWORD, SALT)
SALT_AND_PEPPERED_PASSWORD = HMAC-SHA256(SECRET_FACEBOOK_HASHING_KEY, HASHED_SALTED_PASSWORD)
BTW, this is not an example of "security through obscurity".As people who know more about this, it is our responsibility to ensure those who know little, and care even less, don't have to worry about it. On the surface, this initiative by Facebook is an excellent example.
as the amount of breaches of random sites has gone up over the years, and the exposure of poorly stored creds from those other sites too often exposes that one password they are using everywhere and requires locking out that account. doing this in an automated way is really smart to save the time of an engineer going and grabbing the pastebin and invalidating creds. well done.