CSE 107, Fall 2021
Intro to Modern Cryptography


Instructor:
  Nadia Heninger (nadiah at cs dot ucsd dot edu)
  Office hours: Tuesday 3:30pm, tables outside the CSE building (EBU3B 3138 if bad weather)

TAs:
  Laura Shea   Office Hours Thursday 4pm, tables outside CSE building
  Adam Suhl   Office Hours Monday 5pm, tables outside CSE building (EBU3B B240A if bad weather)
  Psi Vesely   Office Hours Wednesday 3:30pm, tables outside CSE building

Lectures:
  Tuesday/Thursday 2:00pm-3:20pm P416 West Outdoor Tent

Discussion:
  Wednesday 9:00am-9:50am P416 East Outdoor Tent

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

Grading:
  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.


Course Policies

Please do not show up in person to lecture, discussion, or office hours if you have any cold symptoms whatsoever.

We will do our best to broadcast lectures synchronously on Zoom and record for later observation via podcast. There may be technical failures.

While we are not policing attendance and encourage you to stay home if you are sick, this is still an in-person class. Please do not structure your life so that you can never, ever come to lecture, discussion, or office hours in person. The exam schedule below is only tentative and is subject to change.

Our intent is to hold exams in person, but honestly there is so much that is currently uncertain about the pandemic that exactly how we run it will depend on how things go during the quarter.


Tentative Schedule

Topic References Assignments
9/23 Introduction

Lecture Slides
Homework 0 available on Gradescope
9/28 Classical Encryption

Lecture Slides
9/29 Discussion Homework 1 available
9/30 Block Ciphers

Lecture Slides
Homework 0 due at 2pm
10/5 Block Ciphers and Pseudorandom Functions

Lecture Slides
10/6 Discussion Homework 1 due at 9pm
Homework 2 (with Playcrypt assignment) available
10/7 Symmetric Encryption

Lecture Slides
10/12 Hash Functions

Lecture Slides
10/13 Discussion Homework 2 due at 9pm
Homework 3 (with Playcrypt assignment) available
10/14 Message Authentication Codes

Lecture Slides
10/19 Authenticated Encryption

Lecture on Zoom
Lecture Slides
10/20 Discussion: Midterm Review Homework 3 due at 9pm
10/21 Midterm

Indoor location: Center 119
Outdoor location: P416 West Tent
One 8.5"x11" cheat sheet allowed
10/26 Computational Number Theory
10/27 Discussion
10/28 Computational Number Theory
11/2 Diffie-Hellman
11/3 Discussion
11/4 RSA
11/9 Digital Signatures
11/10 Discussion
11/11 Veterans Day: No Class
11/16 Key Distribution
11/17 Discussion
11/18 TLS
11/23 Random Number Generation
11/30 Zero Knowledge
12/1 Discussion
12/2 TBD
12/9 3-6pm Final Exam

Assignments

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.