Combining the three pseudoentropy extractors #
One collection of sampler seeds supplies the observations, hidden labels, and remaining seed randomness. Each extractor keeps its independent public matrix seed. The security argument replaces the remaining-seed component, then the labels, then the observations by uniform bits. The middle transition uses a strict PPT test; the other two are statistical transitions. The indexed theorem allows any valid choice from a polynomial-size family. The choice belongs only to the security argument; the efficient test handles all indices uniformly.
Main definitions #
ThreeSource.extract: sample once and hash observations, labels, and retained sampler seeds.ThreeSource.seedLength,ThreeSource.outputLength: exact input and output budgets.ThreeSource.Efficient: the shared uniformity contract for the extraction schedules.
Main results #
ThreeSource.isPPTOn_extract: the composed program has a strict PPT certificate.SamplablePair.HasGap.extract_indexed_three: uniform security for any valid candidate choice.SamplablePair.HasGap.extract_three: the single-candidate computational interface.
References #
- Thomas Holenstein, Pseudorandom Generators from One-Way Functions: A Simple Construction for Any Hardness, TCC 2006, Section 5, Lemma 5 and the final proof of Theorem 1. [Hol06]. We use the shared Boolean-matrix family and make the three component transitions explicit.
Adapted from the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8. Statistical transitions quantify over all randomized
Boolean tests of the complete output; only the middle transition restricts tests to strict PPT.
The last observation hash composes with a certified intermediate result.
The complete three-component program is PPT from ordinary sampler and size certificates.
The output length counts every digest and every retained matrix seed.
Instances For
Every supported output has the advertised length when sampled observations fit the bound. The statement also covers zero-sized components and malformed retained seeds.
Original sampler coins followed by the three matrix seeds in execution order.
Instances For
The exact seed ledger can be computed in unary from efficient dimensions.
The exact output ledger can be computed in unary from efficient dimensions.
Retained matrix seeds cancel in the expansion budget: only the digest bits must exceed
the original sampler coins. ThreeSource.Seeded realizes this exact input length.
Moving the independent ideal seed component to the end gives the first hybrid exactly.
Once the label hash is ideal, its seed and digest can follow the observation extraction.
Statistical extraction replaces the third component while retaining the data needed by the first two components. No efficiency assumption is needed for this postprocessing.
After the other two components are uniform, observation extraction completes the statistical comparison with a single uniform word of the advertised total length.
Plain polynomial-time computation of the schedules used by three-source extraction. This contract covers every candidate; it imposes no computability requirement on the index chosen in the security proof. Entropy and observation-size assumptions remain separate.
- candidates_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime candidates Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary
- bound_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime bound Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary
- observation_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime (fun (input : ℕ × ℕ) => observationBits input.1 input.2) (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encUnary
- label_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime (fun (input : ℕ × ℕ) => labelBits input.1 input.2) (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encUnary
- remaining_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime (fun (input : ℕ × ℕ) => remainingBits input.1 input.2) (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encUnary
- slack_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime inverseSlack Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary
- numerator_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime (fun (input : ℕ × ℕ) => numerator input.1 input.2) (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encUnary
- density_isPolyTime : Turing.MultiTapeTM.ComputableInPolyTime densityBound Turing.MultiTapeTM.encUnary Turing.MultiTapeTM.encUnary
Instances For
Recover the tidy presentation for proofs without changing the security contract.
Indexed label extraction remains secure when the test computes the observation hash and supplies the independent third component. Only the proof uses the chosen valid index.
A valid candidate in an efficient polynomial-size family passes the complete three-source game argument. The candidate may vary arbitrarily with the parameter; one efficient indexed test handles the entire family. All three entropy budgets are needed only at the chosen candidate.
The three-source construction is computationally uniform under its three entropy budgets.
The schedules must be computed by uniform polynomial-time algorithms. ThreeSource.Seeded
implements this ensemble deterministically with an exact seed budget, and EntropyGrid supplies
budgets for which some candidate is valid.