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 for an -complete language, and hence, by Levin reductions, for every language in , whose first message is a uniformly random string sent by the verifier; the verifier’s decision is a deterministic function of , and the prover’s answer. Soundness holds against unbounded provers for all statements simultaneously: except with negligible probability over , no has an accepting answer, so can be fixed once and reused for any number of statements. Witness indistinguishability holds for every first message: for every , every and witnesses for , the prover’s answers on and are computationally indistinguishable — 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).

Non-interactive zaps

A one-message witness-indistinguishable proof for an -complete language with no setup or shared randomness. The verifier is deterministic and soundness is perfect: for every it rejects every message. For every statement and witnesses for , the prover’s messages on and are computationally indistinguishable — BOV03, GOS06b.

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.

Three-message zero-knowledge arguments

A zero-knowledge argument for an -complete language, and hence, by Levin reductions, for every language in , with three messages and negligible soundness error. With a black-box simulator only languages in have one, so constructions simulate non-black-box (Three-message black-box ZK ⊆ BPP) — GK96a.

Four-message zero-knowledge arguments

A zero-knowledge argument for an -complete language, and hence for every language in , with four messages and negligible soundness error, whose simulator may run in expected polynomial time — BJY97. A black-box simulator of a constant-round argument for a language outside cannot run in strict polynomial time (constant-round black-box ZK with strict polynomial-time simulation ⊆ BPP) — BL02.

Concurrent zero-knowledge arguments

A zero-knowledge argument for an -complete language that is concurrent zero-knowledge: for every efficient verifier that runs polynomially many sessions with independent prover instances on common input , interleaving and scheduling their messages adaptively, an efficient simulator reproduces its joint view of all sessions — DNS98.

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, whose simulator may run in expected polynomial time, as the black-box simulator of GK96b does — GK96b, BL02.

Concurrent zero-knowledge proofs

A zero-knowledge proof, sound against unbounded provers, for an -complete language that is concurrent zero-knowledge in the sense of concurrent zero-knowledge arguments — DNS98.

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
    • A zero-knowledge proof for an relation can use a multi-party protocol for the relation only as a black box, which brings the communication down to for a circuit of size and security parameter (OWF ⇒ ZKP (MPC in the head)) — IKOS07
  • 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
    • Assuming either almost-optimal hardness of search LWE or a circular-secure fully homomorphic encryption scheme with standard security, the quadratic residuosity protocol of GMR85 is not zero-knowledge when repeated in parallel; under either assumption the same paper gives NIZK arguments for in the common reference string model — CCH+19
  • HVZK ⇒ NIZK (Fiat–Shamir)

Participates in

Builds on Zero-knowledge proof

Produces Zero-knowledge proof

Barriers