I am interested in generation of pseudo-random numbers for cryptography. Besides Chapter 5 of Menezes/Oorschot/Vanstone; Chapter 8 of Stinson; and Chapter 3 of Goldreich, where else could I find more? I'm interested in general principles for designing PRNGs (desirable properties, tests, etc).
-
3Not on design per se, but you may be interested in Goldreich's newer book: http://books.google.com/books?id=9k6Lw2U2XCkC – S Huntsman Dec 11 '10 at 16:07
-
@S Huntsman: thanks a lot for that! I didn't know Goldreich had a book on PRNGs. – Jay Dec 11 '10 at 16:10
3 Answers
You might want to check out
- Chapters 5 and 6 of Katz and Lindell
- Pseudorandomness by S. Vadhan
- Parwise Independence and Derandomization by Luby and Wigderson
- Pseudorandomness and Combinatorial Constructions by Trevisan
- Goldreich's webpage on pseudorandomness, where he has pointers to other sources.
- 3,664
- 1
- 24
- 37
-
1Most of this is not very relevant to practical implementations of PRNGs for cryptography. This is not a good set of resources to give an implementor. – D.W. May 11 '11 at 09:01
If you are thinking of implementing your ideas, there is a standard battery of tests that PRNG implementations are given. These tests (DIEHARD and successor DIEHARDER) may be downloaded from its archived webpage and http://www.phy.duke.edu/~rgb/General/dieharder.php respectively.
- 119
- 4
- 1,791
- 13
- 17
-
4Important cautionary note: passing DIEHARD does not mean your PRNG is any good. This is not a resource I would give to an implementor who needs to implement a secure PRNG. – D.W. May 11 '11 at 09:02
Are you interested in implementing a PRNG? If so, your best bet is not to design one yourself, but just use a standard one. /dev/urandom is the right answer on most platforms. If /dev/urandom doesn't exist, generating a random AES key with /dev/random and then running AES-CTR mode to generate lots of pseudorandom numbers is another reasonable approach.
I recommend that you read Cryptography Engineering, by Ferguson, Schneier, and Kohno. It is an excellent book. It will teach you a lot about how to design and build real cryptosystems.
If you actually have to build a system that will be deployed in practice, I recommend that you do not take your guidance from the theoretical CS community, but rather from the community of practitioners and practice-oriented researchers. Much of the theoretical CS work will not be very relevant, or potentially even misleading, to practical implementation of a secure PRNG. I also encourage you to look at the IT Security stack exchange for those kinds of questions.
- 12,054
- 2
- 34
- 80
-
4The question explicitly says he is interested in general principles, and the question was asked on the Theoretical CS stack exchange... – David Cash May 12 '11 at 00:24