3 ms·
It's not that. People just know so little about designing good crypto hash functions. Basically right now nobody knows what they're doing.
by gms 18y ago
It's not that. People just know so little about designing good crypto hash functions. Basically right now nobody knows what they're doing.
- cperciva 17y agoBasically right now nobody knows what they're doing. That's going a bit far. We know how to design hashes which are provably at least as strong as block ciphers (i.e., "if you can break this hash, you can break AES") -- but synthetic constructions like those always end up being much slower than constructions which are "native" hashes.
- tptacek 17y agoI don't know why someone would mod this comment down. It paraphrases pretty accurately points made by professional cryptographers. Percival's response is also accurate. He's saying, there's a baseline for secure hash functions: those that adapt block cipher constructions. But that's just the baseline. Nobody does that, because hash functions need to be fast. And making that tradeoff of speed versus proven constructions seems to put us into the weeds.
- ars 17y agoSo is that my answer to the question that started this thread? We know how to make good hashes, but they are slow. And all the fast hashes get broken eventually?
- cperciva 17y agoAnd all the fast hashes get broken eventually? I'd phrase it as "because hashes have historically attracted less attention than ciphers, it took longer for us to figure out how much of a margin of error to design into hashes". For both block ciphers and hashes, the vast majority of designs rely on iterated mixing functions, and long before the complete designs are broken cryptographers figure out how to attack reduced-round versions. There's nothing inherently broken about the designs behind either MD5 or SHA1 -- if you created an MD5++ hash which exactly followed the design of MD5 but used twice as many mixing rounds, I don't think anyone would be able to find collisions for it.