[darcs-devel] [Haskell-cafe] Re: announcing darcs 2.0.0pre3
David Roundy
droundy at darcs.net
Wed Jan 23 17:08:37 EST 2008
On Wed, Jan 23, 2008 at 02:55:06PM -0700, zooko wrote:
> I have to ask: why does darcs use SHA-1?
>
> On the one hand, SHA-1 is cryptographically fragile and is deprecated
> for use in applications that require collision-resistance and pre-
> image resistance. SHA-2 is the current standard for those
> applications (SHA-2 is about twice as expensive in CPU [1]), and
> SHA-3 is under development.
>
> On the other hand, why does darcs need a cryptographically secure
> hash function at all? Wouldn't MD5 or a sufficiently wide CRC, such
> as the one used in ZFS [2], do just as well? They would certainly be
> a lot faster to compute.
>
> Is there some behavior on the part of some malicious actor that darcs
> tries to prevent, such that the collision-resistance (such as it is)
> of SHA-1 is necessary to prevent it?
It's mostly historical, but also supported by the assumption that Linus
thought about it when *he* decided to use sha1 for the same purpose. In
principle it is good to provide a cryptographically secure hash, as this
allows users to sign their repositories by signing a single file, which
seems like it's potentially quite a useful feature. On the other hand,
using sha2, which is twice as expensive (and twice as large, right) would
perhaps be too costly. I don't know. SHA-2 would cost more in disk space
and network bandwidth, as well as in CPU time.
Is SHA-1 optimal? I don't know. Is it reasonable? I suspect so.
--
David Roundy
Department of Physics
Oregon State University
More information about the Haskell-Cafe
mailing list