CSE 107, Winter 2024
Intro to Modern Cryptography

  Nadia Heninger (nadiah at cs dot ucsd dot edu)
  Office hours: Thursday 3:30-4:30pm, EBU3B 3138

  Laura Shea   Office Hours: Friday 3-4pm, CSE 4242
  Adam Suhl   Office Hours: Monday 4-5pm, CSE 4242

  Tuesday/Thursday 2pm-3:20pm Center 212

  Wednesday 2pm-3pm Center 216

Class Resources:
  Gradebook and links on Canvas
  Assignment submission on Gradescope
  Asynchronous Q&A on Piazza, Synchronous Q&A on Discord, links on Canvas

  40%: Homework assignments
  20%: Midterm
  40%: Final

Course Overview

This course is an introduction to modern cryptography. Cryptography, broadly speaking, is about communicating in the presence of an adversary, with goals like preservation of privacy and integrity of communicated data. We will cover symmetric (private key) and asymmetric (public key) cryptography, including block ciphers, symmetric encryption, hash functions, message authentication, authenticated encryption, asymmetric encryption, digital signatures, RSA and discrete-logarithm-based systems, certificates, public-key infrastructure, key distribution, and various applications and protocols including commitment and secure computation.

This is not a general computer security course. If you are interested in web security, network security, OS security, application exploitation, or other topics like these please take CSE 127.


Topic References Assignments
1/9 Introduction

Lecture Slides
Homework 0 available, with starter code
1/10 Discussion
1/11 Classical Encryption

Lecture Slides
1/16 Block Ciphers

Lecture Slides
Homework 0 due at 2pm;
Homework 1 available, with starter code
1/17 Discussion
1/18 Block Ciphers continued

Lecture Slides
1/23 Pseudorandom Functions

Lecture Slides
1/24 Discussion
1/25 Symmetric Encryption

Lecture Slides
Homework 1 due at 2pm;
Homework 2 available, with starter code
1/30 Hash Functions

Lecture Slides
1/31 Discussion
2/1 Message Authentication Codes

Lecture Slides
Homework 2 due at 2pm;
Homework 3 available, with starter code
2/6 Message Authentication Codes and Authenticated Encryption

Lecture Slides
2/7 Discussion
2/8 Authenticated Encryption Continued Homework 3 due at 2pm;
Homework 4 available, with starter code
2/13 Computational Number Theory
Lecture Slides
2/14 Discussion: Midterm review
2/15 Midterm

One 8.5"x11" cheat sheet allowed
2/20 Computational Number Theory Continued

Homework 4 due at 2pm;
Homework 5 available, with starter code
2/21 Discussion
2/22 RSA and Public-Key Cryptography

Lecture Slides
2/27 Digital Signatures and PKI

Homework 5 due at 2pm
2/28 Discussion
2/29 Key Distribution

3/5 Advanced Primitives and Protocols

3/6 Discussion
3/7 TBD

3/12 TBD

3/13 Discussion: Final Exam Review
3/14 TBD

3/21 3-6pm Final Exam

One 8.5"x11" cheat sheet allowed


You will have several problem sets over the quarter. They will be a combination of written proof-based exercises and programming exercises using the Python-based Playcrypt library.

You are expected to write up your homework solutions yourself. You may discuss the problems with small groups of your fellow classmates. Please credit your collaborators on your homework submission.

Late work policy: You have four late days that you can use for any reason. You can use at most one late day per assignment to turn it in late and receive credit. A late day is a full 24 hour period. These should cover all of your normal extension needs. If you have an unforeseen and truly extenuating circumstance that will impact all of your courses for an extended period, please reach out to us and contact the Office of Student Affairs for help with coordination.

Academic Integrity: Failure to follow the collaboration policy on assignments or exams, turning in other people's work as your own, or dishonesty is an academic integrity violation.