Pseudorandom generator
A Pseudorandom Generator (PRG) stretches a short, uniformly random seed into a longer string that is computationally indistinguishable from a truly random string of the same length. Any efficient algorithm that sees only the output cannot tell whether it came from a PRG or from a truly random source.
Syntax
A PRG is an efficient deterministic function with respect to seed space and output space where
- takes a seed and outputs a string
The ratio is called the stretch of the PRG. A PRG with stretch expands a -bit seed to output bits.
Properties
Pseudorandomness
\begin{algorithm}
\algname{Game}
\caption{$\Game^{\mathrm{prg}}_{G,\calA}(\secpar)$}
\begin{algorithmic}
\State $s \getsr \calS$; $b \getsr \{0,1\}$
\State $r_0 \gets G(s)$; $r_1 \getsr \calR$
\State $b' \gets \calA(1^\secpar, r_b)$
\Return $[b' = b]$
\end{algorithmic}
\end{algorithm}
A PRG is pseudorandom if for all efficient
is negligible.
Variations
Keyed PRG
A keyed PRG is a pair of efficient algorithms where samples a key and produces the output. This models a PRG whose parameters (seed length, output length) are determined by a key generation algorithm. The security definition is the same as above, but now the adversary sees for a fresh key
Trapdoor pseudorandom generators
A trapdoor PRG is a tuple of efficient algorithms such that
- takes a security parameter and outputs a trapdoor and a key ,
- takes a trapdoor and key , and outputs a value ,
- takes as input a trapdoor and a value and outputs a bit indicating whether the value was generated pseudorandomly or not.
The pseudorandomness of a trapdoor PRG is equivalent to the pseudorandomness of treated as a PRG with keyspace Beyond that, a trapdoor PRG should be
- -complete: meaning
- -sound: for all
Note that a zero-bit Pseudorandom Code can be viewed as a trapdoor pseudorandom generator with the additional property that its completeness is actually robust to noise.
Other results
- OWFs imply PRGs, via the Goldreich-Levin hard-core predicate — HILL99, GL89
- Conversely, any PRG is a one-way function (the seed is a preimage of the output), so OWF PRG
- The first PRG from a concrete assumption: discrete-log hardness implies a PRG — BM84
- A length-doubling PRG implies PRFs via the GGM binary-tree construction — GGM86
- PRG implies CPA-secure SKE: the stream cipher is CPA-secure whenever is a PRG with stretch