SPRUJB6B November 2024 – May 2025 AM2612
In normal reading mode, random data can only be read out of the TRNG output registers when the [0] READY register bit is a '1'. Acknowledging the data (by writing a '1' to the [0] READY_ACK register bit) clears the READY bit and wipes the output registers – they will remain zero until the next 128 bits data block is actually available.
An attacker may try to read the output registers (without acknowledging the data) to obtain a copy of data to be read later by an application. To block this attack, the 'secure reading mode' can be enabled. In this mode, reading from the output registers must be enabled (by writing 0x0000 to the [15-0] OPEN_READ_GATE register field or writing a '1' to the [12] OPEN_READ_GATE2 bit of that same register) before it is possible to actually access the output registers. Enabling the reading starts a timeout (controlled by the [15-12] READ_TIMEOUT register field) – when this timeout expires, the reading is disabled and the data that was offered is acknowledged so that it will not be offered again. The Host should set this timeout such that there is just enough time to actually read the output registers and perform a normal data acknowledge (which aborts the timeout).