Parisian Master of Research in Computer Science
Master Parisien de Recherche en Informatique (MPRI)

Techniques in Cryptography and Cryptanalysis

Instructors for 2023 - 2024: Phong Nguyen (DR @ Inria) and Brice Minaud (CR @ Inria)

Language of Instruction: English for slides. English or French for lectures, depending on the audience. If everyone understands French, lectures will be in French: otherwise, they will be in English.

Preliminary schedule for 2023-2024

Time: Wednesdays, from 08h45 to 10h15.

Location: Room 1004, in the Sophie Germain building. Warning the very first lecture, on September 13, will be in room 475F in the Halle aux Farines building (4th floor), due to ongoing works in the Sophie Germain building.

13/09 Brice MinaudIntroduction [not the usual room: see above] Slides (set 1)
20/09 Brice MinaudZero-Knowledge Proofs I Slides (set 1)
27/09 Brice MinaudZero-Knowledge Proofs II Slides (set 1)
4/10 Brice MinaudSuccint Proofs of Knowledge I Slides (set 1)
11/10 Brice MinaudSuccint Proofs of Knowledge II Slides (set 1)
18/10 No class
25/10 Brice MinaudOblivious Algorithms I Slides (set 2)
1/11 No class
8/11 Brice MinaudOblivious Algorithms II Slides (set 2)
15/11 Brice MinaudOblivious RAM Slides (set 2)
22/11 No class
29/11 Exam

The midterm exam is scheduled for Wednesday, 29 November 2023, from 08h45 to 10h15 in the usual room.

Midterm exams from previous years: 2020 2021 2022 2023.

The Final Exam is tentatively scheduled for March 6 February 2024, from 8h45 to 10h15, in the usual room.


The main objective of the course is to introduce students to a few important tools and techniques relevant to modern cryptography. These techniques will belong both to the constructive side of cryptography (building cryptographic schemes whose security is mathematically proven based on hardness assumptions), and the cryptanalytic side (how to attack and evaluate the security of these schemes).

The course is split into two distinct parts. Note: the order was reversed in 2023 compared to previous years.

The first half of the course will cover zero-knowledge proofs, oblivious algorithms, and searchable encryption. Zero-knowledge proofs are an important technique in modern cryptography. They are both of theoretical interest, and deployed in a variety of applications, ranging from identification protocols to electronic voting and cryptocurrencies. We will then examine several aspects of computing on encrypted data, starting with oblivious algorithms. Oblivious algorithms are algorithms whose memory accesses are independent of their input, and serve as a building block in a variety of cryptographic applications. As a special case of practical interest, we will discuss constructions of Searchable Encryption provable in relevant security models, as well as attacks showcasing the limitations of those models.

The second half of the course is devoted to lattice-based cryptography and related topics: it will present fundamental lattice results related to algorithms (LLL and Babai's algorithms), complexity (worst-case to average-case reductions), public-key cryptography (encryption and signature) and cryptanalysis (Coppersmith's theorem and the ROCA attack). In the past 25 years, lattice-based cryptography has emerged as the most powerful alternative to classical public-key cryptography based on factoring (RSA, Rabin) and discrete logarithm (Diffie-Hellman, El Gamal, DSA, ECDSA). It is the most popular candidate for post-quantum cryptography (three of the four standards selected by NIST in July 2022 are based on lattices), but it is also the key technique for fully-homomorphic encryption, currently implemented in software libraries. Its origins go back to the Merkle-Hellman knapsack cryptosystem from 1978, but it officially started in 1996 with Ajtai's worst-case to average-case reduction and the invention of the NTRU cryptosystem. We will also explain how lattices are used in cryptanalysis, by presenting the famous real-world ROCA attack: how to factor efficiently an RSA modulus N=pq when p and q are powers of 65537 modulo many small prime numbers.

At the end of the course, students should have the necessary tools to conduct research in academic-level cryptography.


The main requirement is being comfortable with mathematical proofs. Some knowledge of basic mathematical topics such as probability and number theory will also be assumed.

For the second part of the course on lattice-based cryptography, we plan to adapt to the audience. However, it will be helpful if students are familiar with: groups, rings, vector spaces, Euclidean spaces and their topology, probability.

Students interested in mathematical aspects of cryptography might also wish to attend courses 2-12-2 and 2-13-2: elliptic curves are related to lattices, and there are analogies and connections between lattices and codes.


