Cryptographically secure random number generator
AssigneeColossio, Inc.
InventorJoseph A. Jaroch
Life of this patent
Estimating the term…
Abstract
Various aspects of the subject technology relate to systems, methods, and non-transitory machine-readable medium for generating random numbers are disclosed herein. Entropic data is collected from a computer system and the entropic data is stored as raw data in an assigned entropy pool. The entropic data is encrypted using a globally incrementing counter as an encryption key and the encrypted bytes are returned as a random number.
Claims18
A computer-implemented method, comprising:
- receiving a first request for generating a random number;
- collecting entropic data generated from an entropy source of a plurality of entropy sources in a client computing device;
- storing the collected entopic data in a first pool, wherein each entropy source is assigned to a corresponding pool, the stored entropic data is raw data;
- encrypting, using a counter, the entropic data from the first pool with a hash of entropic data from a second pool wherein the second pool is randomly selected;
- providing the encrypted data to the client computing device, wherein the encrypted data is a random number;
- comparing the encrypted data with a history of past encrypted data stored in a data cloud;
- determining that the encrypted data is identical to one of the past encrypted data;
- based on the determination, generating a new random number;
- and
- providing the generated random number to the client computing device.
A system comprising:
- one or more processors;
- a computer-readable storage medium coupled to the one or more processors, the computer-readable storage medium including instructions that, when executed by the one or more processors, cause the one or more processors to perform a random number generator function comprising:
- receive a first request for generating a random number;
- collect entropic data generated from an entropy source of a plurality of entropy sources in the client computing device;
- store the collected entopic data in a first pool, wherein each entropy source is assigned to a corresponding pool, the stored entropic data is raw data;
- incorporate the entropic data from at least one second pool into the first pool;
- encrypt, using a counter, the entropic data from the first pool with a hash of entropic data from the at least one second pool;
- provide the encrypted data to the client computing device, wherein the encrypted data is the random number;
- inserting a trampoline hook on the random number generator function;
- and
- creating a thread to monitor unhooking of the random number generator function.
A non-transitory machine-readable medium comprising instructions stored therein, which when executed by a machine, cause the machine to perform operations comprising:
- receiving a first request for generating a random number;
- collecting entropic data generated from a plurality of entropy sources in the client computing device;
- storing the collected entopic data in a plurality of pools, wherein each pool is assigned to a corresponding entropy source, the stored entropic data is raw data;
- encrypting, using a counter, the entropic data from a first pool of the plurality of pools with a hash of entropic data from a second pool of the plurality of pools;
- providing the encrypted data to the client computing device, wherein the encrypted data is a random number;
- determining a current position of a read pointer of the counter for the first pool;
- determining a prime number nearest to a square root of a number of requested bytes;
- encrypting bytes at the current position of the read pointer with a hash of bytes from the second pool;
- and
- incrementing the current position of the read pointer of the counter by a prime number of bytes.
Dependencies are inferred from the claim text.