Non-interactive zero-knowledge

A non-interactive zero-knowledge (NIZK) proof allows a prover to convince a verifier that a statement with a single message (no interaction), typically in the common reference string (CRS) model where both parties share a trusted public string sampled by a setup algorithm. Introduced by Blum, Feldman, and Micali — BFM88.

Syntax

A NIZK proof system for language is a tuple of efficient algorithms :

  • samples a common reference string
  • takes a statement with witness and outputs a proof
  • deterministically verifies the proof.

Properties

Completeness

For all with witness , with probability 1 over .

Soundness / Argument

For all efficient :

If soundness holds only against efficient provers (using computational hardness), the system is called a NIZK argument.

Zero-knowledge

There exists an efficient simulator where outputs a simulated CRS and trapdoor, and simulates proofs, such that real and simulated pairs are computationally indistinguishable.

Variations

Simulation-sound NIZK (SS-NIZK)

An SS-NIZK remains sound even against adversaries who have seen simulated proofs. This stronger notion is essential for constructing CCA-secure encryption from NIZK.

zk-SNARK

A Succinct Non-interactive ARgument of Knowledge (zk-SNARK) is a NIZK argument with the additional properties that:

  • The proof is short (polylogarithmic in the circuit size)
  • Verification is fast (polylogarithmic in the statement size)
  • The prover has knowledge soundness (a witness can be extracted)

See SNARKs for more detail.

NIZK in the random oracle model

Via the Fiat-Shamir heuristic, any sigma protocol can be compiled to a NIZK argument in the random oracle model by replacing the verifier’s random challenge with a hash of the prover’s commitment.

Other results

  • NIZK for all NP from trapdoor permutations (hence from RSA or DL) in the CRS model — BFM88
  • NIZK from iO and OWF in the plain model (no CRS) — SW14
  • Fiat-Shamir compiles sigma protocols to NIZK in the ROM — FS86; but is insecure for general interactive proofs — GK03
  • NIZK → COM: every NIZK scheme gives a non-interactive commitment
  • Pairing-based NIZK (Groth-Sahai proofs, Groth16) achieves constant or logarithmic proof size — Gro16
  • NIZK can be used to convert CPA-secure PKE to CCA-secure PKE — BFM88
  • NIZK from LWE via hash-and-sign signatures and SIS-based commitments — standard