The typical setting of a (ZK) proof
At the center of a ZK proof is a statement of the form ” has some property” (e.g., ” is a boolean formula and ” or ” is the secret key corresponding to the public key ”). We have a prover , who knows both the public statement and secret witness ^[When looking at ZK proofs information-theoretically, see 01 History and Basics and IP, the prover is not constrained to polynomial time, so we don’t need to pass a witness . The prover can compute a witness itself, if needed. (Bonus: this allows us to talk about languages that may not even have witnesses, which is good because . However, for practical purposes, ZK proofs are for languages and hence have witnesses)], and a verifier who only knows the public statement (but not the secret ).
The magic of ZK 🪄
The goal of the prover is to convince the verifier that there is some such that has the desired property without revealing .
For example, this would enable the prover to prove that is a satisfying boolean formula without revealing its satisfying assignment , or to prove possession of her secret key secret key corresponding to the public key .
Our goal is to design protocols/algorithms that enable the prover to do this.
Languages, NP relations, etc.
- Relation: We call the set of all that have the desired property the relation (
- Example: .
- Requirement: given , one can efficiently check that .
- Typical: given only some , it’s generally difficult to compute a fitting .
- Language: The set of all for which there exists a fitting , i.e. .
- Example: .
Completeness/Correctness
Completeness means: If prover and verifier follow the protocol honestly, then the verifier accepts.
Security notions
Main notions
For ZK proofs, we are broadly interested in two main properties:
- Proof of Knowledge: the prover cannot cheat (minimum: cannot create proofs for false statements).
- Zero Knowledge: the verifier cannot cheat (cannot learn anything about the witness). For these properties, there is a huge diversity of concrete definitions, suitable for different scenarios/constructions.
Real/Ideal definition
Non-interactive proofs
- Weak NIZK: malleable proofs, extraction is only required if statement has not been simulated before.
- Strong NIZK: figure without line 9.
Disclaimer: this definition does not guarantee consistency, i.e. an invalid proof may theoretically become valid later. Source: https://ia.cr/2024/818
Honorable mentions
- Witness Indistinguishability: a weaker version of security against cheating verifiers, which states that the verifier cannot distinguish a prover using valid witness from a prover using some other valid witness .