Overview of the course:

Cryptography aims at securing communications against malicious parties. This field enjoys numerous links with theoretical computer science (complexity theory, security proofs) but has also a very rich practical counterpart: cryptographic protocols are part of everyday life (electronic commerce, payment cards, electronic voting, etc). This course is an introduction to the different facets of modern cryptography. symmetric encryption, asymmetric encryption, cryptographic hashing, authentication, pseudo-random generators, cryptanalysis, security proofs.

The course will introduce the following notions:

  • Computational indistinguishability and intractability assumptions
  • Pseudorandom generators
  • Pseudorandom functions
  • Symmetric encryption
  • Message authentication codes
  • Cryptographic hash functions
  • Public-key encryption
  • Digital signatures

Course objectives:

  • Understand basic notions of cryptography: Definitions, security requirements, relations between them, and their limitations.
  • Understand how to prove security of primitives via reduction to intractability assumptions, both in the standard and in the random oracle models

Prerequisites:

None, though basic knowledge of algebra, probability, complexity, and information theory are a plus.

Evaluation:

Two short (1-hour) exams, one on symmetric cryptography (25%) and one on computational assumptions (25%), and 3-hour written exam at the end of the class (50%).

Course Notes:

Course notes are available here: [pdf]
We will try to update them on a weekly basis.

Some References: