ACM Home Page
Please provide us with feedback. Feedback
Cryptanalysis of the windows random number generator
Full text PdfPdf (238 KB)
Source
Conference on Computer and Communications Security archive
Proceedings of the 14th ACM conference on Computer and communications security table of contents
Alexandria, Virginia, USA
SESSION: Cryptography and cryptoanalysis table of contents
Pages: 476 - 485  
Year of Publication: 2007
ISBN:978-1-59593-703-2
Authors
Leo Dorrendorf  The Hebrew University of Jerusalem, Jerusalem, Israel
Zvi Gutterman  The Hebrew University of Jerusalem, Jerusalem, Israel
Benny Pinkas  University of Haifa, Haifa, Israel
Sponsors
ACM: Association for Computing Machinery
SIGSAC: ACM Special Interest Group on Security, Audit, and Control
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 20,   Downloads (12 Months): 160,   Citation Count: 2
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1315245.1315304
What is a DOI?

ABSTRACT

The pseudo-random number generator (PRNG) used by the Windows operating system is the most commonly used PRNG. The pseudo-randomness of the output of this generator is crucial for the security of almost any application running in Windows. Nevertheless, its exact algorithm was never published.

We examined the binary code of a distribution of Windows 2000, which is still the second most popular operating system after Windows XP. (This investigation was done without any help from Microsoft.) We reconstructed, for the first time, the algorithm used by the pseudo-random number generator (namely, the function CryptGenRandom). We analyzed the security of the algorithm and found a on-trivial attack: given the internal state of the generator, the previous state can be computed in O(223) work (this is an attack on the forward-security of the generator, an O(1) attack on backward security is trivial). The attack on the forward-security demonstrates that the design of the generator is flawed, since it is well known how to prevent such attacks.

We also analyzed the way in which the generator is run by the operating system, and found that it amplifies the effect of the attacks. As a result, learning a single state may reveal 128 Kbytes of the past and future output of the generator. The implication of these findings is that a buffer overflow attack or a similar attack can be used to learn a single state of the generator, which can then be used to predict all random values, such as SSL keys, used by a process in all its past and future operation. This attack is more severe and more efficient than known attacks, in which an attacker can only learn SSL keys if it is controlling the attacked machine at the time the keys are used.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
AIS 20: Functionality classes and evaluation methodology for deterministic random number generators. Application Notes and Interpretations of the Scheme (AIS) Version 1, Bundesamt für Sicherheit in der Informationstechnik, Dec. 1999.
2
 
3
D. Beaver and S. Haber. Cryptographic protocols provably secure against dynamic adversaries. In EUROCRYPT '92, pages 307--323, 1992.
 
4
M. Bellare and B. S. Yee. Forward-security in private-key cryptography. In M. Joye, editor, CT-RSA '03, volume 2612 of Lecture Notes in Computer Science, pages 1--18. Springer, 2003.
 
5
 
6
 
7
I. Goldberg and D. Wagner. Randomness in the netscape browser. Dr. Dobb's Journal, January 1996.
 
8
 
9
Z. Gutterman and D. Malkhi. Hold your sessions: An attack on java session-id generation. In CT-RSA '05, volume 3376 of LNCS, pages 44--57. Springer, 2005.
 
10
 
11
 
12
J. Kelsey. Entropy and entropy sources in x9.82. http://csrc.nist.gov/CryptoToolkit/RNG/Workshop/EntropySources.pdf, July 2004.
 
13
 
14
 
15
D. A. Osvik. personal communication, 2007.
 
16
T. Ts'o. random.c - linux kernel random number generator. http://www.kernel.org.


Collaborative Colleagues:
Leo Dorrendorf: colleagues
Zvi Gutterman: colleagues
Benny Pinkas: colleagues