For the first part of the course on lattice-based cryptography, here are useful external notes on lattices:
- Lattices and Complexity: Regev's "Lattices in Computer Science" at NYU
- Lattices and Cryptography: Vaikuntanathan's "Learning with Errors and Post-Quantum Cryptography" at MIT
- My 2008 lecture notes on public-key cryptanalysis
- My 2010 survey on lattice algorithms
- For an advanced mathematical point of view, see Venkatesh's lecture notes and le séminaire Bourbaki de Bost

Textbooks on Lattices:
- Siegel's Lectures on the Geometry of Numbers  
- Les premiers chapitres de : “Les réseaux parfaits des espaces euclidiens”, Jacques Martinet.
-  Micciancio-Goldwasser's Complexity of Lattice Problems
- Cassels's An Introduction to the Geometry of Numbers.

Reference articles related to the course, in chronological order:
- 1982, Lenstra, Lenstra and Lovasz: Factoring polynomials with rational coefficients The famous 1982 article introducing the LLL algorithm as a subroutine for factoring rational polynomials.
-  1996. Ajtai: Generating Hard Instances of Lattice Problems (STOC 1996) The first worst-case to average-case reduction for lattice problems
-  1996, Coppersmith: Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities (Journal version of EUROCRYPT 1996 articles) Lattice Attacks on RSA
-  1997, Ajtai and Dwork: A Public-Key Cryptosystem with Worst-Case/Average-Case Equivalence (STOC 1997) The ancestor of LWE
-  1999, Ajtai: Generating Hard Instances of the Short Basis Problem (ICALP 1999) Trapdoors for SIS Lattices
-  2004, Micciancio and Regev: Worst-case to Average-case Reductions based on Gaussian Measures∗ (FOCS 2004) Using the discrete Gaussian distribution for worst-case to average-case reductions
-  2005, Regev: On Lattices, Learning with Errors, Random Linear Codes, and Cryptography (STOC 2005) The LWE article which earned Regev a Gödel prize
-  2006, Nguyen and Regev: Learning a Parallelepiped: Cryptanalysis of GGH and NTRU Signatures (Journal version of EUROCRYPT 2006)
-  2008, Gentry, Peikert and Vaikuntanathan: How to Use a Short Basis: Trapdoors for Hard Lattices and New Cryptographic Constructions (STOC 2008) The GPV08 article on Gaussian sampling and applications to digital signatures and identity-based encryption
-  2009, Gentry: Fully Homomorphic Encryption Using Ideal Lattices (STOC 2009)
-  2010, Micciancio and Voulgaris: A Deterministic Single Exponential Time Algorithm for Most Lattice Problems based on Voronoi Cell Computations (STOC 2010) Solving Hard Lattice Problems with the Voronoi Cell
-  2012, Micciancio and Peikert: Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller (EUROCRYPT 2012) Simpler Provable Trapdoors for SIS and LWE
-  2015, Aggarwal, Dadush, Regev, Stephens-Davidowitz: Solving the Shortest Vector Problem in 2^n Time via Discrete Gaussian Sampling (STOC 2015) Gaussian sampling from Mordell's algorithm
-  2016, Micciancio and Walter: Practical, Predictable Lattice Basis Reduction (EUROCRYPT 2016) The DBKZ Reduction Algorithm
-  2017, Nemec et al: The Return of Coppersmith’s A‚ack: Practical Factorization of Widely Used RSA Moduli (ACM CCS 2017) Factoring Real-World RSA Moduli using LLL
-  2018, Aggarwal and Stephens-Davidowitz: Just Take the Average! An Embarrassingly Simple 2^n-Time Algorithm for SVP (and CVP) (SOSA 2018)A simpler variant of ADRS

Notes below are from previous years, and no longer directly relevant to the course. They are still provided here for the benefit of curious students.

Notes 1:

Notes 2: Reference for the Goldreich-Levin Theorem:

Notes 3: References for the Naor-Reingold PRF: Original paper, Game-based proof (see Appendix A)

Notes 4: Reference for the CHK transform: (see Sections 1—3)

Notes 5: Reference for the BBG scheme: (see Pages 5—8)

Notes 6: Lecture Notes on the Complexity of Some Problems in Number Theory:

Slides on identity-based encryption:

Slides on hierarchical identity-based encryption:

Slides on identity-based encryption with wildcards:


Phong Nguyen DR @ Inria
Brice Minaud CR @ Inria

To contact us:

Universités partenaires Université Paris-Diderot
Université Paris-Saclay
ENS Cachan École polytechnique Télécom ParisTech
Établissements associés Université Pierre-et-Marie-Curie CNRS INRIA CEA