This course gives a comprehensive introduction to cryptography. The focus is on (1) understanding how existing tools work; (2) how to formalize the security goals they achieve, and (3) how to prove that they achieve these goals. The class will aim to be both of interest to theory students, as well as to a broader audience interested in using cryptography in a sound way. In partcular, a main objective is exposure to the paradigm of provable security which allows us to reason rigorously about cryptographic security.
Topics will include (tentative): Cryptographic pseudorandomness, encryption (secret and publickey), keyagreement, authentication, hash functions, digital signatures, basics of postquantum cryptography, introduction to cryptographic protocols (multiparty computation and zeroknowledge proofs)
Required background: Students are expected to be ready to understand and write mathematical definitions and proofs. Exposure to basic probability, discrete mathematics, and theory of computing is also expected. (If in doubt, please reach out to the instructor.)
Wk  Date  Lecture contents  Assignments / Reading 

1  03/30  Introduction


04/01  Symmetric encryption: Perfectsecrecy, informationtheoretic vs computational security  
2  04/06  Pseudorandom Generators I  
04/08  Pseudorandom Generators II  
3  04/13  Pseudorandom Functions I  
04/15  Pseudorandom Functions II  
4  04/20  Symmetric Encryption  
04/22  Message Authentication  
5  04/27  Authenticated Encryption  
04/29  Publickey cryptography and keyagreement  
6  05/04  Publickey encryption I  
05/06  Publickey Encryption II  
7  05/11  Digital Signatures  
05/13  Pairings & Identitybased Encryption  
8  05/18  Latticebased cryptography I  
05/20  Latticebased cryptography II  
9  05/25  No Class: Memorial Day!  
05/27  Zeroknowledge Proofs  
10  06/01  MultiParty Computation I  
06/03  MultiParty Computation II 