The TRNG (True Random Number Generator) can be used for the following cryptographic purposes:
The EIP-76 TRNG provides a true, non-deterministic Noise Source coupled to an (optional) Deterministic Random Bit Generator for the purpose of generating keys, Initialization Vectors (IVs), and other random number requirements.
The random numbers are accessible to the host in four 32-bit registers allowing a 128-bit random number to be read with a single burst read. Acknowledging the ‘data ready’ (interrupt) state causes the EIP-76 to move a new value, if available in the data buffer, to the TRNG output register. The EIP-76 always tries to keep the data buffer filled completely, so pulling out data starts the regeneration of a new number by either the DRBG or (if that one is not available) the Conditioning Function to replenish the buffer. The major functional blocks of the EIP-76 are:
The true entropy source uses Free Running Oscillators (FROs) as basic building block. The accumulation of timing jitter, caused (for the largest part) by shot noise, creates uncertainty intervals for the output transitions of each FRO. Sampling within an uncertainty interval generates a single bit of entropy, which is ‘accumulated’ in a ‘toggle’ flip-flop. As the uncertainty interval is very narrow compared to the cycle time of a FRO, the mean amount of entropy generated per sample is very small (less than 1/100 bit per sample). To increase the entropy generation rate, multiple FROs are used in parallel.
This sequence starts the TRNG engine and read a 128 bit random number without using a DRBG to reseed the engine.