digplanet beta 1: Athena
Share digplanet:

Agriculture

Applied sciences

Arts

Belief

Business

Chronology

Culture

Education

Environment

Geography

Health

History

Humanities

Language

Law

Life

Mathematics

Nature

People

Politics

Science

Society

Technology

A cryptographically secure pseudo-random number generator (CSPRNG) is a pseudo-random number generator (PRNG) with properties that make it suitable for use in cryptography.

Many aspects of cryptography 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, 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 is obtained from a true random source with high entropy.

Ideally, the generation of random numbers in CSPRNGs uses entropy obtained from a high quality source, which might be a hardware random number generator or perhaps unpredictable system processes — though 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

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: 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 better than 50%. Andrew Yao proved in 1982 that a generator passing the next-bit test will pass all other polynomial-time statistical tests for randomness.[1]
  • 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.

Some background [edit]

Santha and Vazirani proved that several bit streams with weak randomness can be combined to produce a higher-quality quasi-random bit stream.[2] Even earlier, John von Neumann proved that a simple algorithm can remove a considerable amount of the bias in any bit stream[3] which should be applied to each bit stream before using any variation of the Santha-Vazirani design. The field is termed entropy extraction and is the subject of active research (e.g., N Nisan, S Safra, R Shaltiel, A Ta-Shma, C Umans, D Zuckerman).

Designs [edit]

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 introduce 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. This is done by choosing a random key and encrypting a zero, then encrypting a 1, then encrypting a 2, etc. The counter can also be started at an arbitrary number other than zero. Obviously, the period will be 2n for an n-bit block cipher; equally obviously, the initial values (i.e., key and "plaintext") must not become known to an attacker, however good this CSPRNG construction might be. Otherwise, all security will be lost.
  • 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.[4]
  • 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 is only secure if the original stream is a good CSPRNG (this is not always the case: see 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 an unconditional security proof based on the difficulty of the discrete logarithm problem but is also very inefficient.

Special designs [edit]

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 (Young and Yung, op cit, sect 3.5.1).

Standards [edit]

Several CSPRNGs have been standardized. For example,

  • FIPS 186-2
  • NIST SP 800-90A: Hash_DRBG, HMAC_DRBG, CTR_DRBG and Dual EC DRBG.
  • 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:

References [edit]

  1. ^ Andrew Chi-Chih Yao. Theory and applications of trapdoor functions. In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science, 1982.
  2. ^ Miklos Santha, Umesh V. Vazirani (1984-10-24). "Generating quasi-random sequences from slightly-random sources". 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. 
  3. ^ 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. 
  4. ^ 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. 
  5. ^ Handbook of Applied Cryptography, Alfred Menezes, Paul van Oorschot, and Scott Vanstone, CRC Press, 1996, Chapter 5 Pseudorandom Bits and Sequences (PDF)

External links [edit]



Original courtesy of Wikipedia: http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator — Please support Wikipedia.
A portion of the proceeds from advertising on Digplanet goes to supporting Wikipedia.
58 videos foundNext > 

Gambling with Secrets: Part 6/8 (Perfect Secrecy & Pseudorandomness)

This chapter introduces why random shifts result in perfect secrecy. We explore hardware random number generators vs. pseudorandom number generators which ex...

Information theory - Communication - Part 7

http://www.resumesanta.com... Information theory - Communication - Part 7. A class of improved random number generators is termed cryptographically secure ps...

CRYPTOGRAPHIC ENGINEERING-CAREER GUIDANCE

TOPICS TO BE STUDIED THROUGH INTERNET IN TEXTS AND IMAGES Cryptographic implementations Hardware architectures for public-key and secret-key cryptographic al...

Random vs. Pseudorandom Number Generators

Random vs. Pseudorandom Number Generators.

Pseudo Random Number Generator - CS387 Unit 2 - Udacity

Other units in this course below: Unit 1:http://www.youtube.com/playlist?list=PLAA92F9967A520440 Unit 2:http://www.youtube.com/playlist?list=PL82ECFBA355C2D7...

Pseudo Random Number Generator Solution - CS387 Unit 2 - Udacity

Other units in this course below: Unit 1:http://www.youtube.com/playlist?list=PLAA92F9967A520440 Unit 2:http://www.youtube.com/playlist?list=PL82ECFBA355C2D7...

The Last HOPE: Crippling Crypto - The Debian OpenSSL Debacle (Complete)

In May 2008, a weakness in Debian was discovered which makes cryptographic keys predictable. A Debian-specific patch to OpenSSL broke the pseudo-random numbe...

Pseudo Random Number Generator

young_george shows you how to build a pseudo random number generator.

2012 UTOSC - Breaking Encryption (Aaron Toponce)

Encryption is used everywhere. It's critical to many infrastructures. It can secure our banking. It can secure our data on our hard drives. It can secure our...

Public Key Cryptography: RSA Encryption Algorithm

RSA Public Key Encryption Algorithm (cryptography). How & why it works. Introduces Euler's Theorem, Euler's Phi function, prime factorization, modular expone...

58 videos foundNext > 

We're sorry, but there's no news about "Cryptographically secure pseudorandom number generator" right now.

Loading

Oops, we seem to be having trouble contacting Twitter

Talk About Cryptographically secure pseudorandom number generator

You can talk about Cryptographically secure pseudorandom number generator with people all over the world in our discussions.

Support Wikipedia

A portion of the proceeds from advertising on Digplanet goes to supporting Wikipedia. Please add your support for Wikipedia!