LavaRnd Digital Blendertm Algorithm
The LavaRnd Digital Blender algorithm consists of an
n-way turn;
n different
SHA-1 cryptographic hash operations
running in parallel,
and n different
xor-rotate and fold
operations.
The n-way turn converts the digitized
chaotic source
into n sets of data.
Each of the n sets are fed into a
SHA-1 cryptographic hash
operation
to produce 20 octets of data.
Each of the n sets are also fed into a
xor-rotate and fold
operation that also produces 20 octets of data.
The 20 octets of data produced by a given
xor-rotate and fold operation
is xor-ed with the
20 octets produced by the next
SHA-1 cryptographic hash operation
to produce 20 octets of random numbers.
That is, the output from the 1st xor-rotate and fold operation
is xor-ed with the output from the 2nd SHA-1 cryptographic hash
operation yielding 20 octets of random numbers.
The output from the 2nd xor-rotate and fold operation is xor-ed
with the output from the 3rd SHA-1 cryptographic hash operation
yielding 20 more octets of random numbers.
This continues until the
output from the final xor-rotate and fold operation is xor-ed
with the output from the 1st SHA-1 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 n-way turn,
n
SHA-1 cryptographic hash operations
and n
xor-rotate 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 n-way turns,
SHA-1 cryptographic hash operations,
and xor-rotate 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 |
n-way 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 17-way turn
to produce 17 output sets.
Each of the 17 output sets is fed into 17 different
SHA-1 cryptographic hash operations.
Each of the 17 output sets is also fed into 17 different
xor-rotate and fold operations.
The output of each of the 17
SHA-1 cryptographic hash operations
is a 20 octet value.
The output of each of the 17
xor-rotate and fold operations is also a 20 octet value.
The 20 octets of a given SHA-1 cryptographic hash operation is
xor-ed with the 20 octets produced by the previous xor-rotate 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?
|