[tahoe-dev] simpler/quicker hash function combiners for more specific purposes

Zooko O'Whielacronx zooko at zooko.com
Tue Jun 29 22:02:19 PDT 2010


> The concatenation combiner is a robust combiner for collision
> resistance:
>
> H|(x) = H₀(x) | H₁(x)

Ah, likewise if all we need is pre-image-resistance, which is (I
think, roughly) what we need for hash-based digital signatures, then
the following is a combiner that robustly preserved
pre-image-resistance:

H∘(x) = H₀(H₁(x))

So to summarize, if you need to optimize for CPU efficiency, and

 * you need collision resistance but you do *not* need pre-image
resistance, second-pre-image resistance, PRF, etc., then use:

H|(x) = H₀(x) | H₁(x)

 * you need pre-image resistance but you do *not* need collision
resistance, etc., then use:

H∘(x) = H₀(H₁(x))

 * you need PRF but you do *not* need collision resistance, etc., then use:

H⊕(x) = H₀(x) ⊕ H₁(x)

If you do not need to optimize for CPU efficiency, and/or if you want
a function that is robust for collision-resistance, PRF,
target-collision-resistance, and MAC, then use Comb4p.

Hey wait a second. Does Comb4P preserve pre-image resistance?

Regards,

Zooko


More information about the tahoe-dev mailing list