Skip to main content Link Menu Expand (external link) Copy Copied

CIS 7000: Theory and Practice of Succinct Zero Knowledge Proofs

Basics

Instructor: Pratyush Mishra
Time: Tuesdays and Thursdays, 10:15AM-11:45AM
Location: Towne 311
Office hours: Thursdays 1-2PM, Towne 219B
Useful links: Ed Discussions; Canvas

Course Description

Zero knowledge proofs are a core object of study in cryptography that enable a prover to convince a verifier of the truth of a claim in an efficient and private manner. Despite their attractive properties, for most of their history zero knowledge proofs have remained of primarily theoretical interest. However, this has changed in the last decade with the development and deployment of very efficient zero knowledge proof systems called zkSNARKs. In this course, we will cover the mathematical foundations, implementation aspects, and applications of zkSNARKs.

Prerequisites

This course requires a basic background in discrete mathematics (at the level of CIS 1600), and a basic background in algorithms and complexity (at the level of CIS 3200).

Grading

Your grade in the course is determined by the following components:

Schedule

For classes marked as Lecture, the assigned readings are optional.
For classes marked as Discussion, everyone is expected to read the assigned readings are (with the exception of “presenter-only” readings, which are mandatory only for the presenter. Feel free to read them if you want to, though!)

DateTopicResources/Readings
08/29/2023
Lecture
Introduction and background
  • Logistics and course overview
  • Definition of cryptographic proof systems
Interactive proofs:
08/31/2023
Lecture
Interactive Oracle Proofs
  • Definition of zkSNARKs
  • Oracle Commitments
[Slides]
Compiler from IOP to argument system:
09/05/23
Lecture
Polynomial IOPs
  • IOPs + Oracle Commitments -> Interactive Arguments
  • PIOP for Polynomial Equality
  • PIOP for ZeroCheck
[Slides]
09/07/23
Lecture
Marlin PIOP I
  • PIOP for rowcheck
  • Linear verifier PIOP for lincheck
[Slides]
09/12/23
Lecture
Marlin PIOP II
  • Holographic (Preprocessing) IOPs and SNARKs
  • Complete Marlin PIOP
  • KZG Polynomial Commitment
[Slides]
09/14/23
Lab
In-class lab for Marlin
09/19/23
Lecture
Multilinear sumcheck + Spartan PIOP
  • Multilinear extensions
  • Multilinear sumcheck protocol
  • Spartan PIOP
[Slides]
09/21/23
Lecture
PC Schemes from Inner-product arguments (IPAs)
  • Hardness of Discrete Logarithms
  • Square-root sized IPA
  • PC schemes from IPA
[Slides]
09/26/23
Lecture
Lab
KZG PC Scheme
  • Bilinear/pairing-friendly groups
  • KZG PC Scheme
  • In-class Lab for KZG PC Scheme
[Slides]
09/28/23
Lecture Discussion
Lookup protocols
  • Discussion Lookups based on log-derivatives
10/03/2023
Lecture
Linear PCPs and IPs
  • Preprocessing zkSNARKs
  • Linear PCPs and Linear IPs
  • Linear Encodings
  • 2-round LIPs + Linear Encodings -> Preprocessing zkSNARKs
  • Construction of linear encoding from bilinear groups (KoE and AGM)
[Slides]
10/05/2023
Lab
In-class lab for Hadamard LPCP + AGM-based linear-only encodingPython notebook will be provided
10/10/23
Lecture
Discussion
Project
Incrementally-Verifiable Computation and Proof-Carrying Data
  • Short lecture: Proving incremental computations via IVC, construction from cycles of elliptic curves
  • Discussion PCD without succinct arguments
  • Project Project propsal due!
10/12/23No class due to fall break 
10/17/23No class due to USENIX deadline 
10/19/23
Lecture
Discussion
Programming zkSNARKs
  • Short lecture: Overview of zkSNARK programming paradigms
  • Discussion CirC
