Non-interactive zero-knowledge proof
ID: non-interactive-zero-knowledge-proof
A non-interactive zero-knowledge proof allows a prover to send one proof message that a verifier can check without an ensuing challenge-response conversation, while satisfying an appropriate zero-knowledge proof definition. Non-interactive describes the proof exchange; it does not mean that setup assumptions disappear.[ref]
Zero-Knowledge: a tutorial by Oded Goldreich. Section8, single-message model and shared reference string
In a common reference string model, both parties use public setup data . The prover constructs a proof for a public statement , and the verifier evaluatesThe setup's distribution and the adversary's knowledge of its generation must be specified. In the tutorial's basic common-random-string model, the zero-knowledge simulator produces a reference-string/proof pair with the required computational indistinguishability from a real pair.[ref]
Zero-Knowledge: a tutorial by Oded Goldreich. Section8, real and simulated reference-string/proof distributions
An original toy relation separates a statement from a cryptographic witness. Let the public values be and , and ask whether there is a value withThe value satisfies the relation because . Sending directly verifies that example but reveals that witness; it does not demonstrate a zero-knowledge property. A non-interactive proof would instead require a defined proof construction, verifier and simulation argument.
The tiny modulus is chosen only for transparent modular arithmetic; it is not a secure cryptographic parameter. Likewise, a single short message is not automatically a non-interactive zero-knowledge proof: efficient verification, soundness and information disclosure remain separate obligations.
A Non-Interactive Zero-Knowledge Proof (NIZK) is a cryptographic method by which one party (the prover) can convince another party (the verifier) that a given statement is true, without revealing any additional information about the statement itself, and without the need for interaction between the two parties after the initial setup phase.
New to topics? Read the docs here!