WO2007037869A1

Cryptographically secure pseudo-random number generator

Abstract

A cryptographically secure pseudo-random number generator is configured to obtain one or more unpredictable sources of entropy that provide a seed. A current internal state of the number generator is modified as a function of the current internal state and the seed to accumulate entropy. The modified internal state may be obtained by using non-linear feedback shift register operations on the internal state and the seed. A pseudo-random number is then generated based on the modified internal state of the number generator. The one or more unpredictable sources of entropy may be combined into the seed. The internal state of the number generator may be continually modified with additional seeds obtained from the one or more unpredictable sources and the current internal state. Additionally, the internal state of the number generator may be modified on demand with a new seed received from a calling application.

WO2007037869A1, drawing sheet 1
Sheet 1 of 6

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Published
  4. Today

36 claims: 35 independent, 1 dependent

  1. 1
    CLAIMS WHAT IS CLAIMED IS:1. A method for operating a secure pseudo-random number generator, comprising: obtaining one or more unpredictable sources of entropy to provide a seed;accumulating entropy in an internal state of the number generator by modifying the internal state as a function of a current internal state of the number generator and the seed;and generating a pseudo-random number based on the modified internal state of the number generator.
  2. 3
    The method of 1 further comprising:combining the one or more unpredictable sources of entropy into the seed.
  3. 4
    The method of 1 further comprising:storing an initialization seed upon shutdown of the number generator, wherein the initialization seed is a pseudo-random number generated by the number generator;and initializing a startup internal state of the number generator with the stored initialization seed upon startup of the number generator.
  4. 5
    The method of 4 wherein the initialization seed is stored in a secure file system and further comprising:determining whether the integrity of the initialization seed has been compromised prior to initializing the startup internal state of the number generator;and employing an alternative unpredictable source to initialize the startup internal state of the number generator if the integrity of the stored initialization seed has been compromised.
  5. 6
    The method of 1 wherein a single cryptographic primitive operation is used to obtain the modified internal state for the number generator and generate the pseudorandom number.
  6. 7
    The method of 6 wherein the single cryptographic primitive operation includes one of either a binary word operation, a bit-shifting operation with constant offsets, or a table lookup.
  7. 8
    The method of 1 further comprising:continuously reseeding the number generator from the one or more unpredictable sources to change the internal state of the number generator.
  8. 9
    The method of 8 wherein the unpredictable sources include physical sources having quantifiable information.
  9. 10
    The method of 8 further comprising:reseeding the number generator with a new seed received from a calling application to change the internal state for the number generator.
  10. 11
    The method of 1 wherein the secure pseudo-random number generator has a nonlinear SOBER structure.
  11. 12
    The method of 11 wherein the modified internal state is obtained by loading the seed into a state register of the number generator by exclusive-OR operations with a current content of the state register, feeding the word-shifted content of a plurality of the state registers to a non-linear function to obtain a result, performing an exclusive-OR operation between the result and one of the one or more state registers to obtain a feedback number, and modifying the one or more state registers by shifting the content from a first state register to a second state register and loading a third state register with the feedback number.
  12. 13
    The method of 1 further comprising:maintaining a counter of the number of times the one or more state registers are shifted between reseeding operations;and modifying one of the one or more state registers based on the counter.
  13. 14
    The method of 1 further comprising:maintaining an interval counter that changes each time a pseudo-random number is generated;and reseeding the number generator from the one or more unpredictable sources to change the internal state of the number generator only at an interval defined by the interval counter.
  14. 15
    The method of 14 further comprising:reseeding the number generator with a system time at the interval defined by the interval counter.
  15. 16
    The method of 1 wherein the seed is at least one hundred twenty-eight bits long and the internal state of the number generator is eighteen word-size registers.
  16. 17
    A cryptographically secure number generator comprising:a seed loader configured to obtain one or more unpredictable sources of seed information to provide a seed;a plurality of state registers for storing an internal state of the number generator, wherein the seed loader reseeds the state registers based on a current content of the state registers and the seed to modify the internal state of the number generator and accumulate entropy;and a pseudo-random number generator configured to generate a pseudorandom number based on the modified internal state of the number generator.
  17. 18
    The number generator of 17 wherein the modified internal state is obtained by using non-linear feedback shift register operations on the content of the state registers and the seed.
  18. 19
    The number generator of 17 wherein the pseudo-random number generator is further configured to generate an initialization seed upon shutdown of the number generator;and store the initialization seed.
  19. 20
    The number generator of 19 wherein the seed loader is further configured to initialize the plurality of state registers with the stored initialization seed upon restarting of the number generator.
  20. 21
    The number generator of 17 wherein the seed loader is further configured to continuously load new seeds obtained from the one or more unpredictable sources into the plurality of state registers.
  21. 22
    The number generator of 17 wherein the unpredictable sources include physical sources having quantifiable information.
  22. 23
    The number generator of 17 wherein the seed loader is further configured to load a new seed obtained from a calling application into the plurality of state registers.
  23. 24
    The number generator of 17 wherein a single cryptographic primitive operation is used to reseed the state registers and generate the pseudo-random number.
  24. 25
    The number generator of 17 wherein the seed loader, plurality of state registers, and pseudo-random number generator are arranged as a non-linear SOBER structure.
  25. 26
    A number generator, comprising:means for obtaining one or more unpredictable sources of entropy to provide a seed;means for accumulating entropy in an internal state of the number generator by modifying the internal state as a function of a current internal state of the number generator and the seed;and means for generating a pseudo-random number based on the modified internal state of the number generator.
  26. 27
    The number generator of 26 further comprising:means for combining the one or more unpredictable sources of entropy into the seed.
  27. 28
    The number generator of 26 further comprising:means for storing an initialization seed upon shutdown of the number generator, wherein the initialization seed is a pseudo-random number generated by the number generator;means for determining whether the integrity of the initialization seed has been compromised prior to initializing a startup internal state of the number generator;and means for reseeding the startup internal state of the number generator with one of either: an alternative unpredictable source if the integrity of the stored initialization seed has been compromised, and the stored initialization seed otherwise.
  28. 29
    The number generator of 26 further comprising:means for continuously modifying the current internal state with additional seeds obtained from the one or more unpredictable sources of entropy;and means for modifying the current internal state on demand with a new seed received from a calling application.
  29. 30
    A processing circuit comprising a processing device configured to obtain a seed from one or more unpredictable sources of entropy, modify an internal state of a number generator as a function of a current internal state and the seed to accumulate entropy in the number generator, and generate a pseudo-random number based on the modified internal state of the number generator;and a memory device including one or more internal state registers to store the internal state of the number generator.
  30. 31
    The processing circuit of 30 wherein the processing circuit is further configured to store an initialization seed in the memory device upon shutdown of the number generator, wherein the initialization seed is a pseudo-random number generated by the number generator; determine whether the integrity of the initialization seed has been compromised prior to initializing a startup internal state of the number generator; and reseed the startup internal state of the number generator with one of either:an alternative unpredictable source if the integrity of the stored initialization seed has been compromised, and the stored initialization seed otherwise.
  31. 32
    The processing circuit of 30 wherein the processing circuit is further configured to continuously obtain additional seeds from the one or more unpredictable sources of entropy to modify the internal state of the number generator;and modify the internal state of the number generator based on a new seed received from a calling application.
  32. 33
    The processing circuit of 30 wherein the processing circuit is further configured to modify the internal state by using a single cryptographic primitive operation and nonlinear feedback function based on the current internal state and the seed.
  33. 34
    A machine-readable medium having one or more instructions for generating pseudo-random numbers, which when executed by a processor causes the processor to:obtain a seed from one or more unpredictable sources of entropy;modify an internal state of a number generator as a function of a current internal state and the seed to accumulate entropy in the number generator;generate a pseudo-random number based on the modified internal state of the number generator.
  34. 35
    The machine-readable medium of 34 further having one or more instructions which when executed by a processor causes the processor to:modify the internal state by using a single cryptographic primitive operation and non-linear feedback function based on the current internal state and the seed.
  35. 36
    The machine-readable medium of 34 further having one or more instructions which when executed by a processor causes the processor to:continuously obtain additional seeds from the one or more unpredictable sources of seed information to modify the internal state of the number generator;and modify the internal state of the number generator based on a new seed received from a calling application.
Independent claims35