fbpx
Wikipedia

Cryptographically secure pseudorandom number generator

A cryptographically secure pseudorandom number generator (CSPRNG) or cryptographic pseudorandom number generator (CPRNG)[1] is a pseudorandom number generator (PRNG) with properties that make it suitable for use in cryptography. It is also loosely known as a cryptographic random number generator (CRNG) (see Random number generation § "True" vs. pseudo-random numbers).[2][3]

Most cryptographic applications require random numbers, for example:

The "quality" of the randomness required for these applications varies. For example, creating a nonce in some protocols needs only uniqueness. On the other hand, the generation of a master key requires a higher quality, such as more entropy. And in the case of one-time pads, the information-theoretic guarantee of perfect secrecy only holds if the key material comes from a true random source with high entropy, and thus any kind of pseudorandom number generator is insufficient.

Ideally, the generation of random numbers in CSPRNGs uses entropy obtained from a high-quality source, generally the operating system's randomness API. However, unexpected correlations have been found in several such ostensibly independent processes. From an information-theoretic point of view, the amount of randomness, the entropy that can be generated, is equal to the entropy provided by the system. But sometimes, in practical situations, more random numbers are needed than there is entropy available. Also, the processes to extract randomness from a running system are slow in actual practice. In such instances, a CSPRNG can sometimes be used. A CSPRNG can "stretch" the available entropy over more bits.

Requirements

The requirements of an ordinary PRNG are also satisfied by a cryptographically secure PRNG, but the reverse is not true. CSPRNG requirements fall into two groups: first, that they pass statistical randomness tests; and secondly, that they hold up well under serious attack, even when part of their initial or running state becomes available to an attacker.[citation needed]

  • Every CSPRNG should satisfy the next-bit test. That is, given the first k bits of a random sequence, there is no polynomial-time algorithm that can predict the (k+1)th bit with probability of success non-negligibly better than 50%.[4] Andrew Yao proved in 1982 that a generator passing the next-bit test will pass all other polynomial-time statistical tests for randomness.[5]
  • Every CSPRNG should withstand "state compromise extensions". In the event that part or all of its state has been revealed (or guessed correctly), it should be impossible to reconstruct the stream of random numbers prior to the revelation. Additionally, if there is an entropy input while running, it should be infeasible to use knowledge of the input's state to predict future conditions of the CSPRNG state.
Example: If the CSPRNG under consideration produces output by computing bits of π in sequence, starting from some unknown point in the binary expansion, it may well satisfy the next-bit test and thus be statistically random, as π appears to be a random sequence. (This would be guaranteed if π is a normal number, for example.) However, this algorithm is not cryptographically secure; an attacker who determines which bit of pi (i.e. the state of the algorithm) is currently in use will be able to calculate all preceding bits as well.

Most PRNGs are not suitable for use as CSPRNGs and will fail on both counts. First, while most PRNGs outputs appear random to assorted statistical tests, they do not resist determined reverse engineering. Specialized statistical tests may be found specially tuned to such a PRNG that shows the random numbers not to be truly random. Second, for most PRNGs, when their state has been revealed, all past random numbers can be retrodicted, allowing an attacker to read all past messages, as well as future ones.

CSPRNGs are designed explicitly to resist this type of cryptanalysis.

Definitions

In the asymptotic setting, a family of deterministic polynomial time computable functions   for some polynomial p, is a pseudorandom number generator (PRNG, or PRG in some references), if it stretches the length of its input (  for any k), and if its output is computationally indistinguishable from true randomness, i.e. for any probabilistic polynomial time algorithm A, which outputs 1 or 0 as a distinguisher,

 

for some negligible function  .[6] (The notation   means that x is chosen uniformly at random from the set X.)

There is an equivalent characterization: For any function family  , G is a PRNG if and only if the next output bit of G cannot be predicted by a polynomial time algorithm.[7]

A forward-secure PRNG with block length   is a PRNG  , where the input string   with length k is the current state at period i, and the output ( ,  ) consists of the next state   and the pseudorandom output block   of period i, that withstands state compromise extensions in the following sense. If the initial state   is chosen uniformly at random from  , then for any i, the sequence   must be computationally indistinguishable from  , in which the   are chosen uniformly at random from  .[8]

Any PRNG   can be turned into a forward secure PRNG with block length   by splitting its output into the next state and the actual output. This is done by setting  , in which   and  ; then G is a forward secure PRNG with   as the next state and   as the pseudorandom output block of the current period.

Entropy extraction

Santha and Vazirani proved that several bit streams with weak randomness can be combined to produce a higher-quality quasi-random bit stream.[9] Even earlier, John von Neumann proved that a simple algorithm can remove a considerable amount of the bias in any bit stream,[10] which should be applied to each bit stream before using any variation of the Santha–Vazirani design.

