[hashcash] Re: stamp collisions

  • From: Jonathan Morton <chromi@xxxxxxxxxxxxxxxxxxxxx>
  • To: hashcash@xxxxxxxxxxxxx
  • Date: Mon, 30 Aug 2004 00:55:48 +0100

With v1 stamps the full collision string is used for avoiding stamp
collisions because there is a separate field for counting to find
partial hash collisions.  With the C implementation this defaults to
96-bits or 2^48 stamps before 1st collision, which is pretty small.

The RNG of some implementations is prone to occasionally working from the same seed at the same (or similar) time. In other words, if Bob and Charles both send a mail from their Windows machines (or some other platform without a strong RNG facility) to Alice at the same time, they might inadvertently produce the same random field, with a far greater probability than a true randomness model predicts. Without extensions, this will often result in identical stamps.


This is despite the precautions taken in the code to introduce entropy to the seed from several different sources. Because none of those sources are truly random, the resulting seed is not either. Strong RNGs typically take entropy from sources of "environmental noise" such as mouse movements and interrupt timings, which carry at least small amounts of true randomness.

To eliminate collisions entirely, a "sender=..." extension field would be advisable. This reduces the chance of collisions to 1 in 2^48 stamps produced by any particular sender, even if they only have a medium-quality RNG.

--------------------------------------------------------------
from:     Jonathan "Chromatix" Morton
mail:     chromi@xxxxxxxxxxxxxxxxxxxxx
website:  http://www.chromatix.uklinux.net/
tagline:  The key to knowledge is not to rely on people to teach you it.


Other related posts: