This course is an introduction to the basic theory and practice of cryptographic techniques used in computer security. We will cover topics such as encryption (secret-key and public-key), message integrity, digital signatures, user authentication, key management, cryptographic hashing, Network security protocols (SSL, IPsec), public-key infrastructure, digital rights management, and a bit of zero-knowledge protocols.
Prerequisites: The course is self contained, however a basic understanding of probability theory and modular arithmetic will be helpful. The course is intended for advanced undergraduates and masters students. Students are expected to have experience with basic proof techniques and some programming experience.
Students can supplement the lectures with an online version of the course (MOOC) that covers some of the material.
The following books can be used to supplement the lectures:
- Optional: Introduction to Modern Cryptography by J. Katz and Y. Lindell.
- Optional: A Graduate Course in Applied Cryptography by D. Boneh and V. Shoup. (free)
- There will be a number of sections given by the TAs during the quarter.
- Attendance at the sections is optional.
- There will be three written homework assignments and two programming projects.
- You may collaborate when solving the written assignments, however when writing up the solutions you must do so on your own.
- Both programming projects can be done in pairs.
- You must hand in all three homework assignments and both programming projects.
- Some of the assignments will contain extra credit questions. You must solve extra credit questions on your own.
- Submission: Homework and projects are due on the due date by 11:59pm. Homework submissions are done through Gradescope. Project submissions will be done via email as posted in the project assignment.
- Extensions: each student has a total of 72 extension hours throughout the quarter. This automatic extension can be spent in units of 24 hours on any of the assignments and projects. Please mark the submission time for any late assignment. There will be no additional extensions.
- It is an honor code violation to consult solutions to homework problems from previous CS255's.
The final exam will take place during finals week. No midterm exam. Students can choose from one of two dates for the final exam. We will announce the date for the alternate final as soon as we have it.
Final placement in the class will be determined by the following formula:
0.35 H + 0.35 P + 0.3 F
- H is your average score on the four written homework assignments.
- P is the weighted average grade on the two programming projects.
- F is your final exam score.