Date of Award
Dr. David Briggs
The algorithm utilizes the behavior of modern operating systems to generate random bits by putting the process to sleep for 10 microseconds, and then comparing the actual number of microseconds slept to the expected amount. The reason why this works for generating \random" bits is that modern operating systems do not wake processes exactly when they request. This is due to process scheduling. The algorithm uses the randomness in actual sleep time to generate each bit.
The bits are not truly random, as if a person were able to force the algorithm to always execute, then we would not have random bits. The other way to break the algorithm involves knowing absolutely everything about the system state and determining when a process would be woken up by the CPU scheduler. The bits generated by the algorithm will not cycle like the mathematical methods, and so form a software-based source of highly pseudorandom values. If we could generate genuine random numbers using mathematical methods, then we would never consider using a function like this which can at best generate 105 bits second, which is 10,000 times slower than the mathematical methods. Unfortunately, we cannot create truly random sequences using deterministic functions, i.e. functions that will generate the same results given the same inputs.
Barton, Samuel, "Making Random - Cryptography and the Generation of Random Sequences" (2017). Thinking Matters. 64.