You are familiar with the functional difference between /dev/random
and /dev/urandom
, right?
EDIT: I guess not! Well, they behave the same, right up until the kernel's entropy pool runs dry. Then, /dev/urandom
keeps on going with the stale entropy (which is often good enough for many uses), while /dev/random
will block until there are at least enough bits to return from the read()
call. This means that the kernel guarantees that every bit read from the latter interface is backed by at least 1 bit worth of unused entropy. So it may take a while, you may have to flood-ping your device to generate a bunch of interrupts, the preinit environment may have to run an entropy daemon of its own, but that nonce will be high-entropy.