RM0453 Rev 2 637/1454
RM0453 True random number generator (RNG)
647
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 628 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.