Master IT
4.
4.1. Introduction
On peut comparer un algorithme clef secrte un coffre-fort. La clef est la combinaison du coffre. Celui qui connat la combinaison peut ouvrir le coffre, mettre un document lintrieur et le refermer. Quelquun dautre, qui possde aussi la combinaison, peut ouvrir le coffre et prendre le document. Toute personne qui ne connat pas la clef na dautre ressort que dapprendre lart de percer les coffres-forts. En 1976, W. Diffie et M. Hellman ont chang ce paradigme de la cryptographie. Ils ont dcrit la cryptographie clef publique. Au lieu dune clef, il y a deux clefs diffrentes : une publique et une prive. De plus, il est difficile de calculer la clef prive partir de la clef publique. Toute personne peut laide de la clef publique chiffrer un message mais elle ne peut le dchiffrer. Seule la personne en possession de la clef prive peut dchiffrer le message. Cest comme si quelquun avait chang le coffre-fort de la cryptographie en une bote aux lettres. Mettre une lettre dans la bote revient chiffrer avec la clef publique, tout le monde peut le faire. Il suffit de la glisser dans la fente. Sortir le courrier de la bote revient dchiffrer avec la clef prive. Cest difficile en gnral, il faut un chalumeau. Cependant, celui qui dtient le secret (la clef physique de la bote aux lettres) peut facilement retirer le courrier de la bote. Clef de chiffrement Clef de dchiffrement Texte en clair Original
Texte en clair
Chiffrement
Texte chiffr
Dchiffrement
Figure 6 : Chiffrement et dchiffrement avec deux clefs Mathmatiquement, le procd est bas sur une fonction sens unique brche secrte. Le chiffrement est la direction facile. La clef publique constitue les instructions pour le chiffrement : tout le monde peut chiffrer un message. Le dchiffrement est la direction difficile. Le secret, ou la brche secrte, est la clef prive. Avec ce secret, le dchiffrement est aussi facile que le chiffrement. Voici comment A peut envoyer un message B en utilisant la cryptographie clef publique : 1 A et B choisissent un cryptosystme clef publique. 2 B envoie A sa clef publique. 3 A chiffre son message en utilisant la clef publique de B et lui envoie le rsultat. 4 B dchiffre le message de A en utilisant sa clef prive. Plus gnralement, un groupe dutilisateurs en rseau saccordent pour utiliser un cryptosystme clef publique. Chaque utilisateur a sa ou ses clefs publiques et prives. Toutes les clefs publiques sont disponibles dans une base de donnes quelque part. Ainsi le protocole est plus simple : 1 A obtient la clef publique de B par la base de donnes. 2 A chiffre son message en utilisant la clef publique de B et lui envoie le rsultat. 3 B dchiffre le message de A en utilisant sa clef prive.
Mohamed El Marraki
51
12/04/2009
Master IT
Depuis 1976, de nombreux algorithmes de cryptographie clef publique ont t proposs. Plusieurs dentre eux ne sont pas srs. Parmi ceux qui sont srs, il y a plusieurs qui ne sont pas pratiques (soit ils ont une clef vraiment grande ou le texte chiffr est nettement plus long que le texte en clair). Seuls quelques algorithmes sont la fois srs et pratiques, certains ne sont adapts qu la distribution de clefs. Dautres sont adapts au chiffrement. Dautres ne sont adapts quaux signatures numriques. Seuls deux algorithmes sont adquats la fois pour le chiffrement et les signatures : RSA et ElGamal. Ces algorithmes sont lents. Les vitesses de chiffrement et dchiffrement sont nettement plus faibles que pour les algorithmes clefs secrtes ; habituellement cest trop lent pour le chiffrement de donnes en masse. On les utilisent de la faon suivante : Un algorithme avec une clef secrte alatoire sert chiffrer le message, et un algorithme clef public sert chiffrer la clef.
Mohamed El Marraki
52
12/04/2009
Master IT
La signature : a) est authentique : convainc le destinataire que le signataire a dlibrment sign le document. b) est infalsifiable : la signature est la preuve que le signataire a sign le document. c) est inutilisable : la signature fait partie du document, on ne peut pas la faire dplacer sur un autre document. d) est inaltrable : une fois le document sign, il ne peut plus tre modifi. e) ne peut pas tre renie : Le signataire ne peut pas prtendre plus tard ne pas avoir sign le document.
f -1A(M)
2 A chiffre le message sign avec la clef publique de B et lui envoie le rsultat :
f B(f -1A(M))
3 B utilise sa clef prive pou dchiffrer le message dAlice :
f A(f -1A(M)) = M
Mohamed El Marraki
53
12/04/2009
Master IT
Il semble naturel de signer avant de chiffrer. Quand une personne A crit une lettre, elle la signe avant de la mettre dans lenveloppe.
f B(f -1A(M))
2 B dchiffre le message avec sa clef prive et vrifie la signature avec la clef publique de A, sassurant ainsi que cest bien A qui a sign le message et obtenant galement le message en clair :
f A(f 1B(M))
4 A dchiffre le message avec sa clef prive et vrifie la signature avec la clef publique de B. Si le message obtenu est le mme que celui quelle a envoy B, elle sait que celui-ci a reu le message correctement : Pour ce protocole une attaque est possible : Supposons que A, B et C sont trois personnes qui utilise le mme cryptosystme clef publique. Chaque utilisateur A, B ou C a une clef 1 publique f x et une clef prive f x o X = A, B ou C. La personne A envoie un message B avec le protocole prcdent : f B(f A(M)) = M1. Supposons que la personne C arrive rcuprer ce message avant quil arrive la personne B. C utilise le protocole prcdent pour 1 envoyer ce message B prtendant en tre lauteur : f B(f C(M1)) = M2. B reoit le message M2 de C et pense que cest un message lgitime de C, il le dchiffre avec sa clef prive :
-1
f 1B et essaie ensuite de vrifier la signature de C en le dchiffrant avec la clef publique de de C : f C. Le message obtenu est du pur charabia est : f C(f 1B(M2)) = f C(f 1B(f B(f 1C(M1)))) = M1= f B(f -1A(M))
f C(f 1B(M1)) = f C(f 1B(f B(f -1A(M)))) = f C(f -1A(M)) 1 Maintenant, il suffit C de dchiffrer le message avec sa clef prive : f C et la clef publique de A : f A pour avoir :
Mohamed El Marraki 54 12/04/2009
Master IT
f A (f 1C (f C(f -1A(M)))) = M.
Voil! La personne C a le message M qui a t destin B.
0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 5 6 11 14 20 1 5 6 11 14 20 1 5 6 11 14 20 5 + 11 + 14 = 0= 5+6= 32 30 0 11
Figure 7 : Chiffrement par empilement Il y a en fait deux problmes dempilement, lun soluble en temps linaire, lautre soluble en temps exponentiel seulement. Lempilement facile peut-tre transform pour crer un
Mohamed El Marraki
55
12/04/2009
Master IT
empilement difficile. La clef publique est lempilement difficile, qui peut tre facilement utilise pour chiffrer des messages mais qui ne peut pas tre utilise pour dchiffrer des messages. La clef prive est lempilement facile qui donne un moyen simple de dchiffrer les messages. Les personnes qui ne connaissent pas la clef prive sont obliges dessayer de rsoudre le problme dempilement difficile. Cest vrai que la complexit du problme dempilement est exponentiel, mais si la liste des poids est une suite super-croissante, la complexit est seulement linaire, cest--dire facile rsoudre.
Master IT
multiplie toutes les valeurs par un nombre n modulo m. Le modulo (i.e. m) doit tre plus grand que la somme de tous les nombres de la suite, par exemple 105. Le multiplicateur (i.e. n) ne doit pas avoir de facteur en commun avec aucun nombre de la suite, par exemple 31. La suite dempilement normale serait : (2 31) mod 105 = 62 (3 31) mod 105 = 93 (6 31) mod 105 = 81 (13 31) mod 105 = 88 (27 31) mod 105 = 102 (52 31) mod 105 = 37 Lempilement difficile est alors { 62, 93, 81, 88, 102, 37}. La suite pour empilement super-croissant est la clef prive. La suite pour empilement normale est la clef publique.
4.4.4 Chiffrement
Pour chiffrer un message binaire, on coupe le message en morceaux de longueur gale au nombre dobjets dans la suite pour empilement. Ensuite, en prenant la convention quun 1 indique que lobjet figure dans le tas et quun 0 indique que lobjet est absent, on calcule le poids total des tas. Par exemple, si le message est 011000110101101110, le chiffrement en utilisant la suite message = 011000 110101 101110
011000 donne 93 + 81 = 174 110101 donne 62 + 93 + 88 + 37 = 280 101110 donne 62 + 81 + 88 + 102 = 333 Le texte chiffr sera alors : 174, 280, 333
4.4.5 Dchiffrement
Celui qui reoit ce message connat la suite super-croissant dorigine, ainsi que les valeurs n et m utilises pour transformer la suite super-croissante en une suite normale. Pour dchiffrer le message, on doit dabord calculer linverse modulaire de n modulo m, cest--dire n-1 tel que n n-1 1 mod m, et ensuite multiplier chaque valeur du texte chiffr par n-1 mod m pour retrouver les valeurs du texte en clair. Pour notre exemple, la suite super-croissante est {2, 3, 6, 13, 27, 52}, m=105 et n=31. Le message chiffr est 174, 280, 333. Dans ce cas, n-1=61 (3161= 1 mod 105) et les valeurs chiffres doivent donc tre multiplies par 61 mod 105 : 174 61 mod 105 = 9 = 3 + 6, ce qui correspond 011000 280 61 mod 105 = 70 = 2 + 3 + 13 + 52, ce qui correspond 110101 333 61 mod 105 = 48 = 2 + 6 + 13 + 27, ce qui correspond 101110. Le texte en clair correspondant est 011000 110101 101110.
Mohamed El Marraki
57
12/04/2009
Master IT
4.4.6 Exemple
On prend la suite {3, 5, 10, 21, 44, 91, 185, 400} qui est super-croissante, et on multiplie toutes les valeurs par le nombre n=19 modulo m=800. Le modulo (i.e. m) doit tre plus grand que la somme de tous les nombres de la suite, ici 800>765. Le multiplicateur (i.e. 19) ne doit pas avoir de facteur en commun avec aucun nombre de la suite. La suite dempilement normale serait : (3 19) mod 800 = 57 (5 19) mod 800 = 95 (10 19) mod 800 = 190 (21 19) mod 800 = 399 (44 19) mod 800 = 36 (91 19) mod 800 = 129 (185 19) mod 800 = 315 (400 19) mod 800 = 400 Lempilement difficile est alors { 57, 95, 190, 399, 36, 129, 315, 400}. La suite pour empilement super-croissant est la clef prive. La suite pour empilement normale est la clef publique.
Chiffrement
Pour chiffrer un message binaire, on coupe le message en morceaux de longueur gale au nombre dobjets dans la suite pour empilement ici cest 8. Ensuite, en prenant la convention quun 1 indique que lobjet figure dans le tas et quun 0 indique que lobjet est absent, on calcule le poids total des tas. Par exemple, si le message est 0100100111001011010110100001011 : message = 01001001 01001001 11001011 00101101 00001011 donne donne donne donne 11001011 00101101 = = = = 531 903 755 751 00001011
Dchiffrement
Celui qui reoit ce message connat la suite super-croissant dorigine, ainsi que les valeurs n et m utilises pour transformer la suite super-croissante en une suite normale. Pour dchiffrer le message, on doit dabord calculer linverse modulaire de n modulo m, cest--dire n-1 tel que n n-1 1 mod m, et ensuite multiplier chaque valeur du texte chiffr par n-1 mod m pour retrouver les valeurs du texte en clair.
Mohamed El Marraki
58
12/04/2009
Master IT
Pour notre exemple, la suite super-croissante est {3, 5, 10, 21, 44, 91, 185, 400}, m=800 et n=19. Le message chiffr est 531, 903, 755, 751. Dans ce cas, n-1 = 379 (19 379 1 mod 800) et les valeurs chiffres doivent donc tre multiplies par 379 mod 800 : 531 379 903 379 755 379 751 379 mod mod mod mod 800 800 800 800 = = = = 449 = 5 + 44 + 400, ce qui correspond 01001001. 637 = 3 + 5 + 44 + 185 + 400, ce qui correspond 11001011. 545 = 10 + 44 + 91 + 400, ce qui correspond 00101101. 629 = 44 + 185 + 400, ce qui correspond 00001011.
01001001
11001011
00101101
00001011.
Mohamed El Marraki
59
12/04/2009
Master IT
On choisit ensuite une clef de chiffrement e telle que e et (p-1)(q-1) soient premiers entre eux. Les nombres n et e forment la clef publique du cryptosystme. Finalement, on utilise lalgorithme dEuclide tendu pour calculer la clef de dchiffrement d telle que : ed 1 mod(p-1)(q-1). En dautres termes d est linverse modulaire de e modulo (p-1)(q-1) : d = e-1 mod(p-1)(q-1) Le nombre d est la clef prive. Les deux nombres premiers p et q ne sont plus ncessaires. Ils peuvent tre carts mais jamais rvls. Grce aux algorithmes probabilistes, on sait engendrer des nombres premiers de plusieurs milliers de chiffres de long en peu de temps ; le calcul de p et q est donc rapide. Trouver e et d est aussi une opration rapide car lalgorithme dEuclide qui permet de calculer ces deux nombres est un algorithme peu difficile excuter. En conclusion, la constitution dun quadruplet (p, q, e, d) est donc une opration rapide pour un ordinateur, mme si lon souhaite que p et q aient quelques milliers de chiffres.
4.5.2 Chiffrement
Pour chiffrer un message M, on le dcoupe en blocs numriques tels que chaque bloc ait une reprsentation unique modulo n (avec des donnes binaires, on choisit la plus grande puissance de 2 infrieur n). Ainsi, si p et q sont tous deux des nombres premiers de 100 chiffres, alors n aura tout juste moins de 200 chiffres et chaque bloc de message mi doit avoir juste moins de 200 chiffres. Le message chiffr C sera constitu de manire similaire de blocs ci d peu prs la mme longueur. La formule de chiffrement est simplement :
m m mod n.
ed
Mohamed El Marraki
60
12/04/2009
Master IT
c = m mod n m
m = c mod n = m mod n m
ed
Dmonstration : e e On a : c = m + k n o k est un entier cest dire n divise c - m . On cherche montrer, sachant que ed = 1 mod (p-1)(q-1), p et q premier, que c = m mod n, cest dire n divise m (m + k n) . On dveloppe c avec la formule du binme de Newton ; tous les termes admettent n comme facteur except le terme (me)d, il suffit donc de montrer que n divise :
d e
d
m (m )d = m m = m m
On veut donc montrer que
ed
1+k(p-1)(q-1)
1 + kpq kq kp + k
(m ) m = m mod p
p
-k p
(m ) = m
On a alors
kq p
kq
mod p et
(m ) = m
-k p
-k
mod p
m (m ) m
kq p
-kq
(m ) m = m m
-k p
kq
-kq
m m mod p = m mod p
-k
dou la dmonstration de (1). De mme : kp q -kp -k q k (2) m (m ) m (m ) m = m mod q or kp q kp -k q -k (m ) = m mod p et (m ) = m mod q On a alors
m (m ) (m ) m
kp q
-k p
-kq
m =mm m m
kp
-k
-kq
m mod q = m mod q
Mohamed El Marraki
61
12/04/2009
Master IT
4.5.5 Rsum
Clef publique : n produit de deux nombres premiers, p et q ( p et q doivent rester secrets). e premier par rapport (p-1)(q-1) Clef prive : d = e-1 mod ((p-1)(q-1)) Chiffrement : c = me mod n Dchiffrement : m = cd mod n.
4.5.6 Exemples
1. On prend p=3, q=11 (deux nombres premiers) donc n = 3 11 = 33. On prend ensuite e = 7 et on cherche d linverse modulaire de 7 modulo 33. Il est facile de voir que d = 3 puisque : 7 3 = 21 1 mod (3-1)(11-1). On a alors : La clef publique : (33, 7) La clef prive : (33, 3) On veut envoyer le message : FERMAT On utilise le codage standard avec 28 chiffres : 01= A, 02 = B, 03 = C, , 26 = Z, 27 =" ,", 28 = "." 29 ="espace". Avec ce codage le message numris est : M = 060518130120 On dcoupe en paquets de 2 chiffres. Pour chiffrer le message on lev la puissance e = 7 modulo 33 chaque paquets, cest dire : 7 06 = 279936 30 mod 33 7 05 = 78125 14 mod 33 7 18 = 612220032 6 mod 33 7 13 = 62748517 7 mod 33 7 01 = 1 1 mod 33 7 7 = 12810 26 mod 33 20 Le message chiffr est : C = 301406070126 En utilisant la clef prive d = 3 pour retrouver le message initial : 3 30 = 27000 06 mod 33 3 14 = 2744 05 mod 33 3 06 = 216 18 mod 33 3 07 = 343 13 mod 33 3 01 = 1 01 mod 33 3 26 = 17576 20 mod 33 On obtient donc le message M = 060518130120, et avec le codage standard prcdent on obtient le message : FERMAT.
Mohamed El Marraki
62
12/04/2009
Master IT
2. On prend p=47, q=79 (deux nombres premiers) donc n = 47 79 = 3713. On prend ensuite e = 37 et on cherche d tel que : e d 1 mod (p-1)(q-1) pgcd(3588,37) = 1 on a : 3588 = 96 37 37 = 1 36 36 = 1 36 i.e. 37 d 1 mod 3588
+ 36 + 1 + 0
On a : 1 = 37 1 36 = 37 1 (3588 96 37) = 37 97 1 3588, donc 37 97 1 mod 3588 donc d = 97. On est en prsence dun cryptosystme clef publique RSA avec : la clef publique : (3713, 37) le clef prive : (3713, 97). On veut envoyer le message : CESSEZ LE FEU. On utilise le codage standard avec 28 chiffres : 00="espace" 01= A, 02 = B, 03 = C, , 26 = Z, 27 =" ,", 28 = !. Avec ce codage le message numris est : M = 0305191905260012050006052100 On dcoupe en paquets de 4 chiffres (on a rajout 00 la fin pour avoir un dernier paquet de 4 chiffres). Pour chiffrer le message on lev la puissance 37 modulo 3713 chaque paquets, cest dire : 37 0305 2496 mod 3713 37 1919 0655 mod 3713 37 0526 2076 mod 3713 37 0012 0965 mod 3713 37 0500 1589 mod 3713 37 0605 2945 mod 3713 37 2100 1882 mod 3713 Le message chiffr est : C = 2496065520760965158929451882 En utilisant la clef prive d = 97 pour retrouver le message initial : 97 2496 0305 mod 3713 97 0655 1919 mod 3713 97 2076 0526 mod 3713 97 0965 0012 mod 3713 97 1589 0500 mod 3713 97 2945 0605 mod 3713 97 1882 2100 mod 3713 On obtient donc le message M = 0305191905260012050006052100, et avec le codage standard prcdent on obtient le message : CESSEZ LE FEU.
Mohamed El Marraki
63
12/04/2009
Master IT
Exercice :
En utilisant le cryptosystme clef publique RSA prcdent (Exemple 1), 1. Soit le message chiffr suivant : C = 290601222703. Trouver le message initial. 2. a) Donner le chiffrement C du message M = ARITHMETIQUE. b) Dchiffrer le message C, pour retrouver le message M.
mod n = M mod n.
Master IT
(Digital Signature Standard). Il est bas sur le principe du chiffrement rsiduel, que lon peu exposer comme suit : Soient A et N deux nombres entiers premiers entre eux, avec N sans facteurs carrs et soit B tel que : AB 1 mod N Le cryptogramme dun message lmentaire M tel que 0MN-1 est alors : M = AM mod N, et lon retrouve M en calculant M" = BM mod N. Dans cette mthode N doit tre connu de tous, A doit tre connu de lexpditeur et B du destinataire. Le problme est quil est trs facile, si lon connat N et A (resp. B), de dterminer B (resp. A) par un simple calcul dinverse modulaire. Il est donc ncessaire que A et B soient secrets, pour que le chiffrement soit sr. Lintrt du schma de ELGamal est donc de proposer une mthode efficace permettant de rendre A (et B) secrets pour qui ne possde pas la clef de dchiffrement, en se basant sur la difficult de calcul dun logarithme discret. En effet il est actuellement impossible, dans un temps raisonnable de dterminer dans certains cas la valeur dun logarithme discret.
La Cryptographie de la thorie la pratique Le chiffrement seffectue par m = am mod p. Le dchiffrement par m" = (1/a) m mod p, avec pgcd(a, p) = 1.
Master IT
Pour chiffrer, il faut dterminer un lment a, premier avec p, qui reste secret aux yeux de tous sauf ceux du destinataire du message. Comme p est un nombre premier, tout nombre entier a, choisi dans lintervalle [1, , p-1], est premier avec p. Soit k un nombre pris au hasard entre 2 et p-2, k peut alors tre considr comme lindice par rapport g, dun lment de Ep. Soit cet lment, on a : = g mod p (logarithme discret). Posons alors
k
a = xk mod p. a est bien premier avec p, et convient donc pour le chiffrement rsiduel. On chiffre alors le message m par : m = m xk mod p. On envoie m ainsi que .
La scurit du chiffrement est assur par le fait que, connaissant et le clef publique, personne ne peut dterminer k, et donc ne peut dchiffrer en calculant : m" = m (1/xk) mod p.
Mohamed El Marraki
66
12/04/2009
Master IT
Lors du chiffrement, on avait = g mod p et m = m x mod p. Avec llvation la s ks s k sk puissance s, on obtient : = g mod p. De plus on a : x = g mod p, donc x = g mod p. On a donc xk = s mod p k s Un inverse de x modulo p sera donc un inverse de modulo p. La connaissance de s, secret, k permet donc de dterminer 1/x . On peut donc dchiffrer par
4.6.6 Exemples
Prenons le nombre premier p = 181. Un gnrateur de E181 = (Z/181Z) est 23. On prend s 7 s=7. On a alors et x = g mod p = 23 mod 181, donc x = 57. On obtient : La clef publique : (181, 23, 57). La clef prive : (181, 7). Suposons que le message chiffrer est une date de naissance : 07 12 90 Chiffrement : Comme p est de longueur 3, il nous faut prendre des blocs de longueur 2 : [ 07, 12, 90 ], qui pour lordinateur devient : [ 7, 12, 90 ]. On prend alors un nombre k au hasard compris entre 2 et p-2, par exemple k = 6, on dtermine alors k 7 = g mod p = 23 mod 181 = 152 mod p. Puis on chiffre chaque lment de ce tableau en multipliant par x mod p = 57 mod 181 : 7 57 mod 181 6 12 57 mod 181 6 90 57 mod 181
6 k 6
Mohamed El Marraki
67
12/04/2009
Master IT
Ce qui donne : [ 146, 121, 93 ], p tant de longueur 3, on rajoute des 0, si ncessaire, afin de navoir que des lments de 3 chiffres. [ 146, 121, 093 ] On envoie alors le message : 146121093, ainsi que : 152. Dchiffrement : On reoit le message prcdent que lon dcompose en bloc de 3 chiffres (car p est longueur s 3), ce qui donne, pour l-ordinateur : [ 146, 121, 93 ]. On calcule alors linverse de mod p = s 176 mod 181, et on obtient 1/ mod p = 36 mod 181 (car 36 176 mod 181 = 1 mod 181). On applique chaque lment a du tableau la formule :
Et on obtient le tableau : [ 7, 12, 90 ]. Il ne reste plus qu complter chaque bloc par des 0, si ncessaire, afin davoir des lments de longueur p-1, cest dire 2. On obtient [ 07, 12, 90 ]. Ce qui correspond bien, aprs concatnation, notre message original : 07 12 90.
Mohamed El Marraki
68
12/04/2009
La Cryptographie de la thorie la pratique Clef prive : s < p. Signature : k choisi alatoirement et premier avec p-1. k (signature) = g mod p. (signature) tel que m = s + k mod (p-1). Vrification : m La signature est valide si x mod p = g mod p.
Master IT
Il faut prendre une nouvelle valeur de k chaque chiffrement et chaque signature, et cette valeur doit tre choisie alatoirement. Si une troisime personne C rcupre une valeur de k que A a utilis, elle peut retrouver la clef prive. Si jamais C rcupre deux messages signes ou chiffrs avec la mme valeur k, elle peut retrouver x.
Exemple :
On prend p =11 et g=2 (on a dj vu que 2 est un gnrateur de E11). La clef prive est s = 8. On calcule : s 8 x = g mod p = 2 mod 11 = 3. La clef publique est : (3, 2, 11) La clef prive est : (8, 11). Pour authentifier M = 5, choisissez dabord un nombre alatoire k=9. On vrifie que pgcd(9, 10)=1. On calcule : k 9 = g mod p = 2 mod 11 = 6 et on utilise lalgorithme dEuclide tendu pour rsoudre : m = (s + k) mod 10 5= (86 + 9) mod 10. La solution est = 3 et la signature est la paire =6 et =3. Pour vrifier la signature :
6 3
Mohamed El Marraki
69
12/04/2009
Master IT
4.7
Exercices
Exercice 1 : 1. Une personne A dsire effectuer des correspondances avec le systme cryptographique empilements ; pour cela il construit une suite de nombres super croissante : 8, 13, 25, 51, 101, 200, ensuite il prend d = 19 et n = 420 pour fabriquer une clef publique. a. Calculer linverse de d modulo n. b. Donner les clefs publiques/prives de A. 2. Une personne B dsire envoyer le message M = 101001101110100011 A. a. Donner le message C que B doit envoyer. b. Dchiffrer le message C que A reu et retrouver le message initial M. Dans les exercices 3 et 4 suivants on utilisera le codage standard de lalphabet : A = 01, B = 02, C = 03, , Z = 26. Exercice 2 : Deux personnes A et B effectuent leur correspondance par la mthode RSA avec pour : A: Clef publique : n=33 et e=3 Clef prive : p=3, q=11 et d.
B:
On dsire effectuer une correspondance entre A et B qui assure lauthentification du message dans les deux sens (A est sr que cest B qui a reu le message et B est sr que cest A qui lui a envoy le message). 1- Calculer d et d et vrifier que les clefs publiques/prives RSA de A et B sont bien des clefs publiques/prives du schma RSA. 2- Expliquer la mthode que A doit utiliser pour envoyer un message M pour B, et celle que B doit utiliser pour recevoir ce message (indication : utiliser un schma). 3- Effectuer le chiffrement du message CLEF , et donner le code C que A doit envoyer B. 4- Effectuer le dchiffrement et retrouver le message CLEF que B doit recevoir. Exercice 3 : 1. Soit le message M = CLEF, on dsire coder le message M par la mthode ELGamal avec : Clef publique : p=47, g=23, x = ? et k=3 Clef prive : p=47 et s=5. a. Calculer x et vrifier que les clefs prcdentes sont bien des clefs publiques/prives dElGamal. b. Chiffrer le message M (donner le message cod C et ) 2. On dsire vrifier quon obtient bien le message initial en dchiffrant le message C , pour cela : Mohamed El Marraki 70 12/04/2009
La Cryptographie de la thorie la pratique a. Calculer linverse modulaire de . b. Dchiffrer le message C et retrouver le message initial M.
s
Master IT
Exercice 4 : 1- Soit le systme RSA suivant : n=119=717, p=7, q=17 et e=11. a- Trouver d (lexposant qui permet de dcrypter). b- Donner la clef publique et la clef prive de ce systme, vrifier quil sagit bien, dun systme RSA. c- Cod le message M=2 par ce systme. On obtient le message cod C. d- Dcod le message C obtenu en 1.c et retrouver le message M. 2- Soit le systme ELGamal suivant : p=31 et g=3. On prend s=7. a- Donner la clef publique et la clef prive de ce systme, vrifier quil sagit bien dun systme ELGamal. b- On prend k=6, calculer . Ensuite cod le message M=4 avec ce systme. On obtient le message cod C. s c- Calculer linverse modulaire de . Ensuite dcod le message C obtenu en 2.b et retrouv le message M.
Mohamed El Marraki
71
12/04/2009
Master IT
y2+a1xy+a3y = x3+a2x2+a4x+a6
Pour leur usage en cryptographie, a1, a2 et a3 doivent tre gaux 0. Comme les cryptographes ont l'habitude de renommer a4=a et a6=b, on obtient E(a,b):
y2 = x3 + ax + b 4.8.2 Dfinition
On appelle courbe elliptique E(a,b) sur R toute courbe plane d'quation y2=x3+ax+b, o le discriminant -(4a3+27b2) de x3+ax+b est non nul, afin d'viter que ce polynme ait des racines multiples. On rajoute cette courbe un point l'infini not O.
Exemple
Un exemple typique de courbe elliptique E(-5,3) (discriminant=2570) est donn sur la figure ci-dessous. Son quation est y
2
= x3 - 5x + 3.
Mohamed El Marraki
72
12/04/2009
Master IT
La droite coupe la courbe en un 3me point de coordonnes (x,y) (on dmontre qu'il y a au plus 3 points d'intersection entre une droite et la courbe). Le symtrique de ce 3me point par rapport l'axe des abscisses (x,-y) est lui aussi sur la courbe et on le dsigne par A+B pour signifier qu'il est construit l'aide de A et B. La droite ne coupe la courbe qu'en A et B. Ceci n'est possible que si (AB) est parallle l'axe des ordonnes. On dfinit alors A+B=O (point l'infini). La chose surprenante est que cette opration "+" possde toutes les proprits de l'addition des nombres. C'est--dire que l'on peut faire tous les calculs de type addition, soustraction et division avec un reste entier que nous faisons sur la droite des nombres rels sur cet objet tordu que constitue une courbe elliptique. On peut montrer que cette addition est associative, c'est dire que (A+B)+C=A+(B+C) et que, par consquent, on obtient un groupe commutatif. Rsumons les rgles: 1) -A est le symtrique de A par rapport Ox. 2) Si A -B (c'est dire qu'ils n'ont pas la mme abscisse), alors A+B=C, conformment au dessin. 3) Si A = B, l'on prend la tangente pour trouver C puis C. 4) Si A = -B, alors A + B = O (car O est l'lment neutre du groupe). 5) Si A = O, alors C = B car la droite (OA) recoupe la courbe en -B.
Rgles de l'addition
Soit la courbe elliptique cryptographique E(a,b,p) : y2 mod p = (x3 + ax + b) mod p. On reconnat l'quation dj vue ci-dessus, sauf que lon travaille modulo p. Le nombre p doit tre un nombre premier. Lors des calculs, il arrive parfois que l'on doive faire une division par 0. Quand cela arrive, le point rsultat sera appel "infini". 1. infini + infini = infini
2. (x1,y1) + infini = (x1,y1) 3. (x1,y1) + (x1,-y1) = infini 4. Si x1 x2, (x1,y1)+(x2,y2)=(x3,y3), avec x3=(k2-x1-x2)mod p, y3 = (k(x1-x3)-y1) mod p o k = (y2-y1)(x2-x1)-1 mod p 5. Si y1 0, (x1,y1) + (x1,y1) = 2(x1,y1) = (x3,y3), avec x3 = (k2-2x1) mod p et y3 = (k(x1-x3)-y1) mod p o k = (3x12+a)(2y1)-1 mod p On remarque que pour calculer k, on doit trouver l'inverse d'un nombre modulo p. Pour trouver cet inverse, on utilise lalgorithme dEuclide tendu. Il est possible, comme l'ont dmontr Miller et Koblitz, de coder avec cette opration bizarre au lieu de travailler avec l'addition usuelle. Il en rsulte une plus grande complexit des calculs qui fait dire aux spcialistes que le chiffrement par la mthode des courbes elliptiques avec une clef de 192 bits assure le mme niveau de scurit qu'une clef de 1024 bits pour la mthode RSA. Il est donc probable que cette mthode sera de plus en plus utilise pour transmettre les clefs.
Mohamed El Marraki
73
12/04/2009
Master IT
Exemple: comment additionner deux points dune courbe elliptique sur Z/23Z?
Considrons la courbe elliptique E(7,2,23) d'quation:
y2 = x3 + 7x + 2 mod 23
Les points A(7,7) et B(9, 14) appartiennent E(7,2,23) car : 72=3 mod 23 et 73+77+2=3 mod 23, donc Le point A(7,7) E(7,2,23) 142=12 mod 23 et 93+79+2=12 mod 23, donc Le point B(9,14) E(7,2,23). On pose C = A + B. Appliquons les formules donnes plus haut: k=(7-14)(7-9)-1=-7(-2)-1=1611=15 mod 23, car 2111=1 mod 23 (algorithme d' Euclide tendu). De plus, xC=k2xAxB=225-7-9=2 mod 23, yC=k(xA-xC)-yA=155-7= 22 mod 23, donc C(2, 22). Vrifions que ce point appartient bien E(7,2,23) : 2221 mod 23 et 23+72+2=1 mod 23, donc C E(7,2,23).
Algorithme: Tout d'abord, on a : n=E[(ln k)/(ln 2)], avec E(x) la partie entire
de x. Ensuite, on calcule le reste r de la division euclidienne de k par 2n. On a donc k=2n+r. On calcule le quotient q et le reste r' de la division de r par 2n-1, et si q=1, on a : k = 2n + 2n-1 + r', et ainsi de suite jusqu' n = 0. Ensuite, on calcule distinctement a20P, b21P, ..., c2nP, et l'on ajoute les points obtenus pour trouver kP. Exercice : calculer 5A avec A(79, 69) sur E(5, 3, 211).
Mohamed El Marraki
74
12/04/2009
Master IT
4.8.7 Scurit
Si Chihab a espionn leurs changes, elle connat E(a,b,p), P, dAP et dBP. Pour pouvoir calculer dAdBP, il faut pouvoir calculer dA connaissant P et dAP. C'est ce que l'on appelle rsoudre le logarithme discret sur une courbe elliptique. Or, actuellement, si les nombres sont suffisamment grands, on ne connat pas de mthode efficace pour rsoudre ce problme en un temps raisonnable.
4.8.8 Inconvnients
La thorie des fonctions elliptiques est complexe, et encore relativement rcente. Il n'est pas exclu que des trappes permettent de contourner le problme du logarithme discret. La technologie de cryptographie par courbe elliptique a fait l'objet du dpt de nombreux brevets travers le monde. Cela peut rendre son utilisation trs coteuse!
Mohamed El Marraki
75
12/04/2009
Master IT
On en dduit que la mthode d'Eratostne, pour factoriser un nombre de 100 chiffres produit de deux nombres de 50 chiffres, ncessiterait plus de:
1050 * 0,921 / ln(1050) = 8.1047 oprations
A raison de mille divisions par nanoseconde sur un super ordinateur hyperparallle, quantique et extra-terrestre, il faudrait donc la bagatelle de 2.1028 annes, ce qui est bien plus que l'ge de l'univers (mme en prenant une bonne marge suite aux querelles des cosmologistes).
Pourquoi a marche?
Nous aurons besoin de deux rsultats admis: Tout d'abord, le thorme de Lagrange, lorsque l'on additionne un lment autant de fois qu'il y a d'lments dans le groupe, on obtient
Mohamed El Marraki
76
12/04/2009
Master IT
l'lment neutre (en notation additive, c'est dire 0). Autrement dit, pour tout lment P d'un groupe fini G:
Card(G)P = 0
Nous pouvons facilement vrifier ce rsultat : prenons E'(1,-1,5), on a Card(E')=9 (il y a huit lments, et on ajoute O), prenons P(2,2) et calculons 9P=8P+P=(2,3)+(2,2) =O, car ces points ont la mme abscisse. Nous avons aussi besoin de la relation entre E(a,b,n) et E'(a,b,p) o p est un diviseur premier de n: on constate facilement que si (X,Y) est un point de E, alors (X mod p,Y mod p) est un point de E'. Par exemple, (27,23) E(1,-1,35) et (2,3) E'(1,-1,5). En fait, les calculs choue pour k=9 (ils aurait aussi chous pour tout multiples de k) parce que 5 est un diviseur de 35, et que Card(E'(1,-1,5)=9. Pour comprendre pourquoi, faisons le raisonnement suivant : soit P1 E(1,-1,35), si l'on pouvait calculer 9P1 dans E, c'est dire que 9P1 O, alors on pourrait calculer sa projection P2 dans E'(1,-1,5), et elle serait finie (diffrente de O), ce qui est impossible car 9P2=O, d'aprs le thorme de Lagrange. On en dduit qu'il est impossible de calculer kP pour tout P de E.
Dterminer k
Tout le problme est maintenant de dterminer k, qui doit tre un multiple de Card(E'(a,b,p)), que l'on ne connat pas. Pour cela, nous avons besoins du rsultat suivant (admis): p - p + 1 < Card(E') < p + p +1 Cest dire que Card(E') est du mme ordre que p, mais rien ne dit qu'il est premier, d'un point de vue statistique, il admet le plus souvent des facteurs petits. Donc en prenant k comme le produit de tout les nombres premiers jusqu' un nombre B qui dpend de l'ordre de grandeur estim de p, on a de grandes chances que k soit un multiple de Card(E'). Par exemple, pour chercher des facteurs au plus 6 chiffres, on choisit B = 147, et on prend p=27.34.53.72.11.13.17...139. Le plus souvent, cette mthode ne donne pas de rsultats avec la premire courbe : il faut essayer plusieurs valeurs de a et b. Plus B est grand, plus le nombre de courbes essayer est grand. Des donnes statistiques sont rpertories dans le tableau suivant:
Nombre de chiffre de p Valeur de B Nombre de courbes 6 147 10 9 682 24 12 2162 52 15 8318 111 18 23162 251 21 68502 445 23 162730 883 27 295808 1501 30 915922 2591
Performances
Cette mthode a un gros avantage par rapport aux autres: le temps de factorisation ne dpend que trs peu de la taille du nombre factoriser mais entirement de la taille du facteur premier, c'est dire que l'on pourra trouver facilement un facteur de 20 chiffres d'un nombre en comportant 1000. Par contre, le temps de calcul crot trs vite avec la taille du diviseur : on peut actuellement factoriser des nombres comportant un facteur de 30 chiffres dans un temps raisonnable. Le record tant un facteur de 47 chiffres. Cette mthode ne convient pas pour factoriser les clefs des concours RSA de plus de 120 chiffres, pour cela, on utilise une autre mthode: le crible quadratique.
Mohamed El Marraki
77
12/04/2009
Master IT
B) Cas plus gnral Il est vident que cette mthode doit tre amlior, en effet, il n'est pas sr du tout que l'on tombe sur un carr directement, c'est mme trs peu probable pour de grands nombres. Pour comprendre le principe, commenons par un exemple:
Exemple: factoriser n = 2117 Lon commence par choisir certains nombres X proches de n, et l'on factorise les restes de X2 par la division Euclidienne par n: X1 = 65, r1 = 2108 -9 = -32 X2 = 74, r2 = 1242 -875 = -53.7 X3 = 75, r3 = 1391 -726 = -2.3.112 X4 = 79, r4 = 2007 -110 = -2.5.11 X5 = 81, r5 = 210 = 2.3.5.7 X6 = 92, r6 = 2113 -4 = -22 X7 = 99, r7 = 1333 -784 = -24.72 On ralise le produit de certains restes, ajust pour former un carr:
X22. X32. X52 r2.r3.r5 <=> 742.752.812 (2.3.52.7.11)2 <=> 7462 9652 Il n'y a plus qu'a calculer le PGCD de 965 - 746 = 219 et de 2117 pour avoir un diviseur non trivial de n. On trouve 73, et effectivement, 2117 = 73 * 29. En fait, le point majeur de cet exemple est que pour certains nombres, le reste na que de petits facteurs premiers. Nous pouvons maintenant prsenter la mthode gnrale de construction de X et de Y. Soit m = E(n) avec E(x) la partie entire de x, et P(X) = (X + m)2 - n. On a donc: (X + m)2 P(X) [n] On choisit un entier B positif, et on tente de dterminer les entiers s tels que P(s) n'ai que des facteurs premiers petits appartenant une base de factorisation F(B): F(B) = {p premier; p B} De telles valeurs de P (s) sont appeles B-lisses. Il faut maintenant trouver autant de valeurs s que F(B) a d'lments (disons l). On a alors l lments s1, ..., sl tels que P(s1), ... , P(sl) soient B-lisses, et F(B) = {p1, ... , pl}. Pour tout i de {1, ..., l}, comme P(si) est B-lisse, les facteurs premiers de P(si) sont les lments de F(B) dont P(si) s'crit:
Mohamed El Marraki
78
12/04/2009
Master IT
Il faut maintenant chercher un produit de ces lments qui soient un carr, il s'crit donc ( N):
On sait dj que ce produit est congru modulo n un carr, il faut maintenant trouver les valeurs des pour que ce produit soit un carr, c'est dire que les exposants des p soient pairs (ou congrus 0 modulos 2). Il faut donc rsoudre le systme linaire suivant:
Il existe des algorithmes efficaces pour rsoudre des quations linaires sur Z/2Z. Une fois les trouvs, il n'y a plus qu' calculer X2 = P(s1)1... P(sl)l et Y2 = (s1 + m)21... (sl + m)2l pour trouver un diviseur non trivial de n en calculant PGCD(X +- Y, n). Il subsiste encore un problme: comment trouver des valeurs s de manire ce que P(s) soit B-lisse? On dfini pour a un entier C et un intervalle de criblage S de la manire suivante:
S = {-C, -C + 1, ..., 0, ..., C - 1, C}
Ensuite, pour tout s de S, on calcule la valeur P(s), puis successivement, pour chaque p de F(B), on divise P(s) par la plus grande puissance possible de p. Les nombres B-lisses sont ceux pour lesquels il reste 1 ou -1 la fin du processus. Il existe de nombreuses mthodes permettant de rendre tout ceci moins gourmand en calculs, mais elles ne seront pas dveloppes ici. Ce qui a t dit prcdemment est valable pour touts les algorithmes rapides de factorisation (sauf celui utilisant les courbes elliptiques) actuels. La seule chose qui les distinguent est la manire de cribler (dterminer les valeurs s tels que P(s) soit B-lisse: la plus simple, celle expliqu (crible quadratique), les slectionnent autour de n, les autres de manire plus complexe, ce qui les rend plus efficaces.
Mohamed El Marraki
79
12/04/2009
Master IT
La course aux records de factorisation commence avec l'apparition des ordinateurs. Le premier algorithme de factorisation, CFRAC(Continued Fraction), invent en 70 rgne sans partage pendant dix ans. Au dbut des annes 80 apparaissent les mthodes congruences avec QS(Quadratic Sieves, crible quadratique) suivi par un algorithme qui se rvlera plus rapide pour les grands nombres: NFS(Number Field Sieve, crible corps de nombres). Deux variantes existent pour ce dernier: SNFS(S pour Special) est spcialis dans les nombres rk + s avec s petit, ce qui permet d'atteindre de trs grands nombres, mais ne conviens pas pour les clef RSA; l'autre, GNFS(G pour General) convient pour les nombres quelconques. L'ensemble des rsultats suit grossirement la loi de Moore - le doublement tous les dix-huit mois de la puissance des ordinateurs. Source: Dossier Pour La Science n36: L'art du secret, page 63. Peut-on prvoir au bout de combien de temps une clef de taille donne sera factorisable? Effectivement, l'on connat les formules donnant la complexit des algorithmes (elles ne seront pas dtailler ici car trop complexes), c'est dire qui donnent le nombre de calculs ncessaires en fonction de la taille du nombre a factoriser. De plus, la loi empirique de Moore permet d'estimer la puissance des ordinateurs dans les annes venir. La dure (2 mois) mise dernirement pour factoriser un nombre N de 158 chiffres couple la formule permet de dire qu'il faudrait seulement le triple de temps pour factoriser un nombre N2 de taille double. Le problme est que tout ceci ne tient pas compte des moyens techniques ncessaire la factorisation de tels chiffres. En effet, les donnes auxiliaires engendres par les algorithmes demanderaient des espaces de stockage de l'ordre du traoctet, sans compter le temps de calcul consomm par leur lecture. Il est donc en principe trs difficile de faire des prdiction sur la dure de vie d'une clef RSA, tout au plus peut-on conjecturer que la clef actuellement en scurit basse (768 bits) devrait tre factorise dans les dix ans venir. Il est donc ncessaire de suivre de prs les amliorations dans le domaine de la factorisation.
Mohamed El Marraki
80
12/04/2009
Master IT
5.
PGP est un cryptosystme (systme de chiffrement) invent par Philip Zimmermann, un analyste informaticien. Philip Zimmermann a travaill de 1984 1991 sur un programme permettant de faire fonctionner RSA sur des ordinateurs personnels (PGP). Cependant, tant donn que celui-ci utilisait RSA sans l'accord de ses auteurs, cela lui a valu des procs pendant 3 ans, il est donc vendu environ 150$ depuis 1993... Il est trs rapide et sr ce qui le rend quasiment impossible cryptanalyser.
Mohamed El Marraki
81
12/04/2009
Master IT
Chiffrement des fichiers locaux : fonction utilisant IDEA. Gnration de clefs publiques et prives : chaque utilisateur chiffre ses messages l'aide de clefs prives IDEA. Le transfert de clefs lectroniques IDEA utilise le systme RSA; PGP offre donc des mcanismes de gnration de clefs adapts ce systme. La taille des clefs RSA est propose suivant plusieurs niveaux de scurit : 512, 768, 1024 ou 1280 bits. Gestion des clefs : fonction s'assurant de distribuer la clef publique de l'utilisateur aux correspondants qui souhaiteraient lui envoyer des messages chiffrs. Certification de clefs : cette fonction permet d'ajouter un sceau numrique garantissant l'authenticit des clefs publiques. Il s'agit d'une originalit de PGP, qui base sa confiance sur une notion de proximit sociale plutt que sur celle d'autorit centrale de certification. Rvocation, dsactivation, enregistrement de clefs : fonction qui permet de produire des certificats de rvocation.
Mohamed El Marraki
82
12/04/2009