LavaRnd Digital Blender^{tm} Algorithm
The LavaRnd Digital Blender algorithm consists of an
nway turn;
n different
SHA1 cryptographic hash operations
running in parallel,
and n different
xorrotate and fold
operations.
The nway turn converts the digitized
chaotic source
into n sets of data.
Each of the n sets are fed into a
SHA1 cryptographic hash
operation
to produce 20 octets of data.
Each of the n sets are also fed into a
xorrotate and fold
operation that also produces 20 octets of data.
The 20 octets of data produced by a given
xorrotate and fold operation
is xored with the
20 octets produced by the next
SHA1 cryptographic hash operation
to produce 20 octets of random numbers.
That is, the output from the 1st xorrotate and fold operation
is xored with the output from the 2nd SHA1 cryptographic hash
operation yielding 20 octets of random numbers.
The output from the 2nd xorrotate and fold operation is xored
with the output from the 3rd SHA1 cryptographic hash operation
yielding 20 more octets of random numbers.
This continues until the
output from the final xorrotate and fold operation is xored
with the output from the 1st SHA1 cryptographic hash operation
to yield the final 20 octets of random numbers.
The LavaRnd Digital Blender, in total, produces
n*20 octets of random numbers.
Digital Blender choice of n
The LavaRnd Reference implementation Digital Blender determines the
choice of n, with respect to the nway turn,
n
SHA1 cryptographic hash operations
and n
xorrotate and fold operations,
from 2 parameters:
 The amount of data read from the
chaotic source
 LavaRnd output rate factor called alpha
We recommend that you choose n to be are either 1 or 5 mod 6.
By avoiding multiples of 2 and 3, you will distribute pixel encodings
cross multiple turns.
Lavarnd computes n from alpha as follows:
sqrt( input_length * alpha / cryptographic_hash_length )
rounded up to an integer that is 1 or 5 mod 6
Reasonable alpha rate factors typically range from 1/16 to 16, with the
default rate being 1.0.
The higher the alpha rate, the more output is produced from a given
amount of input.
High alpha rates cause the Digital Blender to use larger n
values (in terms of nway turns,
SHA1 cryptographic hash operations,
and xorrotate and fold operations).
Assuming 19200 octets of input, the following table shows the number
of octets generated with respect to alpha:
input length 
alpha rate 
nway level 
octets generated 
19200  16.0  71  1420 
19200  12.0  61  1220 
19200  8.0  49  980 
19200  6.0  43  860 
19200  4.0  35  700 
19200  3.0  31  620 
19200  2.0  25  500 
19200  1.5  23  460 
19200  1.0  17  340 
19200  0.5  13  260 
19200  0.25  11  220 
19200  0.125  7  140 
19200  0.0625  5  100 
Digital Blender example
Assume that 19200 octets of luminance are collected from a webcam CCD.
Using an alpha rate of 1.0, the Digital Blender will
operate with an n value of 17.
The 19200 octets are first fed through a 17way turn
to produce 17 output sets.
Each of the 17 output sets is fed into 17 different
SHA1 cryptographic hash operations.
Each of the 17 output sets is also fed into 17 different
xorrotate and fold operations.
The output of each of the 17
SHA1 cryptographic hash operations
is a 20 octet value.
The output of each of the 17
xorrotate and fold operations is also a 20 octet value.
The 20 octets of a given SHA1 cryptographic hash operation is
xored with the 20 octets produced by the previous xorrotate and
fold operation yielding 20 octets of random numbers.
The final set of 17 xor's are concatenated to produce
17*20 = 340 octets of random data.
What is next?
