




Random Number Generation 

A high quality random number generator (RNG) is critical for effective data encryption. In developing the LSET stream encryption algorithms,
LSE Technologies has also developed a very high quality deterministic random number generator (DRNG). Using a number of simpler pseudorandom number generators to feed this DRNG,
effectively true random number generation is achieved. This is the basis for our eTrueRNG^{TM} algorithm.

While it is mathematically possible for the eTrueRNG algorithm to produce a series of repeating numbers, the improbability
of this happening makes for effectively true random number generation for most applications. To generate the same value twice would require a minimum of six
pseudorandom number generators to simultaneously produce the same six 32bit values as simultaneously produced earlier in the random number
generation sequence. Statistically this would happen once in 2^{32} values generated anyway because of the number of possible values for a 32 bit integer. This
means for very long sequences of numbers, individual values will likely appear more than once in the sequence. However, this is a very different issue than a repeating
number pattern which is a valid concern with software based RNGs.

The amount of "state data" a random number generator has is a strong determining factor in the probability of generating a repeating pattern. The eTRNG Basic
version has 9,022 bits of state data. For eTRNG to generate a repeating pattern, ALL of these bits of state data would have to simultaneously be in the same state
as at a previous point in the random number generation sequence. Statistically this would happen once in 2^{9022} values generated (once in 2^{17726}
values for eTRNG Advanced). Over 95% of the state bits are in the pseudorandom number generators feeding the DRNG and are changed at a high rate relative to the
rate of number generation. Using the system entropy option, part of this state information is based on realtime system performance/statistics data to help
prevent repetition in the output data (similar to the way physical entropy sources work for a hardware true RNG). In the unlikely event the output data started to repeat
a previous series of numbers, the realtime entropy data would limit the length of the repetitive data string.


The first member of our family of eTrueRNG algorithm based RNGs is the eTRNG^{TM} C object code module for Linux. By incorporating our eTRNG code into your application,
you no longer have to rely on the system random number generator with its questionable entropy levels and uncertain response times or suffer what can be a large expense for
a hardware true RNG. eTRNG not only performs comparably to hardware true random number generators on tests of randomness, it does so at generation
rates better than 60 MBytes/sec^{1} for normal mode block. In "Turbo mode" the generation rate is roughly 2X faster with only a slight degradation in test results.

eTRNG Features & Benefits 
Feature 
Benefit 
Random and deterministic modes 
Deterministic mode based on user provided seed data allows for repeatable random number strings when required by the application. 
Single and multithread versions 
In random mode, running the RNG function and Entropy Generation function on different cores can provide increased throughput (depending
on system loading). This also provides a higher degree of entropy in the data feeding the DRNG since the Entropy Generation runs asynchronously to the RNG function. 
Single word and block generation 
Single word generation can be for used for encryption keys, password generation, feeding /dev/rand, etc. Block generation allows a virtually unlimited length
string of random numbers to be generated in smaller blocks. 
High performance^{1} 
Typical single word generation times of less than 3uSec. Typical block generation rates over 60 Mbytes/sec. Turbo mode increases block generation rates by
nearly 2X with slightly reduced entropy levels in the output data. 
Multiple entropy sources 
System performance and loading information can be used for seed generation and continuous entropy data generation. 
Highly configurable 
A number of options are provided to tailor performance and degree of randomness to the application’s requirements. 
1. Based on an Intel i72620M at 2.7Ghz.



The eTRNG C object code module is available in two versions, Basic and Advanced for different levels of price/performance. The Windows version of eTRNG
should be avialable by September 1, 2016. Please contact us if you would like to be notified when it is available.

eTRNG Version Comparison 

eTRNGL (basic) 
eTRNGadvL (advanced) 
Multithreaded option 
N 
Y 
Random & Deterministic modes 
Y 
Y 
Initialization with system entropy option 
Y 
Y 
RNG using continuous system entropy option 
N 
Y 
Turbo mode option 
Y 
Y 
Object module size 
76 KB 
280 KB 
Price  noncommercial use^{2} 
$245 USD 
$495 USD 
Price  commercial use^{3} 
$495 USD 
$995 USD 
2. For research and educational use only, the eTRNG license agreement prohibits use in a commercial product.
3. The eTRNG license agreement provides a royalty free, perpetual use license for use in a single product. Please contact us for
pricing for use in multiple products.


Detailed information on the eTRNG algorithm is available under NDA. Please contact us for summary test results, a copy of the eTRNG integration guide
or for information on purchasing eTRNG.


Back to top 

