Introduction à la Cryptographie 5. Cryptographie asymétrique

Transcription

Introduction à la Cryptographie 5. Cryptographie asymétrique
Introduction à la Cryptographie
5. Cryptographie asymétrique (1)
E. Thomé (cours et TD)
Équipe Caramba, INRIA Nancy
Telecom Nancy, 2A TRS – 2016
http://www.loria.fr/~thome/teaching/2016-esial-crypto/
Plan
Mise en œuvre de crypto symétrique
Clé publique
RSA
Propriétés de sécurité
Difficulté de la factorisation
2 / 31
Créer un canal confidentiel
générateur
de clés
canal authentifié et confidentiel
K
Alice
K
E
M
canal public
D
C
C
Bob
M
Eve
On a besoin du canal authentifié et confidentiel au préalable
de l’envoi d’un nombre élevé de messages
3 / 31
Créer un canal authentifié
générateur
de clés
canal authentifié et confidentiel
K
K
Alice
MAC
MAC
M
M’
c
canal public
(M,c)
(M’,c’)
c’
non
c’’
oui
=?
Bob
M’
M’
Charlie
On utilise le canal authentifié et confidentiel préalablement au
message
4 / 31
Observations
Deux défauts majeurs du contexte symétrique :
Difficulté de l’échange de clés initial.
Symétrie : si A et B connaissent K , il peuvent faire la même
chose avec.
Pas possible de signer
Une clé par couple (A, B). n2 clés pour n participants.
5 / 31
Plan
Mise en œuvre de crypto symétrique
Clé publique
RSA
Propriétés de sécurité
Difficulté de la factorisation
6 / 31
Crypto à clé publique
La cryptographie à clé publique rend possible le contexte où :
Alice dispose d’une clé de chiffrement kA , publique.
Bob dispose d’une clé de déchiffrement kB , secrète.
Cette asymétrie rend notamment possible la signature.
7 / 31
Outils
La cryptographie à clé publique repose sur la difficulté de
problèmes mathématiques.
En connaissant kA , il est possible de chiffrer.
En connaissant kB , il est possible de déchiffrer.
Le problème difficile est : découvrir kB à partir de kA :
calculatoirement hors de portée
(mais possible en un temps infini).
Autre problèmes, pas forcément équivalents (peut-être plus
faciles) :
Déchiffrer un message chiffré avec kA .
Distinguer le chiffré de oui et le chiffré de non.
8 / 31
Outils
La cryptographie à clé publique repose sur la difficulté de
problèmes mathématiques.
En connaissant kA , il est possible de chiffrer.
En connaissant kB , il est possible de déchiffrer.
Le problème difficile est : découvrir kB à partir de kA :
calculatoirement hors de portée
(mais possible en un temps infini).
Autre problèmes, pas forcément équivalents (peut-être plus
faciles) :
Déchiffrer un message chiffré avec kA .
Distinguer le chiffré de oui et le chiffré de non.
(le chiffrement doit être non-déterministe)
8 / 31
Reposer sur un problème mathématique (1)
Alice envoie un message chiffré à Bob.
Alice
message
Opération
facile
chiffré
Canal public
clé
publique
Bob
message
clé
privée
Opération
facile
chiffré
Reposer sur un problème mathématique (1)
Alice envoie un message chiffré à Bob.
Alice
message
Opération
facile
Canal public
clé
publique
Bob
message
clé
privée
chiffré
Opération
facile
chiffré
Opération
très difficile
Eve
message
9 / 31
Reposer sur un problème mathématique (2)
Bob vérifie un message signé par Alice.
Alice
message
clé
privée
Opération
facile
signature
Canal public
clé
publique
Bob
message
ok
Opération
facile
signature
pas ok
Reposer sur un problème mathématique (2)
Bob vérifie un message signé par Alice.
Alice
message
clé
privée
Opération
facile
Canal public
clé
publique
signature
Autre message X
Bob
message
Opération
facile
signature
Opération
très difficile
Eve
ok
pas ok
Signature
valide de X
10 / 31
Outils
Les problèmes mathématiques couramment rencontrés en crypto.
Pour les plus fréquents :
Problème de la factorisation d’entiers (cryptosystème RSA).
Problème du calcul de logarithme discret dans les groups
(échange de clés).
Mais aussi :
Problèmes liés à la théorie des codes correcteurs.
Recherche de vecteurs courts dans des réseaux de Zn .
etc, etc.
11 / 31
S’appuyer sur un pb mathématique = ?
L’idéal : prouver que si E casse le cryptosystème S, alors il sait
résoudre un problème très difficile H.
Rêve extrême : si E casse S, alors il sait résoudre toute instance
d’un problème NP-complet H donné (pour une taille fixée). Alors :
Soit P = NP (tant mieux pour lui).
Soit on a montré que le E a du pain sur la planche.
12 / 31
S’appuyer sur un pb mathématique = ?
L’idéal : prouver que si E casse le cryptosystème S, alors il sait
résoudre un problème très difficile H.
Rêve extrême : si E casse S, alors il sait résoudre toute instance
d’un problème NP-complet H donné (pour une taille fixée). Alors :
Soit P = NP (tant mieux pour lui).
Soit on a montré que le E a du pain sur la planche.
C’est beau de rêver, mais on n’a pas ça. On a :
Si E sait résoudre le problème H, il casse S,
H est une instance d’un problème difficile.
En l’état actuel des connaissances, on ne sait résoudre H
qu’en s’attaquant au problème difficile.
12 / 31
Systèmes étudiés
On présente :
Le cryptosystème RSA.
Le protocole de Diffie-Hellman.
13 / 31
Plan
Mise en œuvre de crypto symétrique
Clé publique
RSA
Propriétés de sécurité
Difficulté de la factorisation
14 / 31
Le chiffrement RSA
N entier, et p, q (premiers) tels que N = pq.
φ(N) = (p − 1)(q − 1) = # (Z/NZ)∗ .
e premier avec φ(N). L’entier e est inversible modulo φ(N).
d calculé tel que de ≡ 1 mod φ(N).
Alice
clé publique : (N, e)
Bob
clé secrète : (p, q, d)
message : m mod N
x = me mod N
m = x d mod N
x d ≡ med ≡ m1+kφ(N) ≡ m
mod N.
15 / 31
RSA : exemple
C’est plus simple au tableau.
16 / 31
Signature RSA
Pour signer un message m :
Bob calcule s = md mod N.
Alice vérifie que s e ≡ m mod N.
17 / 31
Preuve de RSA
On a ed ≡ 1 mod φ(N), et φ(N) = (p − 1)(q − 1).
En particulier, on a (p − 1) | ed, donc med = m1+(p−1)×cst. .
Petit théorème de Fermat : mp−1 ≡ 1 mod p.
Donc med ≡ m mod p.
Si jamais p | m, alors p | med , donc med ≡ m mod p.
Idem pour q, donc pq | (med − m), .
Que peut faire un espion ?
S’il sait factoriser N, il a gagné.
S’il ne peut pas, est-il impossible de calculer
√
e
x mod N ?
√
Factoriser N est la meilleure approche connue pour e .
√
Hypothèse RSA : e x mod N est difficile si N assez grand.
18 / 31
Le choix des clés pour RSA
Un module RSA est un nombre composé N.
Un module RSA ne sert qu’à une seule personne.
Il faut définir une procédure pour générer des clés.
Choisir un nombre premier p aléatoire de n/2 bits.
Choisir un nombre premier q aléatoire de n/2 bits.
Choisir e, calculer d tel que de ≡ 1 mod (p − 1)(q − 1).
Publier N , conserver p, q .
Le choix du nombre de bits n est crucial.
19 / 31
Juste une primitive
La fonction RSA c = me mod N n’est pas un cryptosystème, c’est
une primitive. Reste à détailler :
Quelques propriétés désagréables.
Principes de mise en œuvre.
Choix des clés.
20 / 31
Propriétés désagréables de RSA
Tautologie : sous l’hypothèse RSA, la fonction RSA possède la
propriété sens unique .
Étant donné un chiffré, il est difficile de retrouver le clair associé.
La primitive RSA a la particularité d’être un morphisme :
m1e m2e ≡ (m1 m2 )e mod N.
On peut arguer que m1 m2 n’est pas un message valide.
Néanmoins inacceptable, surtout si des preuves sont requises.
En outre : un message m est associé à un unique chiffré c.
Facile de distinguer le chiffré de oui et le chiffré de non.
Le résultat du chiffrement doit être variable ;
Cf plus loin dans le contexte du
padding
.
21 / 31
Plan
Mise en œuvre de crypto symétrique
Clé publique
RSA
Propriétés de sécurité
Difficulté de la factorisation
22 / 31
Objectifs possibles pour l’attaquant
Étant donné un système asymétrique et une paire kA , kB .
Différents objectifs pour l’attaquant :
Cassage total : retrouver kB à partir de kA .
Inversion : déchiffrer (une partie d’) un message chiffré avec
kA (avec bonne probabilité).
Attaque sémantique : distinguer le chiffré de oui et le chiffré
de non (avec proba > 21 + ).
23 / 31
Moyens possibles pour l’attaquant
Principe général des lois de Kerckhoffs : l’attaquant est fort, il n’a
juste pas la clé (secrète).
Plusieurs contextes d’attaque. Soit E l’attaquant.
Attaques à chiffrés seuls : E connaı̂t une liste de chiffrés.
Attaques à clairs connus : E connait une liste de paires (mi , ci ).
Attaque à clairs choisis : E peut obtenir le chiffré ci
correspondant à des messages qu’il choisit.
24 / 31
Moyens possibles pour l’attaquant
Principe général des lois de Kerckhoffs : l’attaquant est fort, il n’a
juste pas la clé (secrète).
Plusieurs contextes d’attaque. Soit E l’attaquant.
Quelques capacités
built-in liées à la clé publique :
Attaques à chiffrés seuls : E connaı̂t une liste de chiffrés.
Attaques à clairs connus : E connait une liste de paires (mi , ci ).
Attaque à clairs choisis : E peut obtenir le chiffré ci
correspondant à des messages qu’il choisit.
Scénarios plus ambitieux :
Attaque à chiffrés choisis : E peut demander le déchiffrement
d’un certain nombre de chiffrés ci .
Attaque à chiffrés choisis adaptative : E peut ajuster ses
requêtes en fonction des réponses, et de son objectif.
24 / 31
Terminologie barbare
On donne des petits noms aux objectifs et aux scénarios d’attaque.
Objectifs :
OW (one-wayness) : le cryptosytème résiste à l’inversion.
IND (indifférentiabilité) : résiste à l’attaque sémantique.
Attaques :
CPA : Chosen Plaintext Attack.
CCA : Chosen Ciphertext Attack.
CCA2 : Adaptative Chosen Ciphertext Attack.
Un cryptosystème est :
OW-CPA si l’inversion résiste à une attaque CPA.
IND-CCA2 si l’indifférentiabilité résiste à une attaque CCA2.
Relations :
x-CCA2 ⇒ x-CCA ⇒ x-CPA,
IND-y ⇒ OW-y .
25 / 31
OW-CPA = pas assez
Tautologie : la fonction RSA possède la propriété
i.e. la primitive RSA est
OW-CPA
sens unique
.
.
On veut à la place du IND-CCA2 (plus fort !).
C’est l’objet du
padding
.
26 / 31
Détails de mise en œuvre
Le schéma de padding : composant essentiel du chiffrement RSA.
Point de départ : primitive qui fait peu de choses.
À l’arrivée : fonction de chiffrement avec des propriétés fortes.
Schéma de padding OAEP :
X || Y = OAEP(m, r ),
c = f (X || Y ).
Les fonctions de hachage jouent ici un rôle capital.
Normalisé dans des standards. Effectivement utilisé.
27 / 31
Plan
Mise en œuvre de crypto symétrique
Clé publique
RSA
Propriétés de sécurité
Difficulté de la factorisation
28 / 31
Choix des clés
Hypothèse RSA :
√
e
x mod N est difficile si N assez grand.
On n’est même pas sûr que c’est aussi dur que de factoriser N.
Il faut au moins choisir N assez grand pour qu’il soit difficile
de le factoriser.
Si on veut de la sécurité dans la durée, il faut avoir une idée de la
difficulté de la factorisation dans le futur.
Record de factorization : N de 768 bits, en 2010.
RSA-768=1 230 186 684 530 117 755 130 494 958 384 962 720 772 853 569 595 334 792 197 322 452 151 726
400 507 263 657 518 745 202 199 786 469 389 956 474 942 774 063 845 925 192 557 326 303 453 731 548 268
507 917 026 122 142 913 461 670 429 214 311 602 221 240 479 274 737 794 080 665 351 419 597 459 856 902
143 413 = 33 478 071 698 956 898 786 044 169 848 212 690 817 704 794 983 713 768 568 912 431 388 982 883
793 878 002 287 614 711 652 531 743 087 737 814 467 999 489 × 36 746 043 666 799 590 428 244 633 799 627
952 632 279 158 164 343 087 642 676 032 283 815 739 666 511 279 233 373 417 143 396 810 270 092 798 736
308 917.
29 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
Divisions successives :
[−∞]
30 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
√
Divisions successives : O( N) = O(2n/2 )
[−∞]
30 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
√
Divisions successives : O( N) = O(2n/2 )
√
Méthode ρ : O( 4 N) = O(2n/4 )
[−∞]
[1975]
30 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
√
Divisions successives : O( N) = O(2n/2 )
√
Méthode ρ : O( 4 N) = O(2n/4 )
√ CFRAC : exp O( n) , sous-exponentiel !
[−∞]
[1975]
[1975]
30 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
√
Divisions successives : O( N) = O(2n/2 )
√
Méthode ρ : O( 4 N) = O(2n/4 )
√ CFRAC : exp O( n) , sous-exponentiel !
√ Crible Quadratique exp O( n)
[−∞]
[1975]
[1975]
[1982]
30 / 31
Algorithmes pour factoriser N
Pour factoriser un entier N de n bits.
√
Divisions successives : O( N) = O(2n/2 )
√
Méthode ρ : O( 4 N) = O(2n/4 )
√ CFRAC : exp O( n) , sous-exponentiel !
√ Crible Quadratique exp O( n)
√ Crible Algébrique exp O( 3 n)
[−∞]
[1975]
[1975]
[1982]
[1990]
30 / 31
Difficulté de la factorisation
1999 : factorisation 512 bits.
2010 : factorisation 768 bits.
Avec le crible algébrique, la taille de clé n qu’il faut pour que
l’effort de l’attaquant soit égal à 2s est :
n = O(s 3 ).
La puissance de calcul croı̂t ± exponentiellement. . .
. . . donc s croı̂t linéairement. . .
. . . donc la taille de clé pour RSA monte, monte, monte.
Aujourd’hui : l’ANSSI ne valide pas l’usage de clés RSA de moins
de 2048 bits dans les produits crypto.
Exception notable : les cartes bancaires (960 bits au moins jusque
fin 2013).
31 / 31

Documents pareils