ABSTRACT: We discuss the principles of a High-Entropy Randomness
Generator (also called a Hardware Random Number Generator,
or True Random Number Generator) that
is suitable for a wide range of applications, including cryptography
and other high-stakes adversarial applications. It harvests entropy
from physical processes, and uses that entropy efficiently. The
hash saturation principle is used to distill the data,
resulting in virtually 100% entropy density. This is calculated, not
statistically estimated, and is provably correct under mild
assumptions. In contrast to a Pseudo-Random Number Generator, it has
no internal state to worry about, and does not depend on unprovable
assumptions about ``one-way functions''. We also describe a low-cost
high-performance implementation, using the computer's audio I/O
system.
You can view the full paper,
which covers the theoretical principles and engineering features,
including installation instructions.
The code is in "beta" status. People are using it. There are no
open bug reports.
Request: I would like to be able to ship configuration and
calibration info for a wider range of soundcards. Therefore: If you
calibrate a card, please send me <jsd@av8n.com> the resulting .ctl
file, and the values for the -Q -R -B and -K settings.
Change Log
3 May 2005 -- Tweaked things to compile cleanly against
the latest version of ALSA (the version that ships with Debian
Sarge) under the latest compilers.
3 Dec 2002 -- Updated things to work with the latest ALSA
release (rc6). This release perpetrated an undocumented
incompatibility in the card ID strings, such as appear in the files
read and written by alsactl. I managed to divine the new IDs for many
cards, but not the es1370. If you have the latter card, you will have
to edit es1370.ctl and replace the word "card0" with whatever alsactl
wants. (Run alsactl -f foo.ctl store and look at the first line of
foo.ctl.)
3 Dec 2002 Minor cleanups of the makefiles et cetera.
12 Nov 2002 -- Updated the patch-file to work cleanly on the
current ALSA release (rc5).
12 Nov 2002 -- Tried to get Extigy working. Alas, ALSA
apparently supports at most 16 bits at 48000 frames per second for USB
devices, which defeats the purpose of buying a nice 24-bit soundcard
that can produce 96000 frames per second. It would be nice if omebody
who knows about ALSA drivers would fix this.
16 October 2002 -- Patched the ALSA drivers to support
O_EXCL exclusive access to the mixer control device.
15 October 2002 -- Added init.d/turbid ... Also made the
installation and calibration instructions more explicit.