Forgot your password?
typodupeerror
Encryption Privacy IT

Schneier: We Don't Need SHA-3 143

Posted by Unknown Lamer
from the just-what-nobody-wanted dept.
Trailrunner7 writes with this excerpt from Threatpost: "For the last five years, NIST, the government body charged with developing new standards for computer security, among other things, has been searching for a new hash function to replace the aging SHA-2 function. Five years is a long time, but this is the federal government and things move at their own pace in Washington, but NIST soon will be announcing the winner from the five finalists that were chosen last year. Despite the problems that have cropped up with some versions of SHA-2 in the past and the long wait for the new function, there doesn't seem to be much in the way of breathless anticipation for this announcement. So much so, in fact, that Bruce Schneier, a co-author of one of the finalists not only isn't hoping that his entry wins, he's hoping that none of them wins. ... It's not because Schneier doesn't think the finalists are worthy of winning. In fact, he says, they're all good and fast and perfectly capable. The problem is, he doesn't think that the world needs a new hash function standard at all. SHA-512, the stronger version of the SHA-2 function that's been in use for more than a decade, is still holding up fine, Schneier said, which was not what cryptographers anticipated would be the case when the SHA-3 competition was conceived. 'I expect SHA-2 to be still acceptable for the foreseeable future. That's the problem. It's not like AES. Everyone knew that DES was dead — and triple-DES was too slow and clunky — and we needed something new. So when AES appeared, people switched as soon as they could. This will be different,' Schneier said via email."
This discussion has been archived. No new comments can be posted.

Schneier: We Don't Need SHA-3

