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. There will be a hands-on component to further familiarise the students with the use of these primitives. The course will also offer an opportunity to explore the current practice and challenges in network security via a course project.

Course contents. The course will focus on understanding the following four cryptographic tools: Symmetric Key Encryption (SKE), Message Authentication Codes (MAC), Public Key Encryption (PKE), and Digital Signatures. Along the way several other concepts will be covered: Secret-sharing, Pseudorandom generators (PRG), Collision-Resistant Hash Functions (CRHF) and Zero-Knowledge Proofs. 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 (60%), a few homework assignments (15%), lab exercises (10%) and a team project (15%). 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.

If you are auditing the course, you should have an attendance of over 80% and score over 50% in the homework assignments and labs. You need not take the quizzes, or the project.

Background. This course will cover theoretical and practical basics of cryptography. 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 Assistants

Contact Hours. Weekly contact hours will be conducted, Tuesdays and Fridays, 5:30 to 7:00 PM. The contact hours will be split between lectures and hands-on labs. Lecture slides will be posted here after the lecture. Lab-related material will be made available via Moodle. The instructor and/or the TAs may hold office hours when the assignments are out, as will be announced later.

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

Lectures so far