Patent US2299641A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5778069A Expired / Lapsed US ⏱️ 0.0 years remaining

Non-biased pseudo random number generator

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1996-04-10
•
Granted: 1998-07-07
•
Expires: 2016-04-10
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Matthew W. Thomlinson
  • 👤 Daniel R. Simon
  • 👤 Bennet Yee

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 11:06
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/58; G06F7/582; G06Q; G06Q20/00; G06Q20/30; G06Q20/36; G06Q20/367; H; H04; H04L; H04L9/00; H04L9/06; H04L9/065; H04L9/0656; H04L9/0662; H04L2209/00; H04L2209/12; H04L2209/20; H04L2209/56

Claims Analysis

Total Claims: 48
Claim 1
Independent Claim 69 words
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.
Claim 2
Dependent Claim 69 words
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.
Claim 3
Dependent Claim 49 words
A random number generator as recited in claim 1 wherein the multiple classes of bits include an internal class of bits from at least one source internal to the random number generator, and an external class of bits from at least one source external to the random number generator.
Claim 4
Dependent Claim 91 words
A random number generator as recited in claim 1 wherein the random number generator is configured to operate on a computer that has multiple operating parameters and executes one or more applications, wherein the multiple classes of bits assembled by the input device include (1) a static class of bits that is maintained within the random number generator, (2) a machine class of bits relating to at least one operating parameter of the computer, and (3) an application class of bits relating to execution of an application running on the computer.
Claim 5
Dependent Claim 79 words
A random number generator as recited in claim 1 wherein the stream generator comprises: a state register to initially store the hash value received from the hash computing device; and transforming logic connected to the state register to transform the hash value into the output bit string of random bits according to a selected transformation, the transforming logic providing feed back bits to the state register to alter the bits held therein from the hash value to another value.
Claim 6
Dependent Claim 23 words
A random number generator as recited in claim 1 wherein the hash computing device computes the hash value using a secure hash algorithm.
Claim 7
Dependent Claim 19 words
A cryptography system for encrypting and decrypting messages which incorporates the random number generator as recited in claim 1.
Claim 8
Dependent Claim 13 words
A processing unit incorporating the random number generator as recited in claim 1.
Claim 9
Dependent Claim 13 words
A smart card incorporating the random number generator as recited in claim 1.
Claim 10
Dependent Claim 170 words
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.
Claim 11
Dependent Claim 170 words
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.
Claim 12
Dependent Claim 49 words
A random number generator as recited in claim 9 further comprising: a bit manipulating device coupled to the static bit register to change a previous bit value that has been used by the hash computing device to a next bit value that is different from the previous bit value.
Claim 13
Dependent Claim 68 words
A random number generator as recited in claim 9 further comprising: a bit manipulating device coupled to the static bit register and to the hash computing device, the bit manipulating device being configured to change a previous bit value that has been used in the hash computing device to a next bit value according to a function of the hash value previously computed by the hash computing device.
Claim 14
Dependent Claim 74 words
A random number generator as recited in claim 9 further comprising: a bit manipulating device coupled to the static bit register and to the hash computing device, the bit manipulating device being configured to change a previous bit value that has been used in the hash computing device to a next bit value according to a hashing function of the previous bit value and the hash value previously computed by the hash computing device.
Claim 15
Dependent Claim 19 words
A cryptography system for encrypting and decrypting messages which incorporates the random number generator as recited in claim 9.
Claim 16
Dependent Claim 13 words
A processing unit incorporating the random number generator as recited in claim 9.
Claim 17
Dependent Claim 13 words
A smart card incorporating the random number generator as recited in claim 9.
Claim 18
Dependent Claim 99 words
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.
Claim 19
Dependent Claim 99 words
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.
Claim 20
Dependent Claim 59 words
A random bit seed creating unit as recited in claim 16 wherein: the first register holds an internal class of bits derived from at least one source internal to the random bit seed creating unit; and the second register holds an external class of bits derived from at least one source external to the random bit seed creating unit.
Claim 21
Dependent Claim 104 words
A random bit seed creating unit as recited in claim 16 adapted for operation in conjunction with the random number generator on a computer, the computer having multiple operating parameters and executing one or more applications, wherein: the first register holds a static class of bits that is maintained within the random bit seed creating unit; the second register holds a machine class of bits relating to at least one operating parameter of the computer; and the random bit seed creating unit further comprising: a third register to hold an application class of bits relating to execution of an application running on the computer.
Claim 22
Dependent Claim 50 words
A random bit seed creating unit as recited in claim 16 further comprising: a bit manipulating device coupled to the first register to change a previous bit value that has been used by the hash computing device to a next bit value that is different from the previous bit value.
Claim 23
Dependent Claim 70 words
A random bit seed creating unit as recited in claim 16 further comprising: a bit manipulating device coupled to the first bit register and to the hash computing device, the bit manipulating device being configured to change a previous bit value that has been used in the hash computing device to a next bit value according to a function of the hash value previously computed by the hash computing device.
Claim 24
Dependent Claim 76 words
A random bit seed creating unit as recited in claim 16 further comprising: a bit manipulating device coupled to the first bit register and to the hash computing device, the bit manipulating device being configured to change a previous bit value that has been used in the hash computing device to a next bit value according to a hashing function of the previous bit value and the hash value previously computed by the hash computing device.
Claim 25
Dependent Claim 15 words
A processing unit incorporating the random bit seed creating unit as recited in claim 16.
Claim 26
Dependent Claim 15 words
A smart card incorporating the random bit seed creating unit as recited in claim 16.
Claim 27
Dependent Claim 64 words
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.
Claim 28
Dependent Claim 64 words
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.
Claim 29
Dependent Claim 63 words
A computer-readable memory as recited in claim 24 wherein the computer-readable memory directs the computer during the assemble step to perform the following steps: hold a static class of bits; hold a machine class of bits relating to at least one operating parameter of the computer; and hold an application class of bits relating to execution of an application running on the computer.
Claim 30
Dependent Claim 25 words
A computer-readable memory as recited in claim 24 further directing the computer to perform an additional step of generating random numbers using the initializing seed.
Claim 31
Dependent Claim 51 words
A computer-readable memory as recited in claim 24 further directing the computer to perform the following additional steps: hold the classes of bits in associated registers; and change a bit value of one of the classes of bits in one of the registers according to a function of the hash value.
Claim 32
Dependent Claim 144 words
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.
Claim 33
Dependent Claim 144 words
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.
Claim 34
Dependent Claim 56 words
A computer as recited in claim 28 wherein said data processor is further programmed to perform an additional step of altering a previous bit value in at least one of the classes of bits that has been used to compute the hash value to a next bit value that is different from the previous bit value.
Claim 35
Dependent Claim 56 words
A computer as recited in claim 28 wherein said data processor is further programmed to perform an additional step of altering a previous bit value in at least one of the classes of bits that has been used to compute the hash value to a next bit value according to a function of the hash value.
Claim 36
Dependent Claim 62 words
A computer as recited in claim 28 wherein said data processor is further programmed to perform an additional step of altering a previous bit value in at least one of the classes of bits that has been used to compute the hash value to a next bit value according to a hashing function of the previous bit value and the hash value.
Claim 37
Dependent Claim 52 words
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.
Claim 38
Dependent Claim 52 words
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.
Claim 39
Dependent Claim 19 words
A cryptography system for encrypting and decrypting messages which incorporates the random number generator as recited in claim 32.
Claim 40
Dependent Claim 13 words
A processing unit incorporating the random number generator as recited in claim 32.
Claim 41
Dependent Claim 14 words
An integrated circuit card incorporating the random number generator as recited in claim 32.
Claim 42
Dependent Claim 64 words
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.
Claim 43
Dependent Claim 64 words
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.
Claim 44
Dependent Claim 15 words
A processing unit incorporating the random bit seed creating unit as recited in claim 36.
Claim 45
Dependent Claim 50 words
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.
Claim 46
Dependent Claim 50 words
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.
Claim 47
Dependent Claim 47 words
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.
Claim 48
Dependent Claim 47 words
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.

References Cited (Backward Citations)

US4118788A Cited
US5005200A Cited
US5432852A Cited
US5465353A Cited
US5608801A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-07-06 2002-01-05 2002-07-07 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-07-06 2006-01-05 2006-07-07 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-07-06 2010-01-05 2010-07-07 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag