Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Méthodes de cryptographie Par
Mohamed NAIMI 2010-2011
1
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
1. Arithmétique 1.1 Introduction L’arithmétique ou exactement la théorie des nombres a été depuis longtemps considérée par les mathématiques pures comme un domaine à la fois fascinant et sans grand intérêt. Aujourd’hui, la théorie des nombres est largement utilisée, notamment dans le domaine de la communication et la transmission des informations. La transmission des messages entres ordinateurs nécessite la confidentialité et l’authentification d’où le cryptage (chiffrement) et le décryptage (déchiffrement) des messages transmis. On distinguera deux types de cryptage : le cryptage à clef privée et celui à clef publique ces deux modes de cryptage seront présentés dans la suite. Dans cette partie nous rappelons des notions fondamentales de l’arithmétique des nombres. 1.2 Définitions et notations 1.2.1 Divisibilité On note l’ensemble des entiers naturels par N={0, 1, 2, …} et l’ensemble des entiers relatifs par Z={…, -1, 0, 1, …}. Définition : On dit qu’un entier a divise b et que l’on note par a|b s’il existe un entier k tel que b=k.a. On dit que b est un multiple de a et, a un diviseur de b. Remarque : Tout entier divise 0. On appelle diviseurs d’un entier tous les entiers qui le divisent. Exemple : Les diviseurs de 18 sont : {- 1, -2, -3, -6, -9, -18, 1, 2, 3, 6, 9, 18} 1.2.2 Propriétés : si a | b alors P1 : a | (b + a) P2 : a | (b – a) P3 : a | (m.b + n.a) où m et n sont des entiers relatifs. 1.2.3 Division euclidienne Soit a et b deux entiers naturels, b étant non nul. Il existe un unique couple (q , r) d’entiers tels que : 0 r b a b.q r avec 0 r b On dit que a est le dividende, b est le diviseur, q est le quotient et r le reste dans la division euclidienne de a par b. 1.2.4 Plus Grand Commun Diviseur Définition : Si a et b sont deux entiers relatifs non tous les deux nuls, l’ensemble des diviseurs communs à a et b admet un plus grand élément. On l’appelle le plus Grand Commun Diviseur de a et b et on le note PGCD(a , b). Exemple : PGCD (-24 , 18) = 6 Euclide est le premier à donner un algorithme qui détermine le PGCD de deux entiers a et b. PGCD (a, b) PGCD (a, b) a.b Propriétés Soit a et b deux entiers relatifs non tous les deux nuls : P1 : PGCD(a , b)=PGCD(b, a mod b) P2 : Si 0 b a PGCD(a,b)=PGCD(r,b) où r est le reste de la division euclidienne de a par b. P3 : Si b est un diviseur de positif de a, alors PGCD(a , b)=b 2
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Algorithme PGCD( a, b) Début Si (a mod b =0) Alors Retourner (b) Sinon PGCD (b , a mod b) Fsi Fin Exemple Le calcul du pgcd des entiers 473 et 123 par l’algorithme d’Euclide : 473 = 123 3 + 104 123 = 104 1 + 19 104 = 19 5 + 9 19 = 9 2 + 1 On obtient PGCD(473 , 123) = 1 P1 : Soit a et b deux entiers relatifs non nuls les deux nuls et d un entier naturel : d=PGCD(a , b) si et seulement si a=d .a’ et b=d.b’ avec a’ et b’ entiers premiers entre eux. P2 : Soit a et b deux entiers supérieurs ou égaux à 2. a et b sont dits premiers entre eux si PGCD(a , b) =1. 1.2.5 Plus Petit Commun Multiple Soit a et b deux entiers relatifs non nuls. L’ensemble des multiples communs strictement positifs de a e b admet un plus petit élément m, noté PPCM(a , b) appelé Plus Petit Commun Multiple de a et b. Comment obtenir le PPCM de deux entiers a et b ? On décompose les entiers a et b en facteurs premiers. On effectue le produit des nombre premier de a et b de plus grande puissance. Exemple Le PPCM (435 , 132) 435 = 3 * 5 * 29 132 = 2 * 2 * 3 * 11 = 22 * 3 * 11 PPCM(435 , 132) = 22 * 3 * 5 * 11 * 29 Propriété Si a et b sont deux entiers naturels non nuls, alors PGCD (a, b) PPCM (a, b) a.b 1.2.6 Nombres premiers entre eux Deux entiers (a > 1) et( b > 1) sont dits premiers entre eux si leur PGCD(a , b) = 1. Les nombres a et b ne sont pas nécessairement premiers. Exemple 6 et 11 sont premiers entre eux
1.2.7 Congruence Définition Soient a et b deux entiers. On dit que a et b sont congrus modulo n (n > 1) si n divise (a-b), que l’on note : a≡b (mod n). Quel l’on not par a b (mod n) et (c d (mod n) a b (mod n) Propriétés si a b (mod n) et (c d (mod n) alors
3
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
P1 : a c b d (mod n) P2 : a.c b.d (mod n) P3 : a p b p (mod n) Exponentiation modulaire Soit p ( pk 1 ,...., p0 ) une représentation binaire du nombre p. int Exp(int a , int p[] , int n){ int c=1; for(i=k-1 ; i>0 ; i--){ c=(c*c)% n ; if (p[i]==1) c=c*a ; } return(c) ; }
1.2.8 Théorème de Bezout Soient a et b deux entiers relatifs non nuls. Théorème a et b sont premiers entre eux, si et seulement si, il existe deux entiers x et y tels que a.x + b.y = 1 appelée aussi équation diphantienne. L’algorithme d’Euclide permet aussi de calculer les coefficients de Bezout de a et b (on l’appelle algorithme d’Euclide étendu). Rappelons que si d est le PGCD(a,b), il existe des entiers x et y tels que a.x + b.y = 1. Il suffit de remonter les calculs, en exprimant le PGCD(a,b) en fonction des autres nombres depuis la dernière équation jusqu’à la première. Exemple Soit à résoudre l’équation 71x + 19 y = 1 71 et 19 sont premiers entre eux, il existe, donc, l’équation possède une solution. 71 19 3 14 19 14 1 5 14 5 2 4 5 4 1 1 On remonte depuis la dernière équation. 1 5 4 1 1 5 (14 5 2) 3 5 14 1 3 (19 14) 14 3 19 4 14 1 3 19 4 (71 19 3) 4 71 15 19 Par identification on obtient x = - 4 et y = 15 Algorithme d’Euclide étendu void Euclide_Etendue (int a, int b, int *x, int *y, int *d) { int q, r, s, t, tmp; *x = 1; *y = 0; s = 0; t = 1; while (b > 0) { 4
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
q = a / b; r = a % b; a = b; b = r; tmp = s; s = *x - q * s; *x = tmp; tmp = t; t = *y - q * t; *y = tmp; } *d=a; }
1.2.9 Théorème de Gauss Théorème Soit a et b deux entiers non nuls. Si a divise b.c et si a est premier avec b alors a divise c.
1.2.10 Petit théorème de Fermat Théorème Si p est entier premier et a un entier naturel non divisible par p, alors ap-1-1 est divisible par p. ap-1≡1 ( p) Remarque : a n b n (a b)(a n 1 a n 2b ab n 2 bn 1 ) 1.2.11 Théorème d’Euler On note par (n) le nombre d’éléments ayant un inverse modulo n (c'est-à-dire le nombre d’éléments premiers avec n). La fonction (n) est appelée fonction indicatrice d’Euler. Exemple : (15) 8 c'est-à-dire {1, 2, 4, 7, 8, 11, 13, 14} Si n est premier alors (n) = n-1 Théorème d’Euler Si a est premier avec n alors : a ( n ) 1(n) Remarque : le petit théorème de Fermat est une conséquence (cas particulier) de ce théorème. 1.2.12 Théorème de Wilson Si n est un entier naturel (p-1) ! -1(n) si et seulement si n est premier. Démonstration : Si n est premier alors (n-1) ! -1(n) Si n est non premier, il admet au moins un diviseur d tel que 1< d
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Si k = 2 on a n = 4 et (n-1) = 6 2(4) Si k > 2 on a n-1=2k et k < k+1, on est certain que le double de k se trouve dans la liste. En conclusion, si n n’est pas premier (n-1) ! ne peut pas être congru à -1(n).
1.2.13 Résolution de congruence linéaire ax Théorème : Soit deux entiers a et n tel que PGCD(a , n)=1 et b Z. L’équation ax b(n) admet une unique solution a 1ax a 1b(n) c'est-à-dire x a 1b(n) Exemple Résoudre l’équation 3 x 4(7) Facilement, on remarque que 5 3x 5 4(7) c'est-à-dire 15 x 20(7) ou x 6(7) 1.2.14 Le reste chinois Le théorème du reste chinois traite la résolution de systèmes de congruences. Ce théorème est utilisé en théorie des nombres. Ce théorème a été publié en 1247 par le mathématicien chinois Qin Jiushao, est un résultat concernant les systèmes de congruences. Théorème du reste chinois Soient des entiers n1 , n2 , , nk deux à deux premiers entre eux, alors pour tous entiers: ik
a1 , a2 , , ak , il existe un unique entier x mod n ni et tel que i 1
x a1 (n1 ) x a (n ) 2 2 ... x an (nn )
Une solution de x peut déterminée comme suit : La preuve permettant de construire une solution de ce système, celle-ci est fournie ci-dessous : On détermine M n1 n2 ... nk
M pour i = 1, 2, ..., k. On a donc pgcd(Mi, mi) = 1 et on peut ainsi trouver mi d'après l'identité de Bezout deux entiers ui et vi tel que Miui + mivi = 1. On a alors : u1M1r1 + u2M2r2 + ... + ukMkrk ri(mod mi) pour i = 1, 2, ..., k Par conséquent le nombre x = u1M1r1 + u2M2r2 + ... + ukMkrk est solution du système. De plus si y est une autre solution de celui-ci, alors mi divise x - y pour chaque i = 1, 2, ..., k. Ainsi x y est divisible par M. Le système admet donc une seule solution modulo M. Autrement dit, les solutions du système sont de la forme x = u1M1r1 + u2M2r2 + ... + ukMkrk + nM avec n entier. Posons M i
Exemple historique: Une bande de 17 pirates s'est emparée d'un butin composé de pièces d'or d'égale valeur. Ils décident de se les partager également et de donner le reste au cuisinier chinois. Celui-ci recevrait trois pièces. Mais les pirates se querellent et six d'entre eux sont tués. Le cuisinier 6
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
recevrait alors 4 pièces. Survient alors un naufrage et seuls 6 pirates, le cuisinier et le trésor sont sauvés et le partage laisserait 5 pièces d'or à ce dernier. Quelle est alors la fortune minimale que peut espérer ce dernier s'il décide d'empoisonner le reste des pirates ? Solution x 3 (mod 17) Il s'agit de trouver x positif vérifiant le système x 4 (mod 11) x 5 (mod 6)
D'après le théorème des restes chinois (puisque 17, 11 et 6 sont premiers entre eux deux à deux), les solutions sont de la forme : x = u1×11×6×3 + u2×17×6×4 + u3×17×11×5 + n×17×11×6 ou encore x = 198u1 + 408u2 + 935 u3 + 1122n. Il reste à trouver les ui : On a par division euclidienne : 66 = 3×17 + 15 17 = 1×15 + 2 15 = 7×2 + 1 On en déduit que 1 = 15 - 7×2 et puisque 2 = 17 - 1×15, on a 1 = 15 - 7(17 - 1×15) c'est-à-dire 1 = 8×15 - 7×17. Mais 15 = 66 - 3×17 d'où 1 = 8(66 - 3×17) - 7×17. On obtient pour finir 1 = 8×66 - 31×17 et u1 = 8. De la même manière, on trouve u2 = 4 et u3 = 1. Donc x = 198×8 + 408×4 + 935 + 1122n = 4151 + 1122n. 4151 est donc une solution possible pour notre cuisinier, mais ce n'est pas la plus petite. Il suffit d'effectuer la division de 4151 par 1122 pour trouver comme reste 785 qui est le nombre minimal de pièces que peut obtenir le cuisinier.
7
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2. La Cryptographie 2.1 Introduction Un algorithme de cryptographie est une fonction mathématique utilisée pour chiffrer (crypter) et déchiffrer (décrypter) un message. La qualité de la fonction mathématique de cryptage réside dans sa résistance à toute attaque essayant de trouver la clef qui permet de déchiffrer le message.
2.2 Historique de la cryptographie Polybe, écrivain et historien Grec (env 200-125 av. J.C.) , est à l’origine du premier procédé de chiffrement par substitution. C’est un système basé sur un carré de 25 cases, chaque case contient une lettre alphabétique. On peut l’étendre pour représenter les chiffres. Les algorithmes cryptographiques se divisent en deux classes : les algorithmes à clé secrète (dits symétriques) et les algorithmes à clé publiques (dits asymétriques). 2.3 Algorithme à clés secrètes Dans les algorithmes à clé privée, la clé de chiffrement, est identique à la clé de déchiffrement. Cette clé, unique, doit donc être gardée secrète par son propriétaire. L'inconvénient évident de ce système, est que l'envoyeur et le destinataire du message doivent avoir convenu de la clé avant l'envoi du message. Ils doivent donc disposer d'un canal sûr, pour s'échanger des clés. Ceci pose problème sur Internet où il n'y a pas de canaux sûrs. Un exemple d'un tel algorithme est le très fameux DES (Data Encryption System). C’est un système symétrique qui offre une seule clé pour le chiffrement et le déchiffrement. Cette clé doit rester secrète. Les deux entités communicantes se mettent d’accord sur la clé à utiliser. Problème posé par ce système : P1 : Les clés doivent être distribuées secrètement. C’est difficile de réaliser cette opération par voie de communication. P2 : Si la clé est piratée, les messages échangés ne sont plus confidentiels.
2.4 Cryptage et décryptage affine 2.4.1 Cryptage Pour ce cryptage on utilise une fonction affine modulaire : y = ax + b (n) Le cryptage se fait de manière aisée, en appliquant la formule avec x représentant le code de l’information à crypter : Exemple 1 Soit la fonction affine y = 5x + 12 (26) On considère les codes des caractères alphabétiques ci-dessous : A
B
C
D
E
F
G
H
I
J
K
L
M
0 N 13
1 O 14
2 P 15
3 Q 16
4 R 17
5 S 18
6 T 19
7 U 20
8 V 21
9 W 22
10 X 23
11 Y 24
12 Z 25
On souhaite crypter le mot ALGO avec A a pour code 0 L a pour code 11,
x= 5 0 12(26) 12(26) 12 A sera codée en M. x= 5 11 12(26) 67(26) 15 L sera codée en P. 8
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
G a pour code 6, x 6 5 12(26)=42(26)=16 G sera codée en Q. O a pour code 14, x= 5 14 12(26) 82(26) 4 , O sera codée en E. Le mot ALGO sera donc codé en MPQE.
2.4.2 Décryptage Le décryptage ou décodage se fait de la manière suivante on cherche à calculer g(y) telle que x=g(y)(26). On pend la fonction affine ci-dessus : y = 5x + 12 (26) On cherche à résoudre l’équation 5x – 26y = 1 cette équation a au moins une solution d’après le Théorème de BEZOUT (car 5 et 26 sont premiers entre eux). 26 5 5 1 26 1 5 5 1 5 x 26 y 1 On cherche à résoudre le système d’équations on trouve 5 5 26 1 1 5( x 5) 26( y 1) 0 ou 5( x 5) 26( y 1) 5 et 26 sont premiers entre eux d’après le Théorème de GAUSS on : x+5 = 26k ou x = 26k-5 et y +1 = 5k ou y=5k-1 On sait que x est compris , on prend k=1 car c’est la seule valeur qui vérifie x. x 26 5 21 On multiplie les membres de l’équation affine y=5x+12(26) on obtient : 21y (26 21) x 2112(26) ou 21y 252(26) x x 21 y 18(26) ou x=21y+8(26) c’est la fonction de décodage. Supposons que l’on souhaite décrypter le message MPQE on obtient : M a pour code 12, donc x 2112 8(26) =260(26)=0 le code 0 correspond à A. P a pour code 15, donc x 2115 8(26) =223(26)=11 le code 11 correspond à L. Q a pour code 12, donc x 2116 8(26) =344(26)=6 le code 6 correspond à G. E a pour code 4, donc x 21 4 8(26) =92(26)=14 le code 14 correspond à O. Nous retrouvons le mot ALGO.
Exemple 2 On considère l’équation (E) : 11x – 26y = 1 où x et y désignent deux nombres relatifs. 1. Vérifier que le coupe (-7 ; -3) est solution de le (E). 2. Résoudre alors l’équation (E). 3. En déduire chaque lettre de l’alphabet à un nombre entier comme l’indique le tableau ci-dessous : A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 On code les caractères alphabétiques par la fonction affine : y=11x + 8 (26) donc y sera le code du caractère x. 4. Coder le caractère W 5. Le but de cette question est de déterminer la fonction de décodage (Décryptage) . Montrer que tous nombres entiers relatifs x et j , on a : 11x ≡ j (26) équivalent à x ≡ 19j (26) En déduire un procédé de décodage. Décoder la lettre W. 9
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Solution : 1. On remplace dans l’équation 11x – 26y = 1 (x par -7 et y par -3) on obtient : 11 (7) 26 (3) 77 78 1 donc le couple (-7 ; -3) est une solution de l’équation (E). 2.
3.
4. Le code de lettre W est 22 donc il sera codée par y 11x 8(26) c'est-à-dire par : 11 22 8(26) 250(26) 16 ce qui correspond au caractère Q. Donc W sera codé en Q. 5. 5.1 Soit x et j deux entiers tels que : 11x ≡ j (26) En multipliant les deux membres de l’équation 11x ≡ j (26) par 19 on obtient : 19 (11x) 19 j (26) donc 209 x 19 j (26) ou x 19 j (26) . 5.2
5.3 la fonction x 19( y 8)(26) ou x 19 y 152(26) ou x 19 y 22(26) ou x 19 y 4(26) c’est la fonction de décodage. La lettre W pour code 22 donc x 19 22 4(26) 6 ce qui correspond au caractère G.
10
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5 Algorithme à clé publique Plusieurs algorithmes asymétriques à clé publique existent. Le plus connu est l’algorithme RSA (présenté par Rivest, Shamir et Adleman). Cet algorithme est très utilisé, par exemple dans la navigation dans des sites sécurisés et pour chiffrer les messages échangés à travers les réseaux informatiques. L'algorithme se distingue des autres par sa simplicité d’implémentation et de mise en oeuvre. Il est basé sur les grands nombres premiers. En effet, la factorisation des entiers de plusieurs centaines de chiffres nécessite un nombre immensurable des années de calculs, même sur les ordinateurs les plus puissants et avec les algorithmes les plus sophistiqués.
Texte source
Décryptage
cryptage
Texte source Récepteur
Emetteur
2.5.1 Algorithme RSA Cryptage du message m Etape 1 : Génération de 2 nombres premiers p et q Etape 2 : Calculer n = (p-1).(q-1) Etape 3 : Choisir un entier e premier avec n Etape 4 : Calculer d tel que 1= e.d mod n L’émetteur rend publique le couple (e , n), et garde secret le couple (d , n). Pour chiffrer un message:
c = m^e mod n
Pour décchiffrer un message:
m = c^d mod n
m = message en clair (déchiffré) c = message encrypté (chiffré) (e,n) constitue la clé publique (d,n) constitue la clé privée n est le produit de 2 nombres premiers ^ est l'opération de mise à la puissance (a^b : a puissance b) mod est l'opération de modulo (reste de la division entière)
Créer une paire de clés C'est très simple, mais il ne faut pas choisir n'importe comment e,d et n. Et le calcul de ces trois nombres est tout de même délicat. Voici comment procéder: 11
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
1. Prendre deux nombres premiers p et q (de taille à peu près égale). Calculer n = pq. 2. Prendre un nombre e qui n'a aucun facteur en commun avec (p-1)(q-1). 3. Calculer d tel que ed mod (p-1)(q-1) = 1 Le couple (e,n) constitue la clé publique et (d,n) est la clé privée. Exemple On Commence par créer deux clés: Prenons 2 nombres premiers au hasard: p = 7, q =11 On calcule n = pq = 7 * 11 =77 On doit choisir e au hasard tel que e est premier avec(p-1)(q-1): (p-1)(q-1) = 60 On prend un entier e premier avec 60, on choisit e = 11 On détermine d tel que 11*d mod 77 = 1 On trouve d = 37 L’émetteur dispose de clés e et d nécessaires : La clé publique est (e , n) = (11 , 1073) La clé privée est (d , n) = (37 , 1073) On utilisera le code ASCII pour coder les caractères. Soit le message m= 'DEMAIN 9H GRANDE PLACE BRUXELLES' à crypter. Le message codé en ASCII donne : M = 68697365737832 3948204752417868698076656769668285886976766983 Ensuite, on découpe le message en blocs de taille inférieure à n., on va donc découper notre message en blocs de 3 chiffres: (on peut complèter avec des zéros)
12
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Ensuite on encrypte chacun de ces blocs: (726)71 mod 1073 = 436 (976) 71 mod 1073 = 822 (767) 71 mod 1073 = 825 (900) 71 mod 1073 = 552 Le message encrypté est 436 822 825 552. On peut le décrypter avec d: 4361079 mod 1073 = 726 8221079 mod 1073 = 976 8251079 mod 1073 = 767 5521079 mod 1073 = 900 C'est à dire la suite de chiffre 726976767900. On retrouve notre message en clair 72 69 76 76 79 : 'HELLO'. Dans la pratique Dans la pratique, ce n'est pas si simple à programmer:
Il faut trouver de grands nombres premiers (ça peut être très long à calculer) Il faut obtenir des nombres premiers p et q réellement aléatoires (ce qui est loin d'être évident). On n'utilise pas de blocs aussi petits que dans l'exemple ci-dessus: il faut être capable de calculer des puissances et des modulos sur de très grands nombres.
En fait, on utilise jamais les algorithmes asymétriques pour chiffrer toutes les données, car ils sont trop longs à calculer : on chiffre les données avec un simple algorithme symétrique dont la clé est tirée au hasard, et c'est cette clé qu'on chiffre avec un algorithme asymétrique comme le RSA.
13
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
P.G.P. Si vous voulez encrypter vos fichiers, je vous recommande l'excellent logiciel PGP (Pretty Good Privacy) ou gpg (GNU Privacy Guard). D'autres algorithmes, d'autres programmes... Il existe d'autres algorithmes asymétriques, dont l'ECC (Elliptic Curve Cryptosystems, Encryptage par Courbe Elliptique). Ce système est basé sur une courbe paramétrique qui passe par un certain nombre de points de coordonnées entières. Ce n'est pas encore très développé, mais il est prometteur. Il existe également la méthode Diffie-Hellman, de plus en plus préférée à RSA. (DiffieHellman avait rapidement été adopté par la communauté open source quand RSA n'était pas encore dans le domaine public). Problème : Alice et Bob souhaitent se mettre d’accord sur une clef pour chiffrer les messages échangés. Nous sommes en présence de canaux de communication non sécurisés, c'est-à-dire une autre personne peut accéder aux messages cryptés. Méthode Alice et Bob choisissent un groupe et un générateur g . Alice choisit un nombre a et calcule ga(p) il transmet à Bob a , g , et ga(p) Bob choisit un nombre b et calcule gb(p) qu’il transmet à Alice. Alice calcule (gb(p)a) (p) , et Bob calcule (ga(p))a (p). Pour les autres personnes autres que Alice et Bon c’est difficile de déterminer a et b (c’est le problème du logarithme discret).
Alice a,g,p A=ga (p) K=Ba(p)
g , p, A B
Bob b, g , p B=gb(p) K=Ab (p)
14
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.2 Application du théorème du reste chinois à la cryptographie RSA Génération des clés 1) 2) 3) 4) 5)
Choisir deux nombres premiers très grands p et q. Calculer ( N ) ( p 1) (q 1) Choisir deux entiers dp et dq tels que PGCD(dp , p-1 )=1 et PGCD(dq , q-1)=1 Calculer d≡ dp ( p-1) et d≡ dq ( q-1) Calculer e≡d-1 ( ( N ) )
La clé publique est (N , e) et la clé privée est (dp , dq) Exemple : Calculer les clés publique et privée des nombres premiers 7 et 11. On effectue les étapes ci-dessous : 1) Calculer N 7 11 77 et ( N ) ( p 1) (q 1) 60 2) On choisit : dp = 5 (PGCD(dp , p-1)=PGCD(5 , 6)=1 et dq = 3 (PGCD(dq , q-1)=PGCD(3 , 10)=1. 3) On ne peut pas appliquer le théorème chinois car PGCD(6 , 10) ≠ 1 . Mais on peut effectuer des transformation afin d’obtenir un système de congruences. d p 1 6 2( ) d p 5(6) d p 1 4(6) x 2(3) 2 2 1 x2 1(5) d q 3(10) d q 1 2(10) d q 1 1(10 ) 2 2 x1 2(3) on le résout par le Théorème chinois x2 1(5) M 3 5 15
M1
15 15 5 et M 2 3 3 5
5 y1 1(3) y1 2 3 y2 1(5) y2 2
Donc, on obtient x 2 5 2 1 3 2 26(15) 11(15) et d 2 x 1 23 4) On détermine e tel que e d 1( ( N )) 1(60) on trouve e=47 Exemple Soit M=5 est le message à transmettre Cryptage :
C=Me (N) = 55 (77)=3
Décryptage: M=Mp(p) =Cd(p) et M=Mq(q) =Cd(q)
15
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.3 Résidus et non résidus quadratiques La notion du résidu qudratique apparaît dans un mémoire d'Euler de 1754-1755 Définition un entier a est dit résidus quadratique modulo n si et seulemnt si a est un carré dans / n , sinon il est dit non résidu quadratique. Notation 0 si q divise q p 1 si p est un résidu quadratique de q q 1 si p n'est pas un résidu quadratique de q Exemple Les entiers qui sont résidus quadratiques modulo 17 sont : 12 (16) 2 1(17) 22 (15)2 4(17) 32 (14)2 9(17) 42 (13)2 1(17) 52 (12) 2 8(17) 62 (11)2 2(17) 7 2 (10)2 15(17) 82 (9) 2 13(17) Ainsi, les nombres {0 , 1 , 2 , 4 , 8 , 9 , 13 , 15 } sont des résidus quadratiques modulo 17 et les nombres {3 , 5 , 6 , 7 , 10 , 11 , 12 , 14 , 16 } ne le sont pas. Le calcul des résidus quadratiques utilisant une table est très simple ; mais il devient fastidieux lorsque n devient très grand. Legendre propose une méthode simple basée sur la loi de la réciprocité quadratique initiée par Euler en 1783 et par Legendre en 1785 et dont la démonstration fut achevée par Gauss en 1801. Depuis plusieurs démonstrations ont été établies. Proposition 1 soit p et q deux nombres premiers impairs et distincts, alors p 1 q 1) ( p 1)( q 1) ( )( ) ( p q q p 2 2 4 d’où la loi de réciprocité quadratique ( 1) ( 1) q p p q Proposition 2 (forme alternative) soit p et q deux nombres premiers distincts et impairs, alors p ( ) si p 1(4) ou q 1(4) p q p q ( ) si p q 3(4) q 2
p 1 2 1 si p 1(8) ou p 7(8) 8 = (1) p 1 si p 3(8) ou p 5(8)
a.b a b . n n n 1 0 Remarque 1 et 0 p p 16
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
29 29 24 6 2 3 3 29 2 Exemple 1 ( 1) ( 1) (1) 1 ( ) 53 53 29 29 29 29 29 3 3 29 53 On sait que 29 1(4) et nous avons et 53 24(29) or 24 22 6 . 53 29 29 24 6 2 3 3 29 2 Nous avons (1) (1) (1) 1 53 29 29 29 29 29 3 3
59 Exemple 2 x 2 59(101) 101 10058 ( ) 59 101 101 42 2 3 7 4 ( 1) . . 101 59 59 59 59 59 59 2
59 1 2 8 ( 1) (1) 59 258 3 59 2 1 4 ( 1) (1) 1 59 3 3 3 658 7 59 3 4 2 2 4 (1) . 1 (1) 59 7 7 7 7 7 59 Finalement, on obtient 1 donc 59 n’est pas un résidus qudratique modulo 101. 101 Autrement dit on ne peut pas trouver un entier x tel que x 2 59(101) .
p Fonction pour déterminer si un nombre p est un résidu quadratique d’un nombre n . n int Legendre(int p , int n){ int a, m , t , k , x , y; a=p%n; m=n; t=1; while (a != 0) { k = m % 8; int zyva = k == 3 || k == 5; while (a % 2 == 0) { a /= 2; if (zyva) t = -t; } int temp = a; a = m; m = temp; x = a % 4, y = m % 4; if (x == 3 && x == y) t = -t; a = a % m; } if (m == 1) return t; else return 0; } 17
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.4 Logarithme discret Soit G un groupe cyclique de cardinal n que l’on note multiplicativement. On appelle g un
18
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Le système de signature El Gamal El Gamal a proposé un système de signature où Alice souhaite signer un document, de telle sorte que Bob puisse vérifier sa signature. Ils se mettenet d’accord sur le groupe G et g, ainsi qu’une fonction de G dans / n . Soit M le message à transmettre que l’on prend comme un élément de [0…n-1]. Alice dispose d’une clé secrète x et publie sa clé publique c’es y=gx. La signature de M qu’lle produit est un couple (a , b), où a G et b , tels que: g m y (a )ab . Pour calculer a et b, Alice commence par choisir un entier k premier avec n, et calcule a=gk. Elle doit ensuite trouver b tel que : g m y ( a ) a b kb x (a) m(n) 1 b k (m x (a ))(n) La vérification de la signature est simple. Bob doit simplement s’assurer que g m y ( a ) a b . g m y ( a ) a b a G et b 2.5.4.2 Algorithme de Pohlig-Hellman pour le calcul du Logarithme discret Exemple Soit un nombre premier p=8101, un générateur de groupe 8101 est a=6 Déterminer x telle que : a x 7531(8101) p=8101 et p-1=8100=223452. On devra résoudre le système x2 x (22 ) 4 x3 x(3 ) x x(52 ) 5 Calcul de x2. x2 est entier modulo 4, nous avons x2=C0 + C1(2). On détermine les coefficients comme suit. x2 C0 C1 (2) 1 0(2) 1 7531 On divise 7531 par a p 1 ( ) 4
C0
p 1 2
4050
7531
1 a
C0 (
p 1) 2
donc C0 =1
1
pour obtenir : 7531(a ) 7531(6751) 8006( p ) C1 (
2025
p 1 ) 4
8006 8006 1 a donc C1 =0 Donc x2 C0 C1 (2) 1 0(2) 1 Calcul de x3. x3 est entier modulo 81, nous avons x3=C0 + C1(3)+ C2 (9)+ C3 (27), on détermine les coefficients comme suit. a
( p 1) 3
2217 , donc C0=2.
y1 M 11 (4) 1 On divise 7531 par a c0 pour obtenir 7531(a 2 ) 6735( p ) , y2 M 21 (81) 64 6735
( p1) 9
1,
y3 M 31 (25) 24 donc C1=0. On divise 6735 par a3c1 , on obtient 6735(a 0 ) 6735( p) , 6735
( p1) 27
2217 , donc C2=2.
( p1) 81
On divise 6735 par a 9c2 , on obtient 6735(a 18 ) 6992( p ) , 6992 5883 , donc C3=1. Finalement, x3=2+0(3)+2(9)+1(27)= 47 Calcul de x5 x5 est entier modulo 25, nous avons x5=C0 + C1(5) on détermine les coefficients comme suit. Nous calculons : a
( p 1) 5
3547, a
2( p 1) 5
356, a
3( p 1) 5
7077 et a
4( p 1) 5
5221 .
19
Méthodes de Cryptographie
7531
p1 5
M. NAIMI
Université de Cergy-Pontoise
5221 , donc C0= 4.
On divise 7531 par a c0 pour obtenir : 7531(a 4 ) 7613( p ) , 7613 Finalement, x5=4 + 2(5))= 14.
( p1) 25
356 , donc C1=2.
Le calcul de x peut se faire par la méthode du reste Chinois. x 1(4) x 47(81) x 14(25) M 4 81 25 8100 8100 M1 2025 4 8100 M2 100 81 8100 M3 324 25 On détermine y1 , y2 et y3
y1 M 11 (4) 1 y2 M 21 (81) 64 y3 M 31 (25) 24 Donc x=1(2025) + 47(100)(64) + 14(324)(24) ≡ 6689(8100)
20
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.4.3 Résolution du logarithme discret par l’algorithme de bébé pas de géant Le problème du logarithme discret peut être décrit comme suit : Soit à trouver le plus petit entier x (s’il existe) telle que a x b(n) où a, b, n . Shank a proposé un algorithme appelé pas de bébé pas de géant qui consiste à trouver la valeur de x en deux étapes. 1) La première étape dite pas de bébé consiste à construite une liste S formée des couples : S {(b, 0), (ba,1),..., (ba s 1 , s 1)(n)} avec s n 2) La deuxième étape dite pas de géant construit une liste T formée des couples : 2 T {(a s ,1), (a 2 s , 2), (a 3 s ,3)..., (a s , s )(n)} 3) Les deux listes S et T sont triées par ordre croissant sur la première composante. On cherche les deux premiers éléments égaux sur les deux listes. Soit ya r a ts ces deux éléments, la solution est définie par x = ts-r. Exemple Soit à résoudre 7 x 14(23) On a s 23 4 , on détermine les deux listes S et T. S={(14 , 0) , (6 , 1) , (19, 2) , (18 , 3)} on trie la liste S selon la première composante : S={(6 , 1) , (14 , 0) , (18,3) , (19 , 2)} T={(9 , 1) , (12 , 2) , (16 , 3) , (6 , 4)} on trie la liste T selon la première composante : T={(6 , 4) , (9 , 1) , (12 , 2) , (16 , 3)} Les deux composantes égales sont : (6 , 1) et (6 , 4) Donc, la solution est : x 4 4 1 15 Remarque : lorsque n est grand, le stockage des valeurs des listes S et T prend beaucoup de place mémoire. Algorithme de Shank /* Programme en C de Résolution de a^x=y(n) */ #include
#include #include #include #include #define N 1000 typedef __int64 Tab[N][4]; __int64 PuissanceModulaire(__int64 a, unsigned __int64 x, __int64 n){ __int64 pm=1, r = 1; while(x > 0){ if((x % 2) == 1){ r=(r*a)%n; } a=(a*a)%n; x=x/2; pm=r; printf("%I64u ",r); } printf("\n"); return (pm); } void Sort(Tab A, int inf , __int64 n){ int i,j,k; __int64 x; for(i=inf; i
21
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
void Shank(Tab S , Tab T , __int64 a , __int64 y , __int64 n){ __int64 s=int(sqrt(n)); __int64 x,p=1; int Trouve=0; /* Baby steps */ for (int r=0; r
22
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.4.3 Résolution de l’équation quadratique modulaire Dans cette partie, nous nous intéressons à la résolution de l’équation quadratique par la méthode de Shank. Considérons l’équation quadratique modulaire : ax 2 bx c 0( p) où p est un nombre premier impair et a et p sont premiers entre eux. ax 2 bx c 0( p) 4a (ax 2 bx c) 0( p) 4a 2 x 2 4abx 4ac 0( p ) 4a 2 x 2 4abx 4ac (b 2 4ac ) (b 2 4ac)( p) 4a 2 x 2 4abx b 2 4ac 4ac (b 2 4ac)( p ) 4a 2 x 2 4abx b 2 (b 2 4ac)( p) est équivalente à (2ax b)2 (b 2 4ac )( p ) On pose y (2ax b) et d=(b-4ac) d’où y 2 d ( p) La résolution de cette équation peut se faire en utilisant la loi de réciprocité quadratique. Proposition (Shank) Soit y une solution de l’équation y 2 d ( p) soit n et k deux entiers tels que p 1 2n.k où n ≥1 et k un entier impair, q un non résidu quadratique modulo p, alors y peut être déterminée par la méthode ci-dessous : 1) Etape 1 2 21 1.1 u 23(2 ) ( p) 1.2 r d k ( p) i
1.3 Chercher i tel que r 2 1( p ) 2) Etape 2 Si i=0 Alors les solutions sont : x t ( p) Sinon u q k (2 t t u( p) r r u 2 ( p) Aller Etape 1. Fsi
ni 1
)
( p)
Exemple 1 Soit à résoudre y 2 7(13) on a d=7 et p=13 p 1 12 22 3 on obtient n=2 et k=3 On calcule les résidus quadratiques : 12 122 1(13) 22 112 4(13) 32 102 9(13) 42 92 3(13) 52 82 12(13) 62 7 2 10(13) Les résidus quadratique sont {1, 3 , 4 , 9 , 10 , 12} et les non résidus quadratiques sont {2, 5, 6 , 7, 8, 11} On prend q=2.
23
Méthodes de Cryptographie
td
1
M. NAIMI ( k 1) 2
( p)
7 2 (13) 10
Université de Cergy-Pontoise
r d k ( p)
i
73 (13) 5
i=0 5(13) i=1 12(13) i=2 1 (13)
u q k (2
n i1
)
( p)
u=2
2
Plusieurs auteurs ont amélioré multiplications.
l’algorithme de Shank afin de réduire le nombre de
2.5.4.4 Algorithmes de Primalité Algorithme de factorisation Rho de Pollard Introduction Le but d’un algorithme de factorisation est de trouver un facteur (premier) en un minimum de temps. Appelons n un nombre composé que nous souhaitons factoriser. Le plus simple des algorithmes consiste simplement à essayer de diviser n par tous les premiers en commençant par 2, jusqu’`a ce que l’on obtienne la factorisation complète. Cette solution “trial division” n’est pas très efficace, notamment si n possède uniquement de grands facteurs premiers. Cette méthode est facilement implémentable mais n’est pas utilisable pour de grands entiers n, sa complexité étant exponentielle. Nous n’allons donc pas nous intéresser à la théorie de cette méthode. Par contre elle sera implémentée afin de comparer les résultats à ceux obtenus avec la méthode Rho de Pollard présentée en 1975. C’est un algorithme heuristique, c’est-à-dire que nous avons une grande probabilité de trouver un facteur, mais même si nous savons que n n’est pas premier, il y a aussi une chance pour que l’algorithme échoue, c’est-à-dire que l’algorithme ne se termine jamais. Nous allons exposer brièvement chacune des étapes de l’algorithme, avant de revenir plus en détails sur leurs propriétés algébriques et la complexité de cet algorithme. Algorithme Soit x0 = 0 1. Déterminer xk à partir de xk-1 où : xk ( xk21 1) mod n 2. Déterminer x2k à partir de x2k-2 où : x2 k ((( x22k 2 1) mod n) 2 1) mod n 3. Déterminer d=PGCD(x2k - xk , n) Si d 1 Alors d est un facteur premier Sinon k=k+1 Fsi Implémentation en C #include long PGCD(long a, long b){ if (a % b == 0) return(b); else return PGCD(b , a%b); } long RhoPollard(long n){ long a=2 , b=2; long d; 24
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
do { a=(((a*a) + 1) % n); b=(((b*b) + 1) % n); b=((b*b) + 1) % n; d=PGCD(a-b,n); printf("d= %d \n",d); if ((d > 1) && (d
xk 0 1 2 5 26
x2k 0 2 26 367 274
PGCD(xk – x2k, n) 527 1 1 1 31
25
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.6 Les courbes elliptiques Introduction En cryptographie, les courbes elliptiques, des objets mathématiques, peuvent être utilisées pour des opérations asymétriques comme des échanges de clés sur un canal non sécurisé ou un chiffrement asymétrique, on parle alors de cryptographie sur les courbes elliptiques ou ECC (de l'acronyme anglais Elliptic curve cryptography). L'usage des courbes elliptiques en cryptographie a été suggéré, de manière indépendante, par Neal Koblitz et Victor Miller en 1985. La résistance d'un système fondé sur les courbes elliptiques repose sur la difficulté de la résolution du logarithme discret, en un temps raisonnable, dans le groupe correspondant à la courbe elliptique. Les développements théoriques sur les courbes étant relativement récents, la cryptographie sur courbe elliptique n'est pas très connue et souffre d'un grand nombre de brevets qui empêchent son développement. Alice et Bob se mettent d'accord (publiquement) sur une courbe elliptique E(a,b,p), c'est-àdire qu'ils choisissent une courbe elliptique y 2 ( p ) ( x 3 ax b)( p) . Ils se mettent aussi d'accord, publiquement, sur un point P situé sur la courbe. Secrètement, Alice choisit un entier dA, et Bob un entier d . Alice envoie à Bob le point dAP, et Bob envoie à Alice dBP. Chacun de leur côté, ils sont capables de calculer dA.(dBP) = (dA.dB)P qui est un point de la courbe, et constitue leur clef secrète commune. Si Eve a espionné leurs échanges, elle connaît E(a, b, p), P, dAP , dBP. Pour pouvoir calculer dA.dBP, il faut pouvoir calculer dA connaissant P et dAP. C'est ce que l'on appelle résoudre le logarithme discret sur une courbe elliptique. Or, actuellement, si les nombres sont suffisamment grands, on ne connaît pas de méthode efficace pour résoudre ce problème en un temps raisonnable. On appelle courbe elliptique sur R, toute courbe plane d’équation y 2 x 3 ax b où l’expression (4a 3 27b 2 ) appelée discriminant est non nul. On ajoute à la courbe un point à l’infini qui sera représenté par .
Q P
P+Q
26
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Prenons deux points deux points distincts de la courbe elliptique, on trace une droite passant les deux points, deux cas peuvent se produire : 1) la droite coupe la courbe en un troisième point, le symétrique de ce point par rapport à l’axe des abscisses est P+Q. 2) la droite ne coupe la courbe elliptique qu’en points P et Q ceci n’est possible que si la droite (PQ) est parallèle à l’axe des ordonnées. On définit alors P+Q= (point à l’infini) Les coordonnées du point P+Q sont définies à partir des coordonnées des points P et Q (P≠Q) comme suit : 2 y2 y1 x3 ( x1 x2 ) x2 x1 2 y2 y1 y3 y1 x x ( x1 x3 ) 2 1 Règles d’addition 1. O + O = O 2. ( x1 , y1 ) O ( x1 , y1 ) 3. ( x1 , y1 ) ( x1 , y1 ) 4. Si x1 x2 (x1 , y1 ) + (x2 , y2 )=(x3 , y3 )
x3 (k 2 x1 x2 )( p ) y3 (k ( x1 x3 ) y1 )( p) k=(y2 -y1 ).(x2 x1 )1 (p) 5. si x1 = x2 Si y1 0 (x1 , y1 ) + (x2 , y2 )=2(x1 , y1 ) =(x3 , y3 ) x3 (k 2 2 x1 )( p) y3 (k ( x1 x3 ) y1 )( p) (3x12 +a) k= (p) 2y1
Exemple Soit la courbe elliptique d’équation y 2 x 3 15 x 9 et un point de la courbe P = (1 , 5), calculer 2P. La tangente au point P est : 3x 2 a 12 15 16 s 1,16 2y 2(5) 10 x ' s 2 2 x (1,16)2 2(1) 0,56 y ' y s( x x ') 5 1, 6(1 0,56) 4, 3 Donc, 2P = (0,56 , -4,3).
27
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Exercice Soit la courbe elliptique d’équation y 2 x 3 x 7 sur F17 y 2 x 3 x 7 sur F17 Calculer P+Q si P=(2 , 0) et Q=(1 , 3) Calculer 2P si P=(1 , 3) Multiplication d'un point par un nombre entier On remplace la multiplication par une série d'additions. Prenons un exemple. Soit la courbe y2 mod 11 = (x3 + x + 2) mod 11. Calculons d·P, avec d=3 et P=(4, 2). On peut vérifier que le point P appartient bien à la courbe elliptique. On peut remplacer 3·P par P + P + P. Calculons d'abord P + P. D'après la règle 5, P + P = (4, 2) + (4, 2) = (8, 4) = 2·P. D'après la règle 4, 2·P + P = (8, 4) + (4, 2) = (2, 10) = 3·P.
Algorithme de calcul de kP sur une courbe elliptique 1- Ecrire k sous forme binaire : k bm 1bm 2 ...b1b0 2- c0 3- Pour im-1 à 0 Faire c2c Si bi=1 Alors cc+P Fsi Fait Exemple : Soit à calculer 79P K=79=1001111 c0 b6=1 c2c+P {c=P} b5=0 c2c {c=2P} b4=0 c2c {c=2(2P)= 4P} b3=1 c2c+P {c= P+2(2(2P))=9P} b2=1 c2c+P {c= P+2(P+2(2(2P)))=19P} b1=1 c2c+P {c=P+2( P+2(P+2(2(2P))))=39P} b0=1 c2c+P {c=P+2(2( P+2(P+2(2(2P)))))=79P}
Théorème de Hasse Si E est une courbe elliptique définie sur un corps finie Fp alors p+1- 2≤ #E(Fp) ≤p+1+2 où #E(Fp) indique le nombre de points dans E(Fp) Exemple 1 : On considère la courbe elleptique E : y 2 x 3 x 1 sur le corps F5. Les points de la courbe sont : { (0 , 1) , (0 , 4) , (2, 1) , (2 , 4) , (3 , 1) , (3 , 4) , (4 , 2) , (4 , 3) , O} Exemple 2 : Soit la courbe elliptique E : y 2 x 3 3 x 8(13) , et deux points P=(9,7) et Q(1,8). Pour calculer P+Q, on détermine : y y 87 1 1 2 1 8 x2 x1 1 9 8 5 y1 x1 7 8.9 65 0
28
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
x3 2 x1 x2 64 9 1 54 2 y3 ( x3 ) 8.2 16 10 P+Q=(9 , 7) + (1 , 8) = (2,10)
Pour calculer P+P = 2P, on détermine : 3 x 2 a 3.9 2 3 246 1 1 2 y1 2.7 14 y1 x1 7 1.9 2 11 x3 2 x1 x2 1 9 9 17 9 y3 ( x3 ) 1.9 11 20 6 +
O
(1,5)
(1,8)
(2,3)
(2,10)
(9,6)
(9,7)
(12,2)
(12,11)
O
O
(1,5)
(1,8)
(2,3)
(2,10)
(9,6)
(9,7)
(12,2)
(12,11)
(1, 5)
(1,5)
(2,10)
O
(1,8)
(9,7)
(2,3)
(12,12)
(12,11)
(9,6)
(9,7)
(1,5)
(12,11)
(2,10)
(2,3)
(2,3)
(1,8)
(9,6)
(12,11)
O
(12,2)
(1,5)
(2,10)
(9,7)
(2,10)
(2,10)
(9,7)
(1,5)
O
(12,2)
(1,8)
(12,11)
(9,6)
(2,3)
(9, 6)
(9,6)
(2,3)
(12,11)
(12,2)
(1,8)
(9,7)
O
(1,5)
(2,10)
(9, 7)
(9,7)
(12,2)
(2,10)
(1,5)
(12,11)
O
(9,6)
(2,3)
(1,8)
(12, 2)
(12,2)
(12,11)
(2,3)
(1,8)
(12,11)
(12,11)
(9,6)
(1, 8)
(1,8)
O
(2,3)
(9,7) (12,2)
(9,6)
(2,10) (9,7)
(9,6) (2,3)
(1,5) (2,10)
(1,8)
O
(12,2)
O (1,5)
E(F13)={(1,5),(1,8) , (2 , 3) , (2 ,10) , (9, 6) , (9 , 7), (12,12), (12, 11) , O}
29
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
2.5.2 Protocoles d’échange de clés de Diffie-Hellmann Alice et Bob souhaitent avoir une clé secrète et, qui sont les seuls à la connaître. On suppose que les canaux de communication ne garantissent aucune sécurité de confidentialité. Le protocole de Diffie-Hellmann permet d’effectuer cet échange dans ces conditions. 1- Alice et Bob choisissent une courbe elliptique définie sur un corps fini Fq tel que le logarithme discret soit difficile à résoudre, et un point P de cette courbe. 2- Alice choisit un entier secret a, calcule Ca=aP et l’envoie à Bob. 3- Bob choisit un entier secret b et calcule Cp=bP et l’envoie à Alice. 4- Alice calcule aCp=abP 5- Bob calcule bCa=baP
2.5.3 Factorisation par courbes elliptiques
L'idée de cet algorithme est due à Lenstra. On suppose que l'on doit factoriser un entier n (donné). On note p un diviseur premier de n (que l'on ne connaît pas!).
Etape 1 : choix d'une courbe elliptique. On choisit a et b tel que 4a3+27b2 soit premier avec n. Si en les prenant au hasard ce n'est pas le cas, c'est encore mieux car pgcd(4a3+27b2,n) donne un diviseur strict de n. Remarquons que, puisque 4a3+27b2 est premier avec n, il est premier avec p et est inversible dans Z/pZ. L'équation y2=x3+ax+b définit une courbe elliptique sur Z/pZ, que nous noterons E(a,b,p) (signalons que, puisqu'on ne connaît pas p, on ne connaît pas cette courbe elliptique). Etape 2 : choix d'un point sur la courbe elliptique. On trouve deux entiers x et y tels que y2=x3+ax+b. En particulier, P(x,y) est un point de la courbe elliptique E(a,b,p). Etape 3 : choix d'un entier auxiliaire. On choisit k un entier pas très grand, mais qui est produit de petits facteurs premiers à des exposants déjà élevés. Etape 4 : calcul sur les courbes elliptiques. On calcule les coordonnées du point kP, en utilisant les formules classiques, les calculs s'effectuant modulo n. Ces calculs font intervenir des divisions, et ceci n'est pas toujours possible modulo n : il faut que le dénominateur d soit premier avec n. Mais ce qu'on espère, c'est que ce n'est pas le cas! En effet, si d n'est pas premier avec n, pgcd(d,n) donne un diviseur premier de n. Si on a pu mener les calculs jusqu'au bout, on recommence à l'étape 1, en changeant de courbe elliptique.
Exemple Soit à factoriser le nombre N=4453. La courbe elliptique choisie est : y 2 x 3 3 x(4453) et un point P=(1, 2) sur cette courbe. Essayons de calculer 6P. On commence par calculer 2P. (3 x 2 3) 3 La tangente à la courbe elliptique au point P=(1 , 2) est 2228(4453) 2y 2 1 Le pgcd(2,4453)=1, donc 2 est inversible modulo 4453 et 2 2227(4453)
On calcule les coordonnées de 2P=(x’ , y’) où x ' s 2 2 x 3340(4453) y'=s(x-x')-y 1669(4453) Calculons 3P = P + 2P. La pente de la tangente est : 30
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
1669 2 1667 746(4453) 3340 1 3339
En effet, le pgcd(3339 , 4453)=1, donc 3339 est inversible modulo 4453. 33391 1483(4453) x '' s 2 2 x ' 1003(4453) y''=s(x'-x'')-y' 610(4453)
Enfin, calculons 6P=3P+3P. Nous remarquons que le dénominateur de la pente est 1220, or le pgcd (1220 , 4453) = 61, donc 1220 n’est pas inversible modulo 4453. C’est ce que nous recherchons, donc nous avons trouvé un facteur 61 de 4453. En effet, on a : 4453 61 73 .
Application au protocole d’échange de Diffie-Hellman. On choisit un groupe E(Fp) et un point P d’ordre n. BOB Choisir un nombre secret Calcule Qa = aP Envoie
0
Qb Calcule aQb
ALICE Choisir un nombre secret 0 < b < n
Calcule Qb = bP Envoie Qa Calcule bQa
Maintenant ALICE et BOB partagent la clé secrète : aQb = abP = bQa Fonction qui calcule l’inverse de a modulo n. int modInverse(int a, int n) { int i = n, v = 0, d = 1; int t,x; while (a>0) { t = i/a; x = a; a = i % x; i = x; x = d; d = v - t*x; v = x; } v =v%n; if (v<0) v = (v+n)%n; return v; }
31
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Formules mathématiques x n 1 1 x x 1 i 0 in n(n 1) i 2 i 1 in 1 n n 1 i 1 i (i 1) in n(n 1)(2n 1) i2 6 i 1 in n 2 (n 1)2 3 i 4 i 1 x ix i (1 x)2 i 0 in (1 x n (n( x 1) 1)) i 1 i x pour q 1 (1 q )2 i 1 in i (n 2) 2 i 2n i 1 2 n! n lim 1 formule de Stirling que l’on peut écrire n ! 2 n ( )n n n e 2 n ( )n e ln(n !) n.ln(n) n ln(n !) n.ln(n) n Ln(a ) log b a où Ln est le logarithme népérien. Ln(b) an lim 0 a>0 n n ! in
i
32
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
REFERENCES
Lewis and Denenberg , Data Structures and Their Algorithms, , Harper Collins, 1991, pp 243-251. Sleator and Tarjan , "Self-adjusting Binary Search Trees", , JACM Volume 32, No 3, July 1985, pp 652-686. Mark Weiss , Data Structure and Algorithm Analysis, , Benjamin Cummins, 1992, pp 119-130. Derick Wood , Data Structures, Algorithms, and Performance, , Addison-Wesley, 1993, pp 367-375 A. V. Aho, J. E. Hopcroft, and J. D. Ullman. Data Structures and Algorithms. Addison-Wesley, 1983. R. Bellman. , On a routing problem , Quarterly of Applied Mathematics, 16(1):87-90, 1958. G. Brassard. , P. Bratley, Algorithmique: conception et analyse, Masson 1987. T. Cormen, C. Leiserson, and R. Rivest. Introduction to Algorithms. McGraw-Hill, 1990. E. Dijkstra. A note on two problems in connexion with graphs. , Numerische Mathematik,1:269-271, 1959. L. R. Ford and D. R. Fulkerson., Flows in networks. , Princeton University Press, 1962. R. Graham and P. Hell. On the history of the minimum spanning tree problem. Annals of the History of Computing, 7(1):43-57, 1985. L.S. Hill, Cryptography in an Algebraic Alphabet, The American Mathematical Monthly, Vol. 36 N°6 (1929) pp. 306-312. J. B. Kruskal. , On the shortest spanning subtree of a graph and the traveling salesman problem. In Proceedings of the American Mathematical Sofiety, volume 7, pages 48-50, 1956. D. Kühl, Design patterns for the implementation of graph algorithms. Master's thesis, Technische Universität Berlin, July 1996. V. Kumar, A. Grama, A. Gupta and G. Karypis, Introduction to Parallel Computing, Design and Analysis of Algorithms, The B.C. Publishing Compagny, Inc, (1994). R. Prim, Shortest connection networks and some generalizations. Bell System Technical Journal, 36:1389-1401, 1957. Y. Saad, Iterative Methods for Sparse Minear System. PWS Publishing Company, 1996. R. E. Tarjan, Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics, 1983. Seymour Parter, The use of linear graphs in Gauss elimination. SIAM Review, 1961 3:119-130. D. Matula, G. Marble, and J. Isaacson , Graph coloring algorithms in Graph Theory and Computing, Academic Press, pp.104-122, 1972. L. R. Ford and D. R. Fulkerson, Maximal flow through a network, Can. Journal of Mathematics 1956 pp.399-404 A. V. Karzanov, Determining the maximal flow in a network by the method of preflows. Sov. Math. Dokl. 1974 Ravindra K. Ahuja and Thomas L. Magnanti and James B. Orlin, Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993. Robert E. Tarjan, Depth first search and linear graph algorithms, SIAM Journal on Computing, 1(2):146-160, 1972 Scott Fortin, The Graph Isomorphism Problem, TR 96-20, Dept. of Computer Science, University of Alberta (1996) Edward Moore, The shortest path through a maze, International Symposium on the Theory of Switching (1959), Harvard University Press E. Nuutila, Efficient transitive closure computation in large digraphs, PhD Thesis, Helsinki University of Technology, 1995. Acta Polytechnica Scandinavica, Mathematics and Computing in Engineering Series, No. 74. A. Goralcikova and V. Koubek, A reduct and closure algorithm for graphs, In Mathematical Foundations of Computer Science, volume 74 of Lecture Notes in Computer Science, pages 301-307. Springer-Verlag, 1979
33
Méthodes de Cryptographie
M. NAIMI
Université de Cergy-Pontoise
Klaus Simon, An Improved Algorithm for Transitive Closure on Acyclic Digraphs, Theoretical Computer Science 58 Automata, Languages and Programming, 376-386, 1986 P. Purdom A Transitive Closure Algorithm BIT, 10, 1970, pp. 76-94. E. Horowitz, S. Shani Fundamentals of Data Structures, Pittman, 1977. D.E. Knuth The Art of Computer Programming, Vols. 1 to 3, Addison-Wesley, Massachusetts, 1973. R.L. Kruse Data Structures and Program Design, Prentice-Hall, Englewood Cliffs, 1984. J.P. Tremblay, P.G. Sorenson, An Introduction to Data Structures with Applications, Second Edition, McGraw-Hill, 1984. G. Brassard and P. Bratley Fundamentals of Algorithms, Prentice Hall, 1996. M. A. Weiss Data Structure and Algorithm Analysis in C, Addison Wesley, 1997. L. Miller, Riemmann’s hypothesis and tests for primality, Journal of Computer and System Sciences, Vol.13, n°3, (1976), pp.300-317. M.O. Rabin, Probabilistic algorithm for testing primality, Journal of Number Theory, Vol.2, (1980), pp. 128-138. H.W. Lenstra, Factoring integers with elliptic curves. Annals of Mathematics, Vol.126, (1987), pp.649-673. J.M. Pollard, A Monte Carlo method for factorization, BIT, Vol. 15, (1975), pp.331-334. J.W.J. Williams, Algorithm 232 (Heapsort), Communication of the ACM, Vol.7, (1964), pp.347-348. M. Naimi , Introduction à la Programmation, Edition Hermés (1994) pages 244 G.R. Perrin, Structures de Données, Polycopié Université de Franche-Comté, (1979). C. 350 B.C.E. Euclid author of the most successful mathematics book “Elements” and proposed his GCD (Greatest Common Divisor) algorithm C. 780-C. 850 Abu Ja’far Mohammed ibn Musa al-Khwarizmi composed the oldest works on arithmetic and algebra, the very name “algorism” derived from his surname. S. Pohlig and M. Hellman, ``An Improved Algorithm for Computing Logarithms over GF(p) and its Cryptographic Significance,'' IEEE Trans. Info. Th., 24(1978), 106-110.
34