A Random Number Generator Built from Repurposed Hardware in Embedded Systems
Quality randomness is fundamental to cryptographic operations but on embedded systems good sources are (seemingly) hard to find. Rather than use expensive custom hardware, this study investigates entropy sources that are already common in a range of low-cost embedded platforms. In particular, we empirically evaluate the entropy provided by three sources - SRAM startup state, oscillator jitter, and device temperature - and integrate those sources into a full Pseudo-Random Number Generator implementation based on Fortuna. Our system addresses a number of fundamental challenges affecting random number generation on embedded systems. For instance, we propose SRAM startup state as a means to efficiently generate the initial seed - even for systems that do not have writeable storage. Further, the system's use of oscillator jitter allows for the continuous collection of entropy-generating events - even for systems that do not have the user-generated events that are commonly used in general-purpose systems for entropy, e.g., key presses or network events.
READ FULL TEXT