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]
In a common reference string model, both parties use public setup data . The prover constructs a proof for a public statement , and the verifier evaluates
The 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]
An original toy relation separates a statement from a cryptographic witness. Let the public values be and , and ask whether there is a value with
The 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!