LavaRnd, like all the best cryptographic methods, has two parts, an algorithm which describes how the technique works and a key. Good algorithms are not a secret, it is the key that must always be kept secret. The key must have a large number of possible values so that it is virtually impossible to find the correct one. The key cannot be predicted, it must be random.

What is LavaRnd?

LavaRnd is a cryptographically sound Random Number Generator that uses a chaotic source to power the generation of an unlimited supply of unpredictable random numbers. Sources used include the Logitech QuickCam 3000 Pro CCD.

Why LavaRnd?

LavaRnd is top of its class with more than 179,000 statistical test results from 16 types of statistical tests performed upon a billion bits of LavaRnd generated random numbers. These tests prove that LavaRnd is cryptographically sound and strong.

The Heisenberg Uncertainty Principle argues the impossibility of perfectly modelling the physical conditions that lead to CCD noise. The chaotic nature of the webcam CCD means that the slightest mistake predicting its physical state at any time will make future predictions totally useless.

LavaRnd is not a Pseudo-Random Number Generator (PRNG) so is not open to a seed search attack. Even when potential hackers have an extensive amount of LavaRnd output, they still have no better than a random chance to predict past or future output.

How does LavaRnd work?

LavaRnd works in three stages. The first is digitisation of a chaotic source through the LavaCan in which there is a CCD chip, that transforms an image into 19,200 pixels. The LavaCan outputs images in a YUV420P palette.

LavaRnd maximises the entropy of the chaotic source by tuning its settings after the LavaCan has been attached to the computer. This is done by turning the gain up and enclosing the CCD within the LavaCan. The pixels produced are mainly of digitised data measuring the background noise energy levels in a space completely devoid of light.

The next stages are performed by the Digital Blender to produce random numbers. These random numbers can be in a particular form for example, the sum of two numbers between 1 and 6 inclusive, to simulate the roll of two 6-sized dice or a true/false value to copy the flipping of a coin coming up heads or tails. LavaRnd does this with in-built numerical analysis to ensure uniform distribution.

Cryptography for Developers

By Tom St Denis

Cryptographically secure pseudorandom number generator