Almost all cryptographic systems are based on the use of a source of random bits, whose output is used, for example, as a cryptographic key. The security analysis (and proofs of security) of secure systems are almost always based on the assumption that the system uses some random data (e.g., a key) which is uniformly distributed and unknown to an attacker. The use of weak random values may result in an adversary being able to break the system.
Physical sources of randomness are often too costly and therefore most operating systems use a pseudo-random number generator (RNG). This is an algorithm which is initialized, and sometime periodically refreshed, with short random data gathered from the system. The RNG must generate output which is indistinguishable from random.
This project investigates the security of the random number of popular operating systems, and in particular of Linux and of Windows. The findings were published in the following papers and news items.