SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
In normal reading mode, random data can only be read out of the TRNG output registers when the TRNG_STATUS[0] READY register bit is a '1'. Acknowledging the data (by writing a '1' to the TRNG_INTACK[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 TRNG_INTACK[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 TRNG_CONFIG[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).