This course is aimed as an introduction to modern cryptography. This course will be a mix of applied and theoretical cryptography. We will cover popular primitives such as: pseudorandom functions, encryption, signatures, zero-knowledge proofs, multi-party computation, and Blockchains. In addition, we will cover the necessary number-theoretic background. We will cover formal definitions of security, as well as constructions based on well-established assumptions like factoring.
Lecture and project-based
Target audience (e.g. undergraduates, MS students, PhD students)
- Undergraduates: 17-334, 5-436, 19-534
- MS / Ph.D.: 17-734, 5-836, 19-734. Students enrolled in these course numbers will have extended homework assignments and will be expected to play a leadership role in a group project that produces a paper suitable for publication.
A basic level of mathematical maturity is expected. It is recommended that you must have taken a course either in: algorithms or theoretical computer science (such as 15-251) or probability/discrete math (such as 21-228)
- Gain a solid background in the foundations of cryptography
- Learn how to write proofs of security
- Learn about topics at the forefront of cryptographic research such as zero-knowledge proofs, secure multi-party computation and blockchains
Faculty and instructors who have taught this course in the past