The document below is included by the contributing authors as a means to ensure timely dissemination of scholarly and technical work on a non-commercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each author's copyright.

Journal of Computer Security,
Vol. 13 (2),
André Zúquete,
An Efficient High Quality Random Number Generator for Multi-Programmed Systems,
Pages No. 243-263,
IOS Press,
Copyright (2005), with permission from IOS Press.

This document presents an efficient, high quality random number generator for multi-programmed environments, in particular for UNIX/Linux andWindows systems. The algorithm uses a system’s notion of the time, given by a high-precision real-time counter, to obtain random bits, and a combination of system calls to reduce the correlation between consecutive random bits. The combination of system calls introduces variable and unpredictable real-time gaps in the execution of the generator. We present a rationale for such variation and unpredictability, and we show that in fact they exist even when the generator runs in an adverse scenario, i.e., a lightly loaded system. We also show how the generator resists several attacks attempting to guess or control the values it produces. The quality of the generator is evaluated both in terms of its performance and the randomness of the byte sequences it produces. Comparing against other similar generators, CryptoLib and librand, our generator produces equally good random byte sequences, but its performance increases with the speed of the processor, while the performance of CryptoLib and librand is rather constant for each operating system, independently of the processor were it runs.

Keywords: Random number generators, operating systems, Pentium processors, time samples