Collection of different Entropy Sources. More...
Collection of different Entropy Sources.
Collection of entropy sources.
This module adds support for additional entropy sources next to pure peripheral sources like HWRNG Abstraction and SRAM PUF. The concepts implemented here are heavily influenced by NIST SP 800-90B. Entropy sources can be used to feed more advanced entropy modules for cryptographic purposes, which typically accumulate multiple sources and safely maintain internal states. Alternatively, these sources can be used directly or with internal conditioning enabled for non-cryptographic tasks like seed generation of general purpose PRNGs, in the absence of a hardware random number generator. The API, however, is not meant to face a user.
A common component provides optional access to health tests and conditioning (Entropy Source compile configurations) that can be run on parallel instantiations. The conditioning currently implements a von Neumann extractor to unbias samples. It adds a variable runtime (dependent on the input samples) but is lightweight. In future, other conditioning mechanisms such as hash based derivation functions might be included.
Entropy sources require thorough testing and evaluation for serious deployments which is out of scope of this module, and we refer to SP800-90B_EntropyAssessment for validation. Among other metrics, this tool will return an entropy estimation per sample that should be employed for every deployment scenario and must be configured in software accordingly. In the specific case of the ADC based entropy source, a developer needs to set CONFIG_ENTROPY_SOURCE_ADC_HMIN accordingly.
|ADC Noise Entropy Source|
|Entropy Source based on LSB of ADC samples. |
|Entropy Source Common|
|Common definitions and functions for entropy sources. |
|Zero Entropy Source|
|Zero Entropy Source for testing. |