In Linux we already have this with /dev/random, right?
http://sockpuppet.org/blog/2014/02/25/safely-generate-random...
I'm pretty sure they are exactly the same on many of the BSDs.
* OpenBSD: /dev/random + /dev/urandom are the same and use ChaCha20.
* FreeBSD: They are the same (via symlink) and use RC4. Soon will use ChaCha20.
* NetBSD: Unsure. Last I checked, /dev/random was broken/non-functional like on Linux, and /dev/urandom was slow, like on Linux.
* Dragonfly BSD: Somewhat unsure, but ChaCha output can be xor'd with another stream to produce the returned random numbers.
* Bitrig: when it is released, it will use ChaCha20 like OpenBSD.
Related: libbsd currently uses RC4 in its arc4random functions but has publicly stated a future switch to ChaCha20.
That's why most libraries use /dev/random to seed their own RNG, he says that's wrong and that /dev/urandom (which does not block) is scary.
Usually libraries (openssl,JCE) RNG seeds from /dev/random - this is the internal state of the RNGb; internal state is transformed into next iteration by applying SHA-1 and at each turn some initial bits of internal state are returned as random numbers.
of course the library RNG comes from the requirement for a lot of randomness in most protocols, (and for predictable performance, also servers also may need to do a lot of random numbers) of course the article has many points.
TLDR - they are broken. He does not even care to explain why it's broken, because everybody knows it.