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


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


Homeworks (50%) and 3-hour written exam (50%).

Homework 1: [pdf]
Homework 2 is now available : [pdf] - Due date: Apr. 8

How to attend remotely:

In case of hybrid sessions due to Covid cases, the class can be followed live on BBB, [here].

Class Material:

Previous Classes:

  • Class 1 (Jan. 13):
    A brief overview of cryptography: SSL/TLS, perfect security for symmetric encryption, Vernam/One-Time-Pad cipher, pseudorandom generators.
  • Class 2 (Jan. 20):
    A formal definition of computational security, PRG, unpredictability = indistinguishability, one-time encryption from PRG, and insecurity of WEP.
  • Class 3 (Jan. 27):
    PRG in theory and practice, intractability assumptions (DLog, DDH, LWE), algorithms, DDH-based PRG
  • Class 4 (Feb. 3):
    Pseudorandom functions, equivalence with PRG, Feistel networks, AES, IND-CPA secure SE from PRFs
  • Class 5 (Feb. 10):
    Message Authentication Codes, MAC from PRFs, IND-CCA secure SE from PRFs
  • Class 6 (Feb. 17):
    Cryptographic hash functions, birthday paradox, Merkle-Damgard construction, HMAC, DLog-based collision-resistant hash function
  • Class 7 (Mar. 3):
    Limits of symmetric cryptography, public-key cryptography, public-key encryption, KEM/DEM, IND-CPA security, ElGamal PKE, Lyubashevsky-Palacio-Segev PKE
  • Class 8 (Mar. 17):
    LPS PKE (continued), the random oracle methodology, IND-CCA PKE, the Fujisaki-Okamoto transform
  • Class 9 (Mar. 24):
    Fujisaki-Okamoto proof, digital signatures, public-key infrastructure
  • Class 10 (Mar. 28):
    Schnorr's signature, Katz-Wang signature, Lyubashevsky's signature (LWE variant)

Tutorials and Corrections:

Previous tutorials and their corrections can be found on the course's page on [portail des ├ętudes].

Some References: