Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Cryptographically secure pseudorandom number generator

From Wikipedia, the free encyclopedia
(Redirected fromCryptographically secure pseudo-random number generator)
Type of functions designed for being unsolvable by root-finding algorithms

Acryptographically secure pseudorandom number generator (CSPRNG) orcryptographic pseudorandom number generator (CPRNG) is apseudorandom number generator (PRNG) with properties that make it suitable for use incryptography. It is also referred to as acryptographic random number generator (CRNG).

Background

[edit]
This sectiondoes notcite anysources. Please helpimprove this section byadding citations to reliable sources. Unsourced material may be challenged andremoved.(June 2024) (Learn how and when to remove this message)

Mostcryptographic applications requirerandom numbers, for example:

The "quality" of the randomness required for these applications varies. For example, creating anonce in someprotocols needs only uniqueness. On the other hand, the generation of a masterkey requires a higher quality, such as moreentropy. And in the case ofone-time pads, theinformation-theoretic guarantee of perfect secrecy only holds if the key material comes from a true random source with high entropy, and thus just 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 randomnessAPI. 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, numbers are needed with more randomness than the available entropy can provide. 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

[edit]

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:

  1. They pass statisticalrandomness tests:
    • Every CSPRNG should satisfy thenext-bit test. That is, given the firstk bits of a random sequence, there is nopolynomial-time algorithm that can predict the (k+1)th bit with probability of success non-negligibly better than 50%.[1]Andrew Yao proved in 1982 that a generator passing the next-bit test will pass all other polynomial-time statistical tests for randomness.[2]
  2. They hold up well under serious attack, even when part of their initial or running state becomes available to an attacker:[3]
    • Every CSPRNG should withstand "state compromise extension attacks".[3]: 4  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.

For instance, if the PRNG under consideration produces output by computing bits ofpi 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 pi is conjectured to be anormal number. However, this algorithm is not cryptographically secure; an attacker who determines which bit of pi is currently in use (i.e. the state of the algorithm) 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 ofcryptanalysis.

Definitions

[edit]

In theasymptotic setting, a family of deterministic polynomial time computable functionsGk:{0,1}k{0,1}p(k){\displaystyle G_{k}\colon \{0,1\}^{k}\to \{0,1\}^{p(k)}} for some polynomialp, is apseudorandom number generator (PRNG, or PRG in some references), if it stretches the length of its input (p(k)>k{\displaystyle p(k)>k} for anyk), and if its output iscomputationally indistinguishable from true randomness, i.e. for any probabilistic polynomial time algorithmA, which outputs 1 or 0 as a distinguisher,

|Prx{0,1}k[A(G(x))=1]Prr{0,1}p(k)[A(r)=1]|<μ(k){\displaystyle \left|\Pr _{x\gets \{0,1\}^{k}}[A(G(x))=1]-\Pr _{r\gets \{0,1\}^{p(k)}}[A(r)=1]\right|<\mu (k)}

for somenegligible functionμ{\displaystyle \mu }.[4] (The notationxX{\displaystyle x\gets X} means thatx is chosenuniformly at random from the setX.)

