Uniform PseudorandomFunction Instantiation of Naor–Reingold from DDH #
This module connects the setup-parameterized universal-hash Naor–Reingold security theorems of
Complexity.Crypto.Computational.NaorReingold.Security to the uniform bit-string primitives
Cslib.Crypto.PseudorandomGenerator and Cslib.Crypto.PseudorandomFunction over any deterministic
polynomial-time prime-order group family desc : ℕ → F.Desc:
- Key-expanded Naor–Reingold bit-string PRF (
naorReingoldSeededPRF,DDH.pseudorandomFunction_naorReingoldSeeded) (paraphrase of [NR04], Section 4.1, Construction 4.2 and Theorem 4.3, combined with PRG key expansion so a uniformn-bit secret key supplies both then + 1modular exponents and the two-universal hash seed required byCslib.Crypto.PseudorandomFunction): given an expanding PRGexpand : List Bool → List Boolproducing at least(n + 1) * expWidth n + n * (2 * bound (desc n) + 1)bits from ann-bit key withexpWidth n ≥ (F.order (desc n)).size + n,naorReingoldSeededPRFslicesexpand keyinton + 1binary exponentsα₀, α₁, …, αₙand a universal-hash seed and evaluatesnaorReingoldHashedWordEval. WhenF.DDH (fun n => PMF.pure (desc n))holds and2 ^ n / F.order (desc n)is negligible,naorReingoldSeededPRFsatisfiesCslib.Crypto.PseudorandomFunction. - Direct algebraic PRG from DDH alone (
DDH.exists_pseudorandomGenerator): evaluating 1-bit universal-hash Naor–Reingold (outLen = 1, whose Leftover Hash Lemma error decays viaDDH.negligible_expected_inv_orderwithout any external order-growth hypothesis) atseedLen n + 1distinct binary inputsCslib.BitString.lowBits (inBits n) istretches a uniformseedLen n-bit seed by one bit, andCslib.Crypto.GeneratorReindex.pseudorandomGeneratorreindexes it to aCslib.Crypto.PseudorandomGeneratorat every seed lengthn. - End-to-end
PseudorandomFunctionfrom DDH (DDH.exists_naorReingoldPseudorandomFunction,DDH.exists_pseudorandomFunction): amplifying the DDH PRG viaCslib.Crypto.PseudorandomGenerator.amplifyinstantiatesnaorReingoldSeededPRFdirectly fromF.DDH (fun n => PMF.pure (desc n))andNegligible (fun n => 2 ^ n / F.order (desc n)); combiningDDH.exists_pseudorandomGeneratorwith the Goldreich–Goldwasser–Micali constructionPseudorandomGenerator.exists_pseudorandomFunction([GGM86]) also yields∃ family, PseudorandomFunction familyfromF.DDH (fun n => PMF.pure (desc n))alone.
Main definitions #
Cslib.Crypto.PrimeOrderGroupFamily.naorReingoldSeededPRF: keyed bit-string family evaluatingnaorReingoldHashedWordEvalon exponents and hash seed expanded from ann-bit secret key.
Main results #
Cslib.Crypto.PrimeOrderGroupFamily.computableInPolyTime_naorReingoldSeededPRF: polynomial-time evaluation ofnaorReingoldSeededPRF.Cslib.Crypto.PrimeOrderGroupFamily.DDH.pseudorandomFunction_naorReingoldSeeded:PseudorandomFunctionsecurity ofnaorReingoldSeededPRFfrom DDH, a key-expanding PRG, and negligible2 ^ n / F.order (desc n).Cslib.Crypto.PrimeOrderGroupFamily.DDH.exists_pseudorandomGenerator: existence of a uniform one-bit-stretchPseudorandomGeneratorfromF.DDH (fun n => PMF.pure (desc n))alone.Cslib.Crypto.PrimeOrderGroupFamily.DDH.exists_naorReingoldPseudorandomFunction: existence of parameters instantiatingnaorReingoldSeededPRFas aPseudorandomFunctionfrom DDH and negligible2 ^ n / F.order (desc n).Cslib.Crypto.PrimeOrderGroupFamily.DDH.exists_pseudorandomFunction: existence of a uniformPseudorandomFunctionfromF.DDH (fun n => PMF.pure (desc n))alone viaDDH.exists_pseudorandomGeneratorand the Goldreich–Goldwasser–Micali construction ([GGM86]).
References #
- D. Boneh, V. Shoup, A Graduate Course in Applied Cryptography, Version 0.6, Section 4.11 (Exercise 4.18, p. 172) and Section 10.11 (Exercises 10.4, 10.8, and 10.11, pp. 424–426).
- O. Goldreich, S. Goldwasser, S. Micali, How to Construct Random Functions.
- M. Naor, O. Reingold, Number-Theoretic Constructions of Efficient Pseudo-Random Functions, Section 4.1 (Construction 4.1, Theorem 4.1, Lemma 4.2, Construction 4.2, Theorem 4.3, and Remark 4.2).
Tape Parsing and Uniform-Tape Indistinguishability #
Key-Expanded Naor–Reingold PseudorandomFunction #
Keyed bit-string family evaluating the universal-hash Naor–Reingold construction
naorReingoldHashedWordEval after expanding key via expand into key.length + 1
expWidth key.length-bit binary exponents and a
key.length * (2 * bound (desc key.length) + 1)-bit two-universal hash seed (paraphrase of
[NR04], Section 4.1, Construction 4.2, combined with PRG key expansion so a uniform
n-bit secret key suffices for Cslib.Crypto.PseudorandomFunction).
Instances For
naorReingoldSeededPRF always outputs a bit string of length key.length.
naorReingoldSeededPRF is computable in deterministic polynomial time when desc, bound,
expWidth, and expand are polynomial-time computable.
Uniform PseudorandomFunction security of naorReingoldSeededPRF (paraphrase of
[NR04], Section 4.1, Construction 4.2 and Theorem 4.3, combined with PRG key
expansion): if desc : ℕ → F.Desc is a deterministic polynomial-time group family satisfying
F.DDH (fun n => PMF.pure (desc n)) with 2 ^ n / F.order (desc n) negligible, expWidth n ≥ (F.order (desc n)).size + n, and expand is a PseudorandomGenerator stretching n-bit keys to
at least (n + 1) * expWidth n + n * (2 * bound (desc n) + 1) bits, then naorReingoldSeededPRF
is a uniform PseudorandomFunction.
Direct Algebraic PseudorandomGenerator from DDH Alone #
Existence of a uniform PseudorandomGenerator from DDH alone: for any deterministic
polynomial-time prime-order group family desc : ℕ → F.Desc satisfying
F.DDH (fun n => PMF.pure (desc n)), evaluating 1-bit universal-hash Naor–Reingold at distinct
binary inputs and reindexing via GeneratorReindex.pseudorandomGenerator yields a uniform
PseudorandomGenerator with one-bit stretch at every seed length.
Existence of an explicit Naor–Reingold PseudorandomFunction from DDH: for any
deterministic polynomial-time prime-order group family desc : ℕ → F.Desc satisfying
F.DDH (fun n => PMF.pure (desc n)) with 2 ^ n / F.order (desc n) negligible, there exist
polynomial-time parameters bound, expWidth, and expand such that
F.naorReingoldSeededPRF desc bound expWidth expand is a uniform PseudorandomFunction.
Existence of a uniform PseudorandomFunction from DDH alone: any deterministic
polynomial-time prime-order group family desc : ℕ → F.Desc satisfying
F.DDH (fun n => PMF.pure (desc n)) yields a uniform PseudorandomFunction by combining the
1-bit-stretch Naor–Reingold generator DDH.exists_pseudorandomGenerator with the
Goldreich–Goldwasser–Micali tree construction PseudorandomGenerator.exists_pseudorandomFunction
([GGM86]). For the direct Naor–Reingold PRF family under Negligible (2 ^ n / F.order (desc n)),
see DDH.exists_naorReingoldPseudorandomFunction.