Lessons from the history of attacks on secure hash functions (2019)
electriccoin.co
electriccoin.co
This very interesting article about using "tunnels" to find collisions in MD5 is worth reading: http://eprint.iacr.org/2006/105.pdf
An interactive, filterable visualization for the timelines might help, too. The timeline could be greatly condensed if the exact change points were marked for a non-confusing number of functions.
Or perhaps a cheeky play on Minard's graph of Napoleon's Russia campaign, but with factors like the cost of compute instead of the temperature. Or on Munroe's flow graph of U.S. congress composition/ideology.
I'm not an expert, but I'll try to explain how I think this works, and invite real experts to step in if I get it wrong.
I think the way this works is that, with collisions, the attacker gets to choose their inputs. They don't care what two inputs they find that generate to the same output, they only care that they do generate to the same output. With a second-preimage attack, one of the inputs is chosen by the hasher.
As it turns out, the ability to choose both your inputs is quite useful! You can view hash functions in reverse: for a given hash function, the inverse hash function is a function which takes the output of the hash function and returns the set of inputs to the hash function. For many hash functions, the inverse hash function IS NOT uniformly difficult to compute partial solutions to: some inverse hashes are much easier to compute than others. So if you can find an output for which the inverse hash is easy to partially compute, you can generate collisions at that point much more easily.
However, in the space of possible hash outputs, the number for which the inverse hash is easier to compute is probably very small, or the possibility of computing the inverse hash would have been noticed by the creators of the hash function. So it's highly improbable that the hasher will have chosen a hash input at a point where the hash input is one where the inverse hash is easy to compute.
[First] pre-image attack: Given a hash value, find a message with that hash.
Second pre-image attack: Given a message, find a different message with the same hash.
This table is incorrect. Ed25519 was explicitly designed with the intention of only needing preimage resistance, not collision resistance.
> There is more to the article than the table :)
I am aware but my issue was with the table...
Apparently the NSA warned against SHA-0 in 1995.
So do we now know what they perceived the weakness to be? Or are we still guessing?