CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022

La page est créée Damien Descamps
 
CONTINUER À LIRE
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
CRYPTO
vers une cryptographie post-quantique ?
             Nicolas Ollinger
      M1 informatique — 2021/2022
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Évaluation

       Note finale = ½ CC + ½ CT
•   CT : examen de 2h sur Cours + TD + TP
        (une feuille A4 recto-verso + calculatrice type collège)

•   CC : SPRINT crypto/programmation de 36h
     2021-12-09T08:00+0100 ➠ 2021-12-10T20:00+0100

•   Seconde session sous forme d’un CT de 2h
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Programmation en TP et SPRINT
La plupart des TP et le SPRINT nécessitent l'emploi
d'un langage pour scripter des calculs

Les TP sont écrits et documentés pour Python

Dans le langage choisi il faut savoir au moins :
  •   parcourir et modifier des chaînes et des fichiers
  •   manipuler et convertir vers et depuis des suites d'octets
      brutes, de l'UTF-8, des codages hexa, base64, ...
  •   extraire des sous-chaînes
  •   combiner des suites de bits à coup de XOR
  •   faire de l'arithmétique modulaire (+, *, puissance)
  •   utiliser une bibliothèque crypto complète et sérieuse :
      primitives usuelles (AES-CTR, SHA, RSA, DH, etc), entrées-
      sorties (formats PKCS, ASN.1, X509)
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
>>> "l'éléphant ondule".encode()
b"l'\xc3\xa9l\xc3\xa9phant ondule"

>>> b"THE CAKE IS A LIE".decode()
'THE CAKE IS A LIE'

>>> bytes.fromhex('5448452043414b452049532041204c4945')
b'THE CAKE IS A LIE'

>>> import base64
>>> base64.b64decode(b'VEhFIENBS0UgSVMgQSBMSUU=')
b'THE CAKE IS A LIE'

>>> (1337).to_bytes(8,'big')
b'\x00\x00\x00\x00\x00\x00\x059'

>>> int.from_bytes(b'\x00\x00\x06\x80','big')
1664
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Cryptographie et sécurité
Étude des algorithmes et des protocoles permettant
de préserver la confidentialité de l'information et de
garantir son intégrité.

Trois scénarii fil rouge :

   (1) Alice veut chiffrer des données pour assurer
      leur confidentialité

   (2) Alice et Bob veulent établir un canal de
      communication secret à travers un réseau public

   (3) Alice et Bob veulent échanger des messages
      électroniques signés et/ou chiffrés
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Au programme
1. éléments d'histoire de la cryptologie
2. notions fondamentales et formalisation
3. chiffrement symétrique par flot et par bloc
4. modes opératoires du chiffrement par bloc
5. protocoles, authentification, contrôle d'intégrité
6. hachage et génération de nombres pseudo-aléatoires
7. chiffrement asymétrique : DH, ElGamal
8. chiffrement asymétrique : RSA, courbes elliptiques
9. signature cryptographique, certificats, confiance
10. cryptographie post-quantique !
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Bibliographie

J. Katz et Y. Lindell. Introduction to Modern
Cryptography, second edition.

N. Ferguson et al. Cryptography Engineering.
CRYPTO vers une cryptographie post-quantique ? - Nicolas Ollinger M1 informatique 2021/2022
Bibliographie en français

Ph. Guillot. Une introduction à la cryptologie, EDP
Sciences.

D. Vergnaud. Exercices et problèmes de
cryptographie, 3e édition. DUNOD
Fondements de la cryptographie
Cryptographie à clé publique
Idée : briser la symétrie !

Dans la vie, il existe de nombreux phénomènes
asymétriques, pour lesquels l’opération inverse
est plus difficile que l’opération initiale.

Une clé publique distribuée librement
(annuaire ?) permet de chiffrer les messages.

Une clé privée, gardée secrète, permet de
déchiffrer les messages.

Encore plus fort que Kerckhoff !
Fonction à sens unique avec trappe
Une fonction f est une fonction à sens unique à
trappe si le calcul de f(x) est facile et si
retrouver x à partir de f(x) est calculatoirement
impossible sans connaître la trappe, une
information secrète k. L’inverse g de f se
calcule facilement à partir de k.

Construire des couples (f,g) doit être facile.

Communiquer f ne doit rien révéler sur g.

On ne sait pas si de telles fonctions existent !
Les 5 mondes d'Impagliazzo

De nombreuses questions sont encore ouvertes
en théorie de la complexité structurelle :
 •   Est-ce que P = NP ?
 •   Quels sont les problèmes qui sont toujours
     NP-complets si on considère la complexité
     en moyenne plutôt que au pire ?
 •   Existe-t-il des fonctions one-way ?

Impagliazzo explore différentes hypothèses et
présente 5 mondes possibles.
Algorithmica

Dans ce monde, P = NP.

