Could anyone tell me what the difference is between a theoretical attack (Like the one done on SHA-1) and an actual, practical attack (Like the one done on SHA-0)? Is a theoretical attack a proposed method of attacking, that no one has ever done due to lack of resources (like computing power)?
1 Answer
A theoretical attack is an attack strategy that was born out of “theory”, “calculation”, and — in the least cases — “simulation”. Yet, the strategy is yet to be proven in practice.
An actual attack which is practically proven and can be replicated is actual proof that a theoretical attack works. Therefore, the first is an indication of a weakness, while an actual attack is proof that that weakness actually exists.
It's actually not so much different from every regular science project. A theory is just a theory until someone can prove the theory is correct... transforming the theory into a fact.
In your SHA examples, SHA-0 is practically proven to have a weakness and - depending on available resources available for the attack - that weakness translates into "it's broken".
SHA-1 on the other hand has been proven - in theory - it's broken too, but up until now, I’m not aware of anyone having put the theory in practice. Since attackers don’t usually share the news about their efforts, chances are practical attack efforts exists but news about it hasn’t been shared with the general public.
Personally, I regard "theoretical attack vectors and/or strategies" as a warning, while I regard "practically broken" as a red alert. After all, a theory could have some flaw rendering it void, but if someone has practically broken something, statistical chances that others will do the same rise every second.
-
1$\begingroup$ Since this answer was written, practical attacks on SHA-1 have indeed appeared. $\endgroup$ Aug 2, 2019 at 14:14