Many-Time → One-Time CPA$ Reduction via SLIDE #
This file implements Case Study 1 from "Mechanizing Nested Hybrid Arguments" (Larsen & Schurmann, CSF 2025): reducing many-time CPA$ security to one-time CPA$ security using the SLIDE construction.
Main Results #
dHybrid- Decomposed hybrid game (equivalent tohybrid_gamefrom Scheme)dHybrid_zero- Boundary: game 0 = MT_CPA_realdHybrid_length- Boundary: game n = MT_CPA_idealdHybrid_step_bound- Per-step advantage ≤ OT-CPA$ advantageAdv_MT_CPA_OT- Main:Adv(MT_CPA, A) ≤ q * max Adv(OT_CPA)
SLIDE Construction (Fig. 9) #
The SLIDE oracle for hybrid index i:
- Query j < i: return random ciphertext (ideal)
- Query j = i: forward to single-instance oracle (real or ideal)
- Query j > i: encrypt the real message (real)
Adjacent hybrids differ only at position i: one encrypts, the other samples random. This difference is exactly one OT-CPA$ query.
References #
- [Larsen & Schurmann, Mechanizing Nested Hybrid Arguments, CSF 2025, §4.1]
Decomposed Hybrid Game #
We define `dHybrid` as an alias for `hybrid_game` from Scheme.lean.
The `hybrid_game` uses recursive `hybridLoop` with a position counter,
which avoids the need for `LawfulMonad` instances.
Decomposed hybrid game: first i positions get random ciphertexts,
remaining positions get real encryptions.
Equivalent to hybrid_game from Scheme.lean.
Equations
- CatCrypt.Examples.PKE.OneToMany.dHybrid P pk msgs i = CatCrypt.Examples.PKE.hybrid_game P pk msgs i
Instances For
Boundary Conditions #
Boundary: dHybrid at 0 = all encrypted (real game).
Boundary: dHybrid at length = all random (ideal game).
Recursive Helpers #
These avoid `List.mapM` (which requires `LawfulMonad` for lemmas)
by defining the prefix/suffix computations recursively.
Sample n random ciphertexts.
Equations
- CatCrypt.Examples.PKE.OneToMany.sampleN P 0 = CatCrypt.Core.SPComp.pure []
- CatCrypt.Examples.PKE.OneToMany.sampleN P n.succ = do let c ← P.sampleCip let cs ← CatCrypt.Examples.PKE.OneToMany.sampleN P n CatCrypt.Core.SPComp.pure (c :: cs)
Instances For
Encrypt a list of messages under a public key.
Equations
- CatCrypt.Examples.PKE.OneToMany.encList P pk [] = CatCrypt.Core.SPComp.pure []
- CatCrypt.Examples.PKE.OneToMany.encList P pk (m :: ms) = do let c ← P.enc pk m let cs ← CatCrypt.Examples.PKE.OneToMany.encList P pk ms CatCrypt.Core.SPComp.pure (c :: cs)
Instances For
Structural helpers for hybridLoop #
IsPure helpers #
Decomposition Lemmas #
These show that `hybridLoop` decomposes as: sample prefix + core + encrypt suffix.
Proved by induction on `i` (the switch position), using `hybridLoop_shift` to
reduce the successor case to the base case on the tail of the message list.
The SLIDE Adversary #
The "context" adversary: given a single ciphertext at position i,
fills in the prefix with random ciphertexts and suffix with real
encryptions, then runs the original adversary on the assembled list.
SLIDE adversary: embeds a single ciphertext into the full list context.
Samples min i msgs.length random prefix ciphertexts,
encrypts suffix messages from position i + 1 onward.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Per-Step Advantage Bound #
Per-step advantage equality: adjacent hybrid advantage = OT-CPA$ advantage.
Theorem 4 (CSF 2025). Equality is established by decomposing both hybrids and
commuting the prefix past the core operation using P.IsPure.
Per-step advantage reduction: adjacent hybrid advantage ≤ OT-CPA$ advantage.
Requires P.IsPure to commute the prefix sampling past enc/sampleCip.
dHybrid_step_bound follows from dHybrid_step_eq.
Main Reduction Theorems #
Many-time to one-time CPA$ reduction (CSF 2025, Theorem 1).
Adv(MT_CPA, A) ≤ q * max_i OT_CPA_Advantage(m_i, slideAdv_i)
Requires P.IsPure for the per-step decomposition.
Alternative: MT-CPA bound with explicit per-step hypothesis.
This version takes the per-step bound directly as a hypothesis, without requiring it to be bounded by OT-CPA. Useful when the step bound comes from a different source.
Perfect security for many-time CPA$: when all hybrid steps are perfectly indistinguishable, the advantage is 0.