AND and OR composition of Sigma protocols #
Two Sigma protocols with a common challenge type combine into protocols proving knowledge of witnesses for both statements, or for at least one of them, without revealing which ([BS23], Section 19.7).
The AND-proof runs both protocols in parallel and sends the same challenge to both. The OR-proof
needs the challenges to form a finite additive group; Boneh and Shoup use {0, 1}ⁿ with
exclusive or, which is the bit-string group with +. A prover with a witness for one statement
simulates the other side with a challenge of its own choice, and answers the verifier's
challenge c by splitting it as c₀ + c₁. A witness for the OR relation is Sum.inl x₀ or
Sum.inr x₁. The honest OR prover is determined by the two simulators, which are therefore
parameters of orProof.
Main definitions #
SigmaProtocol.andProof,SigmaProtocol.andExtract,SigmaProtocol.andSimulate.SigmaProtocol.orRelation,SigmaProtocol.orProof,SigmaProtocol.orExtract,SigmaProtocol.orSimulate.
Main results #
SigmaProtocol.andProof_complete,SigmaProtocol.andProof_specialSoundness,SigmaProtocol.andProof_specialHVZK: Theorem 19.18.SigmaProtocol.orProof_complete,SigmaProtocol.orProof_specialSoundness,SigmaProtocol.orProof_specialHVZK: Theorem 19.19.
References #
AND #
The AND-proof ([BS23], Section 19.7.1): commit with both provers and answer the shared challenge with both.
Instances For
The AND extractor applies each extractor to its half of the conversations.
Instances For
An AND conversation is accepting exactly when both halves are accepting at the shared challenge.
The AND-proof's honest transcript pairs independent honest transcripts at the shared challenge.
Theorem 19.18 of [BS23]: completeness.
Theorem 19.18 of [BS23]: special soundness.
Theorem 19.18 of [BS23]: special honest-verifier zero knowledge.
OR #
The OR-proof ([BS23], Section 19.7.2). With a witness for one side, the prover
simulates the other side at a uniform challenge c', commits honestly on its own side, and
answers the verifier's challenge c on its own side at c - c'. The response
(c₀, z₀, z₁) names the first side's challenge; the second side's is c - c₀.
Instances For
The OR extractor uses the first side when the first side's challenges differ, and the second side otherwise.
Instances For
The OR simulator splits the challenge uniformly and simulates both sides.
Instances For
An OR conversation (c₀, z₀, z₁) for the challenge c is accepting exactly when the first
side accepts at c₀ and the second at c - c₀.
With a witness for the first statement, the OR prover simulates the second side at a uniform challenge and answers honestly on the first side.
With a witness for the second statement, the OR prover simulates the first side at a uniform challenge and answers honestly on the second side.
Theorem 19.19 of [BS23]: completeness. It uses that both simulators output accepting conversations.
Theorem 19.19 of [BS23]: special soundness. Distinct challenges differ on the first side's challenge or on the second side's.
Theorem 19.19 of [BS23]: special honest-verifier zero knowledge. The honest
prover's own-side challenge c - c' is uniform, and its own-side transcript is replaced by a
simulation.