Fall 2020

Princeton University

An introductory course into modern cryptography, grounded in rigorous mathematical definitions. Covers topics such as secret key and public key encryption, pseudorandom generators, and zero-knowledge proofs. Requires a basic understanding of probability theory and complexity theory, and entails some programming for course projects.

Cryptography is an ancient practice dating back almost 4000 years. However, cryptography practiced today is very different than the cryptography used as recently as a few decades ago. For one, traditional cryptography was mostly synonymous with encryption: translating data into secret codes. Today, however, cryptography extends far beyond basic codes to encompass concepts such as authentication and integrity, and can be used to solve seemingly impossible tasks such as public key encryption (exchanging secret messages without ever having met in person to share a secret key) and zero knowledge proofs (proving theorems without revealing the proof).

Another new feature in modern cryptography is its foundations. Until recently, cryptography was largely an art form based on intuition and ad hoc tweaks to block vulnerabilities. Modern crytpography is instead more of a science, characterized by rigorous mathematical definitions and theorems that guide the design of new systems.

This course is an introduction to modern cryptography, focusing on the theoretical foundations, with some attention to practical considerations. We will cover a variety of topics, including secret key and public key encryption, authentication, commitments, pseudorandom generators, and zero knowledge proofs.

Basic probability theory. Basic complexity theory (as in COS340) recommended. The course projects will involve programming, but no specific programming language is required.

No data.

No data

Notes available at Tentative Schedule

No videos available

Assignments available at Homework Assignments

Projects available at Projects

No other materials available

Attacks on block ciphersAuthenticated encryptionBlock cipherChosen Ciphertext Attacks (CCA) securityChosen Plaintext Attacks (CPA)Collision-resistant hashingCommitment schemesComputational assumptionsConstructing PRGsConstructing block ciphersDefinitions in cryptographyDiffie-Hellman key exchangeDigital signatureIdentification protocolsInformation-theoretic securityMessage authentication code (MAC)Message integrityModes of operationNumber-theoretic constructions of symmetric primitivesPre-modern cryptographyPseudorandom Function (PRF)Pseudorandom Generator (PRG)Pseudorandom Permutation (PRP)Public-key cryptographyRSA (cryptosystem)Randomized encryptionRelationships between symmetric primitivesStream ciphersTrapdoor permutations