Introduction à la cryptographie à clé publique

Transcription

Introduction à la cryptographie à clé publique
Introduction à la cryptographie à clé publique
1
Protocole d’échange de Clé de Di¢ e-Hellmann
Alice et Bob veulent s’échanger des informations de façon con…dentielle en utilisant un système de communication
non sécurisé (téléphone, internet,...), Charlie quant à lui désire savoir ce qu’ils veulent se dire. Alice et Bob vont donc
devoir crypter (ou chi¤rer) leur messages. La plupart des algorithmes de chi¤rement des messages nécéssitent l’accord
préalable d’Alice et Bob sur une clé qu’ils seront les seuls à connaitre (dite clé secrète). Cela pose évidemment un
problême si Alice et Bob sont très éloignés et ne disposent pas de moyens de communication sûrs. Bob et Alice doivent
donc se mettre d’accord sur un chi¤re (qui leur servira de clé secrète) de telle sorte que même si Charlie entend toute
la conversation il ne puisse pas le connaitre. En 1976, Di¢ e et Hellmann ont proposé une solution pour y parvenir.
Tout d’abord Alice et Bob se mettent d’accord sur un grand nombre premier (environ 200 chi¤res) p, et sur un
nombre g qui sert de générateur en pratique on peut prendre g = 3. Charlie connait lui aussi p et g.
Le protocole repose sur l’hypothèse que dans Z=pZ l’application
f0; : : : ; p
1g
x
! Z=pZ
! gx
est à sens unique. Pour tout nombre x, on a vu comment calculer rapidement g x modulo p, mais à partir de cette
valeur on ne sait pas calculer rapidement x (on ne sait pas non plus prouver que c’est impossible !). Si on prend x
assez grand (plus de 100 chi¤res), la méthode consistant à essayer tout les nombres jusqu’à tomber sur x prendrait
plusieurs miliards d’années avec les ordinateurs actuels.
Alice choisit alors secrêtement un nombre x (plus d’une centaine de chi¤res) et calcule g x dans Z=pZ elle envoie le
résultat à Bob.
Calculer x est quasiment impossible pour Charlie (pour Bob également).
Bob choisit lui aussi secrêtement un nombre y, calcule g y dans Z=pZ et l’envoie à Alice. Charlie ne sait pas en
déduire y.
x
Finalement Alice éléve à la puissance x le nombre que Bob lui a envoyé elle obtient : (g y ) modulo p
x y
Bob, de même, élève à la puissance y le résultat que lui a envoyé Alice et obtient (g ) modulo p, comme
x
y
(g y ) = (g x ) = g xy
ce nombre : g xy peut leur servir de clé secrête, et Charlie ne peut pas le calculer à partir de g x et g y .
Exemple 1 Supposons qu’Alice et Bob choisissent le nombre premier p = 1259 et g = 3.
Alice choisit x = 144 et calcule
3144 = 572 [1259]
Alice envoie 572 à Bob.
Bob choisit y = 731 et calcule
3731 = 900 [1259]
Bob envoie 900 à Alice.
Alice calcule
900144 = 572731 = 26 [1259]
Donc Alice et Bob peuvent utiliser la clé K = 26.
2
RSA
C’est l’algorithme cryptologique à clé publique le plus connu et le plus utilisé (plus de 2 millions de clés en circulation
en 2002). Il tire son nom des initiales de ses inventeurs : Rivest, Shamir et Adlemann.
Il repose sur l’hypothèse que la factorisation des grands nombres est un problême di¢ cile.
Cet algorithme est asymmétrique, si Alice l’utilise elle va donner des informations permettant à Bob (et à tout le
monde) de crypter des messages à son intention qu’elle pourra décrypter, mais elle ne pourra en aucun cas crypter des
messages à l’intention de Bob.
Alice choisit deux grands nombres premiers p et q (160 chi¤res) et calcule n = pq, ensuite elle choisit un nombre c
(d’au moins 100 chi¤res) , appelé exposant de chi¤rement.
Alice publie n et c (et garde p et q secrets !).
1
2.1
Cryptage
On suppose qu’un message est un nombre m compris entre 1 et n. Pour crypter le message m, Bob calcule m0 = mc
dans Z=nZ et l’envoie à Alice.
2.2
Décryptage
Alice calcule ' (n) = (p 1) (q 1). Elle calcule ensuite l’inverse de c dans Z='(n) Z par l’algorithme d’Euclide, on
note d ce nombre appelé l’exposant de déchi¤rement.
Il faut pour cela que c soit inversible dans Z='(n) Z et donc premier avec ' (n), si ça n’était pas le cas Alice aurait
choisi une autre valeur pour c. (Notons qu’en particulier d’après le résultat du partiel : ' (n) pair, il faut choisir c
impair).
Pour décrypter m0 Alice calcule m0d .
En e¤et par dé…nition de d on a
cd 1 [' (n)]
donc il existe un entier k tel que
cd = 1 + k' (n)
donc
d
m0d = (mc ) = mcd = m1+k'(n)
On utilise alors le résultat suivant :
Proposition 2 Si n = pq où p et q sont deux nombres premiers, alors pour tout entier k et tout nombre m de Z=nZ
on a
m1+k'(n) = m
Proof. Si m est inversible alors on a vu que dans Z=nZ
m'(n) = 1
donc
m1+k'(n) = m
k
m'(n)
=m
1k = m
Si m n’est pas inversible, alors m n’est pas premier avec n donc m est un multiple de p ou de q. Supposons par
exemple que m soit un multiple de p, donc on va avoir
m
0 [p]
donc
m1+k'(n)
0 [p]
notons x le reste de la division euclidienne de m par q c’est à dire
m
comme x est inversible dans Z=qZ on a
xq
x [q]
1
1 [q]
donc dans Z=qZ
x'(n) = x(p
1)(q 1)
xq
1 p 1
p 1
(1)
=1
donc
x1+k'(n) = x
donc
m1+k'(n)
1+k'(n)
donc m et m
restes chinois.
x [q]
sont égaux modulo p et modulo q ils sont donc égaux modulo pq = n d’après le théorême des
Exemple 3 Si Alice a choisie p = 101 et q = 113 donc n = 11413. Alors ' (n) = 112 100 = 11200. Supposons
qu’Alice ait choisi c = 3533 (on véri…e facilement que pgcd(3533; 11200) = 1). On calcule d par l’algorithme d’Euclide,
on trouve d = 6597.
Bob veut transmettre le message 9726 à Alice, il calcule 97263533 mod 11413 = 5761 et envoie ce résultat.
Alice reçoit 5761 et calcule 57616597 mod 11413 = 9726
2
2.3
Une mauvaise utilisation de RSA
Supposons que Bob et Ted utilisent la même clé RSA : n = pq avec deux exposants de chi¤rements di¤érents : c1 et
c2 . On suppose que c1 et c2 sont premiers entre eux.
Si Alice envoie le même message m à Bob et Ted qu’elle crypte en utilisant RSA et que Charlie intercèpte les
messages cryptés, alors Charlie peut calculer m:
On voit donc la nécéssité de générer une nouvelle clé RSA pour chaque nouvel utilisateur.
Comment procède Charlie ?
Il connait m1 = mc1 [n] et m2 = mc2 [n], il connait aussi n, c1 et c2 qui sont publics et il doit calculer m.
Avec l’algorithme d’Euclide il calcule a et b tel que ac1 + bc2 = 1, en suite il calcule ma1 mb2 = mac1 +bc2 = m.
3
Chi¤rement de Rabin
Tout d’abord donnons les résultats mathématiques nécéssaires pour comprendre cet algorithme.
Dé…nition 4 Soit x 2 Z=nZ on dit que x est un carré si et seulement si il existe y 2 Z=nZ tel que y 2 = x:
Proposition 5 Soit p un nombre premier et soit x un carré de Z=pZ alors on a
x
Proof. Comme x = y 2 on a x
p
1
2
= yp
1
p
1
2
= 1 car ' (p) = p
=1
1.
Proposition 6 Soit p un nombre premier congru à 3 modulo 4. Alors si a est un carré de Z=pZ alors les solutions
p
p+1
p+1
p+1
de x2 = a sont a 4 et a 4 . On notera a 4 = a.
Proof. Soit a un carré de Z=pZ, on a
a
p+1
4
2
=a
p+1
2
=a
a
p
1
2
=a
D’autre part si y et z sont deux solutions distinctes de x2 = a alors on a y 2 = z 2 donc y 2 z 2 = 0 = (y z) (y + z)
comme Z=pZ est un corps, tout élément non nul est inversible donc soit y = z, soit y = z. Donc on a bien donné
toutes les solutions.
p
p
5
2
Exemple 7 On pose p = 19. Dans Z=19Z on a 16 = 165 = ( 3) = (9)
( 3) = 15 = 4 et 6 = 65 =
2
( 2)
6 = 5.
2
On a 25 = 32 = 6 mais ( 6) = 2, cela montre que 2 n’est pas un carré sans Z=19Z.
Décrivons maintenant l’algorithme de chi¤rement de Rabin.
Alice choisit deux grands nombres premiers p et q tous deux congrus à 3 modulo 4 et calcule n = pq, ensuite elle
choisit un nombre B, 0 B n 1.
Alice publie n et B (p et q sont secrets).
3.1
Cryptage
Un message est un nombre m compris entre 1 et n. Pour crypter le message m, Bob calcule m0 = m (m + B) dans
Z=nZ et l’envoie à Alice.
3.2
Décryptage
Alice doit résoudre dans Z=nZ l’équation x2 + Bx = m0 , on procède comme pour l’équation du second degré classique,
0
2
1 2
1
on a x + 12 B
4 B = m (comme n est impair 2 et 4 sont inversibles modulo n et on a noté leur inverse 2 et
1
4)
2
donc x + 21 B = m0 + 14 B 2 . Comme l’équation a forcément une solution (le message d’origine), m0 + 41 B 2 est
forcément un carré dans Z=nZ et donc on a
r
1
1
x+ B =
m0 + B 2
4
2
r
1
B
m0 + B 2
x =
4
2
3
Toute la di¢ culté consiste à calculer la racine carrée d’un carré de Z=nZ, on ne connait pas d’algorithme polynomial
pour y parvenir si n n’est pas un nombre premier congru à 3 modulo 4. Donc personne ne peut calculer le message de
Bob, sauf Alice...
En e¤et, pour résoudre x2 = c dans Z=nZ, Alice va résoudre
x2 = c [p]
x2 = c [q]
ces deux équations sont faciles à résoudre puisque p et q sont choisis pour ça ;-) et grace au théorème des restes chinois
Alice va pouvoir en déduire une solution modulo n.
Exemple 8 Supposons que n = 77 et que B = 9. Alice reçoit le message m0 = 22 de Bob. Dans Z=77Z l’inverse de
2 est 39 et l’inverse de 4 est 58. Donc
1
m0 + B 2 = 22 + 58
4
Alice va donc résoudre
81 = 4720 = 23
x2 = 2 [7]
x2 = 1 [11]
Donc
x = 4 [7]
x = 1 [11]
Alors on a x = 4
comme B2 = 39
11 2 3 7 = 88 21 [77] donc les racines carrés de m0 + 14 B 2 dans Z=77Z sont
9 = 34 [77] les di¤érents messages clairs possibles sont
10 et
32,
34 32 = 2
34 + 32 = 66
34 10 = 24
34 + 10 = 44
On peut véri…er que tous ces messages donne bien par cryptage le message 22.
Remarque 9 Comme on vient de le voir plusieurs messages clair ( 4 en fait) donnent le même message chi¤ ré. Dans
la pratique, seul un des 4 messages aura un sens donc il n’y aura pas d’ambiguité. Néanmoins cela peut poser problême
pour automatiser le déchi¤ rement, pour contourner cette di¢ culté on va introduire de la redondance dans le message
clair. Il y a de multiples façons de le faire, par exemple on peut décider que les messages clairs en binaire doivent se
terminer par une série de 10 zéros ce qui donnera une chance sur 1000 que cela arrive pour un autre résultat que le
message clair.
4