Hardware assisted fast pseudorandom number generation

US10142103B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10142103-B2
Application numberUS-201514961307-A
CountryUS
Kind codeB2
Filing dateDec 7, 2015
Priority dateDec 7, 2015
Publication dateNov 27, 2018
Grant dateNov 27, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method for generating pseudorandom numbers by initializing a counter value for a call-counter, sending a bit-wise form of the counter value from the counter to a mixing function, and mixing the counter value to generate the pseudorandom number. The mixing function may be a XOR tree, substitution-permutation, or double-mix Feistel. The pseudorandom number generator can operate by mixing the bits of the call-counter, repeatedly mixing its own output, or a combination thereof. The counter is incremented by a predetermined value. In order to provide backward secrecy, the pseudorandom number is processed by a one-way function or is hashed with a cryptographic hash function, and the result thereof is used as an input value for a subsequent cycle of the mixing function. Also, several mixing functions can be operated in parallel with their output XORed.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for generating pseudorandom numbers comprising the steps of: initializing a counter value for a counter (block 402 ); sending a bit-wise form of the counter value from the counter to a mixing function (block 408 ); mixing the bit-wise form of the counter value to generate a pseudorandom number (block 410 ); filling an input register by repeating the counter value in its entirety as many times as possible without exceeding capacity of the input register (block 404 ); and filling any remaining, unfilled bits of the input register with individual bits of the counter value until the input register is full (block 406 ). 2. The method of claim 1 further comprising the step of incrementing the counter value by a predetermined value (block 424 ). 3. The method of claim 1 further comprising the step of using the pseudorandom number as an input value for a subsequent cycle of the mixing step (block 410 ). 4. The method of claim 1 wherein the mixing step (block 410 ) maps a first segment of the bit-wise form of the counter value input with a first segment of the bit-wise form of the counter value output by concatenating the segments. 5. The method of claim 4 wherein the mixing step (block 410 ) is invertible. 6. The method of claim 4 wherein the mixing step (block 410 ) is non-linear. 7. The method of claim 4 wherein the mixing step (block 410 ) comprises a function selected from the group consisting of an exclusive-OR “XOR” tree mixing function, a substitution-permutation mixing function, and a double-mix Feistel mixing function. 8. The method of claim 1 wherein the mixing step (block 410 ) further comprises steps of mixing the counter value at least twice in parallel mixing functions (block 412 ) and exclusive-XORing (“XORing”) outputs from the parallel mixing functions (block 414 ). 9. The method of claim 1 further comprising the steps of: processing the pseudorandom number by a one-way function or hashing the pseudorandom number with a cryptographic hash function (block 416 ); and using a result of the one-way processing of the pseudorandom number or hashing of the pseudorandom number as an input value for a subsequent cycle of the mixing function (block 418 ). 10. The method of claim 1 further comprising the step of using the pseudorandom number to store encrypted data in a memory (block 422 ). 11. A system for generating pseudorandom numbers comprising: a counter that is initialized with a counter value (block 402 ); a mixing function that mixes a bit-wise form of the counter value to generate a pseudorandom number (block 410 ); an input register arranged to be filled by repeating the counter value in its entirety as many times as possible without exceeding capacity of the input register (block 404 ) and by filling any unfilled bits of the input register with individual bits of the counter value until the input register is full (block 406 ). 12. The system of claim 11 wherein the counter value is incremented by a predetermined value (block 424 ). 13. The system of claim 11 wherein the pseudorandom number serves as an input value for a subsequent cycle of the mixing function (block 420 ). 14. The system of claim 11 further comprising a storage device having a memory that stores encrypted data based on the pseudorandom number (block 422 ), the encrypted data being selected from the group consisting of encryption keys, tweak values, nonces, and initial values. 15. The system of claim 11 wherein the mixing function (block 410 ) maps a first segment of the bit-wise form of the counter value input with a first segment of the bit-wise form of the counter value output by concatenating the segments. 16. The system of claim 11 wherein the mixing function (block 410 ) is invertible. 17. The system of claim 11 wherein the mixing function (block 410 ) is non-linear. 18. The system of claim 11 wherein the mixing function (block 410 ) is selected from the group consisting of a XOR tree mixing function, substitution-permutation mixing function, and double-mix Feistel mixing function. 19. The system of claim 11 wherein the mixing function (block 410 ) is performed by at least two mixing functions operating in parallel (block 412 ) and the outputs from the at least two mixing functions are XORed (block 414 ). 20. The system of claim 11 wherein: the pseudorandom number is processed by a one-way function or hashed with a cryptographic hash function (block 416 ); and a result of the one-way processing of the pseudorandom number or hashing of the pseudorandom number is used as an input value for a subsequent cycle of the mixing function (block 418 ).

Assignees

Inventors

Classifications

  • G06F7/582Primary

    Pseudo-random number generators · CPC title

  • H04L9/0869Primary

    involving random numbers or seeds · CPC title

  • with particular pseudorandom sequence generator · CPC title

  • Hash functions, e.g. MD5, SHA, HMAC or f9 MAC · CPC title

  • producing a non-linear pseudorandom sequence · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10142103B2 cover?
A system and method for generating pseudorandom numbers by initializing a counter value for a call-counter, sending a bit-wise form of the counter value from the counter to a mixing function, and mixing the counter value to generate the pseudorandom number. The mixing function may be a XOR tree, substitution-permutation, or double-mix Feistel. The pseudorandom number generator can operate by mi…
Who is the assignee on this patent?
Boeing Co
What technology area does this patent fall under?
Primary CPC classification G06F7/582. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Nov 27 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).