Completeness and soundness of the 3-copy GMW protocol #
This module proves perfect completeness (acceptProb_gmwVerifier_gmwProver) and unconditional
soundness (acceptProb_gmwVerifier_le) for Cslib.Crypto.GMW.gmwVerifier.
- Completeness. When
ThreeSAT.verifier (f a, w) = true, every selectively opened copy of the honest prover's committed bits matchessimBits(naorMaskBits_realBits) and passesverifyCopyBitsandverifyCommitments, sogmwVerifieracceptsgmwProverwith probability1. - Soundness. Whenever Naor's commitment scheme is statistically binding on the first-round
receiver string
r(NaorBinding generator s (BitString.listRow m 0 r)), if a prover can produce accepting second-round openings for two distinct 3-bit challengesx₁ ≠ x₂on the same first-round commitment transcriptcommitReply, then those two challenges differ in at least one coordinatej ∈ {0, 1, 2}: one transcript opens copyjunder challengefalse(revealingmand the full clause truth tablestableBits φ m) and the other opens copyjunder challengetrue(revealingvand confirming that the active entrygmwActiveIdxof every clause istrue), while binding forces the opened active entries to agree withtableBits φ m. Consequentlyv ⊕ msatisfiesφ(mem_ThreeSAT_of_verifyTranscript_ne), so whenf a ∉ ThreeSATat most one of the8challenges can be answered after any bindingr, bounding the acceptance probability bynaorBindingProb + 1 / 8 ≤ 1 / 3(acceptProb_gmwVerifier_le).
Main results #
Cslib.Crypto.GMW.acceptProb_gmwVerifier_gmwProver: perfect completeness (acceptProb = 1) for any validThreeSATwitness.Cslib.Crypto.GMW.mem_ThreeSAT_of_verifyTranscript_ne: witness extraction from two accepting transcripts with distinct 3-bit challenges on a binding receiver string.Cslib.Crypto.GMW.acceptProb_gmwVerifier_le: soundness boundacceptProb ≤ 1 / 3whenf a ∉ ThreeSATand∀ k, 3 * k + 1 ≤ length k.
References #
Completeness of gmwVerifier with gmwProver #
theorem Cslib.Crypto.GMW.acceptProb_gmwVerifier_gmwProver {α : Type} {generator : List Bool → List Bool} {length : ℕ → ℕ} (hlen : ∀ (seed : List Bool), (generator seed).length = length seed.length) (f : α → Logic.PL.CNF ℕ) (n : ℕ) (a : α) {w : List Bool} (hw : Complexity.ThreeSAT.verifier (f a, w) = true) :
Complexity.acceptProb (gmwVerifier generator length f n a) (gmwProver generator (n + 7) (length (n + 7)) (f a) w) = 1
Completeness of the GMW protocol. When ThreeSAT.verifier (f a, w) = true, the honest
prover gmwProver makes gmwVerifier accept with probability 1.
Soundness of gmwVerifier against arbitrary provers #
theorem Cslib.Crypto.GMW.mem_ThreeSAT_of_verifyTranscript_ne {generator : List Bool → List Bool} {s m : ℕ} {φ : Logic.PL.CNF ℕ} {r commitReply openReply₁ openReply₂ : List Bool} {x₁ x₂ : BitString 3} (hbind : NaorBinding generator s (BitString.listRow m 0 r)) (hne : x₁ ≠ x₂) (hv₁ : verifyTranscript generator s m φ r commitReply (List.ofFn x₁) openReply₁ = true) (hv₂ : verifyTranscript generator s m φ r commitReply (List.ofFn x₂) openReply₂ = true) :
If a first-round commitment transcript commitReply under a binding receiver string r admits
accepting second-round openings for two distinct 3-bit challenges x₁ ≠ x₂, then φ ∈ ThreeSAT.
theorem Cslib.Crypto.GMW.acceptProb_gmwVerifier_le {α : Type} {generator : List Bool → List Bool} {length : ℕ → ℕ} (hlen : ∀ (seed : List Bool), (generator seed).length = length seed.length) (hstretch : ∀ (k : ℕ), 3 * k + 1 ≤ length k) (f : α → Logic.PL.CNF ℕ) (n : ℕ) (a : α) (hnot : f a ∉ Complexity.ThreeSAT) (P : Complexity.Prover Unit) :
Soundness of the GMW protocol. When f a ∉ ThreeSAT and 3 * k + 1 ≤ length k for all k,
no unbounded stateful prover P makes gmwVerifier accept with probability greater than
1 / 3.