Extending an expanding family to every seed length #
Choose the largest parameter whose seed fits the input, run that family member on a prefix, and retain the unused suffix. A finite initial range uses a trivial one-bit extension. The schedule need not be monotone. Bounded search is efficient, and adjacent parameters give the polynomial relation needed to preserve negligible decay.
Security uses ComputationallyIndistinguishable.uniform_bound: the padding test receives the
prospective input length as an ordinary index, and one negligible bound covers all relevant
lengths. No nonuniform choice of a bad length is supplied to the reduction.
Main definitions #
Cslib.Crypto.GeneratorReindex.parameter: bounded search for the greatest fitting parameter.Cslib.Crypto.GeneratorReindex.generate: prefix generation with the unused suffix preserved.
Main results #
Cslib.Crypto.GeneratorReindex.isPolyTime_generate: uniform machine-backed efficiency.Cslib.Crypto.GeneratorReindex.pseudorandomGenerator: one-bit stretch at every seed length.
References #
This completes the seed-length convention for the construction in T. Holenstein, Pseudorandom Generators from One-Way Functions, Section 5.
Adapted from Crypto/Computational/GeneratorReindex.lean
on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8, using typed machine certificates and the
nonnegative game API.
Searching an efficient schedule up to an efficient unary input size is polynomial-time.
Every fixed parameter eventually fits, so the selected parameter tends to infinity.
Generation composes bounded search, the supplied family, and padding.
Every input is expanded by exactly one bit, including the finite initial range.
At a fixed seed length, the reindexed ensemble is exactly the corresponding padded family.
Extending a uniformly efficient secure family preserves uniform security at every seed length. A single calibrated reduction controls every padding length in the polynomial range.
A uniformly efficient one-bit expanding family on a polynomial schedule gives a PRG stretching every input by one bit.