XOR combination of independently seeded generators #
Split a uniform tape into equal seed blocks, evaluate every indexed generator, and XOR their outputs. A reduction simulates all but one candidate. Replacing that candidate's output by uniform bits makes the combined output uniform, with no assumption on the other candidates.
Main definitions #
generate: evaluate an indexed family on independent seed blocks and XOR its outputs.test: the randomized reduction that inserts one supplied candidate output.
Main results #
isPolyTime_generate,isPPTOn_test: uniform certificates with captured programs.real_distribution,ideal_distribution: exact laws of the complete combined output.advantage_eq,indistinguishable: one secure indexed candidate secures the combination.
References #
This is the combination step in Thomas Holenstein, Pseudorandom Generators from One-Way Functions: A Simple Construction for Any Hardness, TCC 2006, Section 5, final proof of Theorem 1, [Hol06].
Adapted from the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8.
Combining polynomially many uniformly efficient candidates uses ordinary collection code.
The executable combiner is the finite sum of its candidates' bitstring outputs.
Uniform seed blocks are independent; the combiner's law is a sum over their finite tuple.
A real challenge can replace the chosen candidate's output because its seed is independent of every other seed block. The simulator may sample and discard the unused chosen block.
One uniform candidate masks the complete XOR, for every fixed choice of the other outputs.
The reduction is a uniform program that captures its index and its distinguisher.
XOR combination loses no distinguishing advantage when reducing to a valid candidate.
One secure choice in a uniformly efficient family makes the XOR computationally uniform. The combiner evaluates the whole family; only the reduction receives the proof's chosen index.