News for hackers. Stuff that matters.
Re:Yahoo discloses hack of 1B accounts by ashark on Wednesday December 14, 2016 @06:00PM (#13180539)
Well, you can only rehash if you have the plaintext password. So you have to wait until they login again, or force a password reset for everyone. In the former case you're stuck with a bunch of md5 passwords hanging around for any account that's not very active, and for the latter you'll lose some percentage of active accounts whose reset process is for some reason no longer functional. You could mix-and-match the two methods (start with the former, force the latter on any stragglers after, say, a few weeks) to minimize the damage, but that's more work and a number that someone somewhere in the organization finds very important is still probably gonna go down.

(I've never had to do this myself, so these are just the most obvious options I came up with. Possibly there are others.)

Re:Yahoo discloses hack of 1B accounts by manarth on Wednesday December 14, 2016 @06:16PM (#13180681)

  You can only rehash if you have the plaintext password
There are techniques to rehash, even without the plain-text password, and without the user having to login to trigger a rehash.

Drupal 7 used such a technique for upgrades from Drupal 6, migrating from MD5 to a salted sha512 hash, but it's not an uncommon technique.

The old passwords are stored as MD5 hashes in the databases. The MD5 hash is processed through the same techniques as new passwords: a salt and the new sha512 hash. Provide a way to identify whether the origin was a password, or an MD5 hash.

Either way, you end up with a hash. You can identify whether the origin was a password, or an MD5 hash, but you can neither determine the origin MD5 hash, nor the origin password, as the new hash is secure. So even if the original MD5 hash was insecure, the new hash is secure.

When someone attempts to login, you still need to determine which password-validation to use: hash = sha512(salt + password), or hash = sha512(salt + MD5(password)), but the security level is the same.

Re:Yahoo discloses hack of 1B accounts by leereeves on Wednesday December 14, 2016 @07:03PM (#13180994)
> hash = sha512(salt + MD5(password))

Passing the password through MD5 reduces the complexity to 128 bits, you can't get that back.

So the security level is not the same, though it may be resistant to some attacks on MD5.

And it's probably not important for most people, since there are less than 2^56 eight character ASCII passwords.

Re:Yahoo discloses hack of 1B accounts by manarth on Wednesday December 14, 2016 @07:27PM (#13181136)

  > "Passing the password through MD5 reduces the complexity to 128 bits, you can't get that back."
Assuming that the new hash is secure (and sha512 is generally agreed to be secure), then, given a specific sha512 hash, the original MD5 hash can only be determined via rainbow tables, which is a Big-O operation. Even though entropy is reduced, it's still a significant work to determine the original MD5 hash (significant in this instance being longer than the heat-death of the Sun, given current extrapolations of computing performance).

Attacks against MD5 are based around knowing the original MD5 hash. In this instance, the original MD5 hash is unknown, so there is no mathematical shortcut to finding a collision.

Re:Yahoo discloses hack of 1B accounts by leereeves on Wednesday December 14, 2016 @07:30PM (#13181161)
In this case an attacker isn't looking for a collision (which would mean creating two passwords with the same hash, and what hash that is doesn't matter).

The attacker needs a password with a specific hash, and the best reported attack for that is around 2^128.

Re:Yahoo discloses hack of 1B accounts by manarth on Wednesday December 14, 2016 @07:40PM (#13181234)
Agreed, that the best reported rainbow-table attack on MD5 is 2^128 (i.e. the complete range of possible MD5 hashes).

Personally, I'm willing to chance that my password will be discovered via a brute-force attack within the next 0.65 billion billion years [1]

[1] http://bitcoin.stackexchange.com/questions/2847/how-long-wou...

Re:Yahoo discloses hack of 1B accounts by leereeves on Wednesday December 14, 2016 @08:29PM (#13181545)
I think it does make sense to be cautious.

A new preimage attack could be discovered - or might already have been, secretly.

Re:Yahoo discloses hack of 1B accounts by danielweber on Wednesday December 14, 2016 @09:31PM (#13181874)
> Passing the password through MD5 reduces the complexity to 128 bits

No, this is not the problem with MD5. You are not going to find two user-memorizeable-and-typeable passwords with an MD5 collision.

If you are bringing a password with more than 128 bits of complexity to the party, any password storage scheme better than plaintext will have your password safe.

Re:Yahoo discloses hack of 1B accounts by leereeves on Wednesday December 14, 2016 @11:09PM (#13182324)
For passwords, there is no known problem with MD5, unless you know about a preimage attack.

Collisions are a problem for digital signatures, not for passwords.

But some people do want and use more than 2^128 bit passwords, for whatever reason, and an MD5 intermediate stage limits that.

Re:Yahoo discloses hack of 1B accounts by rev_bird on Wednesday December 14, 2016 @06:56PM (#13180951)
I was doing all kinds of mental gymnastics trying to figure out how this would work; thanks for explaining it so clearly.
Re:Yahoo discloses hack of 1B accounts by dsacco on Wednesday December 14, 2016 @06:14PM (#13180659)
I have been in this situation, and you're correct.

Somewhere in the organization, a product team is going to throw a fit about usability and churn over the decision to reset user passwords en masse, or to force users to change them when they first log in. This isn't a slight against product managers, but one of the clearest indications of a company's overall security culture "health" is how the security, engineering and product teams choose to compromise and "pick their battles." Risk accepting vulnerabilities has a legitimate place when you have to balance product development and usability, but so does pushing back on egregious issues.

I don't have privileged insight into Yahoo's organization, but in this case it's pretty clear the security team should have either been more diligent in conveying the ramifications or less kneecapped by the surrounding org units, depending on the circumstance. More importantly, Yahoo should have "migrated" their passwords in the manner a parallel comment explains in this thread. This is what Facebook and other companies did after maturing their security programs (see "Facebook Onion" on how Facebook transitioned away from MD5).

Also good to note - there is evidence Yahoo's security culture improved over the years. The decision to go with MD5 almost certainly happened in the 90s, and when Tumblr suffered a breach all users were forced to reset their passwords. The capability and awareness was clearly there.

Re:Yahoo discloses hack of 1B accounts by sleet on Wednesday December 14, 2016 @06:20PM (#13180709)
x0's algorithm was secure_hash(md5(pass), salt), you already have md5(pass) so this can be done in one bulk update.
Re:Yahoo discloses hack of 1B accounts by rz2k on Wednesday December 14, 2016 @06:11PM (#13180641)
Does an insecure algorithm mean that you effectively have the plain text passwords?
Re:Yahoo discloses hack of 1B accounts by manarth on Wednesday December 14, 2016 @06:25PM (#13180742)
Not necessarily, because of collisions.

The password "foo" may encrypt to the hash "12345". If an attacker were to discover that the hash is "12345", they would look for a password that hashes to "12345", which could, hypothetically, be the password "bar". They don't know the original password "foo", they've simply discovered an alternative, which happens to match the algorithm enough to unlock access.

In general, rainbow tables are used for identifying and attacking common passwords, but that doesn't mean that the algorithm is insecure.

Insecure algorithms can be attacked through collisions, which don't necessarily give you the original password, they just provide an alternative password which is accepted by the algorithm. The distinction matters when it comes to password reuse, because if Site A uses MD5, but Site B uses sha512, finding a collision that grants access on Site A doesn't necessarily give you a password that will grant access on Site B.