Cryptography

This course is intended to provide a theoretically sound foundation in cryptography as used in network security. We shall learn about basic cryptographic tools like encryption and message authentication, in the "private-key" and "public-key" settings, with a focus on mathematical definitions of security, "provably secure" constructions based on fundamental cryptographic primitives, and how they are used in higher-level network security protocols. The course will also offer an opportunity to explore the current practice and challenges in network security via a course project.

Course contents. The first (and main) part of the course will focus on understanding several cryptographic tools: Secret-sharing, Pseudorandom generators (PRG), Symmetric Key Encryption (SKE), Message Authentication Codes (MAC), Public Key Encryption (PKE), Digital Signatures and Collision-Resistant Hash Functions (CRHF). Also, lower-level abstract cryptographic primitives like one-way functions, hardcore predicates and trapdoor one-way permutations, as well as some algebraic and number-theoretic functions which are used to instantiate these primitives will be covered. A good reference would be the Katz-Lindell textbook or the Boneh-Shoup textbook.

In the second part of the course we will overview some major examples of how these cryptographic tools are employed in network security protocols: IPsec, TLS and DNSSEC, as well as protocols like Signal used in messaging applications.

The course project will give you a chance to implement cryptographic schemes, dig deeper into network security protocols and known vulnerabilities, or study advanced cryptographic tools not covered in the lectures.

Graded Work. The graded work involves two exams/quizzes (65%), a few homework assignments (15%), and a team project (20%). The projects will be evaluated based on a report or demo (depending on the nature of the project), and meeting(s) with the instructor prior to that. Some sample topics for the project will be provided later on. The exam/quiz schedule will be announced later.

Background. This course will have a theoretical flavour: you will need to be comfortable with mathematical definitions and proofs ("mathematical maturity"). Specific mathematical topics that will be encountered are elementary probability, elementary algebra and elementary number theory. For the second part, it may help to be familiar with computer networks but this is not a pre-requisite.

Teaching Assistant.

Lectures. Live lecture logistics will be announced on Moodle. Lecture recordings will also be posted there. The instructor and/or the TA may hold office hours when the assignments are out, as will be announced later.

Offline Discussion. Please use Piazza for discussions, if you find anything mysterious in the lectures or assignments. You are also welcome to discuss about the structure of the course over Piazza.

Lectures so far