πŸͺ‘ Session chair: Akira/Jan (Duties: Read material above-average carefully πŸ€“; prepare fallback discussions/questions (worst-case: just prepare some quiz questions about the material) πŸ™‹. Prepare a few slides to guide the session through subtopics (this is not supposed to be a detailed summary of the material)

✍️ Notetaker: Jan (Duties: Take Obsidian notes during the session πŸ“. Moderate to get input for the wiki pages 🧠. Make people summarize / dumb down discussion results to keep things comprehensible for everyone πŸ§‘β€βš–οΈ.)

🎯 Goals

First, this is to kick off the reading group. We want to discuss important notions, and get everyone up to speed with the influential β€œroots” of ZK proofs.

We want to understand

πŸ“š Material

Additional (optional) material can be found on https://zk-learning.org.

πŸ“ Notes

Session 1.1 (2023-06-01): Basic definitions

Mostly talked about Soundness/Proof of Knowledge and Zero Knowledge.

Interactive Proofs

Let be a language. An interactive proof system for is a tuple of interactive algorithms Prover and Verifier , that proceed as follows.

  1. and take a statement as common input.
  2. For each round : sends a message and responds with .
  3. At the end of interaction, outputs (β€œaccept”) or (β€œreject”)

Typically, has limited computational power, whereas is unbounded.

Could the number of rounds be arbitrary?

We typically assume to be a constant. Some protocols have .

Completeness

We say a proof system is complete if accepts after both and follow the protocol honestly. More formally: If , then .

Soundness

Consider a scenario where is potentially malicious, i.e., tries to convince that the statement belongs to , even if . Soundness guarantees that, as long as then always rejects no matter what a cheating prover does. Formally:

If , then ,

What does mean?

We often indicate an algorithm is adversarial.

Zero Knowledge

Now we consider a scenario where is malicious, i.e., may potentially deviate from the protocol to obtain some extra information than the fact that . Zero Knowledge guarantees that, no malicious can gain useful information while interacting with honest .

Formally:

If , then , such that

where denotes the distribution of strings that observes during the execution of , i.e., all incoming messages to and outgoing messages from .

What is the role of simulator ?

Intuitively, the existence of simulator implies that the information gains from a protocol execution could be efficiently computed by itself from . This means that has learned β€œnothing new” by interacting with .

If can simulate a protocol execution, why can't run a simulator to convince another verifier? Doesn't ZK condradict Soundness?

Although it sounds somewhat paradoxical, the existence of simulator doesn’t mean that one can play an honest prover. This is because a simulator may cheat by generating a transcript in the reverse order or by exploiting the knowledge of secret trapdoor.

Proof of Knowledge

In some applications, plain soundness may not be satisfactory. Say you as a user want to authenticate yourself to the web service by proving that you know secret identity information.

To this end, let us assume that is an NP language and consider the corresponding NP relation , where the string is called witness. In a proof system for , takes as private input, take as common input, and they interact, denoted by .

We say a proof system for is Proof of Knowledge (PoK) if the following condition is satisfied: if accepts on statement , then must have known the corresponding witness .

Formally, such that is PPT and , ,

What does mean?

It means that an extractor has black-box access to . This implies that can rewind to its previous state.

Session 1.2 (2023-06-15): Example protocols

We will revisit the definitions and look at examples to understand the basic mechanisms and tricks better.

Session 1.3 (2023-06-22): More example protocols

For real this time: let’s go through the example protocols and understand how they work. To prepare, please read

Note any comments and questions you may have and bring them to the session. If you notice typos, you can also directly fix them on https://github.com/JanBobolz/zk-wiki. If you feel like writing (even small parts of) the 3-Colorable Protocol entry, go for it! It would be appreciated πŸ™‚.