There is an equivalent characterization: For any function familyGk:{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 ofG cannot be predicted by a polynomial time algorithm.[5]

Aforward-secure PRNG with block lengtht(k){\displaystyle t(k)} is a PRNGGk:{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 stringsi{\displaystyle s_{i}} with lengthk is the current state at periodi, and the output (si+1{\displaystyle s_{i+1}},yi{\displaystyle y_{i}}) consists of the next statesi+1{\displaystyle s_{i+1}} and the pseudorandom output blockyi{\displaystyle y_{i}} of periodi, that withstands state compromise extensions in the following sense. If the initial states1{\displaystyle s_{1}} is chosen uniformly at random from{0,1}k{\displaystyle \{0,1\}^{k}}, then for anyi, the sequence(y1,y2,,yi,si+1){\displaystyle (y_{1},y_{2},\dots ,y_{i},s_{i+1})} must be computationally indistinguishable from(r1,r2,,ri,si+1){\displaystyle (r_{1},r_{2},\dots ,r_{i},s_{i+1})}, in which theri{\displaystyle r_{i}} are chosen uniformly at random from{0,1}t(k){\displaystyle \{0,1\}^{t(k)}}.[6]

Any PRNGG:{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 lengthp(k)k{\displaystyle p(k)-k} by splitting its output into the next state and the actual output. This is done by settingG(s)=G0(s)G1(s){\displaystyle G(s)=G_{0}(s)\Vert G_{1}(s)}, in which|G0(s)|=|s|=k{\displaystyle |G_{0}(s)|=|s|=k} and|G1(s)|=p(k)k{\displaystyle |G_{1}(s)|=p(k)-k}; thenG is a forward secure PRNG withG0{\displaystyle G_{0}} as the next state andG1{\displaystyle G_{1}} as the pseudorandom output block of the current period.

Entropy extraction

[edit]
Main 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.[7]Even earlier,John von Neumann proved that asimple algorithm can remove a considerable amount of the bias in any bit stream,[8] which should be applied to each bit stream before using any variation of the Santha–Vazirani design.

Designs

[edit]

CSPRNG designs are divided into two classes:

  1. Designs based on cryptographic primitives such asciphers andcryptographic hashes
  2. Designs based on mathematical problems thought to behard

Designs based on cryptographic primitives

[edit]
  • A secureblock cipher can be converted into a CSPRNG by running it incounter mode using, for example, a special construct that theNIST in SP 800-90A callsCTR DRBG. CTR_DBRG typically usesAdvanced Encryption Standard (AES).
    • AES-CTR_DRBG is often used as a random number generator in systems that use AES encryption.[9][10]
    • The NIST CTR_DRBG scheme erases the keyafter the requested randomness is output by running additional cycles. This is wasteful from a performance perspective, but does not immediately cause issues with forward secrecy. However, realizing the performance implications, the NIST recommends an "extended AES-CTR-DRBG interface" for itsPost-Quantum Cryptography Project submissions. This interface allows multiple sets of randomness to be generated without intervening erasure, only erasing when the user explicitly signals the end of requests. As a result, the key could remain in memory for an extended time if the "extended interface" is misused. Newer "fast-key-erasure" RNGs erase the key with randomness as soon as randomness is requested.[11]
  • A stream cipher can be converted into a CSPRNG. This has been done with RC4,ISAAC, andChaCha20, to name a few.
  • A cryptographically securehash might also be a base of a good CSPRNG, using, for example, a construct that NIST callsHash DRBG.
  • AnHMAC primitive can be used as a base of a CSPRNG, for example, as part of the construct that NIST callsHMAC DRBG.

Number-theoretic designs

[edit]
  • TheBlum Blum Shub algorithm has a security proof based on the difficulty of thequadratic residuosity problem. Since the only known way to solve that problem is to factor the modulus, it is generally regarded that the difficulty ofinteger 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.
  • TheBlum–Micali algorithm has a security proof based on the difficulty of thediscrete logarithm problem but is also very inefficient.
  • Daniel Brown ofCerticom wrote a 2006 security proof forDual EC DRBG, based on the assumed hardness of theDecisional Diffie–Hellman assumption, thex-logarithm problem, and thetruncated point problem. The 2006 proof explicitly assumes a loweroutlen (amount of bits provided per iteration) than in the Dual_EC_DRBG standard, and that theP andQ in the Dual_EC_DRBG standard (which were revealed in 2013 to be probably backdoored by NSA) are replaced with non-backdoored values.

Practical schemes

[edit]

"Practical" CSPRNG schemes not only include an CSPRNG algorithm, but also a way to initialize ("seed") it while keeping the seed secret. A number of such schemes have been defined, including:

  • Implementations of/dev/random in Unix-like systems.
    • Yarrow, which attempts to evaluate the entropic quality of its seeding inputs, and uses SHA-1 and 3DES internally. Yarrow was used inmacOS and other Apple OS' up until about December 2019, after which it switched to Fortuna.
    • Fortuna, the successor to Yarrow, which does not attempt to evaluate the entropic quality of its inputs; it uses SHA-256 and "any good block cipher". Fortuna is used in FreeBSD. Apple changed to Fortuna for most or all Apple OSs beginning around Dec. 2019.
    • The Linux kernel CSPRNG, which uses ChaCha20 to generate data,[12] andBLAKE2s to ingest entropy.[13]
  • arc4random, a CSPRNG in Unix-like systems that seeds from/dev/random. It originally is based onRC4, but all main implementations now useChaCha20.[14][15][16]
  • CryptGenRandom, part ofMicrosoft'sCryptoAPI, offered on Windows. Different versions of Windows use different implementations.
  • ANSI X9.17 standard (Financial Institution Key Management (wholesale)), which has been adopted as aFIPS standard as well. It takes as input aTDEA (keying option 2) key bundlek and (the initial value of) a 64-bitrandom seeds.[17] Each time a random number is required, it executes the following steps:
    1. Obtain the current date/timeD to the maximum resolution possible.
    2. Compute a temporary valuet = TDEAk(D).
    3. Compute the random valuex = TDEAk(st), where ⊕ denotes bitwiseexclusive or.
    4. Update the seeds = TDEAk(xt).

Obviously, the technique is easily generalized to any block cipher;AES has been suggested.[18] If the keyk is leaked, the entire X9.17 stream can be predicted; this weakness is cited as a reason for creating Yarrow.[19]

All these above-mentioned schemes, save for X9.17, also mix the state of a CSPRNG with an additional source of entropy. They are therefore not "pure" pseudorandom number generators, in the sense that the output is not completely determined by their initial state. This addition aims to prevent attacks even if the initial state is compromised.[a]

Standards

[edit]

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 ablock cipher running incounter mode. It has an uncontroversial design but has been proven to be weaker in terms of distinguishing attack, than thesecurity 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 the claimedsecurity 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 namedDual EC DRBG. It has been shown to not be cryptographically secure and is believed to have akleptographic 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 byNIST.[26]

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.[27]

Security flaws

[edit]

NSA kleptographic backdoor in the Dual_EC_DRBG PRNG

[edit]
Main article:Dual_EC_DRBG

The Guardian andThe New York Times reported in 2013 that theNational Security Agency (NSA) inserted abackdoor into apseudorandom number generator (PRNG) ofNIST SP 800-90A, which allows the NSA to readily decrypt material that was encrypted with the aid ofDual EC DRBG. Both papers reported[28][29] that, as independent security experts long suspected,[30] the NSA had been introducing weaknesses into CSPRNG standard 800-90; this being confirmed for the first time by one of the top-secret documents leaked toThe Guardian byEdward 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 akleptographic backdoor and other known significant deficiencies with Dual_EC_DRBG, several companies such asRSA Security continued using Dual_EC_DRBG until the backdoor was confirmed in 2013.[31] RSA Security received a $10 million payment from the NSA to do so.[32]

DUHK attack

[edit]

On October 23, 2017,Shaanan Cohney,Matthew Green, andNadia Heninger,cryptographers at theUniversity of Pennsylvania andJohns Hopkins University, released details of the DUHK (Don't Use Hard-coded Keys) attack onWPA2 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 orvirtual private network (VPN) connections."[33][34]

Japanese PURPLE cipher machine

[edit]

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

References

[edit]
  1. ^The use of entropy-mixing after CSPRNG initialization has been question byDaniel J. Bernstein.[20]
  1. ^Katz, Jonathan; Lindell, Yehuda (2008).Introduction to Modern Cryptography. CRC press. p. 70.ISBN 978-1584885511.
  2. ^Andrew Chi-Chih Yao.Theory and applications of trapdoor functions. In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science, 1982.
  3. ^abKelsey, John; Schneier, Bruce; Wagner, David; Hall, Chris (1998). "Cryptanalytic Attacks on Pseudorandom Number Generators".Fast Software Encryption(PDF). Berlin, Heidelberg: Springer Berlin Heidelberg.doi:10.1007/3-540-69710-1_12.ISBN 978-3-540-64265-7.ISSN 0302-9743.
  4. ^Goldreich, Oded (2001),Foundations of cryptography I: Basic Tools, Cambridge: Cambridge University Press,ISBN 978-0-511-54689-1, def 3.3.1.
  5. ^Goldreich, Oded (2001),Foundations of cryptography I: Basic Tools, Cambridge: Cambridge University Press,ISBN 978-0-511-54689-1, Theorem 3.3.7.
  6. ^Dodis, Yevgeniy,Lecture 5 Notes of Introduction to Cryptography(PDF), retrieved3 January 2016, def 4.
  7. ^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. Retrieved2006-11-29.
  8. ^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.{{cite book}}:ISBN / Date incompatibility (help)
  9. ^Kleidermacher, David; Kleidermacher, Mike (2012).Embedded Systems Security: Practical Methods for Safe and Secure Software and Systems Development. Elsevier. p. 256.ISBN 9780123868862.
  10. ^Cox, George; Dike, Charles; Johnston, DJ (2011)."Intel's Digital Random Number Generator (DRNG)"(PDF).
  11. ^Bernstein, Daniel J."2017.07.23: Fast-key-erasure random-number generators: An effort to clean up several messes simultaneously. #rng #forwardsecrecy #urandom #cascade #hmac #rekeying #proofs".
  12. ^"Github commit of random.c". Github. July 2, 2016.
  13. ^"Linux 5.17 Random Number Generator Seeing Speed-Ups, Switching From SHA1 To BLAKE2s - Phoronix".www.phoronix.com.
  14. ^"CVS log of arc4random.c". CVS. October 1, 2013.
  15. ^"CVS log of arc4random.c". CVS. November 16, 2014.
  16. ^"FreeBSD 12.0-RELEASE Release Notes: Runtime Libraries and API".FreeBSD.org. 5 March 2019. Retrieved24 August 2019.
  17. ^Menezes, Alfred;van Oorschot, Paul;Vanstone, Scott (1996)."Chapter 5: Pseudorandom Bits and Sequences"(PDF).Handbook of Applied Cryptography. CRC Press.
  18. ^Young, Adam; Yung, Moti (2004-02-01).Malicious Cryptography: Exposing Cryptovirology.John Wiley & Sons. sect 3.5.1.ISBN 978-0-7645-4975-5.
  19. ^Kelsey, John; Schneier, Bruce; Ferguson, Niels (August 1999)."Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator"(PDF).Sixth Annual Workshop on Selected Areas in Cryptography. Lecture Notes in Computer Science. Vol. 1758. pp. 13–33.doi:10.1007/3-540-46513-8_2.ISBN 978-3-540-67185-5.
  20. ^Daniel J. Bernstein (2014-02-05)."cr.yp.to: 2014.02.05: Entropy Attacks!".Is there any serious argument that adding new entropy all the time is a good thing? The Linux /dev/urandom manual page claims that without new entropy the user is "theoretically vulnerable to a cryptographic attack", but (as I've mentioned in various venues) this is a ludicrous argument
  21. ^"FIPS 186-4"(PDF).
  22. ^Kan, Wilson (September 4, 2007)."Analysis of Underlying Assumptions in NIST DRBGs"(PDF). RetrievedNovember 19, 2016.
  23. ^Ye, Katherine Qinru (April 2016)."The Notorious PRG: Formal verification of the HMAC-DRBG pseudorandom number generator"(PDF). RetrievedNovember 19, 2016.
  24. ^abcCampagna, Matthew J. (November 1, 2006)."Security Bounds for the NIST Codebook-based Deterministic Random Bit Generator"(PDF). RetrievedNovember 19, 2016.
  25. ^Perlroth, Nicole (September 10, 2013)."Government Announces Steps to Restore Confidence on Encryption Standards".The New York Times. RetrievedNovember 19, 2016.
  26. ^Computer Security Division, Information Technology Laboratory (24 May 2016)."Random Number".CSRC | NIST.
  27. ^Rukhin, Andrew; Soto, Juan; Nechvatal, James; Smid, Miles; Barker, Elaine; Leigh, Stefan; Levenson, Mark; Vangel, Mark; Banks, David; Heckert, N.; Dray, James; Vo, San; Bassham, Lawrence (April 30, 2010)."A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications".NIST.doi:10.6028/NIST.SP.800-22r1a – via csrc.nist.gov.
  28. ^James Borger; Glenn Greenwald (6 September 2013)."Revealed: how US and UK spy agencies defeat internet privacy and security".The Guardian. Retrieved7 September 2013.
  29. ^Nicole Perlroth (5 September 2013)."N.S.A. Able to Foil Basic Safeguards of Privacy on Web".The New York Times. Retrieved7 September 2013.
  30. ^Bruce Schneier (15 November 2007)."Did NSA Put a Secret Backdoor in New Encryption Standard?".Wired. Retrieved7 September 2013.
  31. ^Matthew Green (20 September 2013)."RSA warns developers not to use RSA products".
  32. ^Joseph Menn (20 December 2013)."Exclusive: Secret contract tied NSA and security industry pioneer".Reuters.
  33. ^Shaanan Cohney;Matthew D. Green;Nadia Heninger."Practical state recovery attacks against legacy RNG implementations"(PDF).duhkattack.com.
  34. ^"DUHK Crypto Attack Recovers Encryption Keys, Exposes VPN Connections".slashdot.org. 25 October 2017. Retrieved25 October 2017.

External links

[edit]
The WikibookCryptography has a page on the topic of:Random number generation
General
Mathematics
Retrieved from "https://en.wikipedia.org/w/index.php?title=Cryptographically_secure_pseudorandom_number_generator&oldid=1285867152"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp