On Sat, Dec 08, 2007 at 08:45:50PM -0500, Theodore Tso wrote:
Agreed.
Two observations:
- 2**96 << 2**160 so our feedback is much weaker than our hash so we
should improve it on general principle
- there's a way to improve this attack to 2**64 in some situations!
I presume you've seen this paper:
http://eprint.iacr.org/2006/086.pdf
It was fairly obsolete at printing and makes a bunch of mistakes. But
they do observe that at certain points in our feedback, the first
512-bit block of the pool is not overwritten by the feedback and thus
32 bits of feedback can be immediately discovered. Then an attacker
can run 2**64 hashes to recover the remaining bits with excellent odds
of having a unique preimage. It can't usually be extended multiple
iterations because we move the add_ptr too much, so it's fairly weak
as a backtracking attack.
They precede this with a more general description of a 2**96 attack
which doesn't work for precisely the reason you describe (2**16
possible preimages for each output). But their 2**64 attack does seem
like it works (in the world of cryptanalysis, and not real hardware of
course!).
Simply feeding back all five words of our hash rather than three in
the secondary pools hardens this all right up. This patch also makes
everything in here much easier to read and analyze.
That part of the comment is not new, but I don't remember which of us
wrote it..
That part is new and I think is accurate.
Absolutely. Having some depth in the design is quite valuable. But
that doesn't mean we shouldn't shore up individual weaknesses when we
find them.
--
Mathematics is the supreme nostalgia of our time.
--