In this paper we discuss PRNGs: the mechanisms used by real-world secure systems to generate cryptographic keys, initialization
vectors, “random” nonces, and other values assumed to be random. We argue that PRNGs are their own unique type of cryptographic
primitive, and should be analyzed as such. We propose a model for PRNGs, discuss possible attacks against this model, and
demonstrate the applicability of the model (and our attacks) to four real-world PRNGs. We close with a discussion of lessons
learned about PRNG design and use, and a few open questions.