Zero-knowledge proof
A zero-knowledge proof is an interactive protocol between a prover and a verifier in which convinces that a statement belongs to a language without revealing anything beyond the fact that . Introduced by Goldwasser, Micali, and Rackoff — GMR85.
Syntax
A zero-knowledge proof system for a language is an interactive protocol where:
- receives as input where is a witness for
- receives input and outputs or
- The transcript of the interaction is a sequence of messages
Properties
Completeness
If and follows the protocol honestly, then accepts with probability 1 (or for statistical completeness).
Soundness
If , then for all computationally unbounded :
If this holds only for efficient , the system is an argument system.
Knowledge soundness (Proof of knowledge)
A stronger notion: there exists an efficient extractor such that if convinces with non-negligible probability, then outputs a valid witness for with non-negligible probability.
Zero-knowledge
The interaction reveals nothing beyond . Formally, for every efficient verifier there exists an efficient simulator such that for all , the distribution of is computationally (or statistically, or perfectly) indistinguishable from the view of in the real interaction — GMR85.
Variations
Perfect / statistical / computational ZK
Depending on whether the simulator’s output is identically distributed, statistically close, or only computationally indistinguishable from the real transcript.
Honest-verifier ZK (HVZK)
Weaker form where the simulator only works against an honest verifier that picks challenges uniformly at random. Sufficient for many applications when combined with the Fiat-Shamir transform.
Sigma protocols
A sigma protocol (-protocol) is a 3-message HVZK proof: (1) commitment from prover; (2) random challenge from verifier; (3) response from prover. Sigma protocols satisfy special soundness (two accepting transcripts with the same but different yield a witness extractor) and HVZK. The Schnorr protocol for the discrete-logarithm relation is the canonical example — Sch91; its special soundness and perfect HVZK hold in every prime-order group, with no hardness assumption — standard.
Witness-indistinguishable (WI) proofs
Weaker than ZK: the verifier cannot distinguish which of multiple valid witnesses the prover used. WI proofs compose concurrently (unlike ZK proofs in general) and can be built without requiring any setup — FS90.
Zaps
A zap is a two-message, public-coin witness-indistinguishable proof whose first message, a random string sent by the verifier, can be fixed once and reused for any number of statements — DN00.
Statistical zap arguments
A two-message public-coin argument for an -complete language whose first message is a uniformly random string sent by the verifier; unlike a zap, its soundness is computational and its witness indistinguishability statistical. Witness indistinguishability holds for every first message: for every , every and witnesses for , the prover’s messages on and are statistically close. Soundness is computational and non-adaptive: for every false statement fixed before is sampled, every efficient prover makes the verifier accept with negligible probability. Statistical zap arguments were introduced by BFJKS20 and GJJM20; this soundness notion is the one of BLNWW25, who construct them from LWE (Quasi-polynomially hard LWE ⇒ Statistical zap arguments).
Argument systems
Proof systems with only computational (not information-theoretic) soundness. Enables much more efficient constructions; see NIZK and SNARKs.
Constant-round public-coin zero-knowledge arguments
A zero-knowledge argument for an -complete language, and hence, by Levin reductions, for every language in , with a constant number of messages, public coins and negligible soundness error — Bar01. Without the restriction every language in has one, in which the verifier decides alone — standard.
Statistical zero-knowledge arguments
An argument system whose zero-knowledge property is statistical: the simulator’s output is statistically close to the verifier’s view, so the view leaks nothing about the witness even to an unbounded distinguisher, while soundness holds only against efficient provers — BCC88.
Constant-round zero-knowledge proofs
A zero-knowledge proof (with soundness against unbounded provers) for an -complete language, and hence, by Levin reductions, for every language in , with a constant number of messages and negligible soundness error — GK96b.
Other results
- Zero-knowledge proofs were introduced together with a perfect zero-knowledge proof for the quadratic residuosity language , which needs no hardness assumption — GMR85
- OWF ⇒ ZKP
- Assuming secure probabilistic encryption, all languages in IP (= PSPACE) have computational ZK proofs — BGG+90; one-way functions suffice, since they give statistically binding commitments — HILL99, Naor91
- Zero knowledge for a language outside implies auxiliary-input one-way functions (CZK ⊄ BPP ⇒ Auxiliary-input OWF) — OW93
- Auxiliary-input zero knowledge is preserved under sequential composition — GO94; the original definition without auxiliary input is not, and zero knowledge is not closed under parallel composition — GK96a
- HVZK ⇒ NIZK (Fiat–Shamir)
Participates in
Builds on Zero-knowledge proof
Produces Zero-knowledge proof
- Bilinear pairing + DLIN ⇒ Zaps (non-interactive) (via Zaps)
- Claw-free permutations ⇒ Constant-round ZK proofs for NP (Goldreich–Kahan) (via Constant-round zero-knowledge proofs)
- CRHF ⇒ Constant-round ZK argument (Barak) (via Constant-round public-coin zero-knowledge arguments)
- OWF ⇒ ZKP
- iO ⇒ Statistical ZK arguments for NP (via Statistical zero-knowledge arguments)
- NIZK ⇒ Zaps (Dwork–Naor) (via Zaps)
- OWF ⇒ Statistical ZK arguments for NP (via Statistical zero-knowledge arguments)
- OWF ⇒ Constant-round WI proofs for NP (Feige–Shamir) (via Witness-indistinguishable (WI) proofs)
- Quasi-polynomially hard LWE ⇒ Statistical zap arguments (via Statistical zap arguments)
- Statistically hiding COM ⇒ Statistical ZK arguments for NP (via Statistical zero-knowledge arguments)
Barriers