How the Bible and YouTube are fueling the next frontier of password cracking
arstechnica.com
arstechnica.com
This is an offline attack that allows the attacker to recover the plaintext from hashes. In the context of the internet, the impact of this type of attack on the end-user can be almost entirely mitigated by using unique passwords on each site. A site which has leaked its password hashes is almost certainly already fully compromised, so having the password to that particular site gets the attacker not much. It's only when those passwords are reused that recovering the plaintext becomes a big additional win for the attacker.
The implications of these articles is that you should use some super complicated random password. Indeed that's a good idea. I personally use lastpass to generate long random passwords. But if there's a choice between using one really good password all over the internet versus unique, but mediocre passwords on each site, the latter is a better choice. After all any particular site could be a honeypot or store your password in the clear.
On the flip side, if these articles are aimed at developers rather than end users, then they should be emphasizing using a modern key derivation function with an appropriate work factor.
which unfortunately isn't going to happen.
the bigger point missed by the article is that this reliance on 'correct' usage isn't even necessary if the hashes were created in the right way - properly salted (per-user, not just a static string for the site) and using a tunable computationally intensive hash algorithm like bcrypt or scrypt.
If the article is aimed at developers, I agree with what you are saying (see the last line of my post). But it reads to me like it's aimed more at users. If that's true they should emphasize the best thing that users can do to protect themselves -- which is not using the same password in more than one place.
Or they could have done both, instead of neither.
You have to accept that there will be plenty of online service that won't try to keep high online security and you'll have to use not too complicated, throwable passwords for every site that don't have enough stakes in protecting your auth data (I'd say basicly anything that's not monney and mail related)
Still .. interesting article!
Seems like a good strategy to brute force passwords.
[1] https://www.google.com/fusiontables/DataSource?docid=1DlRnW1...
EDIT: Based on a quick spreadsheet calculation, I think uniform A-Z each letter is 4.7 bits, and a phrase constructed of random english words each letter is 4.1 bits, so maybe not all that bad. https://docs.google.com/spreadsheet/pub?key=0Ar03cGpoaUJ3dHp...
A diceware password of six words from a 7776 (6^5) word dictionary is 1 of 2.2 x 10^23 random possibilities. If your attacker can try 180 billion hashes a second, then it would take almost 39 centuries to exhaust the password space.
How believable is that?
So a password with different salts will result in a different hashes. Therefore you have to know the salt in order to guess the password (for offline matching against a dataset of hashed passwords retrieved from a target site). Ideally, every password will have a different salt, and the dataset of salts is stored separately from the dataset of hashes.
Or am I missing something? (Genuine question, because this is not my area of expertise).
Ideally, every password will have a different salt,
More than ideally, the only way it makes any sense at all is if they are different.
As an example:
User: bob password: password1 password hash: 12345
User: sue password: password1 password hash: 12345
with salt that is the same for all users:
User: bob password: password1 salt: 7 password hash: 22345
User: sue password: password1 salt: 7 password hash: 22345
with salt that is different per user
User: bob password: password1 salt: 7 password hash: 22345
User: sue password: password1 salt: 8 password hash: 32345
Per user salt means that an attacker who has stolen the password db can't crack one password and unlock 100 accounts because they all have the same password hash. That is the only point of a salt it serves no other purpose.
I wouldn't say no other purpose. A single common salt can at least protect you from the guy who has a pre-computed lookup table of dictionary words hashed with a standard, unsalted function. (That is, it prevents a zero-computation attack.) Admittedly that doesn't gain you much these days, but it's not "zero benefit".
[1] See towards the end of the very comprehensive first answer. http://security.stackexchange.com/questions/211/how-to-secur...
Then go back, read the rest of it :)
i think the answer from rory mcclune puts it well: "Another add-on I've seen to this is to also add in what was called a pepper value. This was just another random string but was the same for all users and stored with the application code as opposed to in the database. the theory here is that in some circumstances the database may be compromised but the application code is not, and in those cases this could improve the security. It does, however, introduce problems if there are multiple applications using the same password database."
http://www.securityfocus.com/blogs/262
To quote, emphasis his: Using raw hash functions to authenticate passwords is as naive as using unsalted hash functions. Don’t.