Non-biased pseudo random number generator
First Claim
1. A random number generator comprising:
- an input device to assemble multiple classes of bits from multiple sources into an input bit string;
a hash computing device to compute a hash value of the input bit string using a hashing function; and
a stream generator coupled to the hash computing device to receive the hash value and to produce an output bit string of random bits using the hash value.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer-implemented pseudo random number generator includes an input device to assemble multiple classes of bits from multiple sources into an input bit string. The multiple classes of bits include an internal class of bits from at least one source internal to the random number generator, such as a static bit register which maintains the current state of the generator. The input device also gathers one or more external classes of bits from one or more sources external to the random number generator, such as a machine class of bits which relate to operating parameters of the computer and an application class of bits which relate to execution of an application running on the computer. The input device concatenates the three classes of bits into an arbitrary length input bit string. The random number generator also has a hash computing device which computes an m-bit hash value of the input bit string assembled by the input device. The hash computing device computes the hash value using a hashing function, such as SHA (secure hash algorithm), whereby it is computationally infeasible to derive the concatenated input bit string from the output hash value or intentionally bias the output of the hash function. The SHA is a one-way hash that reduces the 512-bit input bit string to a 160-bit hash value. The hash value becomes the initializing seed for the random number generator. A stream generator (i.e., a stream cipher) is coupled to the hash computing device to receive the hash value. The stream generator uses the hash value as the initializing seed to produce an output bit string of random (or pseudo random) bits.
314 Citations
39 Claims
-
1. A random number generator comprising:
-
an input device to assemble multiple classes of bits from multiple sources into an input bit string; a hash computing device to compute a hash value of the input bit string using a hashing function; and a stream generator coupled to the hash computing device to receive the hash value and to produce an output bit string of random bits using the hash value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A random number generator for use on a computer, the computer having multiple operating parameters and executing one or more applications, the random number generator comprising:
-
a static bit register to hold a static class of bits; a machine bit register to hold a machine class of bits relating to at least one operating parameter of the computer; an application bit register to hold an application class of bits relating to execution of an application running on the computer; a hash computing device coupled to the static bit register, the machine bit register, and the application bit register, the hash computing device computing a hash value of an input bit string that comprises at least one bit from the static bit register, at least one bit from the machine bit register, and at least one bit from the application bit register; and a stream generator coupled to the hash computing device to receive the hash value and to produce an output bit string of random bits using the hash value. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A random bit seed creating unit for use in a random number generator, the random bit seed creating unit comprising:
-
a first register to hold a first class of bits; a second register to hold a second class of bits; and a hash computing device coupled to the first and second registers, the hash computing device computing a hash value of a bit string that comprises at least one bit from the first register and at least one bit from the second register, the hash value being a random bit seed for use in initializing a random number generator. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
-
24. A computer-readable memory used to direct a computer to generate random numbers, the computer-readable memory directing the computer to perform the following steps:
-
assemble multiple classes of bits from various sources into an input bit string; and compute a hash value of the input bit string according to a hashing function, the hash value being an initializing seed for use in generating random numbers. - View Dependent Claims (25, 26, 27)
-
-
28. A computer adapted to generate random numbers, the computer also having multiple operating parameters and executing one or more applications during operation, the computer comprising:
-
a data processor; said data processor being programmed to generate random numbers according to the following steps; (a) gathering a static class of bits; (b) gathering a machine class of bits relating to at least one operating parameter of the computer; (c) gathering an application class of bits relating to execution of an application running on the computer; (d) computing a hash value of an input bit string that comprises at least one bit from the static class of bits , at least one bit from the machine class of bits, and at least one bit from the application class of bits; and (e) producing an output bit string of random bits as a function of the hash value. - View Dependent Claims (29, 30, 31)
-
-
32. A random number generator comprising:
-
a hash computing device to compute a hash value of an input bit string using a hashing function; and a stream generator coupled to the hash computing device to receive the hash value and to produce an output bit string of random bits using the hash value. - View Dependent Claims (33, 34, 35)
-
-
36. A random bit seed creating unit for use in a random number generator, the random bit seed creating unit comprising:
-
a register to hold a bit string; and a hash computing device coupled to the register, the hash computing device computing a hash value of the bit string, the hash value being a random bit seed for use in initializing a random number generator. - View Dependent Claims (37)
-
-
38. A computer-readable memory used to direct a computer to generate random numbers, the computer-readable memory directing the computer to perform the step of computing a hash value of an input bit string according to a hashing function, the hash value being an initializing seed for use in generating random numbers.
-
39. A computer adapted to generate random numbers, comprising:
-
a data processor; and said data processor being programmed to generate random numbers from an initializing seed, the data processor computing the initializing seed by computing a hash value of an input bit string according to a hashing function.
-
Specification