2 ARITHMETIQUE ET CODES SECRETS PC Date de création 2005 Cours, Exercices, Auteur (s) de la ressource pédagogique : FACK Hélène © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 2 PREMIER CYCLE Mathématiques Cryptographie ARITHMETIQUE ET CODES SECRETS Hélène FACK Institut National des Sciences appliquées de Lyon © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. Sommaire ARITHMETIQUE ET CODES SECRETS 2 1 INTRODUCTION 3 2 STRUCTURES ALGEBRIQUES 4 2.1 2.2 2.3 3 RELATION D’EQUIVALENCE, STRUCTURE QUOTIENT 3.1 3.2 3.3 3.4 4 4.9 6 8 Définition 8 Classes d’équivalence 8 Ensemble quotient 9 3.3.1 Exemples ..................................................................................................9 Quotient d’un groupe par un sous-groupe 10 CONGRUENCES DANS 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5 Groupes 4 2.1.1 Définition ..................................................................................................4 2.1.2 Exemples et contre exemples ...................................................................4 2.1.3 Sous-groupe .............................................................................................5 Anneaux 6 Corps 7 2.3.1 Exemples et contre exemples ...................................................................7 12 Division euclidienne 12 12 Divisibilité dans 12 Sous-groupes additifs de 13 Congruences dans Opérations sur les « congruences » 13 Application des congruences à la divisibilité 14 Codages de tous les jours utilisant les congruences 14 Cryptographies historiques utilisant les congruences 15 4.8.1 Le cryptage de Vigénère .........................................................................16 Cryptographies actuelles fondées sur les congruences : DES 17 4.9.1 Masque jetable .......................................................................................17 NOMBRES PREMIERS 18 5.1 5.2 5.3 5.4 5.5 5.6 18 18 18 19 20 20 Définition L’ensemble des nombres premiers est infini Crible d’Eratosthène Décomposition en facteurs premiers Diviseurs d’un entier Corps p ENTIERS PREMIERS ENTRE EUX 21 6.1 6.2 21 21 PGCD Entiers premiers entre eux © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. Arithmétique et codes secrets 6.3 6.4 6.5 7 7.3 7.4 8.8 8.9 10 n 26 Théorème (des restes) chinois 26 Théorème de Fermat 27 7.2.1 Démonstration du théorème (cf. une démonstration utilisant l’ordre d’un sous-groupe sur les fiches d’exercices.) .....................................................27 7.2.2 Recherche « statistique » de nombres premiers .....................................28 RSA 28 Technique d’utilisation de RSA 30 SECURITE DES SYSTEMES D’INFORMATION 8.1 8.2 8.3 8.4 8.5 8.6 8.7 9 Algorithme d’Euclide 22 Identité de Bezout 23 6.4.1 Conséquences de l’identité de Bezout ....................................................23 24 Eléments inversibles dans THEOREMES POUR LA CRYPTOGRAPHIE 7.1 7.2 8 1 32 Définitions 32 Techniques 33 Exemple : assurer la confidentialité 33 Exemple : assurer l’authenticité 33 Exemple : assurer l’intégrité par une fonction de hachage 34 Exemple de signature numérique 34 Sécurité et mathématiques 35 8.7.1 Grands nombres premiers ......................................................................35 Attaques de RSA 37 8.8.1 Factorisation de RSA-640 .......................................................................37 La sécurité des cartes bancaires 39 EXERCICES 42 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 42 43 44 45 46 48 49 50 Structures Congruences Applications des congruences : NIR Applications des congruences : Un code correcteur et le code de César Nombres premiers Entiers premiers entre eux Théorème des Fermat / Théorème chinois RSA TEXTES D’EXAMENS 52 10.1 Racines carrées modulaires et chiffrement de Rabin, examen du 17 mai 2005, EURINSA approfondissement « Mathématiques discrètes » 10.2 : Groupes cycliques et chiffrement El Gamal, examen du 25 mai 2005, OT « Mathématiques et Codages » et chiffrement de Hill, examen du 18 10.3 Matrices à coefficients dans 52 53 26 janvier 2006, OT « Mathématiques et Codages » 10.4 RSA, théorème de Fermat et nombres pseudo-premiers, examen du 18 avril 2006, EURINSA approfondissement « Mathématiques discrètes » © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 55 57 1 Arithmétique et codes secrets 2 10.5 Sécurité, factorisation des entiers, examen du 24 janvier 2007, OT « Mathématiques et Codages » 10.6 Groupes cycliques, protocole de Diffie-Helmann, examen du 5 juin 2007, EURINSA approfondissement « Mathématiques discrètes » 10.7 RSA, RSA-CRT utilisé lors de la validation des cartes bancaires, examen du 2 juin 2009, EURINSA approfondissement « Mathématiques et codages » 11 BIBLIOGRAPHIE © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 58 60 62 64 2 Arithmétique et codes secrets 3 1 Introduction Communiquer, c’est-à-dire transmettre des informations est une des caractéristiques des êtres vivants. Plus ces êtres sont évolués et organisés en sociétés, plus cette communication est nécessaire et prend des formes de plus en plus complexes et techniques. On ne sait pas quand est né le langage, système complexe de communication entre les individus. Nous sont restées des traces sous forme de signes et de dessins dans les grottes préhistoriques. L’écriture est plus récente, ainsi que l’utilisation de chiffres pour effectuer des calculs. Les premiers systèmes d’écriture du langage ou des nombres utilisaient beaucoup de symboles (idéogrammes, écriture cunéiforme, chiffres « romains »). L’idée qu’un nombre fini, et très réduit, de symboles suffit à transcrire l’information (par essence infinie) est encore plus récente. L’alphabet (nombre fini de lettres) naît à Ougarit, en Mésopotamie vers le XIIème siècle avant J.C. Nos chiffres « 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 » viennent d’Inde et sont transmis en Occident par les lettrés arabes à la fin du Moyen Âge. A l’ère des ordinateurs, le nombre des symboles utilisés devient le plus petit possible : deux symboles sont utilisés correspondant aux états d’un circuit électrique. Par convention ces symboles sont 0 et 1. Il suffit alors de coder les lettres de l’alphabet et les nombres en suites de 0 et de 1. L’information écrite est ainsi transformée en une longue suite de 0 et de 1. Le traitement de l’information, c’est-à-dire sa transmission, son stockage, sa restitution, la correction des erreurs dues à ces traitements deviennent un travail sur des nombres, et s’appuient sur une branche ancienne des mathématiques : l’arithmétique. Ces besoins récents ont remis l’arithmétique dans l’actualité et justifié la recherche dans cette discipline. Ce cours présente des bases pour comprendre certaines problématiques du traitement de l’information. La notion centrale est celle de congruence. Elle permet d’une part d’expliquer les corrections d’erreurs sur des numéros : numéro ISBN des livres, numéro INSEE, clef numérique des comptes bancaires, détaillées dans ce cours. D’autre part, les congruences sont le fondement des cryptographies, des plus anciennes aux plus récentes, présentées également dans ce cours. Les erreurs dues à la transmission, au stockage ou à la lecture de l’information numérisée sont corrigées par des techniques appelées « codes correcteurs d’erreurs ». Ces algorithmes s’appuient sur l’algèbre linéaire pour les codes les plus simples, et de nouveau sur des congruences (dans des algèbres de polynômes) pour les plus utilisés (cf. exercice 15 § IX.4). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 3 Arithmétique et codes secrets 4 2 STRUCTURES ALGEBRIQUES Dans ce paragraphe on rappelle et complète les notions vues en première année. Les ensembles de « nombres » , , , sont supposés connus avec l’addition et la multiplication habituelles. On rappelle que dans et toute partie non vide et majorée admet un plus grand élément, que dans toute partie non vide et majorée admet une borne supérieure (dans un tel énoncé n’a pas de sens car il n’existe pas de relation d’ordre compatible avec les opérations). 2.1 Groupes 2.1.1 Définition Soit G un ensemble et • une loi de composition interne (c’est-à-dire que si x et y appartiennent à G, alors x • y appartient à G). On dit que (G, • ) est un groupe si la loi • : - est associative, c’est-à-dire : ∀x, y , z ∈ G ( x • y ) • z =x • ( y • z) ; - possède un élément neutre, c’est-à-dire qu’il existe un élément e de G tel que : ∀x ∈ G x • e = e • x = x ; - tout élément possède un symétrique, c ‘est à dire : ∀x ∈ G, ∃x'∈ G x • x' = x'• x = e . Remarques : On montre que e est alors l’unique élément neutre, et que le symétrique de tout élément est unique. Si la loi • est commutative (c’est-à-dire ∀x, y ∈ G, x • y = y • x ), alors on dit que G est un groupe commutatif. Lorsque la loi est notée +, le groupe est dit additif et le symétrique s’appelle opposé ; lorsque la loi est notée multiplicativement, le groupe est dit multiplicatif et le symétrique s’appelle inverse. 2.1.2 Exemples et contre exemples • L’ensemble des entiers relatifs est un groupe commutatif pour l’addition +. • • • L’élément neutre est zéro : 0. Par contre l’ensemble des entiers naturels (positifs ou nul) n’est pas un groupe pour cette loi + : par exemple 1 n’a pas d’opposé. L’ensemble des nombres complexes de module 1 est un groupe commutatif pour la multiplication. Soit= G +∗ × . On munit G de la loi qui correspond à la composition des = ax + b : applications affines : f( a,b) ( x) ( f( a,b) g(c ,d ) )( x)= a(cx + d) + b= acx + ad + b d’où : ( a,b) ∗ (c ,d) = ( ac , ad + b) . En utilisant cette correspondance, on vérifie que (G, ∗ ) est un groupe. De plus, (1,1) ∗ (0,1) = (0,2) et (0,1) ∗ (1,1) = (0,1) . Cette loi n’est donc pas commutative. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 4 Arithmétique et codes secrets 5 Groupes finis La structure d’un groupe fini est entièrement donnée par la table de sa loi de composition. Le nombre d’éléments d’un groupe fini s’appelle l’ordre du groupe. Exemple fondamental : le groupe B L’ensemble formé de deux éléments B = {0,1} muni de la loi + ci-dessous est un groupe commutatif, qui correspond à + 0 1 2 étudié dans la suite : 0 0 1 1 1 0 Attention : dans B, 1+1=0. Ce groupe B (pour Boole) est utilisé en informatique pour coder les deux états possibles d’un bit. La loi + correspond au OU exclusif (=XOR en informatique). En arithmétique, les valeurs 0 et 1 sont les restes dans la division des entiers par 2. Groupe ayant 4 éléments : G = {0,1,2,3} muni de la loi + ci-dessous est un groupe commutatif, noté 4 (cf.IV.4) et s’interprète comme les restes dans la division des entiers par 4. + 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 2.1.3 Sous-groupe Soit (G, • ) un groupe. Une partie G’ de G est un sous-groupe (pour la loi • ) si la loi • induit sur G’ une structure de groupe. Théorème Soit (G, • ) un groupe et G' un sous ensemble de G. G’ est un sousgroupe de G si et seulement si : - G’ est non vide - la loi • est stable dans G’, c’est-à-dire ∀x, y ∈ G' x • y ∈ G' - le symétrique (écrit dans G) de tout élément de G’ est dans G’. On résume ces deux dernières propriétés par ∀x, y ∈ G' x • y −1 ∈ G' Exemples Pour la loi +, et pour n entier,= n { np, p ∈ } est un sous-groupe de . On verra (cf. §IV.3) que tous les sous-groupes additifs de sont de cette forme. En géométrie plane, les isométries forment un groupe pour la composition des applications. Celles qui laissent invariant un rectangle (différent d’un carré) forment un groupe commutatif fini d’ordre quatre. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 5 Arithmétique et codes secrets 6 2.2 Anneaux Définition Un anneau A est un ensemble muni de deux lois de composition internes, reliées par les propriétés suivantes : - A est muni d’une première loi, notée + qui lui donne une structure de groupe commutatif ; - il existe une deuxième loi, notée • , associative et distributive par rapport à + ( ∀x, y , z ∈ A, x • ( y + z) = x • y + x • z ). Si la loi • possède un élément neutre, on dit que A est unitaire. Si la loi commutative, on dit que l’anneau A est commutatif. • est Exemples et contre exemples L’ensemble est un anneau commutatif unitaire, la deuxième loi étant la multiplication habituelle. L’ensemble des matrices réelles carrées d’ordre n (pour n ≥ 2 ) est un anneau unitaire pour l’addition et la multiplication des matrices. Cet anneau n’est pas commutatif : 0 1 0 0 1 0 0 0 0 1 0 0 0 0× 1 0 = 0 0 et 1 0 × 0 0 = . 0 1 On peut munir 0,1,2,3} 4 d’une loi multiplicative leur = B {= 0,1} 2= et G {= donnant une structure d’anneau commutatif unitaire : la multiplication correspond au ET de la logique. Dans B = 2 * 0 1 Dans G = 0 0 0 1 0 1 4 on a la table de multiplication : * 0 1 2 3 0 0 0 0 0 1 0 1 2 3 2 0 2 0 2 3 0 3 2 1 On constate que dans cet anneau : 2 ∗ 2 = 0 ; on dit que 2 est un diviseur de zéro. Un tel élément n’a pas d’inverse : En effet, x est un diviseur de 0 dans un anneau ( A, + , × ) si x est non nul et si il existe x’ dans A, non nul, tel que : x × x' = 0. Si x était inversible, il existerait x ‘’ tel que : x × x" = x"× x = 1 ⇒ x"× x × x' = x"× 0 = 0 ⇒ x' = 0 , ce qui contredit la définition. Le même phénomène se produit dans l’ensemble des matrices réelles carrées d’ordre 0 1 0 1 0 0 × =. 0 0 0 0 0 n: 0 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 6 Arithmétique et codes secrets 7 2.3 Corps Définition Un corps K est un ensemble muni de deux lois de composition internes notées + et • , telles que : - (K, +, • ) est un anneau unitaire. On note K ∗ les éléments de K différents de l’élément neutre (pour la loi +) ; - K ∗ est un groupe pour la loi Si la loi • •. est commutative, on dit que le corps est commutatif 1. Remarques : Un corps contient au moins deux éléments (les éléments neutres des deux lois). Dans un corps tout élément (distinct de l’élément neutre de la loi +) admet un symétrique, alors que ce n’est pas toujours le cas pour un anneau unitaire. 2.3.1 Exemples et contre exemples L’ensemble n’est pas un corps : 2 n’a pas d’inverse pour la multiplication. L’ensemble des matrices réelles carrées d’ordre n (pour n ≥ 2 ), n’est pas un corps. Avec les lois écrites ci-dessus, l’ensemble B = {0,1} est un corps. C’est le plus petit corps possible. La théorie des codes correcteurs d’erreurs utilise des espaces vectoriels de dimension finie sur ce corps B. Cette théorie permet de corriger des erreurs dues à la transmission d’une information, par l’ajout d’éléments redondants. n’est pas un corps car on voit dans la table donnant L’anneau G = {0,1,2,3} = 4 la multiplication que 2 n’a pas d’inverse. Les corps les plus utilisés sont , corps des réels et , corps des complexes. Dans ce cours on utilisera le corps où p est un entier premier (cf. V.6). p Remarque : Dans un corps on peut « simplifier » par tout élément non nul. C’est une structure bien adaptée aux calculs. Ce qui ne signifie pas que toute équation algébrique dans un corps admette des solutions. Ainsi l’équation x 2 + 1 = 0 n’a pas de solution dans . Ceci a conduit à l’introduction de . Z ! Dans le corps B = {0,1} , l’équation x 2 + 1 = 0 admet x = 1 comme solution ! On montre que tout corps fini est commutatif. Donc si un corps est non commutatif, alors il n’est pas fini. 1 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 7 Arithmétique et codes secrets 8 3 Relation d’équivalence, structure quotient 3.1 Définition Soit X un ensemble non vide. Une relation binaire R sur X est une relation d’équivalence si elle est : • réflexive, c’est-à-dire ∀x ∈ X , xRx • symétrique, c’est-à-dire ∀x, y ∈ X , xRy ⇒ yRx • transitive, c’est-à-dire ∀x, y , z ∈ X , xRy et yRz ⇒ xRz La notation habituelle d’une relation d’équivalence est : Exemples Soit X l’ensemble (fini) des élèves inscrits en premier cycle à l’INSA. On peut considérer la relation d’équivalence R suivante : pour les étudiants x et y de X, on a xRy si x et y appartiennent au même groupe {1, 2 ,.....,41 ,.., 201,...}. En géométrie, on relie les couples de points (d’un espace « affine ») aux vecteurs (de l’espace vectoriel associé) par la relation d’équivalence définie sur les bipoints : ( A,B) (C ,D) ⇔ ABDC est un parallélogramme. Cette relation s’appelle l’équipollence. B D A C 3.2 Classes d’équivalence Définition Soit X un ensemble muni d’une relation d’équivalence R. Pour x dans X, la classe d’équivalence de x est l’ensemble de tous les éléments de X équivalents à x. • On la note x . © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 8 Arithmétique et codes secrets 9 En regardant les différentes classes d’équivalence, on obtient une partition de X : si • • • • x, y ∈ X ⇒ x =y ou x ∩ y = ∅. Elèves de l’INSA 2 201 1 Réciproquement, si on donne directement une partition de X on obtient une relation d’équivalence dans X. C’est le cas pour l’ensemble ci-dessus des étudiants inscrits en premier cycle à l’INSA. Cet ensemble est ainsi structuré par la considération des noms des groupes {1, 2 ,.....,41,.., 201,...} au lieu des noms des étudiants. Ce nouvel ensemble {1, 2 ,.....,41,.., 201,...} est celui des classes d’équivalence et s’appelle ensemble quotient par la relation d’équivalence. 3.3 Ensemble quotient Définition Soit X un ensemble muni d’une relation d’équivalence R. L’ensemble quotient de X par R, noté X , est l’ensemble formé par les classes d’équivalence. R 3.3.1 Exemples En géométrie, l’ensemble des bipoints d’un espace affine, muni de l’équipollence a pour ensemble quotient l’espace vectoriel sous jacent. En mécanique, les torseurs s’interprètent comme un espace quotient. On considère dans l’espace affine de la géométrie, des parties de n vecteurs glissants ( Δi , vi )1≤i ≤n où Δi est une droite, Ai un point de cette droite et vi un vecteur dont le support est Δi . On calcule les éléments de réduction en un point O : la résultante R = n ∑ i =1 O) M vi et le moment (en = n ∑ OAi ∧ vi de ce système de n i =1 vecteurs glissants. Avoir les mêmes éléments de réduction en un point est une relation d’équivalence sur les systèmes de n vecteurs glissants. Par définition l’ensemble quotient est l’ensemble des torseurs. On montre que c’est un espace vectoriel de dimension 6 sur . L’avantage qu’on tire de cette définition des torseurs est que, dans les problèmes de mécanique générale, ce qui importe n’est pas la particularité d’un système de vecteurs glissants, mais sa réduction en un point. C’est-à-dire que deux systèmes distincts de vecteurs glissants équivalents, représentant des forces agissant sur un solide, ont le même effet sur le mouvement de ce solide. C’est d’ailleurs pourquoi les forces sont représentées par des vecteurs glissants (qui sont aussi des classes © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 9 Arithmétique et codes secrets 10 d’équivalence associées aux vecteurs liés, la notion de « vecteurs glissants » représente les vecteurs des mathématiciens, définis dans le § ci-dessus) 2. 3.4 Quotient d’un groupe par un sous-groupe Théorème Soit (G,+) un groupe commutatif, H un sous-groupe de G. Alors la relation : x, y ∈ G, x ≡ y ⇔ x − y ∈ H est une relation d’équivalence sur G. De plus, on peut munir l’ensemble quotient noté G H d’une structure de groupe commutatif. Démonstration : la relation ≡ sur G est : • réflexive : x − x = 0 ∈ H ⇒ x ≡ x symétrique : x − y + y − x = 0 ⇒ si ( x − y ) ∈ H , alors − ( x − y ) = y − x ∈ H c’est-à-dire x ≡ y ⇒ y ≡ x • • transitive : si x ≡ y et y ≡ z ⇒ x − y ∈ H et y − z ∈ H ⇒ x − y + y − z = x − z ∈ H ⇒ x ≡ z . La relation ≡ est donc une relation d’équivalence sur G. Elle est de plus « compatible » avec la loi +, c’est-à-dire que : si x ≡ x' ⇒ x − x'∈ H ⇒ ( x + y ) − ( x'+ y ) ∈ H ⇒ x + y ≡ x'+ y , et donc : si x ≡ x' et y ≡ y' ⇒ x + y ≡ x'+ y' . On peut donc choisir n’importe quel élément d’une classe d’équivalence pour calculer des sommes. Ce qui permet de définir une • (nouvelle) loi + sur l’ensemble quotient G • Loi additive + sur G • • • H : • H . On note x, .. les éléments de G H. 3 • Par définition : x + y = x + y . Comme la relation ≡ est compatible avec la loi + de G, • • ce résultat ne dépend pas des représentants choisis pour x ou y . On vérifie alors que G • est un groupe commutatif pour + . H • G H , + s’appelle groupe quotient de G par H. Exemples Les groupes 2 et 4 déjà étudiés sont les groupes quotients correspondant aux sous-groupes 2 et 4 de . Théorème Dans un groupe fini, l’ordre d’un sous-groupe divise l’ordre du groupe. Merci au mécanicien Michel Fayet pour ces précisions. Ces points sur les éléments et opérations des structures quotient deviennent inutiles lorsqu’il n’y a plus de risque de confusion. 2 3 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 10 Arithmétique et codes secrets 11 Ceci est une conséquence de la partition d’un groupe en classes d’équivalence. En effet, en gardant les notations G pour le groupe et H pour le sous-groupe, on considère pour x fixé dans G, l’application : • φ : h ∈ H → φ( h) = x + h ∈ x . • Cette application est une bijection entre H et x , donc il y a le même nombre d’éléments dans H et dans la classe de x. Ceci montre qu’il y a le même nombre d’éléments dans chaque classe d’équivalence, ce nombre étant l’ordre de H. Les classes d’équivalences formant une partition de G, le nombre d’éléments de G est donc un multiple de celui du nombre d’éléments de H. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 11 Arithmétique et codes secrets 4 Congruences dans 12 4.1 Division euclidienne 4 Soient a et b entiers relatifs, avec b ≠ 0 . Alors il existe, des entiers relatifs q (quotient) et r (reste) uniques tels que : a = bq + r , 0 ≤ r < b . Exemples Pour = a 17 = ,b 5 , on a 17 = 5 × 3 + 2 : donc q = 3 et r = 2 . Pour a = −17 ,b = 5 , on a −17 = 5 × ( −4) + 3 : donc q = −4 et r = 3 . Pour a = −15,b = 5 , on a −15 = 5 × ( −3) + 0 : donc q = −3 et r = 0 . Pour a = 17 ,b = −5 , on a 17 = ( −5) × ( −3) + 2 : donc q = −3 et r = 2 . 4.2 Divisibilité dans Lorsque r=0 dans la relation = a bq + r on obtient la notion de divisibilité : Définition : pour a et b entiers relatifs, a est divisible par b, ou a est multiple de b ⇔ ∃q ∈ , a =bq . Par exemple l’entier relatif –15 est divisible par 5. Les entiers relatifs divisant –15 (ses diviseurs) sont : −15, −5, −3,1,3, 5,15 . 4.3 Sous-groupes additifs de Théorème Les sous-groupes additifs de sont tous de la forme n . En effet, on sait déjà que n est un sous-groupe additif de . Soit maintenant G. ( G,+ ) un sous-groupe de ( ,+ ) . On va montrer que : ∃! n ∈ ,n = Si G est réduit à un élément (son élément neutre), alors = G 0} 0 . {= Si G n’est pas réduit à un élément, soit a ∈ G, a ≠ 0 . Alors soit a, soit –a est dans ∗ , et la partie G ∩ ∗ est non vide. Elle admet donc un plus petit élément n. Avec les opérations des groupes, on a : n ⊂ G . Pour obtenir l’inclusion dans l’autre sens, on part de x ∈ G . Par division euclidienne de x par n : x = nq + r , 0 ≤ r < n Donc r, différence de deux éléments de G, est dans G, tout en étant strictement inférieur à n. Ceci n’est possible que si r = 0 , soit x = nq . D’où x est dans n et G ⊂ n , ce qui achève la démonstration. Divisibilité et sous-groupes de Théorème Pour a et b dans , b divise a si et seulement si a ⊂ b . Pour montrer cette équivalence, on revient à la définition de la divisibilité : si b divise a ⇔ ∃q ∈ , a= bq ⇔ a ∈ b ⇔ a ⊂ b . 4 C’est en fait une propriété de admise dans ce cours. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 12 Arithmétique et codes secrets 13 Remarque certaines notions utilisant la divisibilité (PGCD, PPCM, identité de Bezout, cf.§ VI), se démontrent de façon élégante en utilisant ces sous-groupes. Un autre point de vue a été choisi dans ce cours. 4.4 Congruences dans Maintenant que les notions théoriques sont en place, on peut effectuer le quotient du groupe ( , + ) par un sous-groupe n (ce sont ses seuls sous-groupes), avec n entier non nul 5. Cette relation d’équivalence ≡ des groupes quotient s’appelle la congruence modulo n. Définitions équivalentes Soit n un entier non nul, x, y ∈ sont congrus modulo • • n ⇔ x − y ∈ n ⇔ x = y dans n ⇔ x et y ont le même reste dans la division par n. Notations Lorsque x et y sont considérés comme dans , on écrit x ≡ y [ n ] . Lorsque on passe aux classes d’équivalences, on omet le « point » et on écrit : x = y (dans n ). Exemple 1 17 ≡ 2 ≡ −3 [5] Exemple 2 Les solutions dans de l’équation x ≡ 1 1 + 31k , k ∈ . [ 31] sont : x = 4.5 Opérations sur les « congruences » Dans ce §, n est fixé. Ajouter ou multiplier des congruences revient à travailler dans . Cet ensemble est déjà muni d’une structure de groupe commutatif. On définit n une multiplication comme on l’a fait pour l’addition. On a : ( Théorème ) n , + , × est un anneau commutatif unitaire. Exemple 1 : calculer le reste de la division par 7 de ( 2006 ) 2007 . L’idée est de se placer dans On commence 2006 ≡ 4 ⇒ ( 2006 ) par 2007 7 , mais en utilisant les notations des congruences. diviser 2006 par 7: 2006 =× 7 286 + 4 , d’où ≡ 4 2007 [7 ] . Or dans 7 , il n’y a que 7 éléments. On étudie les différentes puissances de 4 : 4 2 ≡ 16 ≡ 2 [7 ] , 4 3 ≡ 2 × 4 ≡ 8 ≡ 1[7 ] . Il suffit maintenant de diviser 2007 par 3 : ( ) 669 ≡ (1)669 ≡ 1[7 ] . 2007 = 3 × 669 et 4 2007 ≡ 4 3×669 ≡ 4 3 Donc le reste de la division par 7 de ( 2006 ) 2007 est 1. Exemple 2: calculer le reste de la division par 7 de ( 2008 ) 2009 . Lorsque n=0, tous les entiers relatifs sont équivalents, la notion n’a donc pas d’intérêt. Dans la suite on prendra n>0. 5 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 13 Arithmétique et codes secrets On commence par diviser 2008 ≡ 6 ≡ −1 [7 ] ⇒ ( 2008 ) 2009 ≡6 2008 2009 par 2009 ≡ ( −1) Donc le reste de la division par 7 de ( 2008 ) 2009 7: 2008 =× 7 286 + 6 , 2008 ≡ ( −1) 14 d’où × ( −1) ≡ −1 ≡ 6 [7 ] . est 6. Remarque : les calculs de division euclidienne ci-dessus s’effectuent avec une petite calculette. Par contre, le calcul direct de ( 2006 ) 2007 ou de ( 2008 ) 2009 n’est pas possible sur une telle machine par dépassement de capacité. Les cryptages utilisent fortement les congruences et de tels calculs d’exponentielles pour de grands nombres. La méthode utilisée dans l’exemple est programmée en informatique sous le nom d’exponentielle rapide. 4.6 Application des congruences à la divisibilité On travaille à partir d’entiers naturels ( ∈ ) écrits en base 10. Les chiffres utilisés sont les entiers de 0 à 9. Les critères de divisibilité par 2, par 5, par 10 sont bien connus : on regarde si le dernier chiffre est divisible par 2 ou 5 (divisibilité par 2 ou 5), ou si le nombre se termine par 0 (divisibilité par 10). Divisibilité par 3 et 9 L’entier A est divisible par 3 (respectivement 9) si et seulement si la somme de ses chiffres est divisible par 3 (respectivement 9). En effet, soit = A ak 10 k + ak −1 10 k −1 + ..... + a= 0 ak ak −1 ........a0 où ak .... sont les chiffres de A. Comme 10 ≡ 1 [ 3] , les opérations sur la congruence modulo 3, conduisent tout de suite à A ≡ ak + ak −1 + .... + a0 [ 3] d’où le résultat par définition des congruences. On a de même, pour 9 : 10 ≡ 1 [9 ] . Exercice Etablir un critère de divisibilité par 11. 4.7 Codages de tous les jours utilisant les congruences Dans ce paragraphe, on appelle code un identifiant d’un objet ou d’une personne à l’aide de chiffres ou de lettres (le nombre total des symboles utilisés étant petit : 20 par exemple). Les congruences sont utilisées pour contrôler de tels codes, en détectant des erreurs lors des manipulations sur ces codes. En général, une « clef » est calculée et termine la suite de chiffres ou lettres contenant l’information (et donc fait partie du code). Il est facile de constater, contrairement à ce qu’affirment de nombreux sites Internet, que des erreurs peuvent subsister, même si la clef est correcte. Voici quelques exemples de codages : Code ISBN (International Standard Book Number) C’est le nombre qui figure sur tous les livres édités. Il a été inventé dans les années 1960. Il est formé de 9 chiffres a1a2 ....a9 (compris entre 0 et 9), suivi d’un code c, avec c reste modulo 11 du nombre a1 + 2a2 + ..... + 9a9 ≡ c [11] . Lorsque c = 10 , on note X pour ce code. Des tirets séparent des groupes de chiffres. Le premier groupe © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 14 Arithmétique et codes secrets 15 représente la langue (0 pour l’anglais, 2 pour le français, 3 pour l’allemand..), le bloc suivant représente l’éditeur (Springer-Verlag 540 en Allemagne et 387 aux Etats-Unis, Dargaud 205…), le bloc suivant représente le numéro du livre chez l’éditeur (il reste d’autant peu de place que l’éditeur a un gros numéro). Par exemple on a: ISBN 3-540-50205-X et ISBN 0-387-50205-X pour «Mathematical Analysis and Numerical Methods for Science and Technology» chez Springler-Verlag, en allemand ou en anglais. ISBN 2-205-00694-0 pour « Astérix en Corse » chez Dargaud. Numéro national INSEE (NIR, numéro d’inscription au registre) Toutes les personnes résidant en France se voient attribuer ce numéro, par exemple au moment de passer le bac ou d’une immatriculation à la Sécurité Sociale. Il est formé de 13 chiffres plus une clef de 2 chiffres. Le premier code le sexe (1 ou 2), les deux suivants l’année de naissance (les deux derniers chiffres : ce qui pose un problème pour les centenaires), puis le mois de naissance (de 1 à 12), puis le numéro du département de naissance (99 pour les personnes nées à l’étranger), puis le code de la commune (3 chiffres, il existe un répertoire des communes), puis 3 chiffres correspondant au numéro d’ordre sur le registre des naissances. La clef est 97 − B , où B est le reste de la division par 97 du nombre A formé par ces 13 chiffres (cf. exercice distribué). Numéro bancaire Comporte des indications sur la banque, le guichet,… ; il comporte au total 21 chiffres. Numéros de billets en euros Les numéros qui figurent sur les billets comportent un code. Vous pouvez contrôler sur Internet la validité du numéro d’un billet. 4.8 Cryptographies historiques utilisant les congruences Depuis la naissance de l’écriture, on a cherché à transmettre des informations de façon secrète, c’est-à-dire qu’elles soient incompréhensibles même si elles sont interceptées. Modifier ainsi un texte s’appelle chiffrer ou crypter 6 un document, et l’ensemble des techniques relatives au chiffrement des textes constitue la cryptographie. On a retrouvé des procédés cryptographiques dans les hiéroglyphes égyptiens et dans les textes cunéiformes. Ces procédés sont alphabétiques, même si leur explication est plus facile en les numérisant, c’est-à-dire en transformant les symboles en chiffres. Actuellement les messages à crypter doivent emprunter les réseaux informatiques, et les données sont transformées en une suite de « 0 » et « 1 ». Le cryptage est alors une opération purement mathématique (cf. DES cidessous et RSA VII.3). Les cryptographies présentées dans les deux paragraphes suivants nécessitent que l’expéditeur et le destinataire du message se partagent une information nécessaire au chiffrement, puis au déchiffrement. Cette information est dite secrète, car elle permet de décrypter les messages chiffrés. Ces techniques s’appellent donc à clef secrète. On dit aussi coder un texte, mais ceci est générateur de confusion avec les codes correcteurs d’erreurs. 6 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 15 Arithmétique et codes secrets 16 Voici tout d’abord, deux cryptographies « historiques ». Elles utilisent les lettres de l’alphabet de la langue considérée et quelques signes de ponctuation. On a choisi cidessous les 26 lettres de l’alphabet français et un signe de ponctuation : l‘espace. Le cryptage de Jules César On a donc comme symboles : les 26 lettres de l’alphabet (romain) dans l’ordre et 1 signe de ponctuation : a, b, c,……,x,y,z, espace. Le message est obtenu en décalant de 3 unités chaque symbole, les symboles de la fin étant remplacés par les trois lettres du début. Par exemple « a » devient « d », « espace » devient « c ». Le décryptage est un décalage dans l’autre sens. Mathématiquement, ceci revient à transcrire les 27 symboles par les nombres de 1 à 27. Le décalage de 3, revient à ajouter 3 modulo 27. Le décryptage est une soustraction de 3 modulo 27. Exercice Le message est M = MATHEMATIQUES ET CODAGES. Ecrire le texte crypté C. Dans ce cryptage, la clef secrète est le nombre 3 (de décalage). On a de la peine à croire qu’a l’époque de Jules César, ce cryptage ait vraiment permis le secret des données échangées ! 4.8.1 Le cryptage de Vigénère Ce cryptage, qui est une amélioration du système de César, utilise les 27 symboles ci-dessus, et pour crypter (au lieu de décaler de trois) utilise un texte K (qui doit être connu du chiffreur et du déchiffreur, et qui du temps de Vigenère etait court par rapport au texte à chiffrer). Les lettres du texte K sont placées sous celles du texte à chiffrer, et donnent le nombre de décalages à effectuer. Mathématiquement, le texte à chiffrer M est transformé en une liste de nombres de 1 à 27, sous laquelle on met la liste des nombres (de 1 à 27) de K, autant de fois qu’il est nécessaire. Le texte crypté C est constitué des sommes modulo 27 de ces deux listes. Pour décrypter le texte il suffit d’effectuer la différence modulo 27 entre C est la liste correspondant à K. Exercice Le message est M = MATHEMATIQUES ET CODAGES. La clef de cryptage du texte est K =INSA. Ecrire le texte crypté C. Dans ce cryptage, la clef secrète est le texte K. On voit tout de suite que décrypter un texte crypté à l’aide du cryptage de Vigenère, sans connaître K (en particulier sans connaître sa longueur) est autrement plus difficile que pour le cryptage de Jules César, car une même lettre du message sera transformée en des lettres différentes dans le message chiffré, en fonction de sa position par rapport aux lettres de K. Pour « casser un code », c’est-à-dire décrypter un tel message sans connaître la clef K, les « cryptanalistes » utilisent des propriétés des langues (comme la fréquence de la voyelle « e » en français) ou des redondances dans les messages. La machine ENIGMA, utilisée par l’armée allemande à partir des années 1930 et durant la guerre de 39-45 est fondée sur ce principe, avec un texte T changeant à chaque utilisation. Le cryptage du message était obtenu grâce à des rotations de rotors. L’armée allemande était convaincue de l’inviolabilité de sa machine, alors que des © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 16 Arithmétique et codes secrets 17 mathématiciens polonais avaient réussi à « casser » son code dès 1932. Mais l’armée allemande améliorait sans cesse son procédé 7…. La grande faiblesse de ces systèmes à clef secrète est d’être fondés sur des clefs K que doivent connaître les émetteurs et récepteurs du message. Et lorsque ces clefs sont interceptées, tout le système s’effondre. 4.9 Cryptographies actuelles congruences : DES fondées sur les Le DES (Data Encryption Standard), qui date de 1976, est l’algorithme de cryptage le plus utilisé actuellement. Il est très rapide, mais commence à être cassé, dans sa configuration à 64 bits. C’est un algorithme à clef secrète, avec des machines identiques pour crypter et décrypter, les algorithmes étant câblés dans ces machines. Une clef de 56 bits est utilisée, ainsi qu’une fonction de hachage (cf. VIII.5). Les , opérations mathématiques sont des transpositions et des permutations dans 2 itérées un grand nombre de fois. 4.9.1 Masque jetable C’est la seule cryptographie considérée comme « incassable » actuellement. On utilise pour un texte numérisé (des 0 et des 1) une technique du type du cryptage de Vigénère, mais avec une clef K de même longueur que le texte à crypter, obtenue de façon aléatoire (il faut savoir générer de façon aléatoire une suite formée de 0 et de 1). De plus, cette clef ne doit servir qu’une fois ! Mais comme ce système est à clef secrète, le problème de transmission d’une telle clef rend ce système incompatible pour les transmissions numérisées actuelles, mais reste utilisé lorsque la « valise diplomatique » permet la transmission de la clef. Ceux qui sont intéressés par ce problème historique peuvent consulter : HISTOIRE DES CODES SECRETS, par Simon SINGH, Le livre de Poche. 7 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 17 Arithmétique et codes secrets 18 5 Nombres Premiers 5.1 Définition Un entier relatif n est premier si il admet exactement 4 diviseurs dans : 1,-1, n et – n. Si n est un entier naturel, il est premier si il admet, dans , deux diviseurs 1 et lui même 8. On en déduit que 1 n’est pas premier. L’entier 2 est le seul entier naturel premier pair. Si n > 1 et n non premier, n est dit composé. Tous les entiers pairs (sauf 2 et -2) admettent 2 comme diviseur, donc sont composés. 5.2 L’ensemble des nombres premiers est infini Théorème 9 Tout entier distinct de 1 ou –1, admet un diviseur premier. Application : second théorème d’Euclide L’ensemble des nombres premiers est infini. La démonstration est intéressante. Si l’ensemble des nombres premiers positifs était fini, cet ensemble aurait un plus grand élément n. On peut alors considérer le nombre n' = n!+ 1 . Si n’ est premier, on a trouvé un entier premier strictement supérieur à n, ce qui contredit la définition de n. Donc n’ est composé, et il admet un diviseur premier p. Si p est un des facteurs 1, 2, …, n de n! , alors 1 serait divisible par p, ce qui n’est pas possible. Donc p n’est pas un des facteurs de n! , donc il est supérieur à n ; on a donc trouvé un entier p premier strictement supérieur à n. Dans ce cas aussi on arrive à une contradiction. Cette démonstration montre qu’il existe des nombres premiers ayant autant de chiffres que l’on désire, même si elle ne donne pas un procédé pour les trouver. Par 1000 000 . Le nombre n' exemple, soit n = 10 = n!+ 1 est soit premier, soit admet un diviseur premier supérieur à n. Ce nombre premier a donc plus d’un million de chiffres. La recherche de « grands » nombres premiers est essentielle pour la sécurité des cryptages actuels (cf. RSA, §VII). 5.3 Crible d’Eratosthène Quelles sont les méthodes pour trouver des nombres naturels premiers? Eratosthène, mathématicien et philosophe grec a proposé une méthode permettant, à partir d’une liste ordonnée de nombres entiers naturels, d’extraire ceux qui ne sont pas premiers. On part du premier nombre premier 2, qu’on laisse dans le tableau alors qu’on raye tous ses multiples. Le nombre 3 est dans le tableau ; on le laisse et on raye tous ses multiples. Le nombre 4 ayant été rayé, le nombre suivant est premier : il s’agit de 5 Lorsque la structure d’anneau est inutile, les entiers utilisés sont des entiers naturels. Les définitions et résultats sont alors acquis pour les entiers relatifs en « ajoutant le signe ». 9 Pour les démonstrations qui ne figurent pas dans ce texte, se rapporter à un bon cours de terminale. 8 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 18 Arithmétique et codes secrets 19 pour lequel on agit comme pour 2. Pour savoir où arrêter la recherche, on utilise le lemme : Lemme Tout entier n > 1 non premier admet au moins un diviseur premier. Alors, les nombres qui restent sont premiers : 0 1 2 3 4 5 6 7 8 9 Table des nombres premiers entre 2 et 100 0 1 2 3 4 5 6 7 8 9 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Un nombre n compris entre 100 et 10000 est-il premier ? Un de ses diviseurs premiers p vérifie p 2 ≤ n , soit p 2 ≤ 10000, d’où p ≤ 100 et p figure dans la table ci-dessus. On effectue donc les divisions successives de n par les nombres de la table. Si un des restes est nul, n est composé ; sinon on arrête les divisions lorsque le diviseur est supérieur à n . Par exemple, pour n = 491 , on constate que 491 n’est pas divisible 2 par 2, 3, 5, 7, 11, 13, 17, 19 et 23. Or 23 = 529 > 491 . Donc 491 est premier. Le logiciel MAPLE permet de savoir si un entier, pas très grand est premier. Des méthodes probabilistes (cf Miller Rabin VIII.7) permettent de savoir si un nombre donné a une chance d’être premier. Historiquement, la recherche de « formules » permettant d’obtenir des nombres premiers a donné lieu à beaucoup de conjectures inexactes (cf. en exercice les nombres de Mersenne et les nombres de Fermat). 5.4 Décomposition en facteurs premiers Théorème Pour tout entier n>1, il existe des entiers p1 , p2 ,...., pk et des entiers α α α α1 ,α2 ,...,αk tels que n = p11 p22 ......pk k . Cette écriture s’appelle décomposition de n en facteurs premiers. Si on choisit p1 < p2 < .... < pk , la décomposition est unique. Exemples 920 = 23 × 5 × 23, 11011 = 7 × 112 × 13 Le logiciel MAPLE permet de connaitre les diviseurs d’un entier pas très grand. Conséquence sur la divisibilité Si un nombre premier p divise n, ce nombre est un des facteurs premiers de n. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 19 Arithmétique et codes secrets 20 5.5 Diviseurs d’un entier Théorème Pour tout entier n>1, de décomposition en facteurs premiers α α α n = p11 p22 ......pk k , l’ensemble des diviseurs de n est l’ensemble des entiers d dont la b b b décomposition en facteurs premiers est d = ± p11 p22 ......pkk , 0 ≤ bk ≤ ak . Il y a N =+ (1 a1 )(1 + a2 )...(1 + ak ) diviseurs positifs. liste des diviseurs positifs : 680 = 23 × 5 × 17 , {1,2,4, 5,8,10,17 ,20,34,40,68,80,85,136,170,340} soit 4 × 2 × 2 =16 diviseurs. Exemple 5.6 Corps p ( Théorème L’anneau ) p , + , × est un corps si et seulement si p est premier. Démonstration Pour montrer cette équivalence on examine les différentes possibilités pour l’entier p. Si p n’est pas premier, on a les cas suivants : si p=0, 0 = {0} . Le quotient est lui même qui n’est pas un corps. • = 0 n’ a qu’un élément et n’est donc pas un corps. si p>2 est composé, il existe d et q tels que = p dq, 1 < d < p, 1 < q < p . Donc dans si p=1, • • • •• p , p= 0= d q , c’est-à-dire que d est un diviseur de zéro et n’a donc pas d’inverse. L’anneau n’est donc pas un corps. • • Si p est premier, il reste à montrer que tout x ≠ 0 est inversible dans l’anneau • • • • c’est-à-dire qu’il existe u tel que x .u = 1 , d’où p , ∃v ∈ , ux − 1= pv ⇔ ux − pv= 1 Cette relation est l’identité de Bezout, dont la preuve est faite au §VI.4. Application : Pour a, b et p entiers relatifs, si p premier divise le produit ab, alors p divise a ou p divise b. Contre exemple 6 divise 12= 3 × 4 , mais 6 ne divise ni 4, ni 3 (6 n’est pas premier). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 20 Arithmétique et codes secrets 21 6 Entiers premiers entre eux 6.1 PGCD Définition On donne deux entiers (naturels) a et b que l’on décompose en facteurs premiers, puis on introduit tous les nombres premiers communs à a et b. Les nombres a et b s’écrivent alors : α α α b b b = a p11 p22 ......pk k , 0 ≤ ai= , 0 ≤ i ≤ k , b p11 p22 ......pkk , 0 ≤ bi , 0 ≤ i ≤ k . L’ensemble des diviseurs communs à a et b est alors : d d d { p1 1 p2 2 ......pk k , 0 ≤ di ≤ ai , 0 ≤ di ≤ bi ,0 ≤ i ≤ k} . On peut en déduire que le plus grand (au sens de la division) des diviseurs de a et b, δ δ δ ......pkk , δi min( ai , bi ), 0 ≤ i ≤ k . soit δ = PGCD(= a,b) est δ p11 p22= Remarque 1 : cette définition s’étend aux entiers relatifs, mais on choisit le PGCD positif. Par convention on pose PGCD(0,0) = 0 . Cette définition s’étend aussi à plusieurs entiers. Remarque 2 : voici un exemple de démonstration utilisant les sous-groupes additifs de . Pour a et b dans , a + b est un sous-groupe additif de . Cet entier . Il existe donc un unique entier relatif δ tel que aδ + b = δ est le plus grand commun diviseur de a et b. En effet a = a +δ 0 ∈ aa + δb = a ⇒ δ∈ ⇒ ⊂ , soit δ divise a (et b). Si d divise a et b, alors a ⊂δd , ba ⊂ bd ⇒d = + ⊂ soit d divise δ . Le PGCD est donc le « plus grand » pour la division. Exemple Dans la simplification des fractions, on peut chercher les facteurs communs à l’aide de la décomposition en facteurs premiers : 168 23 × 3 × 7 23 × 3 56 et PGCD(168,721)=7 : la fraction simplifiée est . = = 721 7 × 103 103 103 Pour des nombres plus grands on utilise l’algorithme d’Euclide (cf. §VI.3). Propriétés du PGCD PGCD( a,b) = PGCD(b, a) PGCD( = a,0) PGCD( = a, a) a Si b divise a, PGCD( a,b) = b . 6.2 Entiers premiers entre eux Définition Deux entiers relatifs a et b sont premiers entre eux, ou étrangers, si leur PGCD est égal à 1. Z ! Cette notion est très importante. Ne pas la confondre avec celle de nombre premier. Les nombres sont « étrangers » car ils n’ont plus de facteur >1 « en commun ». © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 21 Arithmétique et codes secrets 22 Cette définition s’étend aussi à plusieurs entiers (entiers premiers ou étrangers dans leur ensemble). Exemples Si p est un nombre premier, si n n’est pas multiple de p, alors n et p sont premiers entre eux. = 17 × 53 ne sont pas premiers, mais sont premiers entre eux, 915 = 3 × 5 × 61 et 901 car ils n’ont aucun facteur premier en commun (leur PGCD est 1). Le nombre 5 est premier, il est premier avec 901. Le nombre 5 n’est pas avec premier avec 915 car 915 est un multiple de 5. Néanmoins, les nombres 47, 901 et 915 sont premiers dans leur ensemble car ils n’ont aucun facteur en commun. 6.3 Algorithme d’Euclide Décomposer en facteurs premiers des entiers est facile pour des « petits » entiers. Mais la recherche devient très longue, voire impossible, pour les « grands » nombres. C’est même sur cette impossibilité que sont actuellement fondés les algorithmes de cryptage. L’algorithme d’Euclide, facile à programmer et qui n’utilise pas la décomposition en facteurs premiers, permet d’obtenir directement le PGCD de deux entiers >0. Lemme Pour a,b,q,r entiers naturels, vérifiant a = bq + r , b ≠ 0, 0 ≤ r < b (division euclidienne de a par b), on a : PGCD( a,b) = PGCD(b,r ) . Algorithme : on effectue des divisions successives jusqu’à trouver un reste nul. Le PGCD est le dernier reste non nul. On part de a et b, avec a ≥ b > 0 . On effectue la division euclidienne de a par b : ∃q1 ∈ , ∃r1 ∈ a= bq1 + r1 , 0 ≤ r1 < b . Si r1 = 0 , PGCD( = a,b) PGCD(b,r = 1 ) b , et on stoppe les divisions. Si r1 > 0 , PGCD( a,b) = PGCD(b,r1 ) et on se retrouve dans la situation initiale, a étant remplacé par b et b par r1 . On introduit alors r2 , vérifiant 0 ≤ r2 < r1 < b , et on continue les divisions si nécessaire. On obtient ainsi une suite strictement décroissante de restes, qui sont des entiers. Donc au bout d’une nombre fini d’opérations, on obtient un reste nul, soit rk +1 = 0 . et pour la dernière rk= − 2 rk −1q k + rk , 0 < rk < ... < b = rk −1 rk q k +1 + rk +1 , avec rk +1 = 0 . D’après le lemme : PGCD( a,b)= PGCD(b,r1 = ) ...= PGCD(rk ,rk +1 = ) PGCD(rk ,0)= rk . C’est-à-dire: division Exemple : recherche du PGCD de 437 et 1969 1969 =× 4 437 + 221 437 = 1 × 221 + 216 221 = 1 × 216 + 5 216 = 43 × 5 + 1 5 = 5 ×1+ 0 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 22 Arithmétique et codes secrets 23 D’où PGCD( 437 ,1969) = 1 , dernier reste non nul, les nombres 437 et 1969 sont premiers entre eux. Remarque : le calcul ci-dessus semble inutile car en utilisant la table § Erreur ! Source du renvoi introuvable. : 1969=11.179 et 437=19.23, on voit tout de suite que ces nombres sont premiers entre eux. En pratique, on se sert de cet algorithme en « remontant les calculs », pour obtenir : 392 × 437 − 87 × 1969 = 1 (cf. Identité de Bezout ci-dessous). 6.4 Identité de Bezout C’est un théorème fondamental, avec de nombreuses applications, car cette identité permet de caractériser les nombres premiers entre eux. Pour a et b dans , on a les équivalences : a et b premiers entre eux ⇔ PGCD( a,b) = 1 ⇔ ∃u, v ∈ au + bv = 1 . Démonstration sous forme d’algorithme : reprend l’algorithme d’Euclide (§ précédent), avec l’hypothèse que a et b sont premiers entre eux. Le dernier reste non nul rk est égal à 1 : = 1 rk= rk − 2 − rk −1q k On remonte alors les lignes de calcul en exprimant remplaçant : rk= −1 rk − 3 − rk − 2q k −1 , et en 1 =rk =rk − 2 − rk −1q k =rk − 2 − (rk − 3 − rk − 2q k −1 )q k ….. D’où, à la fin des remplacements, le nombre 1 s’exprime comme combinaison linéaire de a et b. 6.4.1 Conséquences de l’identité de Bezout 1) Sens « direct », c’est-à-dire pour trouver u et v tels que au + bv = 1. Pour des petits entiers, par essais (u et v tels que 17u + 35v = 1, u = −2, v = 1 ). Rigoureusement, ceci revient à travailler dans l’anneau a (cf. ci-dessous) Utilisation de l’algorithme d’Euclide Trouver u et v tels que 437u + 241v = 1 . On effectue les calculs comme pour la recherche du PGCD 10 : Calcul du PGCD( 437 ,241) . 437 = 1 × 241 + 196 241 = 1 × 196 + 45 196 =4 × 45 + 16 45 =2 × 16 + 13 16 =1 × 13 + 3 13 = 4 × 3 + 1 3 = 3×1 + 0 Le nombre 241 est premier et 437 n’est pas un multiple de 241, donc on doit trouver PGCD(241,437)=1 10 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 23 Arithmétique et codes secrets 24 Le dernier reste non nul est 1 (on peut ne pas écrire cette dernière division), donc PGCD( 437 ,241) = 1 , on reprend alors les calculs en partant de la fin : 13 = 3 × 4 + 1 ⇒ 1 = 13 − 3 × 4, 16 = 1 × 13 + 3 ⇒ 3 = 16 − 1 × 13 ⇒ 1 = 13 × 5 − 4 × 16 45 = 2 × 16 + 13 ⇒ 13 = 45 − 2 × 16 ⇒ 1 = 5 × 45 − 14 × 16 196 =4 × 45 + 16 ⇒ 16 =196 − 4 × 45 ⇒ 1 =−14 × 196 + 61 × 45 241 = 1 × 196 + 45 ⇒ 45 = 61 × 241 − 75 × 196 ⇒ 1 = −52 × 241 + 38 × 196 437 = 1 × 241 + 196 ⇒ 196 = 437 − 1 × 241 ⇒ 1 = −75 × 437 + 136 × 241 Cette dernière égalité donne les entiers u = −75 et v = 136 cherchés. Ces calculs sont laborieux « à la main ». On peut s’aider d’une calculette, ou…utiliser un logiciel comme Maple (commande igcdex). 2) Sens inverse, où on part de l’identité de Bezout : On sait que : 2010 − 2009 = 1 , on peut déduire que 2009 et 2010 sont premiers entre eux. 3) Il n’y a pas unicité des entiers relatifs u et v. Si u0 , v0 conviennent : au0 + bv0 =1, au + bv =1 ⇒ a(u − u0 ) + b( v − v0 ) =0 . Il suffit de choisir : u = u0 + bk , v = v0 − ak , k ∈ . exemple : l’équation 6u + 93v = 1 n’a pas de solution, car PGCD(6,93) = 3 . Si on reprend la démonstration, on obtient des solutions pour au + bv = d où d est un multiple de PGCD( a,b) . 4) Contre 5) On démontre avec l’Identité de Bezout plusieurs propriétés utiles pour la suite Si a est premier avec b et c, alors a est premier avec le produit bc. Il suffit d’exprimer les hypothèses au + bv= 1, au'+ cv'= 1 ⇒ ( au + bv)( au'+ cv') == 1 a( auu'+ cuv'+ bu'v) + bc( vv') Théorème de Gauss Si a est premier avec b et a divise le produit bc alors a divise c. En effet au + bv = 1, cau + cbv = c ; or a divise cau et a divise bc, donc a divise = c cau + cbv . On utilisera souvent la propriété suivante, dite propriété du produit : Si p et q sont premiers entre eux, et si p et q divisent un entier m, alors le produit pq divise m. En effet up + vq =1 ⇒ upm + vqm =m ; or m =ap =bq ⇒ pq(ub + va) =m . 6.5 Eléments inversibles dans n Théorème L’ensemble des éléments inversibles de l’anneau • n pour n ≥ 2 , est l’ensemble des x où x est premier avec n. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 24 Arithmétique et codes secrets 25 • En effet, x est inversible de l’anneau • • • • n ⇔ ∃ x'∈ n , x .x' =1 ⇔ ∃x'∈ , x.x' ≡ 1 [ n] ⇔ ∃x', k ∈ , x.x'− k.n =1 où on reconnaît l’identité de Bezout, c’est-à-dire que x et n sont premiers entre eux. Remarque Si p est premier, tous les éléments non nuls sont inversibles, car p est premier avec 1,2,...,( p − 1) . D’où la structure de corps de . p Exemple d’utilisation pour « résoudre » l’identité de Bezout avec a=17 et b=25. Trouver u et v vérifiant 17u + 25v = 1 , revient à résoudre 25v ≡ 1 [17 ] , donc à trouver • • l’inverse de 25 = 8 dans le corps • • 17 • . Or 17 − 2 × 8 = 15 est 1 , donc −2 = l’inverse de 8 . Donc 15 est solution de 25v ≡ 1 [17 ] . On vérifie que 25 × 15 − 1 = 374 est divisible par 17 : 374 = 22 × 17 , et on obtient : 25 × 15 − 22 × 17 = 1 , soit v = 15 et u = −22 . Cette technique est plus rapide que l’algorithme d’Euclide étendu lorsqu’un des deux entiers de l’Identité de Bezout n’est pas trop grand. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 25 Arithmétique et codes secrets 26 7 Théorèmes pour la cryptographie 7.1 Théorème (des restes) chinois L’auteur de ce théorème est inconnu, mais le premier à le formuler est le mathématicien chinois Maître Sunzi, au 3ème siècle. Le problème qui a donné son nom au théorème est, par exemple : Trouver un entier dont le reste dans la division par 3 est 2, le reste dans la division par 5 est 3, le reste dans la division par 7 est 2. Les nombres trouvés sont 233, puis 23 (qui conviennent). Le même théorème est cité par Nicomaque, Euler, Gauss et peut servir a établir des calendriers, en coordonnant les périodicités du mouvement des planètes. Voici un exemple utilisant les mêmes valeurs numériques : Un évènement E se produit le 2ème jour tous les 7 jours, et un évènement E’ se produit le 3ème jour tous les 5 jours. Existe-t-il des jours où E et E’ se produisent en même temps ? La réponse est oui, le 23ème jour (c. f. le calcul ci-dessous). Théorème Pour a, b, m, n entiers relatifs, n et m étant premiers entre eux, il existe un entier relatif c, tel que le système : admette pour solutions x ≡ c [m.n] . [ m] [n] x ≡ a x ≡ b Remarque : on peut choisir un représentant de c dans puisqu’on est dans l’anneau [0,1,...,mn − 1] mn , et c est alors unique. Démonstration ∃u, v ∈ , mu + nv =1 ⇒ amu + anv =a ⇒ anv ≡ a [ m] . De même mu + nv =1 ⇒ bmu + bnv =b ⇒ bmu ≡ b [ n ] . On pose alors = c anv + bmu qui vérifie c ≡ a [ m] et c ≡ b [ n] . x ≡ a x ≡ b Réciproquement, si [ m] [n] c ≡ a c ≡ b et [ m] [n] x − c ≡ 0 x −c ≡ 0 alors [ m] . [n] Donc m et n divisent (x-c), m et n étant premiers entre eux, donc le produit m.n divise (x-c) (propriété du produit) soit x ≡ c [ mn ] . x ≡ 3 x ≡ 2 Exemple 1 Trouver les valeurs de x telles que : [5] . [7 ] Il faut déterminer la valeur c du théorème, donc suivre la méthode exposée dans la démonstration, donc « résoudre » encore une fois « Bezout ». On commence par constater que 5 et 7 sont premiers entre eux, avec 3 × 5 − 2 × 7 = 1, donc ici a = 3, b = 2, m = 5, n = 7 , u = 3, v = −2 . D’où c = anv + bmu = −42 + 30 = −12 et −12 ≡ −12 + 35 ≡ 23 ≡ 233 [ 35 ] . D’après le théorème chinois l’ensemble des solutions est 23 + 35k , k ∈ . © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 26 Arithmétique et codes secrets 27 Exemple 2 11 Au milieu du XXème siècle des machines étaient utilisées pour crypter/décrypter. Ces machines étaient constituées de roues dentées. Les machines « FISCH » utilisaient cinq roues ayant 41, 31, 29, 26 et 23 dents. Ces cinq nombres étant premiers entre eux, la période du dispositif est donc le produit de ces nombres, qui est supérieur à 22 × 106 , d’où 22 × 106 possibilités différentes pour crypter un message. 7.2 Théorème de Fermat 12 Il a été conjecturé par Fermat en 1640, montré par Leibniz avant 1683, remontré et publié par Euler en 1736. p Théorème Pour a et p entiers relatifs, p premier, a ≡ a [ p] . Corollaire Pour a et p entiers relatifs, p premier ne divisant pas a, a p −1 [ p] . ≡1 Démonstration : on établit d’abord deux lemmes. Lemme 1 si p est premier alors C pk ≡ 0 [ p ] , 1 ≤ k ≤ p − 1 . En p! C pk = ⇒ k !( p − k )!C pk =p! =p × ( p − 1)! , k !( p − k )! effet donc p divise k !( p − k )!C pk . Or les entiers du produit k !( p − k )! sont inférieurs à p, donc p ne les divise pas, donc p divise C pk . p p Lemme 2 si p est premier, a et b entiers relatifs alors ( a + b ) ≡ a + b p [ p] . En effet la formule du binôme est vérifiée dans l’anneau commutatif ( , + , × ) , n −1 p k p p−k ( a + b ) = C p a b =a + C pk a pb p − k = k 0= k 1 p n ∑ ∑ + b p , les termes du milieu étant congrus à 0 modulo p d’après le lemme 1. 7.2.1 Démonstration du théorème (cf. une démonstration utilisant l’ordre d’un sous-groupe sur les fiches d’exercices.) Si a ≥ 0 , une récurrence sur l’entier a conduit au résultat : En effet , la propriété est vérifiée pour a=0. p De plus, si elle est vérifiée pour a, soit a ≡ a [ p] , alors ( a + 1) p ≡ a p + 1 ≡ a + 1 , d’où la propriété est vraie pour (a+1). Si a < 0 , on examine deux cas pour p : in La science du secret, page 56, cf. bibliographie. Il s’agit ici du petit théorème de Fermat. Le grand théorème de Fermat est resté une conjecture durant plusieurs siècles, jusqu’à sa démonstration (en 1994) par Andrew Wiles. 11 12 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 27 Arithmétique et codes secrets p si est pair, c’est-à-dire a2 ≡ ( − a)2 ≡ − a ≡ a [ 2] p p=2 (seul nombre premier 28 pair), p si p est impair a ≡ −( − a) ≡ −( − a) ≡ a [ p ] Ce qui termine la démonstration, tous les cas ayant été examinés. Démonstration du corollaire p La relation a ≡ a ( ) [ p] s’interprète comme ap − a ≡ 0 [ p] , c’est-à-dire que p divise a p= − a a a p −1 − 1 . Or p ne divise pas a, donc p est premier avec a. D’après le ( p−1 − 1) soit ap−1 ≡ 1 [ p] . théorème de Gauss, p divise a Exemples Le nombre 19 est premier et ne divise pas 3, donc 318 ≡ 1 [19 ] , c’est-à-dire que 19 divise 318 − 1 . Ce résultat peut être vérifié à la main, en utilisant l’exponentielle rapide (cf. IV.5), car les chiffres du nombre 318 − 1 ne peuvent pas être traités par une calculette : 33 ≡ 27 ≡ 8 [19 ] , 36 ≡ (8)2 ≡ 7 [19 ] ,39 ≡ 7 × 8 ≡ −1 [19 ] , d’où 318 ≡ ( −1)2 ≡ 1 [19 ] . Réciproquement, si on veut tester si un nombre p n’est pas premier, on peut essayer différentes valeurs de a jusqu’à trouver une valeur telle que a p −1 ≠ 1 [ p] . Par exemple 9 n’est pas premier, bien que l’on ait 10 8 ≡ 1 [9 ] car 10 ≡ 1 [9 ] . Mais 23 ≡ −1 [9 ] ⇒ 28 ≡ 1 × 4 ≡ 4 [9 ] , donc non congru à 1 modulo 9. Le petit théorème de Fermat n’est donc pas vérifié, 9 n’est pas premier. 7.2.2 Recherche « statistique » de nombres premiers 13 L’idée d’utiliser ce théorème est mise en œuvre pour « vérifier » de façon statistique qu’un nombre très grand N n’est pas composé. On effectue des essais avec différentes valeurs de a. Au bout d’un certain nombre d’essais, si on a toujours a p −1 ≡ 1 [ p ] , la probabilité pour que N soit premier est forte. Mais il faut croiser la preuve avec d’autres théorèmes, car il existe des nombres c, dits de Carmichael qui sont composés, et tels que ac −1 ≡ 1 [c ] pour tout entier a premier avec c. Les deux plus petits sont 561 =3 × 11 × 17 et 1105 =5 × 13 × 17 (cf. fiche d’exercices), mais les nombres de Carmichael n’ont pas livré tous leurs secrets ! 7.3 RSA L’invention du système de cryptographie « RSA », du nom de ses inventeurs, Ronald Rivest, Adi Shamir et Leonard Adleman, en 1977 est intéressante. En 1976, Whitfield Diffie et Martin Hellman publient un article, qualifié de « révolutionnaire » par les spécialistes de cryptographie, où ils définissent de nouveaux critères : pour supprimer le problème de confidentialité des clefs de cryptage il faut utiliser des fonctions « à 13 Cf. plus loin le test de Miller Rabin. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 28 Arithmétique et codes secrets 29 sens unique ». C’est-à-dire que le cryptage et le décryptage ne sont pas symétriques. Alors on peut rendre publiques les éléments servant au cryptage des messages, d’où le nom de systèmes à clefs publiques. On garde secrets les éléments servant au décryptage, donc c’est le destinataire qui doit générer les clefs publiques, fabriquées à partir de ses clefs qui restent secrètes. C’est en essayant de monter que ce principe ne leur semblait pas exact que les trois étudiants du MIT (Massachusetts Institute of Technology) Rivest, Shamir et Adlemann ont abouti au résultat inverse ; en utilisant l’arithmétique des grands nombres premiers ils ont mis au point un système qui est encore utilisé aujourd’hui. Voici la justification théorique de ce cryptage : Lemme Pour t, p et q entiers relatifs, p et q premiers distincts, k entier on a : t( p −1)( q −1)k +1 ≡ t [ pq ] . Conséquence Si en plus e est un entier premier avec ( p − 1)(q − 1) , alors il existe un entier d tel que e.d ≡ 1 [( p − 1)(q − 1)] , et on a : Principe de RSA Pour t, p et q entiers relatifs, p et q premiers distincts, et e entier premier avec ( p − 1)(q − 1) , il existe un entier d tel que : (t e )d ≡ t [ pq ] . Démonstration Pour montrer le lemme, on commence par le cas où p et q ne divisent pas t. Le théorème de Fermat s’écrit pour p ne divisant pas t : t p −1 ≡ 1 [ p ] ⇒ t( p −1)( q −1)k ≡ 1 [ p ] et t( p −1)( q −1)k +1 ≡ t [ p ] et de même t q −1 ≡ 1 [ q ] ⇒ t( p −1)( q −1)k ≡ 1 [ q ] ⇒ t( p −1)( q −1)k +1 ≡ t [ q ] . Comme p et q sont premiers et distincts, ils sont premiers entre eux. Chacun divise t( p −1)( q −1)k +1 − t , donc leur produit divise ce nombre t( p −1)( q −1)k +1 − t (propriété du produit) soit t Lorsque t≡0 p [ p] ⇒ t ( p −1)( q −1)k + 1 divise ( p −1)( q −1)k + 1 ≡t t, [ pq ] . mais ≡0≡t q ne divise pas t, on a [ p] . Pour q on garde les calculs ci-dessus, d’où la même conclusion. Il en est de même si p et q divisent t. Pour montrer le principe de RSA on utilise e premier avec ( p − 1)(q − 1) . L’entier e est donc un élément inversible dans l’anneau ( p − 1)(q − 1) . Le nombre d cherché est l’inverse de e dans cet anneau. On a alors : e.d ≡ 1 [( p − 1)(q − 1)] ⇒ ∃k ∈ , ed = 1 + k( p − 1)(q − 1) ⇒ (t e )d ≡ t1+ k( p −1)( q −1) ≡ t [ pq ] , ce qui achève la démonstration. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 29 Arithmétique et codes secrets 30 7.4 Technique d’utilisation de RSA Supposons que Alice veuille envoyer un texte à Bob. Dans ce paragraphe, seule la technique du cryptage est expliquée. En pratique d’autres problèmes se posent (comment être sûr que le texte est bien d’Alice, c’est-à-dire comment certifier la signature d’Alice ; comment Alice est-elle sûre que le destinataire est Bob) qui peuvent être résolus par le cryptage RSA. En pratique toujours, comme le cryptage par RSA est long, seules de « petites informations » comme la signature ou l’échange des clefs secrètes sont opérées par RSA, le DES prenant le relais pour le message lui-même. Bob commence par choisir deux « grands » nombres premiers p et q et les multiplie pour obtenir N : N = p.q . La « sûreté » de l’algorithme est fondée sur l’impossibilité de retrouver les facteurs p ou q de N (actuellement la plus grande factorisation possible l’a été pour un nombre de 200 chiffres, cf.VIII.8). Bob choisit aussi une clef de cryptage e (en général un petit nombre premier, premier avec ( p − 1)(q − 1) ). Bob peut alors rendre publiques les valeurs N et e. Alice, pour crypter le texte qu’elle veut envoyer à Bob, le numérise par une suite de chiffres et obtient le message M, qui est donc un nombre entier. Si M est supérieur à N, elle coupe M en morceaux de longueur inférieure à N. On peut donc supposer que le message à crypter M est de longueur inférieure à N. Alice connaissant N et e, peut calculer le message crypté C : C = M e [ mod ulo N ] . qu’elle transmet à Bob. Par ailleurs, Bob doit calculer un inverse d de e dans l’anneau ( p − 1)(q − 1) . Pour ce faire il doit « résoudre une identité de Bezout », donc utiliser par exemple l’algorithme d’Euclide étendu (ces opérations sont bien sûr faites par un programme !). Lorsqu’il reçoit le message crypté C, il calcule : ( ) Cd ≡ Me d ≡M [mod ulo N ] . et retrouve le message d’origine M. Remarques C’est le même algorithme qui sert au cryptage et au décryptage, mais avec des paramètres différents. L’opération de cryptage/décryptage est commutative : ( Md ) ≡ ( Me ) e d ≡M [mod ulo N ] . Cette propriété est utilisée dans les protocoles sécurisant les transactions. Exemple avec Maple (cf. TD) Soit à crypter le texte M, représentant le mot MATH, avec A=1, B=2,...., soit M=131208. On choisit les nombres premiers p=563 et q=691. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 30 Arithmétique et codes secrets 31 > restart;p:=563;isprime(p);q:=691;isprime(q);N:=p*q; p := 563 true q := 691 true N := 389033 > M:=131208; if (M > N) then print("Message trop long") end if; M := 131208 On va déterminer un petit nombre e, premier avec r=(p-1)(q-1). Le nombre e=3 convient-il? La commande "igcd" retourne le PGCD. > r:=(p-1)*(q-1);igcd( r,3 );igcd(r,7); r := 387780 3 1 Le nombre 3 n'est pas premier avec r, alors que 7 l'est. On choisit e=7. Les clefs publiques sont N et e. > e:=7; C:=M&^(e) mod N; e := 7 C := 114242 C est le message crypté à transmettre. Le symbole & correspond à l'exponentielle rapide. Il faut maintenant trouver l'inverse de e modulo r=(p-1)(q-1), c’est-à-dire trouver d et k tels que e*d+k*r=1. C'est la commande igcdex qui résout l'identité de Bezout. Attention à la syntaxe : les variables doivent être désaffectées ! > pgcd:=igcdex(e,r,'u','k');u;k; pgcd := 1 -55397 1 > e*u+r*k; 1 Les nombres e et r sont bien premiers entre eux. On obtient des valeurs u et k telles que e*u+k*r=1, avec u=-55397, qui est négatif. On choisit une autre solution modulo r, positive, puis on décode le message. > d:=u+r;MM:=(C)&^(d) mod N; d := 332383 MM := 131208 On retrouve le message d'origine. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 31 Arithmétique et codes secrets 32 8 Sécurite des systèmes d’information Un système d’information a pour objectif d’échanger des informations (un message, un document) entre un expéditeur et un destinataire. Assurer la sécurité c’est garantir sa confidentialité, garantir l’identité de l’expéditeur et du destinataire, garantir que le message n’a pas été altéré. La sécurité est constituée d’un ensemble d’éléments, et il est usuel de dire que la sécurité de l’ensemble est celle de son maillon le plus faible ! Pour illustrer cette notion, on va appeler Alice l’expéditeur et Bob le destinataire. Les informations qu’Alice adresse à Bob intéressent d’autres personnes, que l’on va regrouper sous le nom d’Oscar. L’expérience montre qu’Alice et Bob ont raison d’être méfiants donc d’intégrer la présence d’Oscar dans leurs protocoles. On peut faire un parallèle avec une situation de la vie courante où le besoin de sécurité est très fort : par exemple la signature d’un acte d’achat chez un notaire. On suppose momentanément que Bob est notaire et Alice une cliente qui achète un bien. La signature de l’acte d’achat a lieu chez le notaire, qui doit vérifier l’identité d’Alice, en général en présence de tous les intervenants (si un des intervenants ne peut être présent il doit au préalable effectuer une procuration, et faire certifier sa signature). Le document est ensuite paraphé sur toutes les pages par le notaire, l’acheteur et le vendeur. De ce fait le document ne peut plus être modifié. La « signature » finale de l’acte engage la responsabilité de ceux qui ont signé. On va voir que ces tous ces termes se retrouvent lorsque l’on désire une bonne sécurité dans les échanges (c’est-à-dire presque tout le temps !). Il ne faut pas oublier que le document papier de notre exemple est remplacé par des données transmises, et les notions de document « original » et de signature ne peuvent plus garder les mêmes significations. 8.1 Définitions Confidentiel L’information n’est accessible qu’à une personne autorisée. Authentique L’expéditeur ou le récepteur du message sont garantis, c'est-à-dire que l’on est certain de l’identité de l’expéditeur et/ou du destinataire. Intègre Le document n’a pas été modifié (de façon volontaire ou non). Signature numérique Doit garantir la même sécurité qu’une signature manuscrite : authenticité et intégrité. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 32 Arithmétique et codes secrets 33 8.2 Techniques Protocole Un protocole est une spécification de plusieurs règles pour un type de communication particulier entre deux ordinateurs, dans le but de réaliser une tâche. Par exemple dans toute transmission d’informations sur un bus de données, il faut décrire le format et la synchronisation des paquets d’informations qui transitent. Protocole défi/réponse Ensemble d’échanges entre l’expéditeur et le destinataire permettant de garantir un ou plusieurs des éléments qui concourent à la sécurité. Cryptages Ce poly vous en présente différents types : Hill (§ X.3), RSA (§ VII.3), Rabin(§ X.1), El Gamal(§ X.2) Certificat Lorsqu’un algorithme de chiffrement à clef publique est utilisé, la clef de chiffrement est garantie par une autorité, elle est « certifiée ». S’insère dans une chaîne sur les clefs : distribution, certification, stockage et répudiation (= suppression de la clef). Exemple Certificat X509 Empreinte numérique Condensé d’un document. Une modification, même minime, dans le document doit modifier son empreinte. En général on utilise une fonction de hachage, qui crée une empreinte appelée « haché » (cf. VIII.5). 8.3 Exemple : assurer la confidentialité La confidentialité est bien assurée par un cryptage à clef publique. Pour envoyer un message M à Bob, Alice récupère la clef publique de Bob et l’utilise pour crypter M en C et envoie C à Bob. Bob étant le seul à posséder sa clef privée, il est le seul à pourvoir décrypter C et obtenir le message d’origine M. La méthode du masque jetable, donc avec une clef privée, convient aussi en théorie. Mais, comme avec tous les systèmes à clef secrète, se pose le problème de l’échange des clefs. La sécurité est très bonne à condition de changer de clef à chaque fois (masque jetable). C'est-à-dire qu’il faut transmettre une clef aléatoire, de même longueur que le message. Pour le « téléphone rouge » entre Moscou et Washington, où ce type de clef voyage par la valise diplomatique, c’est possible. Mais, dans le cadre des transferts informatiques actuels, le procédé du masque jetable n’est donc pas utilisable. 8.4 Exemple : assurer l’authenticité Avant d’envoyer son message à Bob, Alice veux être certaine de « l’identité » de Bob. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 33 Arithmétique et codes secrets 34 Voici une méthode à clef publique, avec le cryptage RSA. 1) Alice génère un message aléatoire M, le chiffre en C, avec la clef publique de Bob et l’adresse à Bob. 2) Bob déchiffre le message avec sa clef privée (donc obtient M) et l’envoie à Alice. 3) Si Alice reçoit M, est-elle certaine que c’est Bob avec lequel elle communique ? On peut imaginer qu’Oscar « s’invite » dans cette correspondance. Il se met en contact avec Alice, prétendant être Bob, et avec Bob prétendant être Alice. Lorsque Alice envoie le message crypté C, c’est Oscar qui l’intercepte et l’adresse ensuite à Bob…. Alice n’est donc pas en contact direct avec Bob. Mais seul Bob a pu décrypter le message C et obtenir M. Si Alice et Bob continuent à converser en changeant de clef à chaque fois, Oscar verra passer les messages, mais ne pourra pas les décrypter. 8.5 Exemple : assurer l’intégrité par une fonction de hachage La façon habituelle de vérifier l’intégrité d’un message est d’introduire son empreinte (ou haché), c’est-à-dire de calculer, à partir du message, une nouvelle valeur numérique. Pour ce faire on utilise une fonction de hachage, qui associe à un document de taille variable son empreinte qui a une de longueur fixée. Cette fonction doit être « à sens unique », terme employé par les informaticiens ; les mathématiciens parlent de fonction non inversible (non injective en fait). Le résultat, c’est-à-dire l’empreinte, ne permet donc pas de retrouver le message d’origine. Par contre, si on modifie légèrement le document d’origine, les fonctions de hachage utilisées font que l’empreinte est modifiée et donc que la modification est détectée. Les fonctions de hachage les plus utilisées sont SHA1 et MD5. Voici un exemple de fonction à sens unique (cf. Introduction à la cryptographie, J. Buchmann) On choisit p premier, et on utilise le fait que le groupe multiplicatif ( ) ∗ p est cyclique (cf. IX.2 examen du 25 mai 2005). Soit donc g un générateur de ce groupe. ( Alors l’application de ) ∗ p ( dans ) ∗ p qui à x associe g x est facile à calculer (exponentielle rapide), mais n’est pas inversible (problème du logarithme modulaire). A-t-on résolu tous les problèmes ? La réponse est non : la fonction de hachage n’étant pas injective, on peut avoir deux empreintes identiques pour deux messages différents : c’est le phénomène de collusion. 8.6 Exemple de signature numérique La signature numérique est un procédé d’identification d’un document numérique qui permet de vérifier l’intégrité d’un message et son authenticité. Une fois un document signé, il ne peut plus être contesté, en particulier par le signataire (celui qui a signé, et qui pourrait être de mauvaise foi ; cette notion est la non-répudiation). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 34 Arithmétique et codes secrets 35 Pour signer, on utilise une empreinte, puis un protocole fondé sur une cryptographie asymétrique. Voici un exemple à l’aide d’un déchiffrement/chiffrement RSA. 1) Alice veut envoyer et signer son message M. Elle va commencer par calculer une empreinte de M, puis crypter cette empreinte avec sa clef privée : c’est sa signature numérique S du message M. Elle crypte également le message M en C, par exemple en utilisant une clef publique de Bob. Elle adresse C et S à Bob. 2) Comment Bob vérifie-t-il la signature d’Alice ? Il commence par décrypter C à l’aide de sa clef privée et obtient M. Connaissant la fonction de hachage, il détermine l’empreinte du message M. Il utilise alors la clef publique d’Alice et peut décrypter la signature S, qui doit coïncider avec l’empreinte qu’il vient de déterminer. 8.7 Sécurité et mathématiques On rappelle que le problème est en général la transmission des clefs (secrètes), qui s’effectue par un cryptage à clef publique. Une fois les clefs transmises, les techniques à clef secrète sont utilisées car beaucoup plus rapides. 8.7.1 Grands nombres premiers Les cryptages à clef publique nécessitent de grands nombres premiers. Vu la difficulté à factoriser les grands nombres, ce n’est pas une recherche des diviseurs (cf. crible d’Eratosthène) qui peut fournir des grands nombres premiers. Le plus grand nombre premier actuellement connu est un nombre de Mersenne. Ces nombres sont de la forme 2p − 1 , où p est un nombre premier (cf. fiches d’exercices). Une compétition existe pour déterminer ces nombres, et on les numérote dans l’ordre croissant. Cette recherche permet de tester la puissance de calcul des ordinateurs, ou de réseaux d’ordinateurs. Le GIMPS est un tel réseau mettant en commun les ressources de milliers d’ordinateurs, animé par Curtis Cooper et Steven Boone (Université du Missouri). Le dernier nombre trouvé (à la date de rédaction de ce polycopié) est le 47 ème nombre premier de Mersenne, a été annoncé le 12 avril 2009 : M42837064 = 242 837 064 − 1 , comporte 12 837 064 chiffres. Il a été trouvé par Odd Magnar Strindmo de Melhus, Norvège. Odd est un professionnel dont les ordinateurs ont travaillé avec le GIMPS depuis 1996. Ce calcul a pris 29 jours. Le record précédent, 37 156 667 le 46 ème nombre premier de Mersenne, M37156667 = 2 − 1 , comporte 11 185 272 chiffres, avait été annoncé le 6 septembre 2008. Il a été découvert par Hans-Michael Elvenich, à Langenfeld, Allemagne. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 35 Arithmétique et codes secrets 36 Tous les plus grands nombres premiers connus sont des nombres premiers de Mersenne car il existe un test de primalité particulièrement rapide adapté aux nombres de cette forme, le test de primalité de Lucas-Lehmer. Mais ces recherches ne peuvent pas servir pour des codages, car les nombres premiers doivent être les plus quelconques possibles (les nombres premiers p tels que (p-1) ait beaucoup de petits facteurs premiers sont également à éviter). Le test de Miller-Rabin est un test probabiliste fondé sur le petit théorème de Fermat, permettant de fournir des nombres premiers « de qualité industrielle ». Théorème Pour que le nombre impair = p 2s q + 1 , avec q impair soit un nombre premier, il est nécessaire, que pour tout a premier avec p on ait : q - soit a ≡ 1 [ p] k q 2 ( ) - soit ∃k , 0 ≤ k ≤ s − 1 tel que a [ p] . ≡ −1 Démonstration : si p est un nombre premier impair, il peut s’écrire sous la forme : s = p 2s q + 1 , avec q impair. On factorise le polynôme X 2 − 1 : s s −1 X2 = − 1 X 2×2 = −1 ( s −1 X2 −1 )= 2 s −1 = ( X − 1)( X + 1)( X 2 + 1)...( X 2 s −1 (X2 s −1 − 1)( X 2 += 1) ... + 1) q Soit alors a premier avec p. On pose X = a . D’après le petit théorème de Fermat : s a p−1 ≡ 1 ⇒ a p−1 − 1 ≡ a 2 q − 1 ≡ 0 [ p] . D’où avec la factorisation : ( aq − 1)( aq + 1)(( aq )2 + 1) .... (( aq )2 s −1 Or p étant premier, ) +1 ≡ 0 [ p] . p est un corps. D’où, un au moins de ces facteurs est nul, c’est-à-dire que le résultat énoncé est montré. Remarque : lorsque p est premier >2, a p −1 ≡1 racine carrée de 1, modulo p. Dans le corps carrées de 1 : 1 et −1. p −1 Si a 2 ≡1 [ p] , et si p −1 p −1 jusqu’à . 4 2s [ p] p −1 , donc a 2 est une p , il y a deux racines p −1 est pair, on continue avec 2 D’où l’algorithme du test de Miller-Rabin : on veut déterminer si un entier impair n est premier. 1) On écrit n sous la forme= n 2s q + 1 , avec q impair. 2) On tire au hasard un entier a entre 1 et n-1. Si PGCD( a,n) ≠ 1 , n est composé, sinon : © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 36 Arithmétique et codes secrets 3) On pose X = a k X 2 ≡ −1 q [n] et on teste si X =1 [n] 37 ou si ∃k , 0 ≤ k ≤ s − 1 tel que [n] . 4) Si ce n’est pas le cas, on peut déduire (par contraposée du théorème) que n est composé. 5) Si au 3) on a une des égalités, le test « échoue » et on montre qu’il y a au moins 3 chances sur 4 que n soit premier, c’est-à-dire que, la probabilité que n ne soit pas premier, est inférieure à 1 . 4 6) Si le test a échoué, on recommence avec un nouveau tirage aléatoire de a. A chaque tirage ayant échoué, la probabilité que n ne soit pas premier est inférieure à 1 . Au bout de 50 tirages, la probabilité pour que n ne soit pas premier est donc 4 50 1 1 inférieure à = ≈ 10 −30 . La probabilité que n soit premier est donc 100 4 2 supérieure à 1 − 10 −30 . Ce qui peut être considéré comme un bon résultat « industriel » pour fournir un nombre n premier, utilisable dans un procédé de cryptographie. 8.8 Attaques de RSA Les attaques actuelles de RSA se font essentiellement en factorisant l’entier N. La sécurité de cette méthode repose sur la difficulté à factoriser de grands nombres entiers. On rappelle que la clef publique est formée du produit N de deux nombres premiers p et q, et d’un entier e premier avec le produit ( p − 1)(q − 1) . L’entier N étant public, tout le monde peut essayer de le factoriser. Actuellement les entiers utilisés dans RSA ont 154 chiffres décimaux (qui correspondent à 512 bits). Voici, le dernier résultat connu, à la date d’impression de ce polycopié : 8.8.1 Factorisation de RSA-640 Le 8 novembre 2005, une équipe de l'Agence Fédérale Allemande pour l'Information sur la Technologie et la Sécurité a factorisé le nombre de 193 chiffres proposé par la RSA, et connu sous le nom de RSA-640. La découverte des deux facteurs premiers de ce nombre leur a permis de gagner les 20 000 dollars alloués à ce défi. La factorisation de RSA-640 trouvée par l'équipe allemande est la suivante: 310 7418240490 0437213507 5003588856 7930037346 0228427275 4572016194 8823206440 5180815045 5634682967 1723286782 4379162728 3803341547 1073108501 9195485290 0733772482 2783525742 3864540146 9173660247 7652346609 = © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 37 Arithmétique et codes secrets 38 1634733 6458092538 4844313388 3865090859 8417836700 3309231218 1110852389 3331001045 0815121211 8167511579 x 1900871 2816648221 1312685157 3935413975 4718967899 6851549366 6638539088 0271038021 0449895719 1261465571 La sécurité du système de cryptage RSA repose en effet sur la lenteur des algorithmes de factorisation connus et les laboratoires RSA Security soumettent depuis 1977 une liste de grands nombres assortie de récompenses pour les premières équipes capable de les factoriser (i.e. retrouver les diviseurs). Baptisés RSA suivi de leurs nombres de chiffres en écriture décimale ou binaire, les nombres proposés sont extrêmement difficiles à casser et on estimait il y a 25 ans qu'il faudrait des millions d'année pour y parvenir... RSA640 comprend 193 chiffres (décimaux) et n'a pourtant résisté que quatre mois et demi au crible mis en oeuvre par l'équipe allemande sur un réseau de 80 micro-processeurs Opteron cadencés à 2.2 GHz. Par contre, il semble que la société RSA Secutity ait mis fin à son concours : voici ce que l’on trouve sur son site, depuis septembre 2007 : “This challenge is no longer active The RSA Challenge Number RSA-640 is factored ! RSA-200 is factored ! RSA-576 is factored ! RSA-160 is factored ! RSA-155 is factored ! RSA-140 is factored !” Il faut donc, pour garantir une certaine sécurité, choisir des clefs plus grandes : les experts recommandent des clefs de 768 bits pour un usage privé, et des clefs de 1024, voir 2048 pour un usage sensible. Le problème de la sécurité avec un tel système nous oblige à réfléchir sur la nature des preuves permettant d’assurer cette sécurité. Ce n’est pas par un câblage secret, ni par une découverte cachée. La théorie mathématique (les congruences modulo n) est simple, l’algorithme de cryptage est connu de tous. En cas de progrès des calculs, il suffit d’augmenter la taille des nombres premiers choisis. La résistance du codage envers les cryptanalyses tient au temps mis par les ordinateurs pour faire les calculs nécessaires. Peut-on alors parler de sécurité informatique ? Doit-on aussi évoquer des rumeurs ? Les services secrets actuels font travailler d’excellents mathématiciens. Si une méthode permettant de décoder des messages cryptés a été découverte, il est évident que cette information reste confidentielle. L’histoire a montré que ce phénomène s’est souvent produit. Est-ce le cas actuellement ? © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 38 Arithmétique et codes secrets 39 L’avenir : il existe aussi d’autres voies de recherche (pour transmettre les clefs secrètes), par exemple en utilisant des propriétés physiques : faire circuler des photons polarisés ayant des orientations définies sur un câble en fibre optique. Mais on en est au stade des expériences ! Puisque pour l’instant il est très difficile de trouver les facteurs premiers de N, on peut avoir l’idée de résoudre directement l’équation M e ≡ C [N ] , où on connaît e, le message crypté C et N. Ce problème est donc une extraction de racine, modulo N. Si on introduit un « logarithme discret », c’est-à-dire opérant sur les entiers, on a : e.ln( M ) = ln(C ) . Malheureusement les mathématiciens ont montré que ce problème est très difficile. Dernier point concernant RSA, le catalogue des clefs publiques de Bob et Alice ne doit pas être modifiable. Ceci est actuellement réalisé par des organismes certificateurs indépendants. 8.9 La sécurité des cartes bancaires La carte à puce a été inventée par deux ingénieurs français, Roland Moreno et Michel Ugon à la fin des années 1970. Elle a permis d’améliorer la sécurité des transactions par carte bancaire. Auparavant, les cartes dites de « crédit » possédaient une piste magnétique, mais le payement était établi à partir d’une facturette, obtenue en passant la carte dans « un fer à repasser » recopiant les informations en relief de la carte. Les autorisations étaient téléphoniques. Actuellement, l’utilisation des puces se multiplie, chaque fois qu’une information a besoin d’être protégée, comme pour la carte vitale ou la carte SIM des téléphones. La puce de la carte est un petit processeur qui contient : - ROM (6 à 20 Ko) : codage du DES et numéro - RAM (128 à 1024 octets) : calculs - EEPROM (1 à 8 Ko) : des informations relatives au propriétaire de la carte, clefs... Sécurité des transactions Le standard EMV( Europay MasterCard Visa) désigne le nouveau standard international de sécurité pour les cartes à puce de payement. Depuis 2005, un système de cryptage supplémentaire, le DDA (Dynamic Data Authentication), est ajouté aux cartes dites de troisième génération : chaque transaction génère une signature unique calculée à partir de données aléatoires et renforce ainsi la sécurité des paiements Fin 2007, il y a plus de 700 millions de cartes au monde utilisant ce standard. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 39 Arithmétique et codes secrets 40 Carte bancaire comportant une puce Transaction EMV La sécurité est assurée à trois niveaux, les deux premiers au niveau local. 0) Lecture des informations. La carte contient des informations publiques concernant le titulaire de la carte : id. Au moment de la fabrication de la carte, on stocke une clef publique correspondant à la cryptographie RSA (clefs N et e= 3 publics, d secret), crée pour toute la durée de vie de la carte. Lorsque la carte est introduite dans un terminal de payement, celui-ci lit ces informations sur la carte, ainsi que son numéro, la date de fin de validité… 1) Authentification locale : RSA Le terminal génère alors un aléa (avec e=3), que la carte doit signer avec sa clef privée, suivant la cryptographie RSA (souvent RSA-CRT, cf. examen X.7). Le terminal vérifie cette signature avec la clef publique qu’il vient de lire. Il peut ainsi vérifier que la carte est authentique, qu’elle a bien été émise par la banque. Si la carte n’est pas rejetée, on passe à la deuxième vérification par code secret. 2) Code secret © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 40 Arithmétique et codes secrets 41 L’utilisateur doit alors taper ce code secret. L’EEPROM contient le code secret de la carte : PIN (Personnal Identification Number). La puce vérifie si le code tapé est correct, et retourne « oui » ou « non ». Cette étape permet de s’assurer que la carte est entre les mains de son porteur légitime. Si la réponse est « non », l’utilisateur est invité à taper à nouveau son code. Au bout de trois essais incorrects, la puce se fige et la carte est bloquée. Si la réponse est « oui », la puce vérifie que le montant total des transactions (pour une période déterminée 14) est inférieure à un certain seuil 15. Si le montant de la transaction en cours est inférieure à un certain seuil (en général 100 euros) 16 , la transaction est autorisée. Sinon, la carte demande l’authentification en ligne ; il en est de même si on retire de l’argent à un distributeur. 3) Authentification en ligne : par DES Le terminal interroge un centre contrôle. La technique utilisée pour protéger les informations est un cryptage avec le tripleDES. La clef secrète nécessaire pour utiliser DES est calculée à partir de id et d’une clef K secrète stockée dans une zone secrète de l’EEPROM. Le protocole est de la forme « défi-réponse » : le centre envoie à la carte un nombre aléatoire x. La carte calcule y=f(x,K) où f est la fonction de chiffrement du DES. La valeur y est retransmise au centre, qui lui-même calcule f(x,K) et donne l’autorisation si ces deux valeurs sont égales. On peut noter que le centre de contrôle doit connaître les valeurs K de toutes les cartes ! Pour terminer, la carte émet alors un certificat de transaction, qui reprend tous les éléments et les protège par une signature numérique. Cette signature est effectuée par DES. Ce certificat de transaction est alors imprimé sur un ticket. L’affaire Humpich En 1998, cet informaticien a pu, après trois ans de travail, et en utilisant du matériel grand public : - casser l’authentification RSA de l’étape 1, - fabriquer des « yes-cards », acceptant tous les codes secrets (étape 2). Son objectif était de « travailler » avec le GIE Carte Bleue pour améliorer la sécurité des cartes bancaires. En fait, ce GIE a porté plainte contre Serge Humpich, qui a été condamné en 2000. Par contre, depuis, le GIE Carte Bancaire a changé les procédures de validation, et actuellement il n’est plus possible de fabriquer de telles fausses-cartes. ces valeurs sont paramétrables et dépendent du type de carte : ordinaire, « or », « premier ».. idem, 16 idem. 14 15 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 41 Arithmétique et codes secrets 42 9 Exercices 9.1 Structures Exercice 1 Groupe de Klein On considère l’ensemble K = {e, a,b,c} muni d’une multiplication d’élément neutre 2 2 2 e, associative et vérifiant : a= b= c= e, bc = a, ca = b, ab = c. Ecrire la table de cette multiplication. Vérifier qu’alors K est un groupe commutatif. ( Obtient-on le même groupe que ) 4 , + ? ___________________________________________________________________ __ Exercice 2 Sous groupes d’un groupe fini Soit G = (= 7 ,.) ∗ {1,2,3,4, 5,6} , avec la multiplication modulo 7. 1) Ecrire la table de la multiplication de G, et vérifier qu’on a bien un groupe commutatif. 2) Pour tous les a de G, calculer les puissances successives an ,n = 2,3,...,6 . Vérifier que ∀a ∈ G, a6 =1 . 3) Pour a dans G, on appelle = Ga Ga l’ensemble des puissances de a : {ak , k ∈ } . Montrer que Ga comporte au maximum 6 éléments, puis montrer que Ga est un sous-groupe de G. Ga est dit engendré par a. Ecrire les différents sous groupes engendrés par les éléments de G. Vérifier que l’ordre de ces sous-groupes divise 6 (c’est à dire l’ordre de G). Existe-t-il des éléments a de G qui engendrent G (c’est à dire Ga =G, G est alors cyclique) ? ___________________________________________________________________ __ Exercice 3 Centre d’un groupe Soit un groupe ( G,⋅) . Le centre de G est l’ensemble C des éléments de G qui commutent avec tous les éléments de G : a ∈ C ⇔ ∀x ∈ G, ax =xa . 1) Le centre C peut-il être vide ? Peut-on avoir G=C ? 2) Démontrer que C est un sous groupe de G. ___________________________________________________________________ __ Exercice 4 Formule du binôme. Soit ( A, + ,.) un anneau non commutatif. 2 1) A-t-on : ( a + b ) =a 2 + 2ab + b 2 pour tous a et b de A ? Justifier la réponse par des exemples. 2) Si a et b sont permutables ( ab = ba ) et n entier>0, vérifier que : n ( a + b )n = ∑ Cnp a pbn− p . p =0 3) Montrer que 33n+ 3 − 26n − 27 est divisible par 169. ___________________________________________________________________ __ © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 42 Arithmétique et codes secrets 43 Exercice 5 Entiers de Gauss On considère l’ensemble [ i= ] × muni des deux opérations : ( a,b) + ( a',b') = ( a + a',b + b') ( a,b)( a',b') = ( aa'− bb', ab'+ a'b) 1) Interpréter ces opérations avec a + ib, i 2 = −1, a,b ∈ . Montrer qu’alors [ i ] est un anneau commutatif unitaire. 2) Trouver tous les éléments inversibles de cet anneau et vérifier que pour la multiplication ils forment un groupe à quatre éléments. Le comparer au groupe de ( Klein (ex. 1) et à ) 4 , + . 9.2 Congruences Exercice 6 Dans montrer que la relation a b ⇔ a3 − b3 =a − b est une relation d’équivalence. Combien d’éléments une classe d’équivalence peut-elle comporter ? La déterminer pour= : a 1= , a 1 = , a 2. 3 ___________________________________________________________________ __ Exercice 7 L’équation 15x 2 − 7 y 2 = 9 possède-t-elle des solutions en nombres entiers relatifs ? Indication : travailler dans 5 . ___________________________________________________________________ __ Exercice 8 1) Pour a ∈ ∗ , montrer que= A a( a 2 − 1) est divisible par 6. 2) Généralisation : pour a ∈ ∗ et n ∈ , montrer que= An a( a 2n − 1) est divisible par 6. ___________________________________________________________________ __ Exercice 9 1) Déterminer, suivant les valeurs de n ∈ ∗ , le reste de la division de 7 n par 4 et par 10 . 77 ) ( 2) Trouver le chiffre des unités de 7 . ___________________________________________________________________ _ Exercice 10 Déterminer le nombre de zéros à la fin de 2009 ! ___________________________________________________________________ __ Exercice 11 Quel est le plus petit nombre multiple de 49 qui s’écrit, en base 10, à l’aide seul chiffre « 1 » ? © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 43 Arithmétique et codes secrets Indications : introduire 44 p 7 , puis utiliser la formule du binôme pour ( 1 + 7 ) . ___________________________________________________________________ __ ( Exercice 12 Eléments inversibles dans l’anneau 1) Ecrire la table de la multiplication de ∗ 10 , + ,. ) 10 = {1,2,.....,9} . Donner la liste des éléments inversibles et vérifier que ces éléments forment un groupe à quatre ( éléments. Est-ce le même groupe que ) 4 , + ? 2) Résoudre dans les équations : a) 5x + 2 ≡ 0 [10 ] b) 6x − 2 ≡ 0 d) x 2 + 5x + 4 ≡ 0 [10 ] c) x 2 ≡ 6 [10 ] [10 ] . . ___________________________________________________________________ __ Exercice13 Théorème chinois « à la main » 1) Ecrire les entiers relatifs vérifiant x ≡ 5 [7 ] . 2) En déduire, en utilisant la table de multiplication de 4x + 1 ≡ 0 4x + 1 ≡ 0 solutions dans du système : [5] . [7 ] 7 (cf. exercice 2), les 9.3 Applications des congruences : NIR Exercice 14 Le NIR (Numéro d’Inscription au Répertoire national d’indentification des personnes physiques) est géré par l’INSEE. Il est formé de 15 chiffres (écrits en base 10) et permet d’identifier chaque habitant en France, par exemple pour son immatriculation à la Sécurité Sociale. Ce numéro est formé de 13 chiffres formant un nombre A, plus une clef de contrôle K de 2 chiffres, soit au total 15 chiffres. Le NIR est A1 =A × 100 + K . La clef K permet de détecter quelques erreurs. Le but de cet exercice est d’analyser des erreurs qui peuvent être détectées par cette clef. On rappelle que les chiffres de A sont formés de renseignements sur l’individu : le premier code le sexe (1 ou 2), les deux suivants l’année de naissance (les deux derniers chiffres) , puis le mois de naissance (de 1 à 12), puis le numéro du département de naissance (99 pour les personnes nées à l’étranger), puis le code de la commune (3 chiffres, il existe un répertoire des communes), puis 3 chiffres correspondant au numéro d’ordre sur le registre d’état civil de la commune. Ce numéro a été inventé en 1942, par un ingénieur, René Carmille (1886-1945), et porte encore les marques de sa création durant une période difficile. La clef K a été introduite plus tard. La clef K est 97 − B , où B est le reste de la division de A par 97. 1) Peut-on avoir 00 comme clef ? Peut-on avoir 97 comme clef ? 2) Calculer 10 3 , 10 6 , 10 9 , 1012 [97 ] . © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 44 Arithmétique et codes secrets 45 On donne le NIR suivant : 1 75 06 75 112 431 61. Vérifier que la clef K est correcte. Vérifier votre propre NIR (sur votre carte d’étudiant). 3) On pose A2= A + K . Vérifier que A2 est divisible par 97. 4) Soient n ∈ et a ∈ {1,2,....,96} . Montrer que 97 ne divise pas a × 10 n . 5) En pratique, pour décider qu’un NIR est valide, on commence par vérifier les valeurs de certains chiffres : le chiffre codant le sexe doit être 1 ou 2, les deux chiffres correspondant au mois de naissance doivent être compris entre 1 et 12…. Sinon le numéro est rejeté. Ensuite pour déterminer si A est correct, on calcule A2 . Si A2 est divisible par 97, on estime que le numéro est correct. Sinon on le rejette. Montrer que cette façon de procéder permet la détection d’une erreur sur un chiffre dans le NIR. 6) Montrer que l’on peut aussi détecter toute permutation de deux chiffres consécutifs distincts dans le NIR. Indication : on examinera les différents cas possibles : - a) les chiffres permutés appartiennent tous les deux à A , - b) la permutation concerne les deux chiffres de K, - c) la permutation concerne un des chiffres de K, et un des chiffres de A . 7) Inventer un nombre de 15 chiffres, inexact, et qui n’est pas rejeté par ce procédé de contrôle. 9.4 Applications des congruences : Un code correcteur et le code de César Exercice 15 Un code correcteur de Hamming Dans cet exercice on propose une méthode pour détecter et corriger une erreur dans la transmission d’un nombre de 10 chiffres décimaux A = a1a2 .....a10 , les ai pouvant prendre les valeurs 0,1,….,9. Pour assurer ce résultat, on ajoute une clef de deux symboles b1 ,b2 , où ces symboles peuvent prendre les valeurs 0,1,….,9 et la valeur X qui représente 10 (comme dans le codage ISBN). L’information transmise est donc composée de 12 symboles ∈ {0,1,...,9,X} . La clef est calculée par des congruences modulo 11, suivant les règles (R1) et (R2) suivantes : 10 ( R1) : b1 ≡ ∑ ai [11] i =1 10 ( R2 ) : b2 ≡ ∑ i × ai [11] . i =1 Le message transmis est N = a1a2 .....a10 b1b2 . On part d’un numéro N transmis (soit 12 symboles), et on suppose que le numéro a été communiqué en faisant au plus une erreur sur un chiffre ou symbole. 1) Si l’erreur a été faite sur un ai avec 1 ≤ i ≤ 10 , montrer qu’aucune des règles (R1) et (R2) n’est satisfaite. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 45 Arithmétique et codes secrets 46 2) Si l’erreur a été faite sur b1 , montrer que la règle (R1) n’est pas vérifiée, tandis que la règle (R2) est vérifiée. 3) Si l’erreur a été faite sur b2 , montrer que la règle (R2) n’est pas vérifiée, tandis que la règle (R1) est vérifiée. 4) Expliquer comment on peut détecter la présence d’une erreur. Montrer que ce ( système permet de corriger une erreur. Indication : utiliser le fait que 11 , + , × ) est un corps. 5) Applications a) Compléter 0123456789_ _ pour avoir un numéro exact. b) On a reçu le numéro N=052170795658, et l’on sait qu’une erreur au plus s’est produite. Y a t il eu une erreur dans la transmission de ce numéro ? Si oui, quel était le numéro initial ? ___________________________________________________________________ __ Exercice 16 Cryptographie de César On donne le codage suivant utilisant 27 symboles. Quel est le résultat de ce programme Maple ? tablecod:=table(['a'=1,'b'=2,'c'=3,'d'=4,'e'=5,'f'=6,'g'=7,'h'= 8,'i'=9,'j'=10,'k'=11,'l'=12,'m'=13,'n'=14,'o'=15,'p'=16,'q'=17 ,'r'=18,'s'=19,'t'=20,'u'=21,'v'=22,'w'=23,'x'=24,'y'=25,'z'=26 ,'_'=0]); tabledecod:=table([1='a',2='b',3='c',4='d',5='e',6='f',7='g',8= 'h',9='i',10='j',11='k',12='l',13='m',14='n',15='o',16='p',17=' q',18='r',19='s',20='t',21='u',22='v',23='w',24='x',25='y',26=' z',0='_']); > cesar:=proc(mes) > local lm,nb,ii,mescode; > lm:=length(mes); mescode:=" "; > for ii from 1 to lm do > nb:=tablecod[substring(mes,ii)];#substring extrait le ii-ème élément de mes > nb:=nb+3 mod 27;mescode:=cat(mescode,tabledecod[nb]);od; > print('message_codé',mescode);end proc; > cesar('mathematiques_et_codages'); 9.5 Nombres premiers Exercice 17 Diviseurs d’un nombre 1) Ecrire tous les entiers ∈ [1,20 ] qui possèdent exactement 6 diviseurs ≥ 1 . 2) Soit p entier naturel premier. On suppose que la somme des diviseurs positifs de p 4 est le carré d’un entier n>0. Montrer que : 2p 2 + p < 2n < 2p 2 + p + 2 En déduire, l’unique couple p,n ∈ solution. ___________________________________________________________________ __ © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 46 Arithmétique et codes secrets 47 Exercice 18 Soit n entier ≥ 2 . On considère les n-1 nombres : n!+ 2, n!+ 3,....,n!+ (n − 1), n!+ n . Démontrer que ces nombres ne sont pas premiers. Soit N entier. Montrer que l’on peut trouver une suite de N nombres consécutifs non premiers. Application numérique : Ecrire une telle suite pour N=4 et N=5. Continuer jusqu’à rencontrer un nombre premier. Trouver un exemple où n!+ 1 est premier. ___________________________________________________________________ __ Exercice 19 Problème posé par Sophie Germain (mathématicienne française, 1776-1831 ; a travaillé sur les courbes et sur les problèmes d’élasticité) Montrer que le seul nombre premier p tel que : ∃x, y ∈ , x 4 + 4y 4 = p est p = 5. Indication : x 4 + 4y 4 = ( x 2 − 2xy + 2y 2 )( x 2 + 2xy + 2y 2 ) . ___________________________________________________________________ __ p Exercice 20 Nombres de Mersenne : M= p 2 − 1 où p est premier. (Marin Mersenne, moine de l’ordre des Minimes, travail publié en 1644 à Paris) 11 1) Le nombre M= 11 2 − 1 est –il premier ? Montrer que 1103 divise M 29 et que 439 divise M73 . p 2) Soient p,q ∈ ∗ . Quel est le reste de la division de 2 puis 2 pq p pq p par 2 − 1 ? q En déduire que 2 − 1 est divisible par 2 − 1 et 2 − 1 . 3) Montrer que si 2n − 1 est premier, alors n est premier. La réciproque est-elle exacte ? ___________________________________________________________________ __ n Exercice 21 Nombres de Fermat : = Fn 22 + 1 (Pierre Fermat, conseiller au Parlement de Toulouse, dans une lettre en 1640 ; il les croyait tous premiers.) 1) Vérifier que F0 , F1 , F2 et F3 sont premiers. Comment vérifier que F4 est premier ? 2) Chercher les restes de 232 dans la division par 641. En déduire que F5 n’est pas premier. (Résultat publié par Leonard Euler, « prince des mathématiques » en 1793.) Conjecture : On ne sait pas si, parmi les nombres de Fermat, d’autres que ceux de la question 1 sont premiers. Tous ceux où les vérifications ont pu être faites sont composés. n 2 3) On pose G = n 2 − 1 . Montrer que ces nombres sont composés pour n ≥ 2 (partir de Gn+1 ). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 47 Arithmétique et codes secrets 48 9.6 Entiers premiers entre eux Exercice 22 PGCD, algorithme d’ Euclide 1) Déterminer le PGCD de 21 590 et 9 525. 2) Résoudre dans : 34x ≡ 2 [15 ] . 3) Trouver tous les entiers x et y compris entre 0 et 150 tels que : 21590x − 9525y = 1270 . ___________________________________________________________________ __ ( Exercice 23 Diviseurs de zéro dans l’anneau n , + ,. ) 1) Soit n un entier non premier. Soit a compris entre 1 et (n-1). Montrer que a est un ( diviseur de zéro dans ) n , + ,. si et seulement si a et n ne sont pas premiers entre eux. (Indication : introduire le PGCD de a et n.) 2) Applications . Que peut-on dire des autres a) Donner la liste des diviseurs de 0 dans 12 éléments ? b) Résoudre x 2 + 6x − 91 = 0 dans 101 puis dans 100 . ___________________________________________________________________ __ (pour RSA) Exercice 24 Calcul d’inverses dans des anneaux n 1) Calculer l’inverse de e=3 dans a) c) 12 b) 23 352 . 2) Calculer l’inverse de e=17 dans a) 23 b) 352 . ___________________________________________________________________ __ Exercice 25 Chiffrement de Hill Examen OT 2006 Cf. § X.3 Textes d’examen ___________________________________________________________________ __ Exercice 26 Identité de Bezout avec trois entiers (premiers entre eux) 1) Trouver toutes les solutions dans 3 de 5u + 7 v + 11w = 1. Indication : commencer par résoudre le problème dans 11 . de 6u + 10v + 15w = 1. 2) Trouver toutes les solutions dans 3 Attention : pris deux par deux , 6, 10 et 15 ne sont pas premiers entre eux ! Indication 6 × 1 + 10 × 1 − 15 × 1 = 1. ___________________________________________________________________ __ Exercice 27 Nombres premiers entre eux, théorème de Gauss 1) En utilisant (n2 + 1)2 , factoriser N = n4 + n2 + 1,n ∈ . Le nombre N peut-il être premier ? 2) Soit n>1. Montrer que N peut être décomposé en un produit de deux facteurs premiers entre eux. ___________________________________________________________________ __ © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 48 Arithmétique et codes secrets 49 Exercice 28 Problème posé par Euler Que pensez-vous de cet énoncé ? « Un paysan achète des chevaux et des bœufs ; il paie 31 écus par cheval et 20 écus pour chaque bœuf. Il se trouve que les bœufs lui ont coûté 7 écus de plus que ce que lui ont coûté les chevaux. Combien cet homme a-t-il acheté de bœufs et de chevaux ? » 9.7 Théorème des Fermat / Théorème chinois Exercice 29 Théorème Chinois : le phare Un phare émet un signal jaune toutes les 15 minutes et un signal rouge toutes les 28 minutes. On aperçoit le signal jaune à 0h 02 mn et le rouge à 0h 08 mn. A quelle heure verra-t-on pour la première fois les deux signaux en même temps ? ___________________________________________________________________ __ Exercice 30 Théorème Chinois : les pirates 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 alors 3 pièces. Mais les pirates se querellent, et 6 d’entre eux sont tués. Le cuisinier recevrait alors 4 pièces. Dans un naufrage ultérieur, seuls le butin, 6 pirates et le cuisinier sont sauvés, et le partage donnerait alors 5 pièces d’or à ce dernier. Quelle est la fortune minimale que peut espérer le cuisinier quand il décide d’empoisonner le reste des pirates ? ___________________________________________________________________ __ Exercice 31 Petit théorème de Fermat Montrer que pour tout x entier, = A x( x 24 − 1) est divisible par 39. ___________________________________________________________________ __ Exercice 32 Une autre démonstration du petit théorème de Fermat Soit p>2 premier. Montrer que les éléments inversibles (pour la multiplication) du corps forment un groupe multiplicatif. Quel est son nombre d’éléments ? p On rappelle que l’ordre d’un sous groupe divise l’ordre d’un groupe (fini). En déduire que pour x premier avec p : x p −1 ≡1 [ p] ___________________________________________________________________ __ Exercice 33 Examen 2005 Groupes cycliques Cf. § X.2 Textes d’examen, questions 1 et 2. ___________________________________________________________________ __ Exercice 34 Examen 2005 Racines carrées modulaires Cf. § X.1 Textes d’examen, questions 1, 2 et 3. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 49 Arithmétique et codes secrets 50 ___________________________________________________________________ Exercice 35 La réciproque du théorème de Fermat est inexacte : nombres de Carmichael Le petit théorème de Fermat affirme que si p est premier et a non multiple de p, alors a p−1 ≡ 1 [ p] . On se pose la question de savoir, la relation a p −1 ≡1 [ p] étant vérifiée pour tout a premier avec p, si alors p est premier. La réponse est non, il existe des nombres n, dits de Carmichael, qui sont composés et vérifient an−1 ≡ 1 [ n] . On va le montrer pour le plus petit d’entre eux, 561, en remarquant que 561 = 3 × 11 × 17 , 560 = 561 − 1 = 2 × 280 = 10 × 56 = 16 × 35 . Ecrire le petit théorème de Fermat pour les nombres premiers 3, 11 et 17. Utiliser les décompositions ci-dessus pour montrer que pour tout a premier avec 561, on a a 560 ≡ 1 [ 561] . 9.8 RSA Exercice 36 RSA « à la main » Bob et Alice viennent d’étudier RSA et décident de le tester sur un exemple simple. Ils choisissent les entiers premiers 11 et 13, d’où N = 11 × 13 = 143 . 1) Ils choisissent e=3. Est-ce correct ? Dorénavant la clef publique est formée de N=143, e=7. Ils choisissent un message M de valeur inférieure à 143, et le codent. Ils obtiennent C=27. 2) Trouver le reste de la division de 27 103 par 11, et le reste de la division de 27 103 par 13. En déduire, à l’aide du théorème chinois, le reste de la division de 27 103 par 143. 3) Décoder le message C. ___________________________________________________________________ __ Exercice 37 Une attaque de RSA : même choix de N. Comme la vérification que des nombres sont premiers est coûteuse, deux correspondants d’Alice, Bob et Bernard utilisent pour leurs clefs privées les mêmes entiers premiers p et q, et donc le même N= p × q . Par contre ils choisissent deux entiers e1 et e2 différents et premiers entre eux. Leurs clefs publiques sont donc ( N , e1 ) ; ( N , e2 ) . Alice veut envoyer le même message M à Bob et Bernard (elle connaît bien sûr leurs clefs publiques). Elle crypte M respectivement en C1 et en C 2 . Montrer que si Oscar intercepte C1 et C 2 , il peut retrouver le message M. Application numérique avec Maple : N=10000000167993271. La clef publique de Bob est (N,357), la clef publique de Bernard est (N,501). Oscar intercepte des messages chiffrés : C1:=4120301081636019 ;C2:=1279799048180465; envoyés par Alice et pense qu'il s'agit du même message M. Retrouver M sans factoriser N. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 50 Arithmétique et codes secrets 51 ___________________________________________________________________ __ Exercice 38 Une faiblesse de RSA : même choix de e Pour que RSA soit sûr, il doit être employé avec des nombres premiers très grands, et une valeur de e variable. Ce n’est pas toujours le cas. Dans le protocole de cartes bancaires, la partie vérifiée avec RSA utilise e=3 pour toutes les transactions. Que risque-il de se passer ? Alice veut envoyer à trois correspondants Bob 1 , Bob 2 et Bob 3 le même message M. Elle connaît les clefs publiques de ses trois correspondants, qui sont formées avec la même valeur e=3. D’où les trois couples de clefs publiques : ( N1 ,3) ; ( N 2 ,3) ; ( N 3 ,3) . Alice crypte donc M avec ces clefs et obtient les trois messages cryptés C1 , C 2 , C 3 . 1) On suppose que N1 , N 2 , N 3 sont premiers entre eux, pris deux à deux. Montrer que si Oscar intercepte les trois messages cryptés, il peut retrouver le message d’origine M. Expliquer pourquoi deux messages interceptés ne suffisent pas à retrouver M. 2) Application numérique à la main : N1 205, = = N 2 187 = , N 3 667 . Vérifier que ces nombres sont premiers entre eux deux à deux. On donne = C1 10, = C 2 111, = C 3 167 . Retrouver le message M. 3) Application numérique avec Maple : N1:=10000000167993271;N2:=10000000077056303;N3:=100000007614398 83; C1:=9010328151653526;C2:=3715786019602206;C3:=4712381892400635; Montrer (sans utiliser la factorisation des nombres N), qu’Oscar peut retrouver le message M. Vérifier ce résultat avec la clef secrète de Bob 1 . 4) On suppose que N1 et N 2 ne sont pas premiers entre eux. Montrer qu’alors Oscar peut factoriser N1 et N 2 (donc trouver la clef secrète de Bob 1 ). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 51 Arithmétique et codes secrets 52 10 Textes d’examens Note : les calculatrices sont autorisées. Sont également autorisées les notes de cours distribuées par les enseignants, ainsi que les notes manuscrites personnelles. Tout autre document et tout moyen de communication sont interdits. 10.1 Racines carrées modulaires et chiffrement de Rabin, examen du 17 mai 2005, EURINSA approfondissement « Mathématiques discrètes » ( On note, pour n entier >3, {1,2,....,n − 1} les éléments de et ≡ . 1) Ecrire les carrés des éléments de ( n ) ∗ ) ∗ n et on confond = pour chacune des valeurs de n suivantes : n=5, 7 et 8. Donner la liste des éléments qui sont des carrés, c’est-à-dire les éléments de Cn = { ( c ∈ n ) ∗ ( , ∃x ∈ n ) ∗ ,x 2 = c } et préciser le nombre de solutions de l’équation x 2 = a pour tous les éléments a de Cn . 2) Soit p premier, tel que p ≡ 3 [ 4] et soit c ∈ C p . Montrer, en utilisant le théorème de Fermat que d Donner toutes les solutions de l’équation : x 2 = c p +1 = c 4 est une racine carrée de c. [ p] et préciser leur nombre. Application numérique a) p = 31. Résoudre : x 2 ≡ 10 b) p = 31. Résoudre : x 2 ≡ 11 c) p = 43. Résoudre : x 2 ≡ 10 [ 31] . [ 31] . [ 43] . 3) Soit n = pq où p et q sont premiers, et soit c ∈ C p ∩ C q c’est-à-dire qu’il existe u et v tels que : u2 ≡ c [ p] et v2 ≡ c [q ] . a) Expliquer pourquoi on peut trouver des entiers relatifs a et b tels que : a ≡ 1 a ≡ 0 [ p] [q ] b ≡ 0 b ≡ 1 [ p] [q ] b) Montrer que = x au + bv est une racine carrée de c modulo n. Application numérique c) Trouver des entiers relatifs λ et μ tels que 31λ + 43μ = 1. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 52 Arithmétique et codes secrets [ 31] [ 43] a ≡ 1 a ≡ 0 d) Trouver a et b tels que : b ≡ 0 b ≡ 1 e) Donner une solution de l’équation x 2 ≡ 10 53 [ 31] . [ 43] [1333] . Combien cette équation possède-t-elle de solutions ? 4) Le chiffrement de Rabin consiste à choisir deux entiers premiers p et q, tous les deux congrus à 3 modulo 4 et qui constituent la clef privée. La clef publique est le produit n = pq . La fonction de chiffrement est l’élévation au carré modulo n, c’est-à-dire que si M est le message à transmettre (de longueur <n), le message chiffré est MC = M 2 [n] . La fonction de déchiffrement consiste en le calcul de la racine carrée modulo n. Les mathématiciens ont montré que lorsque n est grand, ceci n’est possible que si on connaît la factorisation de n. On choisit M = 1234 et n = 1333 . a) Ecrire le message chiffré MC de M. b) On donne MC = 10 et n = 1333 . Déchiffrer MC. Quel est le problème théorique de ce chiffrement ? c) Proposer une idée permettant d’utiliser ce chiffrement malgré le problème de la question précédente. 10.2 : Groupes cycliques et chiffrement El Gamal, examen du 25 mai 2005, OT « Mathématiques et Codages » On note, pour p entier premier >3, {1,2,...., p − 1} les éléments de ( ) ∗ p . On rappelle que cet ensemble est un groupe commutatif pour la multiplication et qu’il ( comporte (p-1) éléments. On= note p p ) ,× ∗ ce groupe. Pour tout a de p on appelle Ga les puissances de a, c’est-à-dire : = Ga {a k , k ∈ } 1) a) Pour tout a de p montrer que Ga est un sous-groupe de p et que: { } Ga = a k , k ∈ {1,2,....( p − 1)} , Application numérique b) Pour p=7, écrire tous les sous-groupes Ga possibles et indiquer le nombre de leurs éléments. Vérifier que ce nombre divise p-1=6. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 53 Arithmétique et codes secrets 54 On appelle générateur de p , tout élément a de ce groupe tel que p = Ga . On dit alors que p est cyclique. On admet que pour tout p premier p est cyclique. c) Donner les générateurs de 7 . 2) On choisit p=19. a) Vérifier que 3 est générateur de 19 . b) L’entier a=8 est il un générateur de 19 ? c) Pour k dans {1,2,...,18} , on pose b = 3k . En utilisant l’identité de Bezout et le théorème de Fermat, montrer que : b est un générateur de 19 si et seulement si k et 18 sont premiers entre eux. d) Ecrire les entiers compris entre 1 et 18 et qui sont premiers avec 18. e) En déduire tous les générateurs de 19 . 3) Le chiffrement El Gamal consiste à choisir comme clef privée un entier s. La clef publique est constituée de trois entiers : p premier, a générateur du groupe p et de P calculé : P ≡ as [ p] . Pour chiffrer un message M à transmettre (de longueur <p), on commence par tirer au hasard un entier h dans {1,2,..., p − 1} qui reste secret, mais qui change à chaque message et on calcule : C1 ≡ a h Le message chiffré est (C1 ,C 2 ) . [ p] et C2 ≡ M.P h [ p] . a) Expliquer, en s’aidant de 7 , pourquoi il est préférable que a soit un générateur de p . b) Déchiffrement. Montrer que si on connaît la clef publique (p,a,P), la clef privée s et (C1 ,C 2 ) on peut retrouver le message M sans connaître h. Les mathématiciens ont montré que lorsque p est grand, ceci n’est possible que si on connaît s : c’est le difficile problème du logarithme discret. c) Expliquer pourquoi le programme Maple ci-dessous déchiffre le message M. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 54 Arithmétique et codes secrets 55 > restart;p:=113;a:=23;s:=8;#a est un générateur de Z/pZ. p := 113 a := 23 s := 8 > P:=a^s mod p; P := 97 > M:=100;h:=rand() mod p;C1:=a&^h mod p;C2:=M*P&^h mod p; M := 100 h := 21 C1 := 71 C2 := 13 > y:=p-1-s;m:=C2*C1&^y mod p; y := 104 m := 100 d) Donner un avantage et un désavantage de ce chiffrement. 4) Applications numériques a) Chiffrement pour p=19 On choisit a=3, et s=6. Calculer P. Le message est M=6, on tire h=7. Calculer (C1 ,C 2 ) . b) Déchiffrement pour p=19 Le message transmis est (C1 ,C 2 ) = (18,15) , avec toujours a=3, et s=6. Retrouver M. c) Déchiffrement pour p=113 Trouver le reste de la division de 15109 par 113. On admet que a=5 est générateur de 113 . On choisit a=5 et s=3. Le message transmis est (C1 ,C 2 ) = (15,103) . Retrouver M. 10.3 Matrices à coefficients dans 26 et chiffrement de Hill, examen du 18 janvier 2006, OT « Mathématiques et Codages » 1) Matrices à coefficients dans 26 . a) Comment sont caractérisés les éléments inversibles de 26 ? En faire la liste complète. Pour chacun d’eux préciser leur inverse (expliquer comment il a été obtenu). . b) Soit M une matrice carrée à coefficients dans 26 © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 55 Arithmétique et codes secrets Montrer que M est inversible dans coefficients dans 56 26 (c'est-à-dire qu’il existe une matrice M’ à 26 telle que MM’=M’M=I), si et seulement si le déterminant de M est inversible dans 26 . c) Montrer que les matrices suivantes sont inversibles dans 26 et calculer leur −1 0 1 K 3 0 −1 1 = 1 1 −1 Indication : la matrice inverse de K 3 peut ne comporter que des 0 ou des 1. 7 3 inverse : K 2 = 4 1 2) Le chiffrement de Hill. Le mathématicien Lester Hill (1891-1961) a proposé ce chiffrement en 1929. On part d’un texte alphabétique (sans séparateur), avec l’alphabet de 26 lettres A, B, ....., Z, et d’une matrice M carrée d’ordre m, à coefficients dans . Le message est alors 26 calibré à une longueur multiple de m (par ajout de lettres arbitraires, par exemple A), puis coupé en blocs de longueur m. Chaque bloc est transformé en valeur numérique, comme dans les cryptographies historiques étudiées. Ici on choisit la correspondance suivante : A 0 B 1 C 2 D 3 E 4 F 5 G 6 H 7 I 8 J 9 K 10 L 11 M 12 N 13 O 14 P 15 Q 16 R 17 S 18 T 19 U 20 V 21 W 22 X 23 Y 24 Z 25 On considère alors chaque bloc comme un vecteur dont on calcule l’image par la matrice M. On décode ces valeurs numériques, et on obtient le message (alphabétique) crypté. Exemple 7 5 . Le message est coupé en 1 2 Pour le message = INSA, m=2, et la matrice M1 = deux vecteurs (8, 13) et (18, 0). Le message numérique crypté est 17 8 22 18, soit le message crypté final RIWS. a) On choisit la matrice K 2 . On donne le message CODAGES. Donner le message crypté. On donne le message GWYF crypté par K 2 . Le décrypter. b) On choisit la matrice K 3 . On donne le message CODAGES. Donner le message crypté. On donne le message BPNWIW crypté par K 3 . Le décrypter et commenter. c) On donne le message crypté HUFSXBQKVLOPDMANDMEI par une matrice K d’ordre 2. On sait que le message commence par REBONJOUR. Déterminer la matrice K. 3) Quels sont les avantages et désavantages du chiffrement de Hill? © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 56 Arithmétique et codes secrets 57 10.4 RSA, théorème de Fermat et nombres pseudopremiers, examen du 18 avril 2006, EURINSA approfondissement « Mathématiques discrètes » Exercice 1 Arithmétique et cryptographie : RSA Vous interceptez le message C = 171 , crypté par RSA et destiné à Bob. Dans un annuaire de clefs publiques, vous lisez les clefs de Bob : N = 527 et e = 7 . Décryptez le message C. Exercice 2 Arithmétique et cryptographie : théorème de Fermat et nombres pseudo premiers Dans tout ce problème on note de la même façon un élément de et sa classe d’équivalence modulo n, et vous pouvez confondre = et ≡ . Partie I ( Pour n entier >2, on note {1,2,....,n − 1} les éléments de n ) . ∗ 1) Montrer que : 390 ≡ 1 [7 ] et 390 ≡ 1 [13] . En déduire que 390 ≡ 1 [91] . 2) En utilisant une méthode similaire, montrer que 1105 est un nombre de Carmichael, c'est-à-dire que pour tout entier a premier avec 1105, on a a1104 ≡ 1 [1105 ] . ( 3) On considère les éléments inversibles (pour la multiplication) de n ) . ∗ Comment les caractériser ? Montrer que l’ensemble de ces éléments inversibles est un groupe pour la multiplication. On note n ce groupe. Lorsque n est un entier premier, quel est le nombre d’éléments de n ? Application numérique : donner la liste des éléments de n et la table de la multiplication pour n = 9 . 4) Pour tout a de n on appelle Ga les puissances de a, c’est à dire : = Ga {a k , k ∈ } Montrer qu’il existe q entier >0 tel que aq ≡ 1 [n] . Indication : on remarquera que a k ne prend qu’un nombre fini de valeurs. En déduire que Ga est un sous groupe de n (pour la multiplication). © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 57 Arithmétique et codes secrets 58 Application numérique : Pour n = 9 , écrire tous les sous groupes Ga possibles et indiquer le nombre de leurs éléments. aω( a) 5) On note ω( a) le nombre d’éléments de Ga . ≡ 1 [n] . Montrer que Partie II Pour n entier >2 et a entier positif, on dit que n est a-pseudo premier si an−1 ≡ 1 [n] . 1) Les nombres 91 et 1105 sont-ils pseudo premiers ? Sont-ils premiers ? 2) On veut utiliser la notion de nombre pseudo premier pour tester si n est premier. L’entier n étant donné, si on trouve un entier a premier avec n, tel que an−1 ≠ 1 , alors n est composé, sinon on ne peut pas conclure. Donner une valeur d’un entier n où ce critère ne permet pas de conclure pour un premier choix de a, mais où on peut conclure avec un autre choix de a. Donner une valeur de n où ce critère ne permet pas de conclure, quel que soit le choix de a. 3) Soit n et a tels que n soit a-pseudo premier. Montrer que a appartient n (c'est-àdire que a est inversible pour la multiplication dans l’ensemble des entiers modulo n). 4) Soit a dans n . Montrer que n est a-pseudo premier si et seulement si ω( a) divise (n-1). 5) Pour n=9, écrire toutes les valeurs de a telles que 9 soit a-pseudo premier. { a ∈ n n est a − pseudo premier } . 6) Pour n entier >2, on pose H n = Montrer que H n est un sous groupe de n . Application numérique : comparer le nombre d’éléments de H n et de n pour les deux valeurs suivantes de n : a) n = 9 b) n= 1109. 10.5 Sécurité, factorisation des entiers, examen du 24 janvier 2007, OT « Mathématiques et Codages » Exercice 1 Sécurité (barème indicatif : 3 points) Comment Bob peut-il envoyer un message à Alice en assurant la confidentialité et l’authenticité de son message ? Vous n’oublierez pas de définir ces deux notions. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 58 Arithmétique et codes secrets 59 Exercice 2 Arithmétique et cryptographie : factorisation. (barème indicatif : 10 points) On sait que la sécurité des méthodes de cryptage à clef secrète repose sur l’impossibilité de factoriser de grands nombres. Et que les cryptanalystes essayent de les factoriser... On donne ici les idées sur lesquelles sont fondés la plupart des algorithmes de factorisation, idées qui datent du XVIIème siècle. En 1643, Fermat, répondant au Père Mersenne qui le met au défi de factoriser 100 895 598 169, a l’idée d’écrire ce nombre sous la forme d’une différence de deux carrés, afin de tirer parti de l’identité n = X 2 − Y 2 = ( X + Y )( X − Y ) . On note E la partie entière d’un réel r : E(r ) ∈ , E(r ) ≤ r < E(r ) + 1 . 1) Soit n un entier premier, X et Y entiers tels que = n X2 −Y2 . Ecrire tous les couples ( X ,Y ) vérifiant X 2 − Y 2 = 0 dans n . On rappelle qu’un entier d diviseur de n s’écrit d ≡ 0 [ n ] ou d = 0 dans n , en écrivant de la même façon les nombres et leur classe d’équivalence modulo n. . Pour la suite, on se place donc dans l’anneau n 2) On donne n = 143 . Etudier, dans l’anneau 143 si X − Y , X + Y , PGCD(n,X − Y ), PGCD(n,X + Y ) sont des diviseurs de 143 pour les valeurs X et Y vérifiant X 2 − Y 2 ≡ 0 [143] suivants : a) pour 12 − 1 ≡ 0 [143] , 2 2 b) pour 37 2 − 15 2 ≡ 0 [143] . X − Y , X + Y ne sont pas des diviseurs de n, constater que PGCD(n,X − Y ) et PGCD(n,X + Y ) sont des diviseurs de n, distincts de 1 et n. Lorsque 3) Soit n entier, tel qu’il existe X et Y entiers vérifiant = n X 2 − Y 2 , tels que X − Y , X + Y ne sont pas des diviseurs de n. a) Montrer que n est composé. b) Montrer que PGCD(n,X − Y ) et PGCD(n,X + Y ) sont des diviseurs de n, distincts de 1 et n. La méthode de Fermat consiste alors à calculer les carrés modulo n d’entiers X légèrement supérieurs à E ( n ) . L’espoir est de tomber sur un petit carré parfait Y 2 . La question 3 montre qu’on obtient alors des diviseurs intéressants de n. 4) On cherche à factoriser n = 17947 . © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 59 Arithmétique et codes secrets a) On pose= X E( n )= + 1 134 . Calculer X 2 dans 60 n . b) En déduire deux diviseurs (différents de 1 et n) de n. c) Déterminer la décomposition de n = 17947 en facteurs premiers. 5) On cherche à factoriser n = 849 239 . a) Calculer PGCD(n,822 201) , PGCD(n,614 299) et PGCD(n,234 940) . [Indiquer les calculs sur la copie.] Vérifier qu’on obtient les nombres premiers 1229 et 691. , avec x compris entre 0 et b) On pose = X E( n ) + 1 . Calculer x = X 2 dans n ( n − 1) . Donner, la décomposition en facteurs premiers de x. Peut-on en déduire, comme dans la question 4, la décomposition de n en facteurs premiers ? c) Calculer la décomposition en facteurs premiers de y, z et t : 2 2 , avec y ,z et t compris entre 0 et = y ( 922 = 933 ) ,t ( 937 ) dans )2 , z (= n ( n − 1) . d) En déduire que le produit 922 × 933 × 937 est un carré modulo n. e) En déduire X et Y compris entre 0 et ( n − 1) , tels que X 2 − Y 2 ≡ 0 [n] . f) En utilisant la question 3, déterminer deux diviseurs (différents de 1 et n) de n. g) Déterminer la décomposition de n = 849 239 en facteurs premiers. 10.6 Groupes cycliques, protocole de Diffie-Helmann, examen du 5 juin 2007, EURINSA approfondissement « Mathématiques discrètes » Tous les calculs qui ne se font pas directement avec la calculette doivent être expliqués sur la copie. Remarque : on note de la même façon un élément de et sa classe d’équivalence modulo n, et vous pouvez confondre = et ≡ . Soit n un entier premier. ( 1) Soit a un élément de n ) ∗ ,× . a) Montrer que les puissances de a, c'est-à-dire = Ga { ak , k ∈ } forment un groupe. L’élément a est dit générateur de Ga , et Ga est dit engendré par a. Quelles sont les valeurs possibles pour l’ordre de Ga ? ( b) On considère le groupe multiplicatif 37 Trouver le sous groupe engendré par a = 36 . © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. ) ∗ ,× . 60 Arithmétique et codes secrets ( c) On considère le groupe multiplicatif 43 ) ∗ Trouver le sous groupe engendré par a = 41 . x ≡ 36 x ≡ 35 2) Résoudre dans 2 le système 61 ,× . [ 37 ] . [ 43] 3) RSA Alice veut envoyer un message M à Bob, avec le système de cryptographie RSA. Dans un annuaire de clefs publiques, elle trouve les clefs publiques de Bob : N = 1591 et e = 5 . Elle envoie MC = 1331 , crypté par RSA et destiné à Bob. Mais comme N n’est pas très grand, vous allez pouvoir décrypter ce message. a) Expliquer ce que représente d, tel que MC d [1591] soit égal au message M. b) Calculer une valeur de d. c) Comme le calcul de M = MC d [1591] est difficile avec une calculette, montrez, en utilisant les questions précédentes que : MC d ≡ 36 d MC ≡ 35 [ 37 ] [ 43] . En déduire le message M. 4) Protocole de Diffie-Hellmann Alice et Bob ne disposent que d’un canal peu sûr, et veulent construire une clef secrète qui va leur permettre ensuite d’échanger des données. i) Un des deux choisit un grand nombre premier p, et construit un générateur g du ( groupe p ) ,× ∗ (on admet que lorsque p est premier ceci est toujours possible). Alice et Bob échangent ces valeurs de p et g par l’intermédiaire du canal. ii) Alice choisit un entier a dans {2,3,....., p − 1} , qu’elle garde secret. Elle calcule A ≡ ga [ p] qu’elle transmet à Bob, toujours par le même canal. iii) Bob choisit un entier b dans {2,3,....., p − 1} , qu’il garde secret. Il calcule B ≡ gb [ p] qu’il transmet à Alice, toujours par le même canal. iv) La clef commune est K ≡ g ab [ p] . a) Expliquer comment Alice et Bob calculent leur clef. ( b) Pourquoi choisit-on un générateur de ) ∗ p ? c) Expliquer, lorsque p est grand, pourquoi Oscar qui a pu récupérer toutes les valeurs qui ont transité par le canal, ne peut pas calculer K. d) Application numérique = p 17= , g 5,= a 6,= b 8. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 61 Arithmétique et codes secrets 62 Calculer A, B et la clef secrète. 10.7 RSA, RSA-CRT utilisé lors de la validation des cartes bancaires, examen du 2 juin 2009, EURINSA approfondissement « Mathématiques et codages » Exercice 1 RSA avec authentification (barème indicatif : 7 points) Alice doit envoyer des notes M (M est un entier ≤ 40 ) à Bob, en étant sûre que ses notes ne peuvent pas être modifiés . De plus Bob veut être certain que les notes reçues proviennent bien d’Alice. Ils vont utiliser le procédé de cryptographie RSA pour le cryptage et l’authentification. Au préalable, ils sont déposé auprès d’un organisme certificateur leurs clefs publiques : - pour Alice N a = 57 , ea = 7 - pour Bob N b = 55 , eb = 3 . Ils ont choisi comme fonction de hachage la somme des chiffres de M, soit s = h( M ) . 1) Expliquer ce que représentent ces clefs, et calculer les clefs privées d’Alice et de Bob. On les notera pa , q a , da pour Alice et pb , qb , db pour Bob. 2) Alice veut envoyer la note M = 13 à Bob. La signature de cette note est = s h( = M) 4 . Alice va crypter M avec les clefs publiques de Bob et obtenir C. Donner la valeur de la note cryptée C. Alice signe la note M , en cryptant avec sa clef privée da , elle obtient S qu’elle transmet à Bob. Calculer S. Aide au calcul : 49 ≡ 1 [ 57 ] 3) Alice veut maintenant transmettre une note M, qu’elle crypte avec les clefs de Bob et obtient le message crypté C = 36 , qu’elle transmet à Bob. Elle calcule alors s = h( M ) , qu’elle crypte avec sa clef privée da , elle obtient S = 28 qu’elle transmet à Bob. Quelle est la valeur de la note M décryptée par Bob ? Expliquer les calculs de Bob. Expliquer comment Bob s’assure que cette note est bien authentique. Aide au calcul : 36 5 ≡ 1 [ 55 ] Exercice 2 RSA-CRT (barème indicatif : 7 points) L’algorithme de signature RSA est utilisé dans le processus de payement par carte bancaire en mode signature. Avec des clefs privées ( p,q,d) et des clefs publiques ( N ,e) , la méthode standard, consiste à signer le message M par S = M d [mod N ] . Afin d’améliorer les performances de ce calcul, on utilise l’algorithme CRT de Henri Garder fondé sur le théorème chinois. On montre qu’alors le calcul est presque quatre fois plus rapide qu’avec la méthode standard. On donne p et q entiers premiers, N = pq , d premier avec ( p − 1)(q − 1) et un message M, de longueur inférieure à p et q. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 62 Arithmétique et codes secrets 1) On pose d ≡ dp que M d ≡ M dp [ p − 1] , avec dp reste de la division de d par ( p − 1) . Montrer [ p] . On calcule de même dq ≡ d Sp ≡ M dp 63 [q − 1] , puis on effectue les exponentiations : [ p] et Sq ≡ M d [q ] . q Le théorème chinois permet d’affirmer que la signature S est solution du système : S ≡ M d ≡ Sp d S ≡ M ≡ Sq [ p] . [q ] Pour appliquer ce théorème on détermine les entiers relatifs u et v tels que : up + vq = 1. 2) Montrer que S ≡ (Sq − Sp )up + Sp [ pq ] . (C’est ainsi qu’est programmé l’algorithme RSA-CRT.) 3) Application numérique On donne = p 311, = q 353, = M 36, = d 72747 (cette valeur est l’inverse de e = 3 , utilisé dans l’authentification des cartes bancaires). Calculer, à l’aide de l’algorithme RSA-CRT, la signature S = M d [mod N ] . Les différentes valeurs utilisées ci-dessus devront être précisées sur votre copie. Aide au calcul : 36 5 ≡ 1 [ 311] et 368 ≡ −1 [ 353] . 4) On revient au cas général. On va montrer que cet algorithme est sensible à une attaque par faute. Montrer que S peut s’écrire : S ≡ aSp + bSq , avec b ≡ 0 [ p ] . b ≡ 1 [ q ] 5) Un attaquant peut, en agissant de façon externe, provoquer une faute lors du calcul de Sp . Au lieu d’obtenir Sp , l’algorithme calcule S'p . a ≡ 1 a ≡ 0 [ p] [q ] La signature est alors S' ≡ aS'p + bSq . Montrer que si l’attaquant connaît S, S’ et N = pq , il peut calculer q, c'est-à-dire casser le code, en utilisant un algorithme très rapide. © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 63 Arithmétique et codes secrets 64 11 BIBLIOGRAPHIE • • • • • • • • Jacques Stern, La science du secret, Editions Odile Jacob (DOC’INSA 22525) Simon Singh, Histoire des codes secrets, Le livre de Poche (Bibliothèque des Humanités 5/6 (091) SIN) Jean Luc Delahaie, Merveilleux nombres premiers, Edition Belin (DOC’INSA usuel et 15648) Gilles Dubertret, Initiation à la cryptographie, Edition Vuibert (DOC’INSA 14625). Pierre Vigoureux, Cryptographie, libertés individuelles et codes secrets, Editions Ellipses (DOC’INSA 25706). Johannes Buchmann, Introduction à la cryptographie, Editions Dunod (DOC’INSA 26552). Bruno Martin, Codage, cryptologie et applications, Ed. Presses Polytechniques et universitaires Romandes (DOC’INSA 21937). Dany-Jack Mercier, L'algèbre dans la correction des erreurs, http://megamaths.perso.neuf.fr/documents/ccod0002.pdf www.bibmath.net/crypto/index.php3 www.apprendre-en-ligne.net/crypto/menu/index.html www.sciences.ch/htmlfr/infotheorique/infocrypto01.php © [FACK Hélène], [2005], INSA de Lyon, tous droits réservés. 64