LES GARDIENS DES CLES Partie 6 : Le code RSA Les congruences Congruences On considère la division par un nombre appelé le modulo. Si deux nombres donnent le même reste par une telle division, on dit qu’ils sont congrus pour ce modulo : 23 ÷ 7 = 3 reste 2 37 ÷ 7 = 5 reste 2 alors 23 et 37 sont congrus modulo 7. On écrit : 23 37 mod 7 Dans ce cas, la différence entre ces deux nombres est un multiple du modulo. Ici, 37 – 23 = 14 est un multiple de 7. Exercice : Vérifier que 136 et 2656 sont congrus modulo 12. 136= 12×11 + 4 2656 = 12×221 + 4 Operations sur les congruences La relation de congruence est compatible avec l’addition et la multiplication : a a' mod n Si b b ' mod n et alors et a b a ' b' a b a ' b' Exemple : 23 5 37 40 mod n mod n mod 7 mod 7 et 28= (4×7) + 0 77=(11×7) + 0 and 115=(16×7) + 3 1480=(211×7) + 3 alors then 23 5 37 40 23 5 37 40 mod 7 mod 7 L’indicateur d’Euler La fonction indicatrice d’Euler • Définition On appelle indicateur d’Euler noté φ(n) le nombre d’éléments inversibles pour la multiplication dans Z nZ C’est-à-dire que l’indicateur d’Euler correspond à la quantité de nombres inférieurs à n et premiers avec n. • Remarque : Lorsque p est un nombre premier, φ(p) = p – 1 . • Indicateur d’Euler d’une puissance de nombre premier : Soit p un nombre premier et s >0 un entier, alors on a : s (p ) p s p s 1 p 1 p p s Preuve : Soit m = ps , φ(m) est le nombre d’entiers inférieurs à ps qui ne sont pas divisibles par p. Notons ci-dessous les multiples de p inférieurs ou égaux à ps : p×1 , p×2 , p×3 , p×4 , … , p×ps-1 On dénombre ps-1 nombres. Nous pouvons retirer ces multiples des ps premiers entiers pour obtenir la réponse. Donc φ(ps ) = ps – ps-1 . Une conséquence du Théorème Chinois pour l’indicateur d’Euler Propriété : Si PGCD(p,q)=1 alors φ(p×q) = φ(p) × φ(q) . Exemple : PGCD(12,25)=1 φ(12)= 4 φ(25)= 20 liste : 1, 5, 7, 11 liste : 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23, 24 φ(300) = φ(12×25) = φ(12)×φ(25) = 4×20 = 80 Euler Leonhard Euler (1707-1783) fût un grand mathématicien et physicien suisse. Il fît d’importantes découvertes dans des domaines aussi divers que le calcul infinitésimal et la théorie des graphes. Il introduisit aussi l’essentiel des notations et de la terminologie moderne des mathématiques dans le domaine de l’analyse. Il est aussi reconnu pour ses travaux dans les domaines de la mécanique, de la dynamique des fluides, de l’optique, et de l’astronomie. Euler développa quelques idées de Fermat, et recusa quelques unes de ses conjectures. Les travaux d’Euler dans le domaine de l’arithmétique ont préparé la voie aux travaux à venir de Carl Friedrich Gauss. Propriétés de l’indicateur d’Euler • En utilisant la décomposition en produit de facteurs premiers : Considérons un entier n avec sa décomposition ci-dessous : n Alors ( n) p1 1 1 n 1 p2 2 1 p1 1 p3 3 1 1 p1 1 p2 2 p3 3 ... pk k ... pk k 1 ( p1 1)( p2 1)( p3 1) ... ( pk 1) 1 p2 1 1 p3 ... 1 1 pk Propriétés de l’indicateur d’Euler • En utilisant la décomposition en produit de facteurs premiers : Considérons un entier n avec sa décomposition ci-dessous : n Alors ( n) p1 1 1 n 1 p2 2 1 p1 1 p3 3 1 1 p1 1 p2 2 p3 3 ... pk k ... pk k 1 ( p1 1)( p2 1)( p3 1) ... ( pk 1) 1 p2 1 1 p3 ... 1 1 pk Preuve : La conséquence du Théorème Chinois nous donne : (n ) p1 1 p2 2 p3 3 ... pk k p1 1 p2 2 p3 3 ... pk k p1 1 p2 2 p3 3 ... pk k On peut alors exploiter l’indicateur d’Euler d’une puissance de nombre premier : (n) p1 1 1 p1 1 p2 2 1 p2 1 p3 3 1 p3 1 ... pk k 1 pk 1 • En utilisant la liste des diviseurs : Considérons un entier m>1 , et la liste de ses diviseurs : d 1 , d2 , d 3 , … , dk On a alors : m = φ(d1) + φ(d2) + φ(d3) + … + φ(dk) Preuve : Considérons les nombres 1 , 2 , 3 , 4 , … , m–2 , m–1 , and m listés dans l’ordre numérique de leur PGCD avec m. Considérons un PGCD noté k. Ce nombre k est un diviseur de m. Pour tout entier x on a donc : x m PGCD , 1 k k PGCD x, m k qui est équivalent à x m 1 x m 1 k k m Donc une quantité des nombres 1 , 2 , 3 , 4 , … , m-1 , et m k admettent le nombre k pour PGCD avec m. Alors m km Car les nombres m k m k (d ) dm décrivent tous les diviseurs de m. • Theorème : ordre d’un élément du groupe multiplicatif modulo n. Soit un entier positif m premier avec un entier a. Il existe un entier positif t , appelé ordre de a modulo m, tel que la série des restes modulo m des nombres 1 , a , a2 , a3 , a4 , … , ak , … soit périodique de période t . • Remarque : *Dans ce cas, a génère un sous-groupe multiplicatif modulo m qui contient t éléments. Ceci en raison d’une évidente stabilité, et du fait que l’inverse de a est at-1 . * ( a n 1 modm ) est équivalent à ( t est un diviseur de n ) • Définition : Lorsque a génère l’ensemble du groupe multiplicatif modulo m , on a : t=φ(m) . On dit alors que a est une racine primitive modulo m. Exemples : • m = 13 , φ(13) = 12 a a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 2 4 -5 3 6 -1 -2 -4 5 -3 -6 1 2 4 -5 On obtient t = 12 pour période. Donc 2 est une racine primitive modulo 13. a a2 a3 a4 a5 a6 a7 a8 a9 3 9 1 3 9 1 3 9 1 a10 a11 a12 a13 a14 a15 On obtient t = 3 pour période. (3 n’est donc pas une racine primitive modulo 13) • m = 15 , φ(15) = (3-1)(5-1) = 8 a a2 a3 a4 a5 a6 a7 a8 a9 2 4 8 1 2 4 8 1 2 a10 a11 a12 a13 a14 a15 On obtient t = 4 pour période. (2 n’est donc pas une racine primitive modulo 15) • m = 17 , φ(17) = 16 a a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 2 4 8 -1 -2 -4 -8 1 2 4 8 -1 a13 a14 a15 On obtient t = 8 pour période. (2 n’est donc pas une racine primitive modulo 17 Le Théorème d’Euler Les exemples précédents nous permettent de penser que l’ordre d’un élément est un diviseur de l’indicateur d’Euler. Considérons deux entiers a et m premiers entre eux avec m>0, alors a ( m) 1 modm Preuve: Si t = φ(m) , la propriété est établie. Considérons donc t < φ(m), alors il existe un entier b vérifiant PGCD(b,m)=1, et tel que b ne soit congru modulo m à aucun nombre de la suite 1 , a , a2 , a3 , … , at-2 , at-1 . Les nombres b , ba , ba2 , ba3 , … , bat-2 , bat-1 n’ont aucun diviseur commun avec m. Ils sont incongrus deux à deux ( car bak bal signifierait a k al modm) et ils ne sont congrus avec aucune puissance de a (puiqu’à partir de bak a lavec k et l <t, on aurait bak a t l c’est t l k modm ) . à dire b a Donc φ( m)≥2t. Si φ(m)>2t, on obtient à nouveau t nombres c , ca , ca2 , ca3 , … , cat-2 , cat-1 incongrus deux à deux, incongrus avec les nombres des listes précédentes, et sans aucun diviseur en commun avec m. Puisque φ(m) est fini, ce processus va s’arrêter, et φ(m) est un multiple de t. Le codage RSA Le système de cryptage RSA L’algorithme à clé publique Pour contourner la problématique de la transmission au correspondant de la clé secrête, le principe de l’algorithme à clé publique fut proposé par Diffie et Hellman en 1976: - On peut constituer un annuaire pour tous les correspondants. - N’importe qui peut envoyer un message à tout correspondant qui est répertorié dans l’annuaire. - Mais ce message peut seulement être décodé par le vrai destinataire, qui est le seul à possèder la clé de décryptage. Cet algorithme fût développé par Rivest, Shamir, et Adleman en 1977, under sous l’appelation de système RSA. Principe du système RSA Considérons p et q deux nombres premiers. Choisissons les suffisamment grands pour que n = p×q ne puisse pas être factorisé facilement. On obtient : Pour tout x dans Z Si t tel que p et q ne soient pas diviseurs de x , nZ 1 mod((p 1)(q 1)) alors x t x modn En considérant alors c et d inverses l’un par rapport à l’autre modulo (p-1)(q-1) , on obtient : d Si cd 1 mod((p 1)(q 1)) alors xc x mod pq Comme il est difficile de factoriser n, on ne peut pas obtenir (p-1)(q-1) et donc l’inverse d de c modulo (p-1)(q-1) reste inconnu du public Nous disposons donc d’un algorithme de cryptage à clé publique (n,c) : 1) On découpe le message en blocs d’une longueur qui prend en compte la valeur de n. 2) On élève chaque bloc à la puissance c modulo n. 3) Seule la personne supposée recevoir le message (qui est enregistrée dans l’annuaire avec la clé publique c) connait la clé privée d. Cette personne est la seule à pouvoir décoder le message. Preuve Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q. Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq pour tout entier a tel que a et pq soient premiers entre eux. Preuve Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q. Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq pour tout entier a tel que a et pq soient premiers entre eux. k Alors pour tout entier k : a ( pq ) 1k mod pq a ( p 1)( q 1) k ak( p 1)( q 1) 1 mod pq 1 mod pq Preuve Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q. Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq pour tout entier a tel que a et pq soient premiers entre eux. k Alors pour tout entier k : a ( pq ) 1k mod pq a ( p 1)( q 1) k ak( p 1)( q 1) 1 mod pq 1 mod pq Considérons deux entiers r et s congruents modulo (p-1)(q-1) , alors on a : r s mod(p 1)(q 1) c’est-à-dire qu’il existe k tel que : r – s = k(p-1)(q-1). Et on a alors : a r s 1 mod pq pour tout entier a dont p et q ne sont pas diviseurs. On obtient la propriété : Si PGCD(a, pq) 1 et r s mod(p 1)(q 1) alors a r a s mod pq Preuve Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q. Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq pour tout entier a tel que a et pq soient premiers entre eux. k Alors pour tout entier k : a ( pq ) 1k mod pq a ( p 1)( q 1) k ak( p 1)( q 1) 1 mod pq 1 mod pq Considérons deux entiers r et s congruents modulo (p-1)(q-1) , alors on a : r s mod(p 1)(q 1) c’est-à-dire qu’il existe k tel que : r – s = k(p-1)(q-1). Et on a alors : a r s 1 mod pq pour tout entier a dont p et q ne sont pas diviseurs. On obtient la propriété : Si PGCD(a, pq) 1 et r s mod(p 1)(q 1) alors a r a s mod pq En remplaçant r par k et s par 1 on obtient le principe du code RSA : Exemple Alicia veut fabriquer une clé avec p=17 , q=31 , et n=527. 1) Prouver qu’elle peut choisir c=7. 2) On trouve alors à son adresse dans l’annuaire (527,7). Linda veut envoyer à Alicia le message 472. Calculer le cryptogramme que Linda va envoyer à Alicia. 3) Expliquer comment Alicia va récupérer le message initial. _________________________________________________________ 1) p – 1=16 et q – 1=30 alors (p-1)(q-1)=480 480=25×3×5 PGCD(7;480)=1 alors 7 possède un inverse modulo 480. 7 peut être la clé de cryptage. Utilisons l’algorithme d’Euclide étendu pour obtenir la clé de décryptage : 480=68×7 + 4 1×480 – 68×7 = 4 7 = 1×4 + 3 7=1×(1×480 – 68×7) + 3 69×7 – 480 = 3 4=1×3 + 1 480 – 68×7 = 69×7 – 480 + 1 2×480 – 137×7 = 1 -137×7 = 1 - 2×480 qui montre que – 137 est l’inverse de 7 modulo 480. 7 343 1 mod480 Nous avons : 137 343 mod480 Donc 343 est l’inverse de 7 modulo (p-1)(q-1). (p-1)(q-1)=480. La clé de décryptage est 343. 2) Avant de crypter 472, nous devons vérifier que ce nombre n’est pas un multiple de p=17 ou q=31 : 472 = 23 × 59. Calculons maintnant 4727 modulo n . n = pq = 527 4722 =472×472 = 222784 est congru avec 390 modulo 527. 4723 =390×472 = 184080 est congru avec 157 modulo 527 4724 =157×472 = 74104 est congru avec 324 modulo 527 4725 =324×472 = 152928 est congru avec 98 modulo 527 4726 =98×472 = 46256 est congru avec 407 modulo 527 4727 =407×472 = 192104 est congru avec 276 modulo 527 Le cryptogramme est donc 276. 3) Pour récupérer le message original nous allons devoir calculer 276343 modulo 527. Utilisons une programme informatique pour cela. Nous obtenons finalement que 276343 est congru avec 472 modulo 527.