Reconnaître une solution et résoudre un
problème sont équivalents.

L'IA fonctionne très bien.

Pas de cryptographie à clé publique.
Heuristica

Bien que P ≠ NP, les instances difficiles des
problèmes NP-complets sont difficiles à trouver.

En pratique ce monde ressemble beaucoup à
Algorithmica.

La cryptographie à clé publique n'est pas non
plus possible.
Pessiland

P ≠ NP et même mieux, il existe des problèmes
NP-complets en moyenne.

Cependant il n'existe pas de fonctions one-way.

Il est facile de générer des instances difficiles
mais pas de générer des instances résolues.

Dans ce monde tout semble difficile.
Minicrypt

Dans ce monde, il existe des fonctions one-way
mais pour autant la cryptographie à clé
publique n'est pas possible.

Cela nous laisse la cryptographie à clé privée
mais aussi des algorithme de signature.
Cryptomania

Dans ce dernier monde, P ≠ NP, les fonctions
one-way existent et la cryptographie à clé
publique fonctionne.

C'est le monde le plus proche de la situation
décrite dans le cours de cryptographie.

Si RSA fonctionne alors on vit dans ce monde.
Informatique quantique
Polynomial-Time Algorithms for Prime Factorization
  and Discrete Logarithms on a Quantum Computer   ∗

                                     Peter W. Shor†

                                         Abstract
         A digital computer is generally believed to be an efficient universal computing
     device; that is, it is believed able to simulate any physical computing device with
     an increase in computation time by at most a polynomial factor. This may not be
     true when quantum mechanics is taken into consideration. This paper considers
     factoring integers and finding discrete logarithms, two problems which are generally
     thought to be hard on a classical computer and which have been used as the basis
     of several proposed cryptosystems. Efficient randomized algorithms are given for
     these two problems on a hypothetical quantum computer. These algorithms take
     a number of steps polynomial in the input size, e.g., the number of digits of the
     integer to be factored.

   Keywords: algorithmic number theory, prime factorization, discrete logarithms,
Church’s thesis, quantum computers, foundations of quantum mechanics, spin systems,
Fourier transforms
Oups...

Au revoir RSA, DH, ECDH, ECDSA, ...

...enfin, dès qu'on aura un ordinateur
quantique de taille suffisante.

Mais c'est quoi un ordinateur quantique ?
Historique (très rapide)
1981 R. Feynman propose la première idée d'un ordinateur
quantique.

1985 D. Deutsch définit le premier ordinateur quantique universel.

1994 P. Shor et son algorithme de factorisation

1996 L. Grover et son algorithme de recherche

1998 3-qubits

2000 7-qubits

2017 50-qubits (IBM)

2018 72-qubits (Google)

2021 100-qubits (IBM)
Cryptographie post-quantique
A brief survey
of post-quantum cryptography
D. J. Bernstein
University of Illinois at Chicago
Cryptographers:
                       How can we encrypt,
                     decrypt, sign, verify, etc.?

                                   Functioning cryptographic systems:
                                   DES, Triple DES, AES,
                                   RSA, McEliece encryption,
                                   Merkle hash-tree signatures,
                                   Merkle–Hellman knapsack encryption,
                                   Buchmann–Williams class-group encryption,
                                   ECDSA, HFEv− , NTRU, etc.

                                  !
Pré-quantique

                          Cryptanalysts:
                What can an attacker do using < 2b
                operations on a classical computer?

                                   Unbroken cryptographic systems:
                                   Triple DES (for b ≤ 112), AES (for b ≤ 256),
                                   RSA with b3+o(1) -bit modulus,
                                   McEliece with code length b1+o(1) ,
                                   Merkle signatures with “strong” b1+o(1) -bit hash,
                                   BW with “strong” b2+o(1) -bit discriminant,
                                   ECDSA with “strong” b1+o(1) -bit curve,
                                   HFEv− with b1+o(1) polynomials,
                                   NTRU with b1+o(1) bits, etc.
Cryptographers:
                       How can we encrypt,
                     decrypt, sign, verify, etc.?

                                   Functioning cryptographic systems:
                                   DES, Triple DES, AES,
                                   RSA, McEliece encryption,
                                   Merkle hash-tree signatures,
                                   Merkle–Hellman knapsack encryption,
                                   Buchmann–Williams class-group encryption,
                                   ECDSA, HFEv− , NTRU, etc.
Post-quantique

                                   !
                            Cryptanalysts:
                 What can an attacker do using < 2b
                 operations on a quantum computer?

                                   Unbroken cryptographic systems:
                                   AES (for b ≤ 128),
                                   McEliece with code length b1+o(1) ,
                                   Merkle signatures with “strong” b1+o(1) -bit hash,
                                   HFEv− with b1+o(1) polynomials,
                                   NTRU with b1+o(1) bits, etc.
Vous pouvez aussi lire