CPU Jitter Random Number Generator

The CPU Jitter Random Number Generator provides a non-physical true random number generator that works equally in kernel and user land. The only prerequisite is the availability of a high-resolution timer that is available in modern CPUs.

Documentation

A PDF documentation is also available. The pictures and graphs are better to read in the PDF version.

Request For Help

I am looking for CPUs that are not listed in appendix F of the documentation. If you happen to have such a CPU with a Unix-ish operating system and you want to help me to gather more evidence on the appropriateness of the CPU Jitter random number generator, please perform the following:

Replace varying entropy loop counter with Von Neumann unbias operating. This implies that the analysis of the entropy loop counter statistics in chapter 4 are removed. The impact of the Von Neumann unbias operation on the entropy is discussed in chapter 5.

Allow caller of jent_entropy_collector_alloc to specify an oversampling rate. That rate determines whether the folding loop is executed in multiple instances to implement an oversampling of the individual bits.

Add test results for microkernels.

Add analysis of change of CPU execution jitter over time in section 5.1.1.

Add analysis of the impact of disabling certain system characteristics on CPU execution jitter in appendix F.43.

Add JENT_PRIVATE_COMPILE: Enable flag during compile when
compiling a private copy of the Jitter RNG

Remove unused statistical test code

Add FIPS 140-2 continuous self test code

threshold for init-time stuck test configurable with JENT_STUCK_INIT_THRES
during compile time

The test cases without the results that went into the documentation can be found in the test tarball. Start with the scripts getstat.sh. If you are interested in the test results, the SVG files, etc., please let me know as this is a 30GB archive.