Designs

In the discussion below, CSPRNG designs are divided into three classes:

  1. those based on cryptographic primitives such as ciphers and cryptographic hashes,
  2. those based upon mathematical problems thought to be hard, and
  3. special-purpose designs.

The last often introduces additional entropy when available and, strictly speaking, are not "pure" pseudorandom number generators, as their output is not completely determined by their initial state. This addition can prevent attacks even if the initial state is compromised.

Designs based on cryptographic primitives

  • A secure block cipher can be converted into a CSPRNG by running it in counter mode[dubious ]. This is done by choosing a random key and encrypting a 0, then encrypting a 1, then encrypting a 2, etc. The counter can also be started at an arbitrary number other than zero. Assuming an n-bit block cipher the output can be distinguished from random data after around 2n/2 blocks since, following the birthday problem, colliding blocks should become likely at that point, whereas a block cipher in CTR mode will never output identical blocks. For 64-bit block ciphers this limits the safe output size to a few gigabytes, with 128-bit blocks the limitation is large enough not to impact typical applications. However, when used alone it does not meet all of the criteria of a CSPRNG (as stated above) since it is not strong against "state compromise extensions": with knowledge of the state (in this case a counter and a key) you can predict all past output.
  • A cryptographically secure hash of a counter might also act as a good CSPRNG in some cases. In this case, it is also necessary that the initial value of this counter is random and secret. However, there has been little study of these algorithms for use in this manner, and at least some authors warn against this use.[vague][11]
  • Most stream ciphers work by generating a pseudorandom stream of bits that are combined (almost always XORed) with the plaintext; running the cipher on a counter will return a new pseudorandom stream, possibly with a longer period. The cipher can only be secure if the original stream is a good CSPRNG, although this is not necessarily the case (see the RC4 cipher). Again, the initial state must be kept secret.

Number-theoretic designs

  • The Blum Blum Shub algorithm has a security proof based on the difficulty of the quadratic residuosity problem. Since the only known way to solve that problem is to factor the modulus, it is generally regarded that the difficulty of integer factorization provides a conditional security proof for the Blum Blum Shub algorithm. However the algorithm is very inefficient and therefore impractical unless extreme security is needed.
  • The Blum–Micali algorithm has a security proof based on the difficulty of the discrete logarithm problem but is also very inefficient.
  • Daniel Brown of Certicom has written a 2006 security proof for Dual_EC_DRBG, based on the assumed hardness of the Decisional Diffie–Hellman assumption, the x-logarithm problem, and the truncated point problem. The 2006 proof explicitly assumes a lower outlen[clarification needed] than in the Dual_EC_DRBG standard, and that the P and Q in the Dual_EC_DRBG standard (which were revealed in 2013 to be probably backdoored by NSA) are replaced with non-backdoored values.

Special designs

There are a number of practical PRNGs that have been designed to be cryptographically secure, including

Obviously, the technique is easily generalized to any block cipher; AES has been suggested.[21]

Standards

Several CSPRNGs have been standardized. For example,

This withdrawn standard has four PRNGs. Two of them are uncontroversial and proven: CSPRNGs named Hash_DRBG[22] and HMAC_DRBG.[23]
The third PRNG in this standard, CTR DRBG, is based on a block cipher running in counter mode. It has an uncontroversial design but has been proven to be weaker in terms of distinguishing attack, than the security level of the underlying block cipher when the number of bits output from this PRNG is greater than two to the power of the underlying block cipher's block size in bits.[24]
When the maximum number of bits output from this PRNG is equal to the 2blocksize, the resulting output delivers the mathematically expected security level that the key size would be expected to generate, but the output is shown to not be indistinguishable from a true random number generator.[24] When the maximum number of bits output from this PRNG is less than it, the expected security level is delivered and the output appears to be indistinguishable from a true random number generator.[24]
It is noted in the next revision that claimed security strength for CTR_DRBG depends on limiting the total number of generate requests and the bits provided per generate request.
The fourth and final PRNG in this standard is named Dual_EC_DRBG. It has been shown to not be cryptographically secure and is believed to have a kleptographic NSA backdoor.[25]
  • NIST SP 800-90A Rev.1: This is essentially NIST SP 800-90A with Dual_EC_DRBG removed, and is the withdrawn standard's replacement.
  • ANSI X9.17-1985 Appendix C
  • ANSI X9.31-1998 Appendix A.2.4
  • ANSI X9.62-1998 Annex A.4, obsoleted by ANSI X9.62-2005, Annex D (HMAC_DRBG)

A good reference is maintained by NIST.

There are also standards for statistical testing of new CSPRNG designs:

  • A Statistical Test Suite for Random and Pseudorandom Number Generators, NIST Special Publication 800-22.

