From: (Eric Backus)
Date: Thu, 22 Oct 1992 23:28:55 GMT

Subject: Re: Simple hardware RNG
Message-ID: <>
Organization: HP Lake Stevens, WA
+     cv!hp-pcd!hplsla!ericb
Newsgroups: sci.crypt
References: <>
Lines: 62

Peter writes:
>The following is a simple hardware noise generator which you can
>throw together using junk box parts in about 10 minutes.  It's based
>on thermal noise in a zener diode, and is powered by its own supply
>to reduce the chance of noise from the computers supply being coupled
>The only thing which needs adjusting is the duty cycle, which can be
>changed by varying the 10k pot.
>If anyone has any comments or improvements I'd be interested in
>hearing from them.

Fundamentally, I think this idea works.  I have built a zener-diode
noise source similar to this, that I then xor'ed into a hardware
feedback-shift-register PRN generator.  The noise coming out of this
appears to be quite random.

Some ideas for you:

1. I don't understand the need for the 10K pot.  Isn't your noise
   source AC-coupled into the op-amp?  Seems like adjusting the pot
   shouldn't have much effect.  My noise source had no pot.

2. You are relying on the noise from the zener diode, which we assume
   to be completely unpredictable.  However, people have spent years
   figuring out how to make zener diodes with low noise levels.  So,
   your noise signal may be small.  You want to ensure that other
   signals don't get coupled in and swamp out your good random noise
   with other junk.  (If your op-amp input voltage noise is very big,
   it could swamp out the zener noise, but that's probably not bad.)

   One thing I did was take the output of the op-amp, and run it
   through two different R-C first-order low-pass filters.  These two
   signals went into a comparator, effectively making a bandpass
   filter and at the same time giving me a TTL signal output.  On the
   low frequency end, I wanted to avoid picking up 60 Hz stuff.  On
   the high end, I wanted to ensure that no high-frequency system
   clocks got in.

   I'm not sure that how much high-frequency stuff needs to be
   filtered out.  One problem with filtering it, is that it limits how
   fast you can grab random bits out of the noise source.  With no
   high-freqeuncy filter, you are effectively using the bandwidth of
   the op-amp as your high-frequency cutoff.

3. As I recall, 6.2V is the magic zener voltage level which has the
   lowest noise, so you want to design your circuit with a zener that
   is either much bigger or much smaller than this value.  My noise
   source used a 10V zener.  You probably want the cheapest zener
   diode you can find.

4. Although the noise from a zener is supposed to be completely
   unpredictable, it does not have a flat frequency spectrum or very
   many other properties that are desired for random numbers.
   Therefore, you must use this noise source along with some other
   noise source.  My design used a hardware feedback shift register,
   but there is no reason you couldn't use a good software random
   number generator.
					Eric Backus