Open-source TRNG
Introduction
Welcome to OpenTRNG, the open-source framework for True Random Number Generators! 🎲
This project provides the community with reference implementations of Physical TRNGs (PTRNGs) based on ring oscillators, designed to be transparent, reproducible, and easy to experiment with.
With OpenTRNG, you can:
- Emulate noisy ring oscillators
- Emulate raw random number
- Simulate, compile and run the PTRNG on hardware
- Analyze and evaluate the random outcomes
Disclaimer
The OpenTRNG project provides reference TRNG/PTRNG implementations as described in scientific literature. The source code is released for academic and research purposes only. Compliance with verification or certification standards is not guaranteed, and the code must not be used as is in products.
OpenTRNG is NOT 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).
Acknowledgment
This work is supported by the “France 2030” government investment plan managed by the French National Research Agency (ANR), under the project ARSENE (ANR-22-PECY0004).
License and contributions
The OpenTRNG project is distributed under the MIT license.
Contributions and pull requests are welcome! All submissions will be reviewed before being merged, please note that no specific integration timelines can be guaranteed. The project is actively maintained by CEA-Leti.
Your feedback, ideas, and improvements are highly appreciated to help grow the OpenTRNG community!