  Quality randomness is fundamental to cryptographic operations but on embedded
systems good sources are (seemingly) hard to find. Rather than use expensive
custom hardware, our ERHARD-RNG Pseudo-Random Number Generator (PRNG) utilizes
entropy sources that are already common in a range of low-cost embedded
platforms. 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.
