True random number generator (RNG) RM0453
638/1461 RM0453 Rev 1
Health checks
This component ensures that the entire entropy source (with its noise source) starts then
operates as expected, obtaining assurance that failures are caught quickly and with a high
probability and reliability.
The RNG implements the following health check features in accordance with NIST SP800-
90B. The described thresholds correspond to the value recommended for register
RNG_HTCR (in
Section 22.6.2).
1. Start-up health tests, performed after reset and before the first use of the RNG as
entropy source
– Adaptive proportion test running on one 1024 bit windows: the RNG verifies that
the first bit on the outputs of the noise source is not repeated more than 691 times.
– Known-answer tests, to verify the conditioning stage.
– Repetition count test, flagging an error when the noise source has provided more
than 40 consecutive bits at a constant value (“0” or “1”)
2. Continuous health tests, running indefinitely on the outputs of the noise source
– Repetition count test, similar to the one running in start-up tests
– Adaptive proportion test running on 1024 consecutive samples, like during start-up
health tests.
3. Vendor specific continuous tests
– Transition count test, flagging an error when the noise source has delivered more
than 32 consecutive occurrence of two bits patterns (“01” or “10”).
– Real-time “too slow” sampling clock detector, flagging an error when one RNG
clock cycle (before divider) is smaller than AHB clock cycle divided by 32.
4. On-demand test of digitized noise source (raw data)
– Supported by restarting the entropy source and re-running the startup tests (see
software reset sequence in Section 22.3.4: RNG initialization). Other kinds of on-
demand testing (software based) are not supported.
The CECS and SECS status bits in the RNG_SR register indicate when an error condition is
detected, as detailed in
Section 22.3.7: Error management.
Note: An interrupt can be generated when an error is detected.
Above health test thresholds are modified by changing value in RNG_HTCR register. See
Section 22.6: RNG entropy source validation for details.