Course Details
- Instructor: Akshayaram Srinivasan
- Lecture Timings: 10 AM - 12 noon on Monday.
- Location: MY 480.
- Office Hours: By appointment.
- Class Discussion: Please signup on Piazza.
Course Description
Cryptography is a branch of computer science that aims at building secure systems that protect sensitive information against adversarial attacks. It allows us to construct systems that enable private communication over public channels, systems that prevent tampering of data during transmission, systems that enable us to securely outsource data and computation to external entities like cloud service providers, and many more. These systems are crucial in ensuring the security of communication and computation happening over the internet.
In this course, we will study the theoretical foundations of cryptography and the theory behind constructing such secure systems. Specifically, we will first study how to rigorously define the security properties that these systems need to satisfy. We will then look at how to construct these systems and formally prove that the constructed systems satisfy these security properties.
Prerequisites
Students are expected to have completed undergraduate-level courses on discrete mathematics, algorithms, and complexity theory. As this course will be theoretical, students are expected to have good mathematical maturity and should be comfortable with writing proofs.
Evaluation
Scribe notes (20%), Homeworks (40%), and Final Project (40%).
References
There is no prescribed textbook for this course but the following books and lecture notes are excellent references.
- Foundations of Cryptography: Volume-1 (Basic Tools) by Oded Goldreich.
- Foundations of Cryptography: Volume-2 (Basic Applications) by Oded Goldreich.
- Introduction to Modern Cryptography: Second Edition by Jonathan Katz and Yehuda Lindell.
- A Course in Cryptography by Rafael Pass and abhi shelat.
- Foundations of Cryptography by Yehuda Lindell.
- Modern Cryptography by Abhishek Jain.
- Advanced Topics in Cryptography by Jonathan Katz.
Course Schedule
Date | Topics Covered | Scribe Notes | Additional Reading |
---|---|---|---|
Sept 11, 2023 | Introduction, Negligible Functions | Lecture-1 | Note on Negligible Functions |
Sept 18, 2023 | One-Way Functions | Lecture-2 | Chapter 2.4 |
Sept 25, 2023 | Goldreich-Levin Theorem | Lecture-3 | Chapter 3.4.2 |
Oct 2, 2023 | Computational Indistinguishability and PRGs | Lecture-4 | Chapters 3.1-3.3 |
Oct 16, 2023 | Pseudorandom Functions and Secret-Key Encryption | Lecture-5 | Lecture by A.Chiesa |
Oct 23, 2023 | Proof of Security of SKE and One-time Digital Signatures | Lecture-6 | Chapters 5.3-5.4 |
Oct 30, 2023 | Digital Signatures | Lecture-7 | Chapters 5.7 |
Nov 13, 2023 | Zero-Knowledge Proofs | Lecture-8 | Chapters 4.5-4.7 |
Nov 20, 2023 | Public-Key Encryption | Lecture-9 | Chapter 6 |
Nov 27, 2023 | Oblivious Transfer and Secure Two-party Computation | Lecture-10 | Chapter 9 |
Dec 4, 2023 | Secure Multiparty Computation | Lecture-11 | Section 3 and 4 |
Dec 11, 2023 | Project Presentation |