Emmanuel Thomé — 2022 Sp22 Cse107

CSE 107, Spring 2022: Intro to Modern Cryptography #


Instructor Emmanuel Thomé.

Office hours Tuesday 2pm-3pm, CSE building, tables outside the CSE building (EBU3B 3130 if bad weather). If you can't make it to my OH for some reason and would like to see me, please email me at ethome@ucsd.edu (edit: this email address to longer works, use Emmanuel.Thome@inria.fr instead).

TAs:

  • Yuka Chu. Office hours Wednesday 10:30am-11:30am, CSE B250A.
  • Rishabh Ranjan. Office hours Monday 12:30pm-1:30pm, CSE B240A.
  • Laura Shea. Office hours Monday 4pm-5pm, tables outside the CSE building.

Lectures Tuesday/Thursday, 12:30pm-1:50pm, CENTR212. (schedule of classes)

Discussion Wednesday 2:00pm-2:50pm, CENTR212.

Course web page https://cseweb.ucsd.edu/classes/sp22/cse107-a/ (this page)

Class Resources

  • Gradebook and links on Canvas
  • Assignment submission on Gradescope (see Canvas link)
  • Asynchronous Q&A on Piazza (see Canvas link)

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 / Pandemic considerations #

This is an in-person class.

We will do our best to broadcast lectures synchronously on Zoom and record them for later observation via podcast. Because we do so on a best-effort basis, there may be technical failures. We are not going to spend time debugging Zoom problems.

Likewise, discussions will also be available on Zoom (it is a different link), and recorded for later observation via podcast.

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

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 final exam will be in person, with no option for taking it remotely. Of course, we have learned that much is uncertain about the pandemic and its evolution. Exactly how we run the exam will depend on how things go during the quarter.


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. See the pinned post on Piazza about Playcrypt for instructions.

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.


Schedule #

The schedule below is tentative. It's entirely possible that I drop some items in this list, that I rearrange the schedule, and so on. This page will be kept up to date to account for possible shifts in the schedule.

Week 1 #

Tuesday 03/29: Lecture 1, Introduction ; Lecture slides

Tuesday 03/29: Homework 0 available on Gradescope after lecture

Wednesday 03/30: Discussion

Thursday 03/31: Lecture 2, Classical Encryption ; Lecture slides

Thursday 03/31: Homework 1 available after lecture

Week 2 #

Tuesday 4/5: Homework 0 due at 12pm (noon)

Tuesday 4/5: Lecture 3, Block Ciphers ; Lecture slides

Wednesday 4/6: Discussion

Thursday 4/7: Homework 1 due at 12pm (noon)

Thursday 4/7: Lecture 4, Block Ciphers and Pseudorandom Functions ; Lecture slides

Thursday 4/7: Homework 2 (with template code hw2.py using Playcrypt) available. See the pinned post on Piazza about Playcrypt for instructions.

Week 3 #

Tuesday 4/12: Lecture 5, Symmetric Encryption ; Lecture slides

Wednesday 4/13: Discussion

Thursday 4/14: Homework 2 due at 12pm (noon)

Thursday 4/14: Lecture 6, Hash Functions ; Lecture slides


Thursday 4/14: Homework 3 (with template code hw3.py using Playcrypt) available. See the pinned post on Piazza about Playcrypt for instructions.

Week 4 #

Tuesday 4/19: Lecture 7, Message Authentication Codes ; Lecture slides

Wednesday 4/20: Discussion: Midterm Review

Thursday 4/21: Homework 3 due at 12pm (noon)

Thursday 4/21: Lecture 8, Authenticated Encryption ; Lecture slides

Week 5 (Midterm) #

Tuesday 4/26: Midterm (during lecture time). Rooms CENTR 212 and CENTR 119 ; Rules.

Wednesday 4/27: Discussion

Thursday 4/28: Lecture 9, Computational Number Theory ; Lecture slides

Thursday 4/28: Homework 4 (with, only for Problem 2: template code hw4_p2.py using Playcrypt) available. Attention: this corresponds to two distinct Gradescope assignments.

Week 6 #

Tuesday 5/3: Lecture 10, Computational Number Theory ; Lecture slides

Wednesday 5/4: Discussion

Thursday 5/5: Homework 4 due at 12pm (noon)

Thursday 5/5: Lecture 11, RSA and Hybrid Encryption ; Lecture slides

Thursday 5/5: Homework 5 (with template code hw5.py using Playcrypt) available.

Week 7 #

Tuesday 5/10: Lecture 12, Hybrid Encryption and KEMs ; Lecture slides

Wednesday 5/11: Discussion

Thursday 5/12: Homework 5 due at 12pm (noon)

Thursday 5/12: Lecture 13, Digital Signatures ; Lecture slides

Thursday 5/12: Homework 6 (with template code hw6.py using Playcrypt) available.

Week 8 #

Tuesday 5/17: Lecture 14, Key Distribution ; Lecture slides

Wednesday 5/18: Discussion

Thursday 5/19: Homework 6 due at 12pm (noon)

Thursday 5/19: Lecture 15, Advanced Primitives and Protocols ; Lecture slides

Thursday 5/19: Homework 7 (with template code hw7.py using Playcrypt) available.

Week 9 #

NOTE: No office hours this week, but I am available on zoom by appointment.

Tuesday 5/24: Lecture 16, Finite fields and secret sharing; LECTURE WILL BE ON ZOOM, link on Canvas. Lecture slides

Tuesday 5/24: Homework 8 (with template code hw8.py using Playcrypt) available.

Wednesday 5/25: Discussion

Thursday 5/26: Lecture 17, Zero-Knowledge and cryptocurrencies; LECTURE WILL BE ON ZOOM, link on Canvas. Lecture slides Thursday 5/26: Homework 7 due at 12pm (noon)

Week 10 #

Tuesday 5/31: Lecture 18, Cryptanalysis and cryptographic backdoors. Lecture slides

Wednesday 6/1: Discussion: Final Exam Review

Thursday 6/2: Homework 8 due at 12pm (noon)

Thursday 6/2: Lecture 19, Cryptographic backdoors (continued), elliptic curves, and wrap up. Lecture slides

Week 11 (Finals) #

Monday 6/6: Final exam, 11:30am-2:29pm. CENTR 101. Rules.

Textbooks #

There is no recommended textbook for this course. However, you might want to find the following books interesting: