[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Hardware RNG's



Pat Farrell and others have been discussing hardware random-number
generators.  Since I've built such devices, I thought I'd put in my
opinions.

I used a reverse-biased transistor junction for the noise source.  The
noise is amplified by a three-stage op-amp circuit with about 60 dB of
voltage gain in the passband and a 3-dB bandwith of 10 Hz - 3 KHz.
A spectrum analyzer shows the noise is random, with no frequencies standing
out more than others.

The analog noise feeds an op-amp comparator wired as a zero-crossing
detector.  The output is a logic level which switches randomly, but on
average, on and off about 50% of the time, respectively.  This logic level
gates a 5 MHz TTL oscillator, producing bursts of pulses of random length.
These pulses are counted by an 8-bit counter, producing random 8-bit
numbers.  The outputs of the counter are latched and read through a PC
bi-directional parallel port.  Allowing the slowest changing bit to turn
over 10 times between samples suggests a maximum sampling rate of 1000
bytes/sec.

The chi-square test and the runs tests on these samples show very good
statistical properties.  For large samples (> 100,000 bytes), there seems
to be a slight predominance of "one" bits (e.g.  0.6% difference).  This is
probably due to some factor in the sampling process which I haven't figured
out yet.  Anyway, exclusively-or'ing successive samples together removes
this bias.  I'd appreciate any ideas about this.

I don't know what practical use this device has, except for those who need
one-time pads, but it was fun to hack up and test.

John A. Thomas
[email protected]
[email protected]
PGP key available on request