Techniques for secure computation involving multiple distributed parties, including applied cryptography, homomorphic encryption, secure multiparty computation, verified computation, and zero-knowledge proof. Applications including Bitcoin and other blockchain systems, Ethereum and other smart contracts, encrypted databases, and computing on encrypted data.
This is a programming-based course, with minimal theory background required. Programming projects may include:
By the end of this course, you will be able to:
Please do not buy any books for this course. All required reference material is available online for free.
We will use the following textbooks for this course:
David Evans, Vladimir Kolesnikov and Mike Rosulek
Zero Knowledge Proofs: An Illustrated Primer
In addition to these, we will reference a number of academic papers throughout the semester.
Your grade for the course will be determined as follows:
There will be no exams for this course. There is no final exam, and this course will conclude before the University’s exam period.
This course will use Python for examples and for programming assignments. Students are expected to be proficient in Python programming. Programming assignments will be distributed and turned in as Jupyter notebooks. Click here for instructions on installing Jupyter Notebook.
*Assignment Submission: Homework and in-class exercises will be turned in via Blackboard.
To submit an assignment:
Please do not change the name of the .ipynb file. This makes the grading process more difficult.
Please let me know if you have any questions about the submission process.
Late work may be accepted, but you must make arrangements with me first. If you need to turn something in late, for any reason, please email me before the deadline. Depending on the circumstances, I may (or may not) impose a late penalty on your grade.
Collaboration on the high-level ideas and approach on assignments is encouraged. Copying someone else’s work is not allowed. Any collaboration, even at a high level, must be declared when you submit your assignment. Every assignment must include a collaboration statement. E.g., “I discussed high-level strategies for solving problem 2 and 5 with Alex.”
The official references for the course are listed in the schedule below. Copying from references other than these is not allowed. In particular, code and proofs should not be copied from other sources, including Stack Overflow and other public sources.
Students caught copying work are eligible for immediate failure of the course and disciplinary action by the University. All academic integrity misconduct will be treated according to UVM’s Code of Academic Integrity.
The course will include a final project, completed in groups of 1-3 students. The final project will demonstrate your mastery of the concepts covered in this course.
Click here for more complete information.
Note that class will not be held on the following dates:
Important due dates:
|Homework 5 lite||10/14/20|
|Homework 11 lite||12/4/20|
|Final project writeup/video/implementation||12/9/20|
Schedule of topics:
|8/31/20||Intro to secure computation, additive secret sharing||PMPC Ch. 1|
|9/7/20||Adversaries and threat models (no class Monday)||PMPC Ch. 2|
|9/14/20||Shamir secret sharing||PMPC Ch. 3|
|9/21/20||Shamir secret sharing operations||PMPC Ch. 3|
|9/28/20||Multiparty computation for arithmetic circuits: GMW protocol||PMPC Ch. 3|
|10/5/20||Intermission. Real systems; garbled circuits; malicious MPC||PMPC Ch. 6|
|10/12/20||Partially homomorphic cryptosystems: Paillier and El Gamal||TBA|
|10/19/20||Fully homomorphic encryption||TBA|
|10/26/20||Zero-knowledge proof I||PMPC Ch. 6|
|11/2/20||Zero-knowledge proof II||PMPC Ch. 6|
|11/9/20||Distributed ledgers and blockchains||BCT Ch. 1|
|11/16/20||Bitcoin||BCT Ch. 2|
|11/23/20||Challenges of Bitcoin (no class Wednesday, Friday)||BCT|
|11/30/20||Blockchain applications: smart contracts, filesystems, etc||BCT Ch. 10|
|12/2/20||Open challenges and project presentations|
In keeping with University policy, any student with a documented disability interested in utilizing accommodations should contact SAS, the office of Disability Services on campus. SAS works with students and faculty in an interactive process to explore reasonable and appropriate accommodations, which are communicated to faculty in an accommodation letter. All students are strongly encouraged to meet with their faculty to discuss the accommodations they plan to use in each course. A student’s accommodation letter lists those accommodations that will not be implemented until the student meets with their faculty to create a plan. Contact SAS: A170 Living/Learning Center; 802-656-7753; email@example.com; or www.uvm.edu/access
Students have the right to practice the religion of their choice. Each semester students should submit in writing to their instructors by the end of the second full week of classes their documented religious holiday schedule for the semester. An arrangement can then be made to make up the missed work.
In order to be excused from classes, student athletes should submit appropriate documentation to the Professor in advance of all scheduling conflicts within the first two weeks of class. Those missing class are expected to submit make-up assignments within a reasonable time period.