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

Barriers