Open-source TRNG

Introduction

Welcome to OpenTRNG the open-source TRNG! This project is dedicated to delivering the community open-source implementations of reference Physical True Random Number Generator (TRNG or PTRNG) based on ring oscillators. Through OpenTRNG, you have the ability to:

  1. Emulate noisy ring oscillators
  2. Emulate raw random number
  3. Simulate, compile and run the PTRNG on hardware
  4. Analyze and evaluate the random outcomes

Disclaimer

The OpenTRNG project implements reference TRNG or PTRNG implementations as found in the scientific litterature, the source code is made available for accademic purposes only. As the compliance with verification and certification standards cannot be guarantee, it shall not be deployed “as is” in a product.

Please be aware that any misuse or unintended application of this project is beyond the responsibility of CEA.

If you plan to integrate a Random Number Generator (RNG) into a product, feel free to contact us.

Why OpenTRNG?

The objective of OpenTRNG, the open-source TRNG, is to offer reference architectures of ring-oscillator based True Random Number Generators (TRNG), also known as PTRNG, to the community. With the advancement of certification standards like BSI AIS20/31 (used in the Common Criteria) and NIST SP 800-90B, the stochastic model of the entropy source is increasingly crucial in relation to validating statistical tests on output data. Here, we publish straightforward yet effective entropy sources for PTRNG to facilitate the validation of their stochastic models across various FPGA and ASIC targets.

In RO-based True Random Number Generators (TRNGs), the RO serves as the entropy source. Specifically, the inherent jitter between two (or more) ROs generates relative phase noise, which is known random, uncontrollable, and unpredictable. This relative phase noise is then converted into random bits through a sampling mechanism.

As of now, OpenTRNG includes the following reference sampling architectures:

  • Elementary based Ring Oscilator (ERO),
  • Multi Ring Oscilator (MURO),
  • Coherent Sampling Ring Oscilator (COSO).

License and contributions

The OpenTRNG project is distributed under the GNU GPLv3 license.

Pull requests are welcome and will be reviewed before being merged. No integration timelines are promised. The code is maintained by CEA-Leti.