Friday, March 12, 2010

Hardware RNGs

Generation of good random data is hard. Even operating systems have a tricky time doing it. Tools like puttygen implore you to move your mouse around a lot while it's generating a key, in order to add entropy to the system. Generating a gpg key has similar problems, except that the tool discards data given to it that's not random enough, and this drains the kernel of entropy used to feed the internal PRNG. (Read the man page; it warns you about it.) If you're on Linux, and you want to see this in action, do something like this:

"cat /dev/urandom"

You'll get a flood of garbage data, then a trickle, then it will stop. You've drained the kernel's entropy pool. Move your mouse around (you're not doing this on some server, right?), and you'll see the trickle resume.

So you can get good random numbers by reverse-biasing a diode and listening for thermal noise, but you only get those numbers at a low rate.

That has to be the most trivially parallelizeable hardware problem I've read of in ages. How many millions of transistors can we fit in a 1mm

No comments:

Post a Comment