Donate for the Cryptome archive of 65.000 files from June 1996 to the present

3 September 2011

SHA1 second preimages remain an unsolved problem


From: Jon Callas <jon[at]callas.org>
Date: Sat, 3 Sep 2011 16:14:41 -0700
To: Crypto discussion list <cryptography[at]randombit.net>
Subject: Re: [cryptography] kernel.org hack and kernel integrity

Tim Shepard wrote:

> One thing I've been curious about is what would have to happen in the
> world of git when (a) someone shows how to construct SHA-1 hash
> collisions, or (b) someone shows how to consturct SHA-1 second
> preimages.  There is a "repositoryformatversion = 0" in the on-disk
> format.  I'm not sure if there are any other mechanisms in git storage
> or communication formats for crypto hash agility.  (I expect there is
> no code in git that anticipates needing crypto hash agility.)

When someone shows how to construct SHA1 second preimages, please include me in the demo, as doing that remains an unsolved problem.

I do not mean to defend SHA1 at all, heck, give me half a chance and I'll tell you to drop in Skein. Nonetheless, there are still zero second-preimage attacks on SHA1.

Operationally, however, if you could reliably create SHA1 second preimages as a zero-day (by which I mean that no one else in the world can do it, so you get to surprise the world), this isn't the place to do it.

With digital signatures, you can have a lot of fun with second preimages. If there's a signature S on preimage P, then if I own P', I can claim it's signed. Why bother compromising a CA if you can clone a certificate, for example?

With any sort of content-addressable storage, however, it doesn't work so well. Suppose I create some malware as my P'. When I push this into the off-host, the other system will say, "I already have P, thanks" and won't get P' from me. In the case of a central repository, I can't push P' into it because it will always refuse it for the simple reason that it has it.

In the case of something like git, we end up with a partitioned set of repositories, and the only people who get P' are the ones who didn't have it and pull it from me (or I push it on them when they don't have P). The details of the spread depend on lots of things not worth discussing.

Bottom line on this is that if you can make SHA1 collisions, breaking content addressable storage isn't worth blowing your lead on. Abstractly, git ought to become agile in hash function, but realistically, it's not a concern yet.

Jon

_______________________________________________

cryptography mailing list
cryptography[at]randombit.net
http://lists.randombit.net/mailman/listinfo/cryptography