Polynomial stretch from one-bit pseudorandom generators #
Keep a seed of the original length at the front of a word. Each iteration expands that seed
by one bit and retains the previously emitted suffix. The security proof replaces successive
seed expansions by uniform bits, using one uniformly randomized reduction across all hops.
The seed width may differ from the security parameter, and the generator may capture an index.
indexed_indistinguishable preserves a secure choice in such a family.
The deterministic iteration and stretch operators (PRGStretch.step, PRGStretch.iterate,
PRGStretch.stretch) and their polynomial-time and cumulative quantitative certificates live in
Complexity.Crypto.Computational.Stretch.Quantitative, which this module re-exports.
Main definitions #
PRGStretch.stretch: repeatedly expand a fixed-width seed prefix and retain emitted bits (re-exported fromStretch.Quantitative).PRGStretch.reduction: one uniform bounded-hop security reduction.
Main results #
PRGStretch.polyTime_iterate: captured functional iteration has a uniform TM certificate (re-exported fromStretch.Quantitative).PRGStretch.advantage_eq: exact sampling-range loss for the uniform reduction.PRGStretch.indexed_indistinguishable,PRGStretch.indistinguishable,PRGStretch.pseudorandomGenerator: polynomially many one-bit expansions preserve computational indistinguishability and yield a secure PRG.PseudorandomGenerator.amplify,.truncate: efficient changes of output length.
References #
- B. Barak, Pseudorandomness, CS 127, length extension for PRGs. We retain the final seed and reverse the order of the emitted bits. The reduction explicitly samples its hop to preserve uniformity, with dyadic padding for strict fair-coin sampling.
Adapted from Crypto/Computational/Stretch.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8, using the tidy calculus and current upstream games.
One uniform reduction samples its hop using a bounded number of fair bits.
Instances For
The reduction's complete efficiency proof uses the public programming interface.
Captured parameters, generator code, and the adversary compose through the public tactics.
The real challenge at a fixed hop realizes the earlier hybrid experiment.
The ideal challenge at a fixed hop realizes the next hybrid experiment.
Exact loss of the uniform reduction, including the padded sampling outcomes.
The same exact loss applies with the seed length independent of the security parameter. This form is convenient for indexed candidate families.
Padding the sampled hop loses at most twice the number of expansions.
Efficient unary counts give a polynomial bound on the reduction's dyadic loss.
Polynomially many expansions preserve the secure choice in a uniformly efficient family. The choice is supplied only in the proof; each reduction receives its index as ordinary input.
Polynomially many seed expansions preserve computational indistinguishability.
A positive efficiently computed number of one-bit expansions is a secure PRG.
Amplify a one-bit PRG to any efficiently computed, strictly larger output length.
Truncating a PRG to an efficiently computed, still-expanding length preserves security.