NSA kleptographic backdoor in the Dual_EC_DRBG PRNG

The Guardian and The New York Times have reported in 2013 that the National Security Agency (NSA) inserted a backdoor into a pseudorandom number generator (PRNG) of NIST SP 800-90A which allows the NSA to readily decrypt material that was encrypted with the aid of Dual_EC_DRBG. Both papers report[26][27] that, as independent security experts long suspected,[28] the NSA has been introducing weaknesses into CSPRNG standard 800-90; this being confirmed for the first time by one of the top secret documents leaked to the Guardian by Edward Snowden. The NSA worked covertly to get its own version of the NIST draft security standard approved for worldwide use in 2006. The leaked document states that "eventually, NSA became the sole editor." In spite of the known potential for a kleptographic backdoor and other known significant deficiencies with Dual_EC_DRBG, several companies such as RSA Security continued using Dual_EC_DRBG until the backdoor was confirmed in 2013.[29] RSA Security received a $10 million payment from the NSA to do so.[30]

Security flaws

DUHK attack

On October 23, 2017, Shaanan Cohney, Matthew Green, and Nadia Heninger, cryptographers at The University of Pennsylvania and Johns Hopkins University released details of the DUHK (Don't Use Hard-coded Keys) attack on WPA2 where hardware vendors use a hardcoded seed key for the ANSI X9.31 RNG algorithm, stating "an attacker can brute-force encrypted data to discover the rest of the encryption parameters and deduce the master encryption key used to encrypt web sessions or virtual private network (VPN) connections."[31][32]

Japanese PURPLE cipher machine

During World War II, Japan used a cipher machine for diplomatic communications; the United States was able to crack it and read its messages, mostly because the "key values" used were insufficiently random.

References

  1. ^ Huang, Andrew (2003). Hacking the Xbox: An Introduction to Reverse Engineering. No Starch Press Series. No Starch Press. p. 111. ISBN 9781593270292. Retrieved 2013-10-24. [...] the keystream generator [...] can be thought of as a cryptographic pseudo-random number generator (CPRNG).
  2. ^ Dufour, Cédric. "How to ensure entropy and proper random numbers generation in virtual machines". Exoscale.
  3. ^ "/dev/random Is More Like /dev/urandom With Linux 5.6 - Phoronix". www.phoronix.com.
  4. ^ Katz, Jonathan; Lindell, Yehuda (2008). Introduction to Modern Cryptography. CRC press. p. 70. ISBN 978-1584885511.
  5. ^ Andrew Chi-Chih Yao. Theory and applications of trapdoor functions. In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science, 1982.
  6. ^ Goldreich, Oded (2001), Foundations of cryptography I: Basic Tools, Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1, def 3.3.1.
  7. ^ Goldreich, Oded (2001), Foundations of cryptography I: Basic Tools, Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1, Theorem 3.3.7.
  8. ^ Dodis, Yevgeniy, Lecture 5 Notes of Introduction to Cryptography (PDF), retrieved 3 January 2016, def 4.
  9. ^ Miklos Santha, Umesh V. Vazirani (1984-10-24). "Generating quasi-random sequences from slightly-random sources" (PDF). Proceedings of the 25th IEEE Symposium on Foundations of Computer Science. University of California. pp. 434–440. ISBN 0-8186-0591-X. Retrieved 2006-11-29.
  10. ^ John von Neumann (1963-03-01). "Various techniques for use in connection with random digits". The Collected Works of John von Neumann. Pergamon Press. pp. 768–770. ISBN 0-08-009566-6.
  11. ^ Adam Young, Moti Yung (2004-02-01). Malicious Cryptography: Exposing Cryptovirology. sect 3.2: John Wiley & Sons. p. 416. ISBN 978-0-7645-4975-5.{{cite book}}: CS1 maint: location (link)
  12. ^ "CVS log of arc4random.c". CVS. October 1, 2013.
  13. ^ "CVS log of arc4random.c". CVS. November 16, 2014.
  14. ^ "FreeBSD 12.0-RELEASE Release Notes: Runtime Libraries and API". FreeBSD.org. 5 March 2019. Retrieved 24 August 2019.
  15. ^ "Github commit of random.c". Github. July 2, 2016.
  16. ^ "A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications" (PDF). Special Publication. NIST. April 2010.
  17. ^ Poorghanad, A.; Sadr, A.; Kashanipour, A. (May 2008). "Generating High Quality Pseudo Random Number Using Evolutionary Methods" (PDF). IEEE Congress on Computational Intelligence and Security. 9: 331–335.
  18. ^ Kleidermacher, David; Kleidermacher, Mike (2012). Embedded Systems Security: Practical Methods for Safe and Secure Software and Systems Development. Elsevier. p. 256. ISBN 9780123868862.
  19. ^ Cox, George; Dike, Charles; Johnston, DJ (2011). "Intel's Digital Random Number Generator (DRNG)" (PDF). {{cite journal}}: Cite journal requires |journal= (help)
  20. ^ Menezes, Alfred; van Oorschot, Paul; Vanstone, Scott (1996). "Chapter 5: Pseudorandom Bits and Sequences" (PDF). Handbook of Applied Cryptography. CRC Press.
  21. ^ Young, Adam; Yung, Moti (2004-02-01). Malicious Cryptography: Exposing Cryptovirology. sect 3.5.1: John Wiley & Sons. ISBN 978-0-7645-4975-5.{{cite book}}: CS1 maint: location (link)
  22. ^ Kan, Wilson (September 4, 2007). "Analysis of Underlying Assumptions in NIST DRBGs" (PDF). Retrieved November 19, 2016.
  23. ^ Ye, Katherine Qinru (April 2016). "The Notorious PRG: Formal verification of the HMAC-DRBG pseudorandom number generator" (PDF). Retrieved November 19, 2016.
  24. ^ a b c Campagna, Matthew J. (November 1, 2006). "Security Bounds for the NIST Codebook-based Deterministic Random Bit Generator" (PDF). Retrieved November 19, 2016.
  25. ^ Perlroth, Nicole (September 10, 2013). "Government Announces Steps to Restore Confidence on Encryption Standards". The New York Times. Retrieved November 19, 2016.
  26. ^ James Borger; Glenn Greenwald (6 September 2013). "Revealed: how US and UK spy agencies defeat internet privacy and security". The Guardian. Retrieved 7 September 2013.
  27. ^ Nicole Perlroth (5 September 2013). "N.S.A. Able to Foil Basic Safeguards of Privacy on Web". The New York Times. Retrieved 7 September 2013.
  28. ^ Bruce Schneier (15 November 2007). "Did NSA Put a Secret Backdoor in New Encryption Standard?". Wired. Retrieved 7 September 2013.
  29. ^ Matthew Green (20 September 2013). "RSA warns developers not to use RSA products".
  30. ^ Joseph Menn (20 December 2013). "Exclusive: Secret contract tied NSA and security industry pioneer". Reuters.
  31. ^ Shaanan Cohney; Matthew D. Green; Nadia Heninger. "Practical state recovery attacks against legacy RNG implementations" (PDF). duhkattack.com.
  32. ^ "DUHK Crypto Attack Recovers Encryption Keys, Exposes VPN Connections". slashdot.org. Retrieved 25 October 2017.

External links

  • RFC 4086, Randomness Requirements for Security
  • Java "entropy pool" for cryptographically secure unpredictable random numbers. 2008-12-02 at the Wayback Machine
  • Java standard class providing a cryptographically strong pseudo-random number generator (PRNG).
  • Cryptographically Secure Random number on Windows without using CryptoAPI
  • Conjectured Security of the ANSI-NIST Elliptic Curve RNG, Daniel R. L. Brown, IACR ePrint 2006/117.
  • A Security Analysis of the NIST SP 800-90 Elliptic Curve Random Number Generator, Daniel R. L. Brown and Kristian Gjosteen, IACR ePrint 2007/048. To appear in CRYPTO 2007.
  • Cryptanalysis of the Dual Elliptic Curve Pseudorandom Generator, Berry Schoenmakers and Andrey Sidorenko, IACR ePrint 2006/190.
  • Efficient Pseudorandom Generators Based on the DDH Assumption, Reza Rezaeian Farashahi and Berry Schoenmakers and Andrey Sidorenko, IACR ePrint 2006/321.
  • Analysis of the Linux Random Number Generator, Zvi Gutterman and Benny Pinkas and Tzachy Reinman.
  • NIST Statistical Test Suite documentation and software download.

cryptographically, secure, pseudorandom, number, generator, cryptographically, secure, pseudorandom, number, generator, csprng, cryptographic, pseudorandom, number, generator, cprng, pseudorandom, number, generator, prng, with, properties, that, make, suitable. A cryptographically secure pseudorandom number generator CSPRNG or cryptographic pseudorandom number generator CPRNG 1 is a pseudorandom number generator PRNG with properties that make it suitable for use in cryptography It is also loosely known as a cryptographic random number generator CRNG see Random number generation True vs pseudo random numbers 2 3 Most cryptographic applications require random numbers for example key generation nonces salts in certain signature schemes including ECDSA RSASSA PSSThe quality of the randomness required for these applications varies For example creating a nonce in some protocols needs only uniqueness On the other hand the generation of a master key requires a higher quality such as more entropy And in the case of one time pads the information theoretic guarantee of perfect secrecy only holds if the key material comes from a true random source with high entropy and thus any kind of pseudorandom number generator is insufficient Ideally the generation of random numbers in CSPRNGs uses entropy obtained from a high quality source generally the operating system s randomness API However unexpected correlations have been found in several such ostensibly independent processes From an information theoretic point of view the amount of randomness the entropy that can be generated is equal to the entropy provided by the system But sometimes in practical situations more random numbers are needed than there is entropy available Also the processes to extract randomness from a running system are slow in actual practice In such instances a CSPRNG can sometimes be used A CSPRNG can stretch the available entropy over more bits Contents 1 Requirements 2 Definitions 3 Entropy extraction 4 Designs 4 1 Designs based on cryptographic primitives 4 2 Number theoretic designs 4 3 Special designs 5 Standards 6 NSA kleptographic backdoor in the Dual EC DRBG PRNG 7 Security flaws 7 1 DUHK attack 7 2 Japanese PURPLE cipher machine 8 References 9 External linksRequirements EditThe requirements of an ordinary PRNG are also satisfied by a cryptographically secure PRNG but the reverse is not true CSPRNG requirements fall into two groups first that they pass statistical randomness tests and secondly that they hold up well under serious attack even when part of their initial or running state becomes available to an attacker citation needed Every CSPRNG should satisfy the next bit test That is given the first k bits of a random sequence there is no polynomial time algorithm that can predict the k 1 th bit with probability of success non negligibly better than 50 4 Andrew Yao proved in 1982 that a generator passing the next bit test will pass all other polynomial time statistical tests for randomness 5 Every CSPRNG should withstand state compromise extensions In the event that part or all of its state has been revealed or guessed correctly it should be impossible to reconstruct the stream of random numbers prior to the revelation Additionally if there is an entropy input while running it should be infeasible to use knowledge of the input s state to predict future conditions of the CSPRNG state Example If the CSPRNG under consideration produces output by computing bits of p in sequence starting from some unknown point in the binary expansion it may well satisfy the next bit test and thus be statistically random as p appears to be a random sequence This would be guaranteed if p is a normal number for example However this algorithm is not cryptographically secure an attacker who determines which bit of pi i e the state of the algorithm is currently in use will be able to calculate all preceding bits as well dd Most PRNGs are not suitable for use as CSPRNGs and will fail on both counts First while most PRNGs outputs appear random to assorted statistical tests they do not resist determined reverse engineering Specialized statistical tests may be found specially tuned to such a PRNG that shows the random numbers not to be truly random Second for most PRNGs when their state has been revealed all past random numbers can be retrodicted allowing an attacker to read all past messages as well as future ones CSPRNGs are designed explicitly to resist this type of cryptanalysis Definitions EditIn the asymptotic setting a family of deterministic polynomial time computable functions G k 0 1 k 0 1 p k displaystyle G k colon 0 1 k to 0 1 p k for some polynomial p is a pseudorandom number generator PRNG or PRG in some references if it stretches the length of its input p k gt k displaystyle p k gt k for any k and if its output is computationally indistinguishable from true randomness i e for any probabilistic polynomial time algorithm A which outputs 1 or 0 as a distinguisher Pr x 0 1 k A G x 1 Pr r 0 1 p k A r 1 lt m k displaystyle left Pr x gets 0 1 k A G x 1 Pr r gets 0 1 p k A r 1 right lt mu k for some negligible function m displaystyle mu 6 The notation x X displaystyle x gets X means that x is chosen uniformly at random from the set X There is an equivalent characterization For any function family G k 0 1 k 0 1 p k displaystyle G k colon 0 1 k to 0 1 p k G is a PRNG if and only if the next output bit of G cannot be predicted by a polynomial time algorithm 7 A forward secure PRNG with block length t k displaystyle t k is a PRNG G k 0 1 k 0 1 k 0 1 t k displaystyle G k colon 0 1 k to 0 1 k times 0 1 t k where the input string s i displaystyle s i with length k is the current state at period i and the output s i 1 displaystyle s i 1 y i displaystyle y i consists of the next state s i 1 displaystyle s i 1 and the pseudorandom output block y i displaystyle y i of period i that withstands state compromise extensions in the following sense If the initial state s 1 displaystyle s 1 is chosen uniformly at random from 0 1 k displaystyle 0 1 k then for any i the sequence y 1 y 2 y i s i 1 displaystyle y 1 y 2 dots y i s i 1 must be computationally indistinguishable from r 1 r 2 r i s i 1 displaystyle r 1 r 2 dots r i s i 1 in which the r i displaystyle r i are chosen uniformly at random from 0 1 t k displaystyle 0 1 t k 8 Any PRNG G 0 1 k 0 1 p k displaystyle G colon 0 1 k to 0 1 p k can be turned into a forward secure PRNG with block length p k k displaystyle p k k by splitting its output into the next state and the actual output This is done by setting G s G 0 s G 1 s displaystyle G s G 0 s Vert G 1 s in which G 0 s s k displaystyle G 0 s s k and G 1 s p k k displaystyle G 1 s p k k then G is a forward secure PRNG with G 0 displaystyle G 0 as the next state and G 1 displaystyle G 1 as the pseudorandom output block of the current period Entropy extraction EditMain article Randomness extractor Santha and Vazirani proved that several bit streams with weak randomness can be combined to produce a higher quality quasi random bit stream 9 Even earlier John von Neumann proved that a simple algorithm can remove a considerable amount of the bias in any bit stream 10 which should be applied to each bit stream before using any variation of the Santha Vazirani design Designs EditIn the discussion below CSPRNG designs are divided into three classes those based on cryptographic primitives such as ciphers and cryptographic hashes those based upon mathematical problems thought to be hard and special purpose designs The last often introduces additional entropy when available and strictly speaking are not pure pseudorandom number generators as their output is not completely determined by their initial state This addition can prevent attacks even if the initial state is compromised Designs based on cryptographic primitives Edit A secure block cipher can be converted into a CSPRNG by running it in counter mode dubious discuss This is done by choosing a random key and encrypting a 0 then encrypting a 1 then encrypting a 2 etc The counter can also be started at an arbitrary number other than zero Assuming an n bit block cipher the output can be distinguished from random data after around 2n 2 blocks since following the birthday problem colliding blocks should become likely at that point whereas a block cipher in CTR mode will never output identical blocks For 64 bit block ciphers this limits the safe output size to a few gigabytes with 128 bit blocks the limitation is large enough not to impact typical applications However when used alone it does not meet all of the criteria of a CSPRNG as stated above since it is not strong against state compromise extensions with knowledge of the state in this case a counter and a key you can predict all past output A cryptographically secure hash of a counter might also act as a good CSPRNG in some cases In this case it is also necessary that the initial value of this counter is random and secret However there has been little study of these algorithms for use in this manner and at least some authors warn against this use vague 11 Most stream ciphers work by generating a pseudorandom stream of bits that are combined almost always XORed with the plaintext running the cipher on a counter will return a new pseudorandom stream possibly with a longer period The cipher can only be secure if the original stream is a good CSPRNG although this is not necessarily the case see the RC4 cipher Again the initial state must be kept secret Number theoretic designs Edit The Blum Blum Shub algorithm has a security proof based on the difficulty of the quadratic residuosity problem Since the only known way to solve that problem is to factor the modulus it is generally regarded that the difficulty of integer factorization provides a conditional security proof for the Blum Blum Shub algorithm However the algorithm is very inefficient and therefore impractical unless extreme security is needed The Blum Micali algorithm has a security proof based on the difficulty of the discrete logarithm problem but is also very inefficient Daniel Brown of Certicom has written a 2006 security proof for Dual EC DRBG based on the assumed hardness of the Decisional Diffie Hellman assumption the x logarithm problem and the truncated point problem The 2006 proof explicitly assumes a lower outlen clarification needed than in the Dual EC DRBG standard and that the P and Q in the Dual EC DRBG standard which were revealed in 2013 to be probably backdoored by NSA are replaced with non backdoored values Special designs Edit There are a number of practical PRNGs that have been designed to be cryptographically secure including the Yarrow algorithm which attempts to evaluate the entropic quality of its inputs Yarrow is used in macOS and other Apple OS up until about Dec 2019 Apple has switched to Fortuna since then See dev random the ChaCha20 algorithm replaced RC4 in OpenBSD version 5 4 12 NetBSD version 7 0 13 and FreeBSD version 12 0 14 ChaCha20 also replaced SHA 1 in Linux in version 4 8 15 the Fortuna algorithm the successor to Yarrow which does not attempt to evaluate the entropic quality of its inputs Fortuna is used in FreeBSD Apple changed to Fortuna for most or all Apple OS beginning around Dec 2019 the function CryptGenRandom provided in Microsoft s Cryptographic Application Programming Interface ISAAC based on a variant of the RC4 cipher Linear feedback shift register tuned with evolutionary algorithm based on the NIST Statistical Test Suite 16 17 arc4random AES CTR DRBG is often used as a random number generator in systems that use AES encryption 18 19 ANSI X9 17 standard Financial Institution Key Management wholesale which has been adopted as a FIPS standard as well It takes as input a TDEA keying option 2 key bundle k and the initial value of a 64 bit random seed s 20 Each time a random number is required it Obtains the current date time D to the maximum resolution possible Computes a temporary value t TDEAk D Computes the random value x TDEAk s t where denotes bitwise exclusive or Updates the seed s TDEAk x t Obviously the technique is easily generalized to any block cipher AES has been suggested 21 Standards EditSeveral CSPRNGs have been standardized For example FIPS 186 4 NIST SP 800 90A This withdrawn standard has four PRNGs Two of them are uncontroversial and proven CSPRNGs named Hash DRBG 22 and HMAC DRBG 23 The third PRNG in this standard CTR DRBG is based on a block cipher running in counter mode It has an uncontroversial design but has been proven to be weaker in terms of distinguishing attack than the security level of the underlying block cipher when the number of bits output from this PRNG is greater than two to the power of the underlying block cipher s block size in bits 24 When the maximum number of bits output from this PRNG is equal to the 2blocksize the resulting output delivers the mathematically expected security level that the key size would be expected to generate but the output is shown to not be indistinguishable from a true random number generator 24 When the maximum number of bits output from this PRNG is less than it the expected security level is delivered and the output appears to be indistinguishable from a true random number generator 24 It is noted in the next revision that claimed security strength for CTR DRBG depends on limiting the total number of generate requests and the bits provided per generate request The fourth and final PRNG in this standard is named Dual EC DRBG It has been shown to not be cryptographically secure and is believed to have a kleptographic NSA backdoor 25 NIST SP 800 90A Rev 1 This is essentially NIST SP 800 90A with Dual EC DRBG removed and is the withdrawn standard s replacement ANSI X9 17 1985 Appendix C ANSI X9 31 1998 Appendix A 2 4 ANSI X9 62 1998 Annex A 4 obsoleted by ANSI X9 62 2005 Annex D HMAC DRBG A good reference is maintained by NIST There are also standards for statistical testing of new CSPRNG designs A Statistical Test Suite for Random and Pseudorandom Number Generators NIST Special Publication 800 22 NSA kleptographic backdoor in the Dual EC DRBG PRNG EditMain article Dual EC DRBG The Guardian and The New York Times have reported in 2013 that the National Security Agency NSA inserted a backdoor into a pseudorandom number generator PRNG of NIST SP 800 90A which allows the NSA to readily decrypt material that was encrypted with the aid of Dual EC DRBG Both papers report 26 27 that as independent security experts long suspected 28 the NSA has been introducing weaknesses into CSPRNG standard 800 90 this being confirmed for the first time by one of the top secret documents leaked to the Guardian by Edward Snowden The NSA worked covertly to get its own version of the NIST draft security standard approved for worldwide use in 2006 The leaked document states that eventually NSA became the sole editor In spite of the known potential for a kleptographic backdoor and other known significant deficiencies with Dual EC DRBG several companies such as RSA Security continued using Dual EC DRBG until the backdoor was confirmed in 2013 29 RSA Security received a 10 million payment from the NSA to do so 30 Security flaws EditDUHK attack Edit On October 23 2017 Shaanan Cohney Matthew Green and Nadia Heninger cryptographers at The University of Pennsylvania and Johns Hopkins University released details of the DUHK Don t Use Hard coded Keys attack on WPA2 where hardware vendors use a hardcoded seed key for the ANSI X9 31 RNG algorithm stating an attacker can brute force encrypted data to discover the rest of the encryption parameters and deduce the master encryption key used to encrypt web sessions or virtual private network VPN connections 31 32 Japanese PURPLE cipher machine Edit During World War II Japan used a cipher machine for diplomatic communications the United States was able to crack it and read its messages mostly because the key values used were insufficiently random References Edit Huang Andrew 2003 Hacking the Xbox An Introduction to Reverse Engineering No Starch Press Series No Starch Press p 111 ISBN 9781593270292 Retrieved 2013 10 24 the keystream generator can be thought of as a cryptographic pseudo random number generator CPRNG Dufour Cedric How to ensure entropy and proper random numbers generation in virtual machines Exoscale dev random Is More Like dev urandom With Linux 5 6 Phoronix www phoronix com Katz Jonathan Lindell Yehuda 2008 Introduction to Modern Cryptography CRC press p 70 ISBN 978 1584885511 Andrew Chi Chih Yao Theory and applications of trapdoor functions In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science 1982 Goldreich Oded 2001 Foundations of cryptography I Basic Tools Cambridge Cambridge University Press ISBN 978 0 511 54689 1 def 3 3 1 Goldreich Oded 2001 Foundations of cryptography I Basic Tools Cambridge Cambridge University Press ISBN 978 0 511 54689 1 Theorem 3 3 7 Dodis Yevgeniy Lecture 5 Notes of Introduction to Cryptography PDF retrieved 3 January 2016 def 4 Miklos Santha Umesh V Vazirani 1984 10 24 Generating quasi random sequences from slightly random sources PDF Proceedings of the 25th IEEE Symposium on Foundations of Computer Science University of California pp 434 440 ISBN 0 8186 0591 X Retrieved 2006 11 29 John von Neumann 1963 03 01 Various techniques for use in connection with random digits The Collected Works of John von Neumann Pergamon Press pp 768 770 ISBN 0 08 009566 6 Adam Young Moti Yung 2004 02 01 Malicious Cryptography Exposing Cryptovirology sect 3 2 John Wiley amp Sons p 416 ISBN 978 0 7645 4975 5 a href Template Cite book html title Template Cite book cite book a CS1 maint location link CVS log of arc4random c CVS October 1 2013 CVS log of arc4random c CVS November 16 2014 FreeBSD 12 0 RELEASE Release Notes Runtime Libraries and API FreeBSD org 5 March 2019 Retrieved 24 August 2019 Github commit of random c Github July 2 2016 A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications PDF Special Publication NIST April 2010 Poorghanad A Sadr A Kashanipour A May 2008 Generating High Quality Pseudo Random Number Using Evolutionary Methods PDF IEEE Congress on Computational Intelligence and Security 9 331 335 Kleidermacher David Kleidermacher Mike 2012 Embedded Systems Security Practical Methods for Safe and Secure Software and Systems Development Elsevier p 256 ISBN 9780123868862 Cox George Dike Charles Johnston DJ 2011 Intel s Digital Random Number Generator DRNG PDF a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Menezes Alfred van Oorschot Paul Vanstone Scott 1996 Chapter 5 Pseudorandom Bits and Sequences PDF Handbook of Applied Cryptography CRC Press Young Adam Yung Moti 2004 02 01 Malicious Cryptography Exposing Cryptovirology sect 3 5 1 John Wiley amp Sons ISBN 978 0 7645 4975 5 a href Template Cite book html title Template Cite book cite book a CS1 maint location link Kan Wilson September 4 2007 Analysis of Underlying Assumptions in NIST DRBGs PDF Retrieved November 19 2016 Ye Katherine Qinru April 2016 The Notorious PRG Formal verification of the HMAC DRBG pseudorandom number generator PDF Retrieved November 19 2016 a b c Campagna Matthew J November 1 2006 Security Bounds for the NIST Codebook based Deterministic Random Bit Generator PDF Retrieved November 19 2016 Perlroth Nicole September 10 2013 Government Announces Steps to Restore Confidence on Encryption Standards The New York Times Retrieved November 19 2016 James Borger Glenn Greenwald 6 September 2013 Revealed how US and UK spy agencies defeat internet privacy and security The Guardian Retrieved 7 September 2013 Nicole Perlroth 5 September 2013 N S A Able to Foil Basic Safeguards of Privacy on Web The New York Times Retrieved 7 September 2013 Bruce Schneier 15 November 2007 Did NSA Put a Secret Backdoor in New Encryption Standard Wired Retrieved 7 September 2013 Matthew Green 20 September 2013 RSA warns developers not to use RSA products Joseph Menn 20 December 2013 Exclusive Secret contract tied NSA and security industry pioneer Reuters Shaanan Cohney Matthew D Green Nadia Heninger Practical state recovery attacks against legacy RNG implementations PDF duhkattack com DUHK Crypto Attack Recovers Encryption Keys Exposes VPN Connections slashdot org Retrieved 25 October 2017 External links Edit The Wikibook Cryptography has a page on the topic of Random number generation RFC 4086 Randomness Requirements for Security Java entropy pool for cryptographically secure unpredictable random numbers Archived 2008 12 02 at the Wayback Machine Java standard class providing a cryptographically strong pseudo random number generator PRNG Cryptographically Secure Random number on Windows without using CryptoAPI Conjectured Security of the ANSI NIST Elliptic Curve RNG Daniel R L Brown IACR ePrint 2006 117 A Security Analysis of the NIST SP 800 90 Elliptic Curve Random Number Generator Daniel R L Brown and Kristian Gjosteen IACR ePrint 2007 048 To appear in CRYPTO 2007 Cryptanalysis of the Dual Elliptic Curve Pseudorandom Generator Berry Schoenmakers and Andrey Sidorenko IACR ePrint 2006 190 Efficient Pseudorandom Generators Based on the DDH Assumption Reza Rezaeian Farashahi and Berry Schoenmakers and Andrey Sidorenko IACR ePrint 2006 321 Analysis of the Linux Random Number Generator Zvi Gutterman and Benny Pinkas and Tzachy Reinman NIST Statistical Test Suite documentation and software download Retrieved from https en wikipedia org w index php title Cryptographically secure pseudorandom number generator amp oldid 1122700450, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.