Comments Filter:
  • I have an idea (Score:5, Informative)

    by diamondmagic (877411) on Tuesday September 25, 2012 @05:40AM (#41447537) Homepage

    How about we link to Schneier's actual blog post? https://www.schneier.com/blog/archives/2012/09/sha-3_will_be_a.html [schneier.com]

  • Re:Too slow? (Score:5, Informative)

    by wisty (1335733) on Tuesday September 25, 2012 @06:12AM (#41447607)

    > Dictionary attacks have nothing to do with breaking hashes.

    There's two kinds of hashes you should use - those which are meant to be slow (for password hashes), and those which are meant to be fast (for message signing). SHA is meant to be fast.

  • Re:Too slow? (Score:2, Informative)

    by gigaherz (2653757) on Tuesday September 25, 2012 @06:58AM (#41447741)

    If you rely on hashing speed to hash passwords, you are doing it wrong. computers get faster, constantly. It's not speed that matters, it's the number of possible combinations making it exponentially too large to brute force, relative to the time to calculate each hash. Who cares if you can calculate missions of hashes in one second, if you still need to spend longer than the age of the universe to get a reasonable number of inputs to use as a dictionary? It's just simpler to use a plain-text dictionary and perform the hashing element by element. In which case the hashing speed does not matter AT ALL, it's how many attempts the site allows before either locking you out or increasing the time between attempts too much.

    As I understand it, that's why you salt the passwords AND use a user-specific string (based on username, email and/or similarly constant data) to introduce more variation so that they can't use generic rainbow tables or even site-specific rainbow tables.

  • Re:Too slow? (Score:5, Informative)

    by ewanm89 (1052822) on Tuesday September 25, 2012 @07:15AM (#41447811) Homepage

    Not strictly try, one reason bcrypt/scrypt/PBKDF2 is recommended over straight salting and hashing is that it is slower to hash and in the case of BCRYPT it is also deliberately designed to be harder to build dedicated accelerators or use parallel processing to help speed it up, therefore slowing down a brute force attack. Yes, time shouldn't be the only factor, but most cryptography has a time element, given enough time one can break your the whole banks password database through bruteforce, don't you want to make it as slow as possible to even make attempts (offline as well as online). If I can break this diplomatic cable, it's great, but if it takes 70 years it's already declassified before I broke it anyway does it matter I could break it given 70 years?

  • Re:Too slow? (Score:5, Informative)

    by BCoates (512464) on Tuesday September 25, 2012 @07:31AM (#41447883)

    The proper name for these "Slow functions" is Key Derivation Function. They've been around a long time and are what OSes use to protect login credentials and what encrypted archive formats like RAR use.

    Some examples are crypt (obsolete, vulnerable) PBKDF-2 (repeated application of salt-and-hash), bcrypt (repeated rounds of a special extra-slow variant of blowfish), and scrypt (an attempt to defeat GPU and custom hardware attacks by requiring lots of low-latency RAM).

    Single-round salted hash is only a "better than plaintext" hack solution, it's never been the correct way to store passwords.

  • Re:Too slow? (Score:2, Informative)

    by Anonymous Coward on Tuesday September 25, 2012 @08:37AM (#41448211)

    would be link a bank using a maths puzzle to lock the safe, and then claiming that it takes too long to solve

    Um, isn't that *exactly* how encryption works? :p

    The point is, the timescales are exponential. A hash that's 100 times faster to compute only knocks 2 orders of magnitude off the time it takes to crack the hash (10^10 universe-lifetimes instead of 10^12, w00t), but it makes it 100 times more usable in the golden path case of computing a hash on an in-core string.

  • Re:Too slow? (Score:5, Informative)

    by swillden (191260) <shawn-ds@willden.org> on Tuesday September 25, 2012 @08:47AM (#41448253) Homepage Journal

    If you rely on hashing speed to hash passwords, you are doing it wrong.

    If you rely only on hashing speed to protect your passwords, you're doing it wrong.

    The problem with fast hashing is that it facilitates brute force password searches. Salt prevents rainbow table attacks, but targeted brute force attacks against a specific password can be quite feasible given typical user password selection. There are two solutions to this: Make users pick better passwords or find a way to slow down brute force search. The best approach is to do both; do what you can to make users pick good passwords (though there are definite limits to that approach), and use a parameterized hash algorithm that allows you to tune the computational effort.

    The common way to slow down the hash is simple enough: iterate it. Then as computers in general get faster you can simply increase the number of iterations. In fact, you can periodically go through your password table and apply a few hundred more iterations to each of your stored password hashes. The goal is to keep password hashing as expensive as you can afford, since whatever your cost is, the cost to an attacker is several orders of magnitude higher (since the attacker has to search the password space). Oh, and it's also a good idea to try to keep attackers from getting hold of your password file. Layered defense.

    As I understand it, that's why you salt the passwords AND use a user-specific string (based on username, email and/or similarly constant data)

    User-specific strings are good too, as another layer to the defense, but you have to assume that an attacker who gets access to your password file probably gets that data as well.

    to introduce more variation so that they can't use generic rainbow tables or even site-specific rainbow tables.

    Salt is sufficient to eliminate rainbow table attacks.

  • Re:Too slow? (Score:5, Informative)

    by petermgreen (876956) <plugwash@p10link ... inus threevowels> on Tuesday September 25, 2012 @08:52AM (#41448269) Homepage

    No - you use long, cryptographically random, salts to avoid dictionary attacks.

    There are basically two types of salt, fixed salts stored in the server configuration and per-password salts stored in the password database. They defend against different things.

    Fixed salts stored in the server configuration defend against someone who has got your password DB but not your server configuration.
    per-password salts stored in the password DB defend against precomputed attacks.

    Neither provides a defense against someone who has both your password DB and server configuration and is going after an individual password. That is where deliberately slow hash functions come in.

  • Re:Too slow? (Score:2, Informative)

    by Anonymous Coward on Tuesday September 25, 2012 @09:51AM (#41448757)

    The sun will not got nova. It will turn into a red giant and then a white dwarf.

  • Re:Too slow? (Score:5, Informative)

    by Hast (24833) on Tuesday September 25, 2012 @10:43AM (#41449337)

    Perhaps I'm misunderstanding your point, but the idea of the salt is not to keep it secret. The idea is that each users password is combined with a unique string (the salt) so that if you try to attack the password database with a dictionary attack you have to process each password individually.

  • Re:Too slow? (Score:4, Informative)

    by aaron552 (1621603) on Tuesday September 25, 2012 @10:43AM (#41449341) Homepage
    What a salt does do, however, is make rainbow tables impractical. It doesn't need to be private, you can store it in plaintext in the same table as the password hashes.

One small step for man, one giant stumble for mankind.

Working...