LRNG

The venerable Linux /dev/random served users of cryptographic mechanisms well for a long time. Its behavior is well understood to deliver entropic data. In the last years, however, the Linux /dev/random showed signs of age where it has challenges to cope with modern computing environments ranging from tiny embedded systems, over new hardware resources such as SSDs, up to massive parallel systems as well as virtualized environments. This paper proposes a new approach to entropy collection in the Linux kernel with the intention of addressing all identified shortcomings of the legacy /dev/random implementation. The new Linux Random Number Generator’s design is presented and all its cryptographic aspects are backed with qualitative assessment and complete quantitative testing. The test approaches are explained and the test code is made available to allow researchers to re-perform these tests.

The Linux Random Number Generator is an API and ABI compatible drop-in replacement to the legacy /dev/random implementation in the Linux kernel.

The source code of the following LRNG components is publicly available:

Documentation

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

Historic Releases

For older releases, see the LRNG historic page.

Subsections of LRNG

LRNG v56

Covered kernel version: 6.10

LRNG Source Code

LRNG Source Code_Signature

LRNG Test Code including SP800-90B Tests

LRNG Test Code Signature

Patches to backport LTS kernels

Individual Patches

Documentation

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

In addition, the presentation about the LRNG provides an overview.

Changelog

  • trigger DRBG self test when DRBG is loaded

  • use IS_ENABLED for CONFIG_BASE_SMALL

Standards Compliance

  • SP800-90A/B/C compliant

  • AIS20/31 2011 compliant

  • AIS20/31 draft 2022 compliant

  • FIPS IG 7.19 / D.K compliant - use of DRBG as conditioning component for chaining DRBGs

LRNG v55

Covered kernel version: 6.9

LRNG Source Code

LRNG Source Code_Signature

LRNG Test Code including SP800-90B Tests

LRNG Test Code Signature

Patches to backport LTS kernels

Individual Patches

Documentation

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

In addition, the presentation about the LRNG provides an overview.

Changelog

  • Version bump

Standards Compliance

  • SP800-90A/B/C compliant

  • AIS20/31 2011 compliant

  • AIS20/31 draft 2022 compliant

  • FIPS IG 7.19 / D.K compliant - use of DRBG as conditioning component for chaining DRBGs

LRNG v54

Covered kernel version: 6.8

LRNG Source Code

LRNG Source Code_Signature

LRNG Test Code including SP800-90B Tests

LRNG Test Code Signature

Patches to backport LTS kernels

Individual Patches

Documentation

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

In addition, the presentation about the LRNG provides an overview.

Changelog

  • Version bump

Standards Compliance

  • SP800-90A/B/C compliant

  • AIS20/31 2011 compliant

  • AIS20/31 draft 2022 compliant

  • FIPS IG 7.19 / D.K compliant - use of DRBG as conditioning component for chaining DRBGs

LRNG v53

Covered kernel version: 6.7

LRNG Source Code

LRNG Source Code_Signature

LRNG Test Code including SP800-90B Tests

LRNG Test Code Signature

Patches to backport to older kernels

Individual Patches

Documentation

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

In addition, the presentation about the LRNG provides an overview.

Changelog

  • Consider upstream patch ed1aa959b50854bddd7252d404aa6fdbcfa60b99

Standards Compliance

  • SP800-90A/B/C compliant

  • AIS20/31 2011 compliant

  • AIS20/31 draft 2022 compliant

  • FIPS IG 7.19 / D.K compliant - use of DRBG as conditioning component for chaining DRBGs