CirC: Compiler infrastructure for proof systems, software verification, and more. Ozdemir, Brown, Wahby. 2020
10/24/23
Lecture
Discussion
Formal verification for zkSNARKs
  • Short lecture: Overview of formal verification for zkSNARKs
  • Discussion Automated Detection of Underconstrained Circuits for ZKPs
10/26/23
Lecture
Discussion
SNARKs for uniform computations
  • Short lecture: Overview of uniform computations, and existing paradigms for these.
  • Discussion TinyRAM
Sections 1 and 2 of SNARKs for C: Verifying Program Executions Succinctly and in Zero Knowledge. Ben-Sasson, Chiesa, Genkin, Tromer, Virza. 2013
10/31/23
Lecture Discussion
Systems aspects of zkSNARKs
  • Short lecture: Overview of systems problems in zkSNARKs
  • Distributed proving?
  • GPU proving?
  • Delegated proving?
  • Discussion DIZK
DIZK: A Distributed Zero Knowledge Proof System. Wu, Zheng, Chiesa, Popa, Stoica. 2018
11/02/23
Lecture
Discussion
Privacy-preserving payments
  • Short lecture: Introduction to payments on blockchains
  • Discussion Zerocash
11/07/23
Lecture
Discussion
Privacy-preserving smart contracts
  • Short lecture: Introduction to smart contracts
  • Discussion Zexe
Sections 1 and 2 of Zexe: Enabling Decentralized Private Computation. Bowe, Chiesa, Green, Miers, Mishra, Wu. 2020
11/09/23
Lecture
Discussion
Succinct Blockchains
  • Short lecture: What is a succinct blockchain?
  • Discussion Incrementally-Verifiable Ledger Systems
Reducing Participation Costs via Incremental Verification for Ledger Systems. Chen, Chiesa, Dauterman, Ward. 2020
11/14/23
Lecture
Discussion
Verifiable credentials
  • Short lecture: Introduction to anonymous credentials and overview of Cinderella
  • Discussion zk-creds
11/16/23
Lecture
Discussion
Collaborative zkSNARKs
  • Short lecture: Introduction to multi-party computation
  • Discussion Collaborative zkSNARKs
Experimenting with Collaborative zk-SNARKs: Zero-Knowledge Proofs for Distributed Secrets. Ozdemir, Boneh. 2022
11/21/23
Lecture
Discussion
Rollups
  • Short lecture: What is a rollup?
  • Discussion Arbitrum
11/23/23No class due to Thanksgiving 
11/28/23
Lecture
Discussion
zkSNARKs for Authenticated Edits
  • Short lecture: zkSNARKs for controlled edits
  • Discussion PhotoProof
11/30/23Societal Aspects of Cryptography
Informal discussion, no presentation
12/05/23
Project
Final Project Presentations 
12/07/23
Project
Final Project Presentations 
12/15/23
Project
Final Project Report Due 

Overview of course grade components

Reading assignments

Each class with a Discussion component will be accompanied by an assignment consisting of 1-2 short-answer questions about the assigned reading(s). These assignments will be posted on Canvas, and will be due before class.

Note: you are not required to read papers marked as “Presenter only” in the schedule below.

Attendance and participation

You are expected to attend lectures and participate in discussions, particularly for classes marked Discussion

Paper presentation

You will lead a 40-45 minute long discussion on a paper of your choice (from one of the classes marked Discussion). There will be a sign-up sheet on Ed for choosing papers. The discussion should include a brief presentation of the paper, interspersed with questions and discussion. An example split would be 25 minutes of presentation + 10 minutes of discussion + 5 minutes of feedback.

You can choose whatever presentation tools you see fit (chalkboard, slides, etc.). No matter the medium, you should aim for a presentation that:

See here for strategies on how to prepare for this presentation.

Final project

A core component of your grade will be determined by the final project. A project can be either a research project or a literature survey:

Both kinds of projects consist of the following deliverables: