Documentation

Complexity.Crypto.Computational.GGM.Security

Adaptive GGM security from pseudorandom generators #

The tree evaluator is a pseudorandom function whenever its two-child expansion is efficient and pseudorandom. Each strict oracle-PPT adversary has one polynomial query budget. The single uniform reduction loses the product of the level-selection and sample-selection ranges, which is polynomial in the security parameter. The bound may depend on the fixed adversary.

Surplus generator bits are truncated to two labels. This preserves both security and tree evaluation, accommodating the strict PRG convention at seed length zero.

Main results #

References #

Adapted from Crypto/Computational/GGM/Security.lean on the cslib crypto branch at 5ff69ca93402e7c947208dc56396d6d86203ccd8, using the shared typed oracle and game calculus.

The GGM tree of an efficient pseudorandom two-child expansion is secure against every uniform strict polynomial-time adaptive oracle adversary with independent private randomness.

theorem Cslib.Crypto.PseudorandomGenerator.ggm {generator : List Bool → List Bool} {length : ℕ → ℕ} (hgenerator : PseudorandomGenerator generator length) (hdouble : ∀ (n : ℕ), 2 * n ≤ length n) :

A secure generator providing at least two full labels gives the GGM pseudorandom function. Surplus bits are ignored; the hypothesis accommodates seed length zero.

theorem Cslib.Crypto.PseudorandomGenerator.exists_pseudorandomFunction {generator : List Bool → List Bool} {length : ℕ → ℕ} (hgenerator : PseudorandomGenerator generator length) :
∃ (family : List Bool → List Bool → List Bool), PseudorandomFunction family

Every uniform pseudorandom generator yields a uniform adaptive pseudorandom function. Truncate to one extra bit, amplify to two labels plus one bit, and apply GGM.