Jitter RNG

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.

The source code of the following Jitter RNG components is publicly available:

Documentation

The reference to the applicable documentation is given with the various releases.

The latest documentation applies to the current version.

The Jitter RNG v2.2.0 documentation documents the Jitter RNG copy found in older Linux kernels.

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:

  1. Get the current library source code, unpack it

  2. cd <librarydir>/tests/raw_entropy/recording_userspace

  3. execute invoke_testing.sh

  4. Send the result of the execution found in the directory results_measurements to me

Archive with Test Results

The archive with all collected test data is available at this location.

Historic Releases

For older releases, see the Jitter RNG historic page.

Subsections of Jitter RNG

Jitter RNG 3.4.1

SP800-90B, SP800-90C compliance

Jitter RNG Library 3.4.1 Source Code

Jitter RNG Library 3.4.1 Signature

Jitter RNG Linux Daemon 1.2.8 Source Code

Jitter RNG Linux Daemon 1.2.8 Signature

Documentation

The PDF documentation covers all aspects of the design and testing of the Jitter RNG.

Changelog

  • library: add FIPS 140 hints to man page

  • library: simplify the test tool to search for optimal configurations

  • library: fix: jent_loop_shuffle: re-add setting the time that was lost with 3.4.0

  • library: enhancement: add ARM64 assembler code to read high-res timer

  • RNGD: enhancement: use Jitter RNG library 3.4.1