From the lavarand® webpage, how lavarand works
Step 1: Establish a chaotic system
(Set up Lava Lite® lamps in a machine room):
Lava Lite lamps are very good chaotic sources when operated under conditions recommended by the manufacturer. We use the Eleck-trickTM Lava Lite
lamp model, in part because it works well in colder conditions found in machine rooms but more importantly, it comes in rad colors!
Step 2: Digitize
the chaotic system (Take digital images of the Lava Lite lamps):
- An O2camTM digital camera is set up in front of six Lava Lite lamps. The digital camera takes a picture of the Lava Lite lamps every once in a while:
- Digital cameras are "noisy" by nature. Taking two pictures of the same object will more likely than not produce two different images. Digital cameras add
digital noise to the visual signal that they process.
Step 3: Cryptographically hash
the digitization of the chaotic system (Feed the digital output through a number munger
Step 4: Seed a pseudo-random number generator
(Feed the 140-byte value through another number munger):
- The 140-byte value gets fed through the Blum Blum Shub - one of the best available number generators, its quality endorsed by respectable
mathematicians everywhere. Think of a roulette game as an analogy - the pseudo-random number generator is the roulette wheel, the seed is how long the
roulette wheel spins before it begins to slow down. The slot the ball falls into at the end is the resulting random number. Voila! You have a random
- Here is a sample 128-byte random number (in base 16):
- NOTE: This random data is provided ``as is''. Obviously the random data generated by these demos is not secure since anyone can see this same data. See
our standard disclaimer.
- The technogeek explanation:
We use the Blum Blum Shub pseudo-random number generator, which takes the product of two prime numbers and generates a very long,
cryptographically strong sequence of pseudo-random bits.
- The Blum Blum Shub is based on the low order bits of quadratic residues of a product of two Blum primes. Blum primes are primes that are 3 mod 4. A
quadratic residue is the square of a value modulo some value, in this case, modulo a product of two Blum primes. In this example we are using the
following 1062-bit product of two Blum primes: