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 , over and .
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
NIZK for NP
A NIZK proof system for an -complete language, such as circuit satisfiability, and hence, composed with Levin reductions (Karp reductions that also map witnesses in polynomial time), for every language in . The restriction matters for constructions that prove statements about their own algorithms: for a language in , an empty reference string and an empty proof with a verifier that decides the language are complete, sound and zero-knowledge with no assumption — standard.
NIZK arguments for NP
A NIZK argument for an -complete language: soundness holds only against efficient provers, which still choose the statement after seeing . Every NIZK proof system for NP is one.
Non-adaptively sound NIZK arguments for NP
A NIZK argument for an -complete language whose soundness holds only against efficient provers that fix the false statement before is sampled. Puncturing arguments that hard-wire the false statement into a hybrid reference string prove this notion directly; the Sahai–Waters argument was shown only non-adaptively sound, and WW24 obtain adaptive soundness for a succinct variant from sub-exponentially secure iO and one-way functions together with polynomial hardness of discrete logarithms or factoring, by complexity leveraging — WW24.
NIZK proofs in the common random string model
A NIZK proof system for NP whose outputs a uniformly random string and whose soundness holds against unbounded provers that choose the statement after seeing — FLS90.
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 (polynomial in and , polylogarithmic in the circuit size) — BCCT13
- 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 with a superpolynomial-size challenge space can be compiled to a NIZK argument in the random oracle model by replacing the verifier’s random challenge with a hash of the statement and the prover’s commitment — FS86.
Other results
- RSA ⇒ TDP
- Doubly enhanced certified TDP ⇒ NIZK
- OWF + iO ⇒ Non-adaptively sound NIZK argument
- HVZK ⇒ NIZK (Fiat–Shamir) — FS86
- No fixed-construction reduction from Fiat-Shamir to NIZK
- DLIN ⇒ NIZK
- NIZK can be used to convert CPA-secure PKE to CCA-secure PKE — BFM88
- LWE ⇒ NIZK
Participates in
Builds on Non-interactive zero-knowledge
- NIZK proofs with a common random string ⇒ NIZK (via NIZK proofs in the common random string model)
- NIZK argument for NP ⇒ Non-adaptively sound NIZK argument for NP (via NIZK arguments for NP)
- NIZK for NP ⇒ NIZK (via NIZK for NP)
- NIZK proof for NP ⇒ NIZK argument for NP (via NIZK for NP)
- NIZK ⇒ Zaps (Dwork–Naor) (via NIZK proofs in the common random string model)
- CPA-secure PKE + NIZK ⇒ CCA1-secure PKE (Naor–Yung) (via NIZK for NP)
- CPA-secure PKE + NIZK ⇒ CCA2-secure PKE (DDN, Sahai) (via NIZK for NP)
Produces Non-interactive zero-knowledge
- NIZK proofs with a common random string ⇒ NIZK (via NIZK for NP)
- DLIN ⇒ NIZK (via NIZK for NP)
- HVZK ⇒ NIZK (Fiat–Shamir)
- OWF + iO ⇒ Non-adaptively sound NIZK argument (via Non-adaptively sound NIZK arguments for NP)
- Low-noise LPN + DDH ⇒ NIZK argument for NP (via NIZK arguments for NP)
- LWE ⇒ NIZK (via NIZK for NP)
- NIZK argument for NP ⇒ Non-adaptively sound NIZK argument for NP (via Non-adaptively sound NIZK arguments for NP)
- NIZK for NP ⇒ NIZK
- NIZK proof for NP ⇒ NIZK argument for NP (via NIZK arguments for NP)
- QR ⇒ NIZK proofs with a common random string (Blum–De Santis–Micali–Persiano) (via NIZK proofs in the common random string model)
- SNARK + OWF ⇒ NIZK argument (via Non-adaptively sound NIZK arguments for NP)
- Sub-exponential DDH ⇒ NIZK argument for NP (via NIZK arguments for NP)
- SXDH (Symmetric External Diffie-Hellman) ⇒ NIZK
- Doubly enhanced certified TDP ⇒ NIZK (via NIZK proofs in the common random string model)
Barriers