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

No Subject



-----BEGIN PGP SIGNED MESSAGE-----

A while ago some folks talked about being willing to pay for
a hardware random number generator. Not a PRNG, but a real
one. There are lots of uses listed in TCMay's document that
can't be named, but generating blinding factors for digital cash 
is my favorite.

I've got a friend who is a professional electronics engineer that
is willing to help, but he has some questions on the design.

The Prime Assumption: White noise due to molecular motion is truly random.  
Noise generated in a carbon resistor or zener diode is white noise.  

Is this true, cryptographically speaking?

The circuit is essentially a "Hiss Generator".  The 
hiss waveform, after being amplified to the proper
amplitude, would be sent to a rude, crude, inaccurate analog to digital
converter. From there we send it to a serial or parallel port. Probably 
just grab the LSB, but that is an implementation detail...

We have some design options based upon the Prime Assumption:

1.A a device would use a cheap noisy carbon resistor and a
rude, crude, noisy amplifier to amplify the noise generated 
by the resistor.  

1.B. A zener diode may make a "louder" noise and require a cheaper 
amplifier.

1.C How about if we take the hiss that you find between stations on an 
FM receiver, and digitize them through a PC soundcard? 

1.D Another wonderful source of hiss is the telephone when it is off hook.

Is there any solid justification to pick one over the others?
(I expect that 1.C limits our audience too much, but maybe not, esp 
with VoicePGP coming RSN.)

This clearly needs support, such as  a UART or similar chip would 
convert the signal to RS-232 to to dangle off of your ports.  Some 
type of clock would be required to sync the UART, providing a more 
or less constant baud rate, so the computer can read it.  There 
needs to be a DC power supply to make this thing go.   This is 
accessable in the power supply of most PCs.  It is my opinion 
that nobody wants to put 9 volt batteries in this thing and 
have to remember to turn it off when they are finished using 
their computers.   

We think that we could  create these beasts for less than $25.00 
in some quantity.  The first one would probably cost about $50.00 
to produce plus somebody's time (which isn't typically free or 
this probably would have been done already).

Seriously,  is there really much market out there for this?  
Will there be a bigger market in the future as more people 
get on the "Information Superhighway"?  I get the impression 
from folks a while ago that real random data is a problem, 
but nobody wants to spend more than the price of two cases 
of beer to solve the it. Is the value of random data really 
that low?

More questions:

2. Do people really want to tie up a serial port with this or 
should it  contain a switch to cut it in and out as needed and 
free up the port? This sounds like an A-B switch. 

3. Maybe it should go on the PC bus as an adapter card. This 
would greatly raise the cost, up to maybe $100, but would 
preserve "valuable" serial ports. Most PCs only have two, 
and one is used for the mouse, and the other for the modem. 
Since DOS can't handle more without help, this is a real limit.

4. How secure should the device itself be? Bruce's wonderful _Applied 
Cryptography_ talks about OS Virtual Memory managers writing out keys 
to disk without the user/programmer knowing, which is a serious 
potential problem. We have that same problem with the random number 
that this device generates. Wose, it wouldn't be hard for a `bad guy' 
to write a TSR that constantly reads the random port, and records
the numbers in parallel with whatever wants to use it for real. 

While I'd like to think that I really control my PC, once you get 
networking TSRs, smartdrv, APSI drivers, CDROM and Soundcard drivers, 
HIMEM, etc. loaded, do you really _know_ that they are your friends? 
Is this a real problem?

I can imagine a design for an internal card that allows only one read 
of the number, so even if a bad guy were there, they would get 
alternating (and thus different) numbers. I can't imagine doing 
this off a parallel or serial port. Is there a need for this level of 
sophistication (and added expense)?

Any comments are greatly appreciated. And if you are seriously 
interested, let me know, as that will surely add to my motivation.

Cypherpunks write code (or maybe work on hardware :-) !

Pat

Pat Farrell      Grad Student                 [email protected]
Department of Computer Science    George Mason University, Fairfax, VA
Public key availble via finger          #include <standard.disclaimer>


-----BEGIN PGP SIGNATURE-----
Version: 2.6

iQCVAgUBLgN03rCsmOInW9opAQG0wAP/RNJ8VeZDq5KhVI4JFs0tdXxUkVvSiY06
lHvjmf8EL3kxn2ruxNYmigvxocvIn5mOSJQbpUl4CyLa++HMBkSDN06PMYVVreTX
LA1XvHFgzjoC/WILD6LNy9XyUn0W/g2KkbQM/4FYCTa1b82f+vdq/7L6glHJ4cm3
GKlCaeklSXU=
=dzwk
-----END PGP SIGNATURE-----