niversité de Rennes I ENSSAT Lannion U INFORMATIQUE 2 INTRODUCTION À LA CRYPTOLOGIE SUPPORT DE COURS Patrice S truillou 2020 - 2021 Table des matières 1 Cryptographie à clef privée 1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Contexte général de la cryptographie . . . . . . . . . . . . . . . . . . . 1.1.2 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Quelques systèmes cryptographiques simples . . . . . . . . . . . . . . . . . . . 1.2.1 Chirement par décalage . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Chirement par substitution . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3 Chirement de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4 Chirement par permutation . . . . . . . . . . . . . . . . . . . . . . . 1.2.5 Chirement de Hill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Notion de sécurité inconditionnelle - Le masque jetable . . . . . . . . . . . . . 1.3.1 Sécurité inconditionnelle au sens de Shannon . . . . . . . . . . . . . . 1.3.2 La théorie de Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Un système inconditionnellement sûr : le chirement de Vernam . . . . 1.4 Méthodes de chirements en chaine . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 Principe des chirements en chaine . . . . . . . . . . . . . . . . . . . . 1.4.2 Un exemple simple de chirement en chaine synchrone : génération des clefs par relation de récurrence linéaire . . . . . . . . . . . . . . . . . . 1.4.3 Un exemple simple de chirement en chaine asynchrone . . . . . . . . 1.5 Les standards de chifrement des données . . . . . . . . . . . . . . . . . . . . . 1.5.1 Historique et principes généraux du DES . . . . . . . . . . . . . . . . . 1.5.2 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Fondements arithmétiques de la cryptographie 2.1 Divisibilité, congruences . . . . . . . . . . . . . . 2.1.1 Division euclidienne . . . . . . . . . . . . 2.1.2 Relation de congruence . . . . . . . . . . 2.1.3 Idéaux de Z . . . . . . . . . . . . . . . . . 2.1.4 L'anneau Z/nZ . . . . . . . . . . . . . . . 2.2 PGCD - PPCM . . . . . . . . . . . . . . . . . . . 2.2.1 Dénition du plus grand commun diviseur 2.2.2 Propriétés élémentaires du PGCD . . . . 2.2.3 Théorème de Bezout . . . . . . . . . . . . 2.2.4 Conséquences du théorème de Bezout . . 2.2.5 Le plus petit commun multiple . . . . . . 2.2.6 L'algorithme d'Euclide . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 5 5 6 6 7 7 8 8 9 11 12 12 12 13 13 13 14 15 15 15 16 17 18 19 19 20 20 20 21 22 TABLE DES MATIÈRES 2 2.3 Nombres premiers . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Propriétés élémentaires des nombres premiers . . . . . . 2.3.2 Décomposition en nombres premiers . . . . . . . . . . . 2.3.3 Vérication élémentaire de primalité . . . . . . . . . . . 2.3.4 Le théorème d'Hadamard . . . . . . . . . . . . . . . . . 2.4 Inversion modulo n . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Éléments inversibles de Z/nZ . . . . . . . . . . . . . . . 2.4.2 Calcul de l'inverse modulo n . . . . . . . . . . . . . . . . 2.4.3 Générateurs du groupe (Z/nZ, +) . . . . . . . . . . . . . 2.4.4 Théorème des restes chinois . . . . . . . . . . . . . . . . 2.4.5 L'indicateur d'Euler . . . . . . . . . . . . . . . . . . . . 2.5 Les théorèmes d'Euler et de Fermat . . . . . . . . . . . . . . . . 2.5.1 Théorème d'Euler . . . . . . . . . . . . . . . . . . . . . 2.5.2 Petit théorème de Fermat . . . . . . . . . . . . . . . . . 2.5.3 Nombres pseudo-premiers et tests ecaces de primalité . 2.6 Extension des notions d'arithmétique aux polynômes . . . . . . 2.6.1 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2 Divisibilité dans K[X] . . . . . . . . . . . . . . . . . . . Zn [X] 2.6.3 L'anneau (m(X)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Cryptographie à clef publique 3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Fonctions à sens unique . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Une première application des fonctions à sens unique : le problème du mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Systèmes cryptographiques asymétriques . . . . . . . . . . . . . . . . . 3.1.4 Théorie de la complexité et cryptographie . . . . . . . . . . . . . . . . 3.2 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Les principe de RSA et sa mise en oeuvre . . . . . . . . . . . . . . . . 3.2.2 Attaques de RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Remarques sur la sécurité de RSA . . . . . . . . . . . . . . . . . . . . 3.2.4 Authentication à divulgation nulle . . . . . . . . . . . . . . . . . . . . 3.2.5 Protocole de Guillou-Quisquater . . . . . . . . . . . . . . . . . . . . . 3.2.6 Signatures numériques et solution RSA . . . . . . . . . . . . . . . . . . 3.2.7 Utilisation d'une fonction de hachage . . . . . . . . . . . . . . . . . . . 3.3 Le problème du logarithme discret et ses applications . . . . . . . . . . . . . . 3.3.1 Exponentielle et logarithme discret . . . . . . . . . . . . . . . . . . . . 3.3.2 Protocole d'échange de clé de Die-Hellman . . . . . . . . . . . . . . . 3.3.3 Chirement d'ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 L'algorithme d'exponentiation modulaire rapide . . . . . . . . . . . . . . . . . 3.5 Un test ecace de primalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Advanced Encryption Standard 4.1 Chirement . . . . . . . . . . . . . . . . . . . . . 4.1.1 Fonctionnement général du chirement . . 4.1.2 Transformation non-linéaire sur les octets 4.1.3 Décalage des lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 26 27 28 28 28 29 30 30 33 35 35 36 36 36 37 37 39 40 40 40 40 40 41 43 43 45 46 46 46 48 49 49 49 51 51 52 53 56 56 56 56 58 P.Struillou TABLE DES MATIÈRES 4.1.4 Brouillage des colonnes . . . . 4.1.5 Addition de la clé de tour . . 4.2 Déchirement . . . . . . . . . . . . . 4.3 Algorithme de cadencement des clés 4.4 Conclusion . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Qu'est-ce qu'une courbe elliptique ? . . . . . . . . . . . . . Structure de groupe d'une courbe elliptique . . . . . . . . Courbes elliptiques sur un corps ni . . . . . . . . . . . . Protocoles cryptographiques et courbes elliptiques . . . . . 5.4.1 Protocole de Die-Helmann par courbes elliptiques 5.4.2 Chirement ElGamal par courbes elliptiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Chirement par courbes elliptiques 5.1 5.2 5.3 5.4 A Groupes, anneaux et corps A.1 Lois de composition interne . . . . . . . . . . . . . . A.2 Groupes . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1 Un peu d'histoire . . . . . . . . . . . . . . . . A.2.2 Dénition d'un groupe . . . . . . . . . . . . . A.2.3 Propriétés . . . . . . . . . . . . . . . . . . . . A.2.4 Sous-groupes . . . . . . . . . . . . . . . . . . A.2.5 Sous-groupes engendrés - groupes monogènes A.2.6 Sous-groupes de Z . . . . . . . . . . . . . . . A.2.7 Morphisme de groupe . . . . . . . . . . . . . A.3 Anneaux . . . . . . . . . . . . . . . . . . . . . . . . . A.3.1 Dénition d'un anneau . . . . . . . . . . . . . A.3.2 Sous-anneaux . . . . . . . . . . . . . . . . . . A.3.3 Morphisme d'anneaux . . . . . . . . . . . . . A.3.4 Eléments inversibles dans un anneau . . . . . A.3.5 Formule de Newton . . . . . . . . . . . . . . . A.4 Corps . . . . . . . . . . . . . . . . . . . . . . . . . . A.4.1 Dénition d'un corps . . . . . . . . . . . . . . A.4.2 Construction du corps des complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 59 60 60 60 61 61 61 63 64 65 66 67 67 67 67 68 69 70 70 71 72 73 73 73 74 74 74 75 75 75 P.Struillou Chapitre 1 Cryptographie à clef privée 1.1 Généralités 1.1.1 Contexte général de la cryptographie Alice souhaite transmettre à Bob un message sans qu'un opposant Oscar ne puisse le lire s'il l'intercepte. Le message x est donc chiré à l'aide d'une clef k : cela donne un message y = ek (x) (1.1) La fonction ek est la fonction de chirement, elle doit être injective pour que Bob puisse déchirer le texte sans ambiguïté (i.e. y1 = y2 =⇒ x1 = x2 ). Bob connaît la clef k et peut déchirer y à l'aide de la fonction de déchirement : x = dk (y) (1.2) Un système cryptographique est donc la donnée : 1. 2. 3. 4. 5. d'un ensemble P ni de blocs de textes clairs, d'un ensemble C ni de blocs de textes chirés, d'un ensemble K ni de clefs, d'un ensemble de fonctions de chirement ek : P → C injectives, d'un ensemble de fonctions de déchirement dk : C → P vériant dk ◦ ek = IdP . Un message complet est une chaîne de blocs de P , i.e. X = x1 x2 . . . xn avec xi ∈ P , chiré en un message Y = y1 y2 . . . yn avec yi ∈ C . 1.1.2 Cryptanalyse Le décryptage du message y est la recherche de x quand on ne connaît pas la clef k utilisée. C'est le travail minimal de l'opposant Oscar, qu'on appelle le cryptanalyste. Idéalement, la cryptanalyse consiste à trouver la clef k. Pour Oscar, c'est un objectif un peu plus ambitieux que le décryptage de y , car on suppose qu'il connaît le système cryptographique utilisé et peut donc, comme Bob, déchirer le texte à l'aide de dk s'il connaît la clef utilisée par Alice. Cette hypothèse de travail est appelé principe de Kerckho : pour évaluer 4 CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 5 la sécurité d'un système cryptographique il vaut mieux étudier la diculté de la tâche d'Oscar dans le cas, défavorable à Alice et Bob, où Oscar a toute l'information sur le système cryptographique utilisé sauf la clef. Par ordre de diculté décroissante pour Oscar, nous avons les 4 niveaux d'attaque suivants : 1. Attaque à texte chiré connu Oscar ne connaît que la chaîne chirée Y . 2. Attaque à texte clair connu Oscar dispose d'un texte chiré Y mais aussi du texte clair X correspondant ; il veut en déduire la clef k pour déchirer les autres textes chirés avec la même clef. 3. Attaque à texte clair choisi Oscar a temporairement accès à une machine chirante, il peut donc choisir un texte clair X et obtenir le texte chiré Y correspondant. 4. Attaque à texte chiré choisi Oscar a temporairement accès à une machine déchirante, il peut donc choisir un texte chiré Y et obtenir le texte clair X correspondant. L'idéal serait bien sûr qu'un système cryptographique résiste à une attaque à texte (clair ou chiré) choisi. La sécurité d'un système cryptographique est mesurée en évaluant la diculté du travail du cryptanalyste, de sorte que le cryptographe est dans les faits aussi un cryptanalyste. Le terme cryptologie désigne d'ailleurs l'étude de la cryptographie et de la cryptanalyse, qui est, on le voit, incontournable pour le cryptographe. 1.2 Quelques systèmes cryptographiques simples 1.2.1 Chirement par décalage On note n la taille de l'alphabet utilisé et on choisit un entier naturel k ≤ n. Il s'agit simplement d'opérer une permutation circulaire de k caractères vers la droite sur chaque caractère de l'alphabet. Exemple. Cesar a utilisé cette méthode avec n = 26 (alphabet usuel) et k = 3 pendant la guerre des Gaules. Autrement dit, il chirait ses messages en remplaçant A par D, B par E, etc. Bien entendu, le X devient A, le Y devient B et le Z devient C (c'est ce que signie permutation circulaire ). On n'est pas du tout obligé de le faire, mais il est pratique pour automatiser la méthode, et l'expliquer mathématiquement, de coder chaque caractère du texte clair en un entier naturel ≤ n − 1 (n = 26 par exemple, ou bien sur machine utiliser le code ASCII, soit n = 256). Le principe, très simple (trop !), du chirement par décalage devient : P = C = K = Zn = {0, 1, . . . , n − 1} ek (x) = (x + k) mod n , dk (y) = (y − k) mod n (1.3) où on utilise l'addition modulaire (cf chapitre 2 pour la dénition de cette opération). Ce système n'est absolument pas sûr car une cryptanalyse par recherche exhaustive de la clef est facile puisqu'il n'y a que n clefs possibles. P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 6 1.2.2 Chirement par substitution Là aussi, le codage préalable des caractères sous forme numérique n'est pas indispensable, mais il peut être pratique de le faire. On peut prendre P = C égaux à l'ensemble des caractères à envoyer (par exemple P = C = {a, b, c, . . . , z}) ou bien préférer prendre P = C = Zn , où n est la taille de l'alphabet utilisé (n = 26 dans notre exemple). Le chirement par substitution est une généralisation de la méthode par décalage : au lieu de prendre une permutation circulaire, on s'autorise toute permutation des caractères de l'alphabet, i.e. toute bijection de P sur lui-même. L'ensemble K des clefs possibles est l'ensemble des permutations de P , noté S(P) et appelé groupe symétrique de P . Ainsi, une clef k est une permutation des caractères, et les règle de chirement sont dans ce cas : ek = k , dk = k −1 (1.4) Une cryptanalyse par recherche exhaustive de la clef paraît ici dicile car il y a n! clefs possibles. Mais une cryptanalyse par étude des fréquences statistiques des caractères chirés et comparaison aux fréquence connues dans la langue de communication d'Alice et Bob, plus l'étude de la fréquence des digrammes et des trigrammes, permet à Oscar de déchirer Y avec des moyens de calculs limités, pourvu que la chaîne chirée Y soit susamment longue. 1.2.3 Chirement de Vigenère C'est un exemple de chirement polyalphabétique. Expliquons directement la méthode pour des caractères codés numériquement, ce qui permet de l'automatiser facilement. Soit m ∈ N∗ , et : P = C = K = (Zn )m Pour k = (k1 , . . . , km ) ∈ K, x = (x1 , . . . , xm ) ∈ P dénissons : (1.5) ek (x) = e(k1 ,...,km ) (x1 , . . . , xm ) = (x1 + k1 , . . . , xm + km ) Le déchirement se fait bien sûr par la règle : (1.6) dk (y) = d(k1 ,...,km ) (y1 , . . . , ym ) = (y1 − k1 , . . . , ym − km ) Bien entendu les opérations (addition et soustraction) sont faites dans Zn , i.e. modulo n. Exemple. Supposons que l'on souhaite chirer le texte RDV à Lannion à midi avec le mot clef crypto (donc m = 6), si on dispose d'un alphabet comportant les 26 lettres, codées de 1 à 26, et le caractère blanc noté et codé en 0 (donc n = 27), on décompose le texte en blocs de 6 caractères : rdval annion amidi On code ces caractères, on ajoute à chaque bloc la clef crypto = 3 18 25 16 20 15 27 et on obtient le texte chiré. Par exemple le premier bloc devient modulo 18 + 3 = 21, 4 + 18 = 22, 22 + 25 = 47 = 20, 0 + 16 = 16, 1 + 20 = 21, 12 + 15 = 27 = 0 Cette méthode est plus sûre que les précédentes mais ne résiste pas à une attaque avec des moyens modernes de calcul. Notamment il existe une attaque basée sur le fait que si une suite P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 7 de l caractères (l ≤ m) d'un bloc du texte clair se retrouve dans un autre bloc à la même place, ces deux suites seront chirées de la même manière. Oscar peut donc assez facilement deviner m en cherchant deux suites identiques dans le texte chiré. Si cela se produit k fois il mesure les distances d1 , . . . , dk entre les suites composant chaque paire, et il sait que m divise d1 , . . . , dk , ce qui lui permet de trouver m après quelques essais. Après avoir trouvé m il existe une méthode de déchirage ecace que nous ne présenterons pas ici (cf. Stinson, Cryptographie : Théorie et Pratique, paragraphe 1.2.3). 1.2.4 Chirement par permutation Il ne faut pas confondre cette méthode avec le chirement par substitution. Ici on se donne un entier m et la clef k est une permutation de {1, . . . , m} qu'on fait agir sur les blocs de m caractères du texte clair. Il est donc a priori inutile de coder numériquement les caractères, mais là aussi on peut être amené à le faire en pratique. Ainsi, le bloc x = (x1 , . . . , xm ) est chiré en y = ek (x) = (xk(1) , . . . , xk(m) ) Ici, nous avons : (1.7) P = C = (Zn )m , K = S({1, . . . , m}) Le déchirement se fait bien sûr en appliquant la permutation inverse k−1 . Autrement dit : dk (y) = ek−1 (y) (1.8) Exemple. Avec m = 4 et la clef k dénie par k(1) = 3, k(2) = 4, k(3) = 2, k(4) = 1, on chire le texte mathematique en tham atme ueqi . 1.2.5 Chirement de Hill Il est important ici de travailler dans un corps car nous allons devoir inverser des matrices à coecients dans ce corps. Nous travaillons donc avec un alphabet comportant p caractères où p est premier, et nous codons chaque caractère en un élément de P = Zp . En eet, nous verrons au chapitre 2 que Zp est un corps ssi p est premier. Par exemple on peut choisir p = 31, en considérant les 26 lettres plus le blanc et quelques caractères de ponctuation, ainsi on travaillera dans P = Z31 = {0, 1, . . . , 30} muni de l'addition et de la multiplication modulaires. Nous avons ici : P = C = (Zp )m , K = GLm (Zp ) où GLm (Zp ) désigne l'ensemble des matrices carrées d'ordre m à coecients dans Zp inversibles. Ainsi, une clef k est une matrice carrée (kij ) d'ordre m à coecients dans le corps ni Zp inversible. C'est ici que sert l'hypothèse que Zp est un corps, car on sait qu'on peut généraliser les résultats sur les matrices inversibles à coecients réels aux matrices inversibles à coecients dans un corps quelconque. Notamment le matrice k est inversible ssi det k 6= 0. P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 8 Le texte clair est décomposé en blocs de m caractères qui sont codés en éléments de Zp . Chaque bloc x de m éléments de Zp est un vecteur de Zm p que l'on note en colonne : x1 x2 x= . .. xm Le chirement se fait tout simplement en appliquant la matrice k à gauche (il est donc important que x soit écrit en colonne) : ek (x) = kx = y (1.9) Et le déchirement se fait bien sûr par la règle : dk (y) = k −1 y (1.10) Remarque. Le chirement par permutation est un cas particulier du chirement de Hill. En eet, la clef est dans ce cas une permutation σ et il sut de considérer la matrice (kij ) dénie par kij = 1 si j = σ(i) et 0 sinon pour se ramener au chirement de Hill. Il est facile de casser le chirement de Hill par cryptanalyse à texte clair choisi : Oscar détermine d'abord m, en utilisant le fait que la longueur d'un texte chiré est un multiple de m, donc m est le PGCD des longueurs des textes chirés. Après quelques essais on trouve vite m. Puis Oscar chire m blocs de texte clair et obtient m blocs de texte chiré. Oscar dispose alors d'un système de m2 équations qui, s'il est de Cramer (sinon il recommence avec d'autres textes), lui permet de trouver les inconnues kij , donc la matrice-clef k. On voit que c'est la linéarité du système qui le rend fragile. 1.3 Notion de sécurité inconditionnelle - Le masque jetable 1.3.1 Sécurité inconditionnelle au sens de Shannon En 1949, Shannon a déni la notion de sécurité inconditionnelle en développant sa théorie de l'information. Cela lui a permis de dénir ce qu'est un système cryptographique absolument sûr . Nous allons voir qu'un tel système existe, mais qu'il est presque inutilisable en cryptographie moderne (sauf cas très particuliers) pour des raisons de coût de calcul. Son résultat nous montre qu'il faudra se contenter d'une notion de sécurité plus faible, basée sur la complexité des algorithmes. Pour réussir à quantier une notion apparemment qualitative telle que l'information, Shannon utilise la théorie des probabilités : il dénit l'entropie, qui est une mesure statistique de la quantité d'information sur le message clair que porte le message chiré. Ayant ainsi déni la quantité d'information, Shannon dit d'un chirement qu'il est inconditionnellement sûr si la connaissance du message chiré n'apporte pas d'information sur le message clair, ce qui n'arrive que si les deux messages sont indépendants (au sens de la théorie des probabilités). P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 9 Le résultat de Shannon est alors assez intuitif : pour que le message chiré devienne indépendant du message clair, la clef utilisée doit être de longueur au moins égale à celle du message clair ; la clef doit de plus être choisie aléatoirement et indépendamment du message clair. Tout se passe alors comme si chaque nouveau caractère était chiré avec une nouvelle clef, de sorte que l'on eace l'information au fur et à mesure du chirement. Nous allons préciser cela. 1.3.2 La théorie de Shannon Considérons une variable aléatoire X discrète pouvant prendre n valeurs x1 , . . . , xn avec une probabilité non nulle P(X = xi ) = pi > 0 pour i = 1, . . . , n Shannon dénit la quantité d'information apportée par la réalisation de l'événement X = xi par IX (xi ) = − log2 pi (1.11) On remarque que la quantité d'information est un nombre positif (car 0 < pi ≤ 1) et qu'elle est d'autant plus grande que pi est petit, ce qui est bien ce que souhaite Shannon : la réalisation d'un événement qui avait a priori une grande probabilité de se produire ne nous apporte pas beaucoup d'information. On peut aussi dénir la quantité d'information apportée par la réalisation simultanée de deux événements X = xi et Y = yj . C'est la quantité − log2 P(X = xi , Y = yj ), et si X et Y sont des variables aléatoires indépendantes, on a − log2 P(X = xi , Y = yj ) = − log2 P(X = xi )P(Y = yj ) = − log2 P(X = xi ) − log2 P(Y = yj ) Ainsi les quantités d'information associées à la réalisation de deux événements indépendants s'ajoutent, ce qui est tout de même une propriété souhaitable pour l'information : l'observation de la réalisation d'un deuxième événement indépendant du premier nous apporte toute l'information associée à ce deuxième événement. Puis Shannon dénit l'entropie (ou incertitude ) de la variable aléatoire X : H(X) = n X IX (xi )pi (1.12) i=1 H(X) est donc la quantité d'information moyenne apportée par une observation de X . On remarque que H(X) ≥ 0 et que H(X) = 0 si X est presque-sûrement constante. En eet si P(X = x) = 1 pour un certain x, alors H(X) = − log2 (1).1 = 0. Autrement dit l'incertitude sur le résultat d'une variable constante est nulle, ce qui est cohérent (de manière équivalente on peut dire que l'information apportée par l'observation de la valeur prise par une v.a. qu'on sait a priori constante est nulle). On peut démontrer la réciproque (si l'incertitude est nulle, X est presque-sûrement constante) ; nalement : H(X) = 0 ⇐⇒ X = cste (1.13) P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 10 Par ailleurs on peut démontrer la majoration (1.14) H(X) ≤ log2 n Or, si la variable aléatoire X est équidistribuée sur {x1 , . . . , xn }, i.e. P(X = xi ) = pi = pour tout i, alors H(X) = − 1 n n X 1 1 log2 = log2 n n n i=1 Donc l'incertitude est maximale lorsque la variable est équidistribuée, ce qui est logique. L'information moyenne apportée par l'observation d'une v.a. X pouvant prendre n valeurs est donc maximale si chaque valeur est équiprobable. Pour appliquer cette théorie de l'information à la cryptographie, Shannon considère les messages clairs possibles x ∈ P comme les diérentes réalisations d'une v.a. X , et les messages chirés y ∈ C comme les réalisations d'une v.a. Y . Le cryptanalyste connaît les ensembles P, C, K et le chiré y , mais ne connaît ni x, ni la clef k ∈ K. Considérons l'entropie conditionnelle de X connaissant le message chiré y ; c'est l'entropie de X calculée avec la probabilité conditionnellement à l'événément Y = y au lieu de la probabilité P : H(X|Y = y) = − X P(X = x|Y = y) log2 P(X = x|Y = y) x∈P En faisant la moyenne sur les valeurs possibles de y , on obtient l'entropie conditionnelle de X sachant Y : H(X|Y ) = X H(X|Y = y)P(Y = y) y∈C = − XX y∈C x∈P = − X P(Y = y)P(X = x|Y = y) log2 P(X = x|Y = y) P(X = x, Y = y) log2 P(X = x|Y = y) x∈P,y∈C H(X|Y ) s'interprète comme l'incertitude qu'il reste sur le message clair lorsqu'on connaît le message chiré. Pour éviter des calculs de probabilités conditionnelles un peu compliqués, raisonnons simplement en utilisant l'interprétation de l'entropie en terme d'incertitude (tout ce qui suit pourrait se démontrer rigoureusement). De façon générale, rajouter de l'incertitude augmente l'entropie, donc pour tout système cryptographique, on a (1.15) H(X|Y ) ≤ H(X) puisque connaître Y diminue a priori l'incertitude sur X , i.e. l'incertitude sur X connaissant Y est inférieure ou égale à l'incertitude sur X . Shannon dit du système cryptographique qu'il est inconditionnellement sûr lorsque H(X|Y ) = H(X) (1.16) P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 11 Autrement dit, le système est inconditionnellement sûr lorsque la connaissance d'un message chiré n'apporte aucun information sur le message clair. Appelons K la variable aléatoire pouvant prendre les diérentes valeurs possibles de la clef k ∈ K. Alors H(X|Y ) ≤ H(K|Y ) (1.17) On peut se convaincre sans calcul que cette inégalité est vraie en invoquant l'argument suivant : la connaissance du chiré y et de la clef k implique la connaissance du message x. Supposons Y connu, alors dans le cas limite où il n'y a plus d'incertitude sur K , il n'y en a plus non plus sur X , ce qui justie que l'incertitude sur X connaissant Y est inférieure ou égale à l'incertitude sur K connaissant Y (bien entendu, ceci n'est pas une démonstration). Dans le cas d'un système inconditionnellement sûr, on a H(X|Y ) = H(X), donc (1.18) H(X) = H(X|Y ) ≤ H(K|Y ) ≤ H(K) Donc dans ce cas la quantité moyenne d'information apportée par la connaissance de la clef est supérieure ou égale à celle apportée par la connaissance du message clair. Supposons que nos messages soient des suites de bits, ainsi que les clefs. Si tous les messages en clair sont équiprobables, ainsi que toutes les clefs, alors cela implique que la taille de la clef d'un système cryptographique inconditionnellement sûr doit être au moins égale à celle du message à chirer ! 1.3.3 Un système inconditionnellement sûr : le chirement de Vernam En 1917, voulant chirer des messages télégraphiques, Vernam a l'idée suivante : le texte est découpé en blocs de taille m et on choisit une clef k = (k1 , . . . , km ) avec ki ∈ Z2 (il faut une clef de taille m pour chaque bloc à chirer !). La règle de chirement (et de déchirement) est une simple addition bit à bit, i.e. un ou exclusif de deux chaînes de bits. Ainsi, P = C = K = (Z2 )m et e(k1 ,...,km ) (x1 , . . . , xm ) = (x1 + k1 , . . . , xm + km ) mod 2 d(k1 ,...,km ) (y1 , . . . , ym ) = (y1 + k1 , . . . , ym + km ) mod 2 (1.19) (1.20) Il est dicile de faire plus simple, et ce système a été réputé très sûr pendant plus de 30 ans avant que Shannon ne prouve eectivement qu'il est inconditionnellement sûr. Mais la longueur de la clef à utiliser (et surtout à échanger entre Alice et Bob sur un canal sécurisé), qui est la même que celle du message, le rend inutilisable en pratique sauf dans des applications très spéciales (Che Guevara l'utilisait pour chirer les messages qu'il destinait à Fidel Castro, et il a aussi été utilisé pendant la guerre froide pour sécuriser le téléphone rouge, avec échange des clefs via la valise diplomatique). De plus pour que le système soit eectivement inconditionnellement sûr, on doit choisir la clef aléatoirement (et de façon équiprobable parmi les 2m clefs de taille m possibles) et changer la clef à chaque nouveau message (à cause des principes probabilistes de la théorie de Shannon rappelés plus haut). Il y a une autre raison, élémentaire : si on ne change pas la clef à chaque fois, le système ne résiste pas à une simple attaque à texte clair connu. En eet, si Oscar connaît le texte clair (x1 , . . . , xm ) correspondant à un texte chiré (y1 , . . . , ym ) qu'il P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 12 a intercepté (situation courante : il sut d'avoir accès à un vieux message qui n'a plus de raison d'être protégé par le secret) alors il connaît la clef : c'est tout simplement (k1 , . . . , km ) = (x1 + y1 , . . . , xm + ym ) mod 2 puisque yj + xj = kj + xj + xj = kj + 2xj = kj mod 2. Comme la clef ne sert qu'une fois, on appelle ce système le One-time Pad, ou encore le masque jetable. C'est donc un système très lourd à mettre en ÷uvre : la seule possibilité, pour Alice et Bob, est d'avoir accès de temps en temps à un canal sûr (une valise diplomatique par exemple !) et d'en proter alors pour s'échanger des clefs susamment longues pour pouvoir chirer n'importe lequel de leurs futurs messages clairs. Vernam espérait que son système devienne un standard, mais la gestion des clefs a été un obstacle à la commercialisation de son procédé. Remarque. Il convient de se souvenir que la théorie de Shannon montre qu'on ne peut pas faire plus économique qu'un masque jetable si on veut un système inconditionnellement sûr. 1.4 Méthodes de chirements en chaine 1.4.1 Principe des chirements en chaine Plutôt que de chirer chaque bloc xi avec la même clef k, i.e. Y = ek (x1 ) . . . ek (xn ), on peut pour plus de sûreté engendrer une séquence de clef k1 , . . . , kn et chirer X = x1 . . . xn en Y = ek1 (x1 ) . . . ekn (xn ) (1.21) Ici, la i-ème clef ki est une fonction d'une clef initiale K0 (dite germe de clef ) et des blocs à traiter antérieurs à xi : ki = fi (K0 , x1 , . . . , xi−1 ) (1.22) Ainsi, on chire en calculant successivement k1 = f1 (K0 ), y1 = ek1 (x1 ), k2 = f2 (K0 , x1 ), y2 = ek2 (x2 ), etc. On déchire y1 . . . yn en calculant successivement k1 , x1 = dk1 (y1 ), k2 , x2 , etc. Dans le cas particulier où la fonction fi qui permet de calculer ki ne dépend que de K0 (et non des blocs xj , j < i), on dit qu'on a un chirement en chaîne synchrone (et asynchrone sinon). 1.4.2 Un exemple simple de chirement en chaine synchrone : génération des clefs par relation de récurrence linéaire La séquence des clefs est obtenu par une relation de récurrence linéaire d'ordre m à coecients constants dans Z2 = {0, 1}. L'intérêt de travailler dans ce corps est que tous les calculs s'implantent facilement : l'addition (des bits) correspond au ou exclusif (xor ) et la multiplication (des bits) correspond au et. Le germe est K0 = (k1 , ..., km , c1 , ..., cm−1 ) avec ki ∈ Z2 et ci ∈ Z2 . On génère les clefs avec la relation de récurrence : ∀i ≥ 1 km+i = m−1 X cj ki+j mod 2 (1.23) j=0 P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 13 Ici, bien sûr, tous les calculs sont faits dans le corps Z2 , i.e. modulo 2. On choisit toujours c0 = 1, sinon ce n'est plus une relation de récurrence d'ordre m. En pratique, la séquence des clefs peut être produite par un registre à décalage linéaire (LFSR) puisqu'il s'agit d'utiliser une simple relation de récurrence linéaire à coecients constants. Les fonctions de chirement et de déchirement sont dans ce cas de simples additions bit à bit des xi à chirer et de la clef ki : eki (xi ) = xi + ki mod 2 , dki (yi ) = yi + ki (1.24) mod 2 Les fonctions de chirement et de déchirement sont ici identiques puisque dans Z2 la soustraction est égale à l'addition : dki (eki (xi )) = (xi + ki ) + ki = xi + 2ki = xi mod 2 Étudions la cryptanalyse de ce système cryptographique. Comme dans le chirement de Hill, cette méthode a un gros inconvénient : toutes les opérations sont linéaires, donc un peu d'algèbre permet une attaque à texte clair connu. Expliquons comment. On suppose donc qu'Oscar ait la possibilité de chirer le texte clair x1 . . . xn et d'obtenir ainsi le chiré correspondant y1 . . . yn . Supposons que, par quelques recoupements, il connaisse l'entier m utilisé. Alors de yi = xi + ki il déduit immédiatement ki = xi + yi . Il connaît donc la séquence des clefs et il lui reste à trouver les coecients c1 , . . . , cm−1 (car on sait que c0 vaut 1). Or, ceci est très facile si son texte clair de départ est de longueur au moins n = 2m, car il s'agit alors de résoudre un système de m équations à m inconnues c0 , . . . , cm−1 (avec de plus c0 = 1), donné par (1.23). On peut même démontrer que la condition c0 = 1 implique que ce système est de Cramer, donc un seul essai lui sura ! Ainsi, la seule diculté pour Oscar est de déterminer l'entier m. 1.4.3 Un exemple simple de chirement en chaine asynchrone Ici, P = C = Zn (avec par exemple n = 26), on choisit un germe k0 ∈ Zn , puis k1 = k0 et ∀i ≥ 2 ki = xi−1 (1.25) eki (xi ) = (xi + ki ) mod n (1.26) Autrement dit, on ajoute au i-ème caractère le (i − 1)-ème caractère (modulo n). Ici, le texte clair est utilisé comme clef. Le système est donc asynchrone. Le déchirement se fait bien sûr par la règle : dki (yi ) = (yi − ki ) mod n (1.27) 1.5 Les standards de chifrement des données 1.5.1 Historique et principes généraux du DES En 1977 est né le Data Encryption Standard qui répondait au cahier des charges déposé par le National Bureau of Standards : gestion des clefs pas trop lourde, mélange d'opérations linéaires et non linéaires (pas assez, au goût de certains...) an de compliquer la tâche du P.Struillou CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE 14 cryptanaliste, rapidité calculatoire du chirement et du déchirement, facilité d'implantation aussi bien en logiciel qu'en matériel. DES a été un standard de 1977 à 1998 et il est encore tellement utilisé qu'il importe de bien le connaître. L'idée de base est d'utiliser plusieurs des méthodes simplistes déjà décrite (notamment le chirement par substitution et celui par permutation) et de les combiner. De plus on eectuera 16 tours (16 itérations) avec génération à chaque fois d'une nouvelle clef (c'est donc une méthode de chirement en chaîne). La taille des clefs est de 56 bits (donc K comporte 256 clefs initiales) sur la version classique, ce qui n'est plus assez actuellement (DES a été cassé en 1998 par une association de particuliers qui a fait construire un processeur spécialisé pour seulement 250 000 dollars, budget ridiculement bas pour un état ou même un ennemi volontaire ayant quelques moyens). D'ailleurs, la taille des clefs a été l'objet d'une polémique au début : il était initialement prévu une taille de 128 bit. Une autre polémique a porté sur la faible proportion d'opérations non linéaires dans le chirement par DES. En fait les opérations non linéaires sont faites dans les boîtes-S (boîtes de substitutions) dont les critères de construction ne sont pas tous publics. Certains ont ainsi accusé la NSA (National Security Agency) de s'être ménagé une trappe secrète dans ces S-Box lui permettant de déchirer tous les messages chirés avec DES (i.e. la majorité à l'époque, et encore un très grand nombre aujourd'hui). La NSA arme au contraire que DES est sûr, ce qui semble avéré après 25 ans de bons et loyaux services. Disons que si les attaquants éventuels n'ont pas trop de moyens de calcul (et ne travaillent pas à la NSA), DES ore encore un niveau de sécurité convenable pour des applications civiles courantes (opérations bancaires par exemple, où il est utilisé avec RSA, étudié au chapitre 3, dans un protocole maintenant classique), d'autant qu'il peut être rendu plus sûr avec triple-DES, qui utilise le logiciel de chirement DES ordinaire. De toute façon, même si casser DES est théoriquement possible, encore faut-il que le temps et les eorts nécessaires à sa cryptanalyse rendent l'opération rentable pour Oscar. Pour les détails d'ordre technique (notamment l'architecture de DES en 16 tours, la description des S-Box (boîtes de substitutions) et des P-Box (boîtes de permutations), la génération et la gestion des clefs, etc...) voir les transparents joints de Gérard Florin (CNAM) qui sont assez précis. 1.5.2 AES Il existe depuis 1999 un nouveau standard international : AES (Advanced Encryption Standard) qui est aussi un système symétrique (i.e. à clef privée) et qui remplace progressivement DES. Le système AES est lui aussi une méthode de chirement en chaîne. Au contraire de DES, les critères de construction de AES sont tous publics, ce qui était une exigence de l'appel d'ore initial que AES a gagné. Sa sécurité est donc entièrement basée sur la méconnaissance de la clef initiale, et non sur d'éventuels principes de fonctionnement secrets qui ne seraient connus que par certaines entités privilégiées. Une étude particulière est nécessaire pour AES, car ce système utilise des mathématiques plus sophistiquées. AES est donc décrit en détail dans le chapitre 4. P.Struillou Chapitre 2 Fondements arithmétiques de la cryptographie On appelle arithmétique la branche des mathématiques qui s'occupe des propriétés des entiers. Certaines de ces propriétés restent vraies pour d'autres objets mathématiques que les nombres entiers (par exemple les polynômes à coecients dans un corps commutatif peuvent se décomposer en produit de polynômes irréductibles, exactement comme les nombres entiers peuvent se décomposer en produit de facteurs premiers), et on peut donc encore parler d'arithmétique dans un contexte plus général. Bien que l'arithmétique puisse être considérée comme faisant partie des mathématiques pures , ses applications sont particulièrement nombreuses, en particulier en cryptographie. Ce chapitre est donc un pré-requis indispensable au cours de cryptologie. 2.1 Divisibilité, congruences 2.1.1 Division euclidienne Théorème 2.1.1 (Division euclidienne ) Soit a un élément de Z et b un entier naturel non nul. Il existe un couple unique d'entiers (q, r) vériant a = bq + r avec 0 ≤ r < b (2.1) L'entier relatif q est appelé quotient de la division euclidienne de a par b et l'entier naturel r est appelé reste de cette division euclidienne. Démonstration. Existence. L'ensemble A = {n ∈ Z ; bn ≤ a} est majoré : il existe un entier N tel que bN > a. Comme A est un sous-ensemble de Z, A possède un plus grand élément q , déni de façon unique par les inégalités qb ≤ a et (q + 1)b > a Si on note r = a − bq , alors des deux inégalités précédentes, il vient : r ≥ 0 et r < b 15 CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 16 Unicité. Considérons deux couples (q1 , r1 ) et (q2 , r2 ) tels que a = bqi + ri avec 0 ≤ ri < b pour i = 1, 2. On a qi b ≤ a et (qi + 1)b > a puisque ri ∈ J0, b − 1K, donc par l'unicité du plus grand élément de A (cf. existence), on a q1 = q2 , donc r1 = a − bq1 = a − bq2 = r2 . Remarque. Cette démonstration montre que q est le plus grand entier relatif tel que qb ≤ a. Par exemple pour a = −6 et b = 4, on a q = −2 et r = 2. Dénition 2.1.1 (Divisibilité ) Soit a, b deux entiers relatifs, b non nul. On dit que b divise a, et on note b | a, si le reste de la division euclidienne de a par |b| est nul. Remarque. La relation divise est une relation d'ordre sur N. 2.1.2 Relation de congruence On note désormais a mod b le reste de la division euclidienne de l'entier a par l'entier naturel non nul b. Dénition 2.1.2 (Relation de congruence ) Soit n un entier naturel non nul. On dit que deux entiers relatifs x et y sont congrus n s'ils ont même reste dans la division euclidienne par n, ou encore si leur diérence x − y est un multiple de n. On note cette situation x ≡ y [n]. Autrement dit : modulo (2.2) x ≡ y [n] ⇐⇒ ∃q ∈ Z x − y = nq Ainsi, x et y sont congrus modulo n ssi x mod n = y mod n. On écrit souvent la relation x ≡ y [n] sous la forme x ≡ y mod n, et on rencontre même la notation (plutôt ambiguë) x = y mod n. 1 Théorème 2.1.2 (Compatibilité des opérations d'anneau avec la relation ≡) Soit n un entier naturel non nul. La relation de congruence modulo n est une relation d'équivalence sur Z, compatible avec l'addition et avec la multiplication. Autrement dit : x1 ≡ y1 [n] et x2 ≡ y2 [n] =⇒ x1 + x2 ≡ y1 + y2 [n] x1 ≡ y1 [n] et x2 ≡ y2 [n] =⇒ x1 x2 ≡ y1 y2 [n] (2.3) (2.4) La démonstration est un exercice facile. Corollaire 2.1.1. Soient n un entier naturel non nul, a, b des entiers et p un entier naturel. Si a ≡ b [n], alors ap ≡ bp [n]. 1. Au sujet de cette notation, noter la diérence typographique entre la relation x = y mod n et la notation y mod n (la taille du blanc), qui, elle, représente très exactement le reste de la division de y par n, entier compris entre 0 et n − 1 inclus. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 17 2.1.3 Idéaux de Z Il est clair que Z est un anneau pour les lois de composition interne + et × : 1. L'addition est une loi de groupe commutatif : elle est associative, commutative, il existe un élément neutre (le nombre 0), et chaque élément x de Z possède un opposé (−x) dans Z (i.e un élément qui, ajouté à x, donne l'élément neutre). 2. La multiplication est associative. 3. La multiplication est distributive à droite et à gauche par rapport à l'addition. 4. La multiplication possède un élément neutre : le nombre 1. De plus la multiplication est commutative, donc Z est un anneau commutatif. Ce n'est pas un corps car il existe des éléments non nuls non inversibles pour la multiplication (les seuls inversibles de Z sont 1 et −1). Nous aurons besoin de la notion suivante : Dénition 2.1.3 (Idéal d'un anneau ) Soit A un anneau commutatif, on appelle idéal de A tout sous-groupe additif J de A vériant de plus ∀a ∈ J ∀x ∈ A ax ∈ J Théorème 2.1.3 (Idéaux de Z) Les idéaux de l'anneau Z sont les ensembles de la forme nZ = {np ; p ∈ Z} pour un certain n ∈ N. Remarquons que nZ n'est autre que l'ensemble des multiples de n. Démonstration. L'ensemble nZ est un idéal car d'une part 0 ∈ nZ, np1 + np2 = n(p1 + p2 ) ∈ nZ, −np = n(−p) ∈ nZ, donc nZ est un sous-groupe du groupe additif Z ; d'autre part pour tout entier x, on a x(np) = n(xp) ∈ nZ. Réciproquement, soit J un idéal de Z distinct de {0} (l'idéal réduit à 0 est clairement de la forme nZ, pour n = 0). J contient donc un élément non nul, donc un élément strictement positif en prenant au besoin son opposé (car J est un groupe). Appelons n le plus petit élément strictement positif de J (cet élément n existe car l'ensemble des éléments strictement positifs de J est un sous-ensemble de Z minoré par 0). On va montrer que J = nZ. On a nZ ⊂ J , puisque J est un idéal. Par ailleurs si x ∈ J , on a x = nq + r avec 0 ≤ r < n. Les éléments x et nq sont dans J , donc aussi r = x − nq puisque J est un groupe, donc r est nul, car sinon on aurait trouvé un élément >0 de J plus petit que n. Donc x = nq , ce qui prouve J ⊂ nZ. Remarque. Cette démonstration montre même que les seuls sous-groupes additifs de Z sont les ensembles de la forme nZ. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 18 Dénition 2.1.4 (Idéal engendré par une famille nie ) Soit a1 , . . . , ak des éléments d'un anneau A commutatif. On appelle idéal engendré par {a1 , . . . , ak } l'ensemble {u1 a1 + . . . + uk ak ; u1 ∈ A, . . . , uk ∈ A} L'idéal engendré par un seul élément a est noté aA car c'est l'ensemble {ua ; u ∈ A} des multiples de a. L'idéal engendré par des éléments est clairement le plus petit idéal contenant ces éléments. Lorsqu'un idéal est engendré par un seul élément, il est dit principal . Le théorème 2.1.3 énonce donc que les idéaux de Z sont tous principaux : on dit que Z est un anneau principal. Théorème 2.1.4 (Caractérisation de la divisibilité en terme d'idéal ) Soit a et b des entiers relatifs, b non nul. On a : b | a ⇐⇒ aA ⊂ bA (2.5) Démonstration immédiate, laissée en exercice (conseillé). 2.1.4 L'anneau Z/nZ Soit n un entier naturel non nul. Le fait que la relation de congruence modulo n soit compatible avec les lois de composition interne + et ×, et le fait que nZ soit un idéal, permettraient de prouver que l'ensemble quotient de Z par cette relation d'équivalence hérite d'une structure d'anneau commutatif. Lorsqu'on l'a muni de cette structure d'anneau, dénie ci-dessous, on note Z/nZ cet ensemble quotient Z/ ≡. Comme il existe n restes possibles, entre 0 et n − 1, Z/nZ comporte n éléments notés 0, 1, ..., n − 1. Un entier est dans la classe j de j s'il s'écrit j + nq . Autrement dit, on a j + nq = j car j + nq ≡ j mod n. On dit que j + nq est un représentant de la classe de j . Le fait que l'addition et la multiplication soient compatibles avec la relation de congruence se traduit par le fait que l'on peut dénir l'addition et la multiplication dans Z/nZ par : 2 n+m = n+m n × m = nm (2.6) (2.7) On vérie aisément que ces dénitions ne dépendent pas des représentants choisis, et que l'ensemble obtenu est bien un anneau commutatif. Comme chaque classe possède un unique représentant entre 0 et n − 1, on peut identier Z/nZ à l'ensemble Zn = {0, 1, . . . , n − 1} que l'on aurait muni d'une addition et d'une multiplication particulière, dites modulaires . Par exemple dans Z4 , on peut écrire 4 = 0, 2 + 3 = 1, 2 × 3 = 2, façon impropre de dire que 4 = 0, 2 + 3 = 5 = 1, 2 × 3 = 6 = 2 dans Z/4Z. Nous utiliserons souvent cet abus de notation bien pratique. 2. Si R est une relation d'équivalence sur un ensemble E , on appelle ensemble quotient E/R l'ensemble des classes d'équivalence pour la relation R. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 19 2.2 PGCD - PPCM 2.2.1 Dénition du plus grand commun diviseur Soit a1 , . . . , ak des entiers relatifs. On considère l'idéal qu'ils engendrent, composé des nombres relatifs de la forme u1 a1 + · · · + uk ak avec u1 ∈ Z, . . . , uk ∈ Z. Cet idéal est principal d'après le théorème 2.1.3, donc engendré par un élément d qu'on peut choisir positif (d > 0 si au moins un des ai est non nul, et d = 0 sinon). Par dénition ce nombre d est le plus grand commun diviseur (PGCD) des nombres a1 , . . . , ak . On le note PGCD(a1 , . . . , ak ) ou a1 ∧ · · · ∧ ak . Remarque importante. Cette dénition implique que tout nombre de la forme u1 a1 + · · · + uk ak est un multiple de d (car ces nombres sont les éléments de l'idéal engendré par {a1 , . . . , ak }, donc sont les multiples de d). Réciproquement, tout multiple de d étant un élément de l'idéal engendré par {a1 , . . . , ak }, on a ∀n ∈ Z ∃(u1 , . . . , uk ) ∈ Zk nd = u1 a1 + · · · + uk ak Notamment si d est le PGCD de a1 , . . . , ak , alors il existe des entiers u1 , . . . , uk tels que (2.8) d = u1 a1 + · · · + uk ak Cette dénition du PGCD peut paraître inutilement abstraite, mais elle a l'intérêt de simplier beaucoup certaines des démonstrations qui vont suivre (notamment celle du théorème de Bezout), et surtout elle s'étend à tout anneau principal (ce qui est intéressant en cryptologie, notamment pour les anneaux de polynômes). Elle correspond heureusement à la notion élémentaire de PGCD vue au collège, comme on le voit en s'appuyant sur le théorème 2.1.4. En eet si d′ est un diviseur commun aux ai , alors ai Z ⊂ d′ Z pour chaque i, donc l'idéal engendré par a1 , . . . , ak est inclus dans d′ Z, donc d′ | d, ce qui exprime que d est eectivement le plus grand commun diviseur des entiers ai . Dénition 2.2.1 (Entiers premiers entre eux ) On dit que les entiers a1 , . . . , ak sont premiers entre eux si leur PGCD est 1. Remarque. Ainsi, dire que des nombres a1 , . . . , ak sont premiers entre eux signie que l'idéal qu'ils engendrent est 1Z, idéal égal à Z puisque constitué des multiples de 1. Cela signie que a1 , . . . , ak sont premiers entre eux ssi tout nombre entier m peut s'écrire : m = u1 a1 + . . . + uk ak Attention : Si a1 , . . . , ak sont premiers entre eux deux à deux, i.e. ai ∧ aj = 1 pour tout (i, j) ∈ J1, kK2 tel que i 6= j , alors ils sont premiers entre eux (d'après la propriété d'associativité ci-dessous), mais la réciproque est évidemment fausse. Par exemple, les entiers 6, 10 et 15 sont premiers entre eux, mais ils ne sont pas premiers entre eux deux à deux. Pour insister sur le fait que ces deux propriétés sont bien distinctes, plutôt que de dire simplement que a1 , . . . , ak sont premiers entre eux, on dit parfois qu'ils sont premiers entre eux dans leur ensemble. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 20 2.2.2 Propriétés élémentaires du PGCD 1. Commutativité : PGCD(a, b)=PGCD(b, a) Preuve. C'est évident puisque l'idéal engendré par a et b est évidemment aussi l'idéal engendré par b et a. 2. Associativité : PGCD(a, b, c)=PGCD(a,PGCD(b, c)) Preuve. L'idéal engendré par a, b, c est J = {au + bv + cw ; (u, v, w) ∈ Z3 }. Or, si d1 désigne le PGCD de b et c, il existe des entiers s, t tels que d1 = sb + tc. L'idéal J1 = {bv + cw ; (v, w) ∈ Z2 }, engendré par b et c, est (d1 ), donc J = {au + p ; u ∈ Z, p ∈ J1 } = {au + xd1 ; (a, x) ∈ Z2 }, i.e J est engendré par a et d1 , donc par leur PGCD, ce qui prouve que PGCD(a, b, c)=PGCD(a, d1 ). 3. Pour tout entier n, on a nPGCD(a1 , . . . , ak )=PGCD(na1 , . . . , nak ) Preuve. Si d=PGCD(a1 , . . . , ak ), alors l'idéal engendré par nd est : {nu1 a1 + . . . + nuk ak ; (u1 , . . . , uk ) ∈ Zk } 2.2.3 Théorème de Bezout Théorème 2.2.1 (Théorème de Bezout ) Les entiers a1 , . . . , ak sont premiers entre eux ssi il existe des entiers u1 , . . . , uk tels que 1 = u1 a1 + . . . + uk ak Démonstration. C'est une conséquence de la dénition adoptée pour le PGCD : les entiers a1 , . . . , ak sont premiers entre eux ssi leur PGCD est 1, donc ssi l'idéal engendré par a1 , . . . , ak est Z en entier. Ainsi, si les entiers a1 , . . . , ak sont premiers entre eux, alors le nombre 1 peut s'écrire 1 = u1 a1 + · · · + uk ak . Réciproquement, si 1 peut se décomposer ainsi, alors tout n ∈ Z s'écrit n = nu1 a1 + . . . + nuk ak , donc Z est engendré par a1 , . . . , ak , donc le PGCD de a1 , . . . , ak est 1. 2.2.4 Conséquences du théorème de Bezout 1. Soit d le PGCD de a1 , . . . , ak et soit ai = dbi (i ∈ {1, . . . , k}) la factorisation de ai par d. Alors les entiers b1 , . . . , bk sont premiers entre eux. Preuve. Il existe u1 , . . . , uk tels que d = a1 u1 + · · · + uk ak , donc puisque d 6= 0, on obtient en divisant par d l'égalité 1 = b1 u1 + · · · + bk uk , donc les bi sont premiers entre eux par Bezout. 2. Si a est premier avec b et avec c, alors a est premier avec bc. Preuve. Sous l'hypothèse, il existe des entiers u1 , v1 , u2 , v2 tels que 1 = u1 a + v1 b = u2 a + v2 c, donc en faisant le produit : 1 = a(u1 u2 a + u1 cv2 + bv1 u2 ) + bcv1 v2 , d'où le résultat par Bezout. Corollaire. Si a est premier avec bi pour tout i ∈ {1, . . . , n}, alors a est premier avec le produit b1 . . . bn . En particulier si a est premier avec b, alors a est premier avec bq . P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 3. 21 Théorème de Gauss Théorème 2.2.2 (Théorème de Gauss ) Si a et b sont premiers entre eux et si a divise bc, alors a divise c Démonstration. Par Bezout, il existe (u, v) ∈ Z2 tels que au + bv = 1, donc on a auc + bvc = c. or, a | uac et a | bc, donc a | c. 4. Supposons que les entiers b1 , . Q . . , bn soient premiers entre eux deux à deux. Si chaque bi divise a, alors leur produit ni=1 bi divise a. Dire que les entiers b1 , . . . , bn sont premiers entre eux deux à deux signie que pour tout (i, j) tel que i 6= j , on a PGCD(bi , bj ) = 1. Preuve. Par récurrence sur n ≥ 2 (l'énoncé n'a pas de sens si n ≤ 1). Pour n = 2, supposons a = b1 q1 = b2 q2 où b2 est premier avec b1 , alors d'après le th de Gauss, b2 | q1 , donc q1 = b2 q3 , donc a = b1 b2 q3 , donc b1 b2 | a. Supposons la propriété vraie jusqu'à l'ordre n − 1, n ≥ 3, et soit b1 , . . . , bn des entiers premiers entre eux deux à deux divisant tous a. Par hypothèse de récurrence a est divisible par b1 . . . bn−1 . L'entier bn est premier avec b1 . . . bn−1 d'après la propriété 2 ci-dessus. D'après le cas n = 2 de cette démonstration, a est donc divisible par b1 . . . bn . 2.2.5 Le plus petit commun multiple Étant donnés k entiers a1 , . . . , ak , on considère l'intersection des idéaux qu'ils engendrent. C'est un idéal, car toute intersection d'idéaux est un idéal, donc il est engendré par un élément m, qu'on choisira positif : mZ = k \ (2.9) ai Z i=1 Par dénition m est le plus petit commun multiple (PPCM) des entiers a1 , . . . , ak . On voit que m ∈ ai Z pour chaque i, donc m = qi ai , donc m est eectivement un multiple commun aux ai . Réciproquement tout multiple commun aux ai est dans chaque idéal ai Z donc dans leur intersection mZ, donc est de la forme km, et m est eectivement le plus petit multiple commun des entiers ai . Proposition 2.2.1 (Une propriété du PGCD et du PPCM ) Soient a et b deux entiers naturels, m leur PPCM et d leur PGCD. Alors ab = md (2.10) Démonstration. Si a = da′ et b = db′ , alors PGCD(a′ , b′ ) = 1 d'après la propriété 1 du paragraphe précédent. L'entier a′ b′ d = b′ a = a′ b est un multiple de a et de b donc de m, donc a′ b′ d ∈ mZ. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 22 Par ailleurs, m = ax = by car m est un multiple de a et de b, donc da′ x = db′ y avec d 6= 0, donc a′ x = b′ y . Ainsi, b′ | a′ x et b′ est premier avec a′ , donc b′ | x d'après le th de Gauss, i.e. x = b′ q . Donc m = ab′ q = a′ db′ q ∈ a′ b′ d Z. On a donc prouvé que mZ = a′ b′ d Z. Or, les deux entiers m et a′ b′ d sont positifs, donc ils sont égaux, ce qui implique que md = a′ db′ d = ab. 2.2.6 L'algorithme d'Euclide C'est un algorithme qui permet dans sa version simple de calculer le PGCD d de deux entiers a et b, et dans sa version étendue de calculer en plus des entiers u et v tels que au + bv = d. On dit de tels entiers u et v que ce sont des entiers de Bezout pour le couple (a, b). D'abord il n'est pas réducteur de supposer que a et b sont positifs (car PGCD(a, −b) = PGCD(a, b)) et que a ≥ b (car PGCD(b, a) = PGCD(a, b)). L'algorithme est basé sur le fait que si on fait la division euclidienne de a par b : a = bq + r , 0 ≤ r < b alors PGCD(a, b) = PGCD(b, r). En eet, l'ensemble des diviseurs communs à a et à b est aussi l'ensemble des diviseurs communs à b et r, car si n | a et n | b, alors n | (a − bq), et réciproquement si n | b et n | (a − bq), alors n | a. Autrement dit, l'algorithme progresse en utilisant la propriété : PGCD(a, b) = PGCD(b, a mod b) (2.11) On note donc r0 = a, r1 = b et on eectue la division euclidienne de a par b, ce qui donne un reste r2 < b, puis de b = r1 par r2 , ce qui donne un reste r3 < r2 < b, puis de r2 par r3 , ce qui donne un reste r4 < r3 < r2 < b, etc. Pour k ≥ 2, notons qk et rk le quotient et le reste de la division euclidienne de rk−2 par rk−1 . Le procédé s'arrête, i.e. on nit par trouver un reste nul (ce qui sera la condition d'arrêt de l'algorithme). En eet, la suite (rk ) est strictement décroissante et composée d'entiers naturels. Notons N le nombre de divisions euclidiennes à eectuer pour obtenir un reste nul. Nous avons donc rN > 0 et rN +1 = 0. On a alors rN −1 = rN qN +1 , donc PGCD(a, b) = PGCD(rN −1 , rN ) = rN Le PGCD de a et b est donc le dernier reste non nul dans la suite de divisions euclidiennes à eectuer. Ces principes étant compris, nous pouvons maintenant écrire l'algorithme d'Euclide simple, qui prend en entrée deux entiers positifs a et b tels que a ≥ b et qui renvoie leur PGCD. Nous supposons déjà écrite une fonction qui calcule a mod b. Sous une forme itérative, nous obtenons l'algorithme suivant. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 23 Fonction PGCD_Euclide (entiers naturels a, b) Variables r0, r1 : entiers Début (r0, r1) := (a, b) ; Tant Que r1 6= 0 : (r0, r1) := (r1, r0 mod r1) ; FinTantQue Retourne r0 ; Fin Exercice. Écrire l'algorithme d'Euclide sous une forme récursive. Remarques. 1. L'algorithme fonctionne aussi si b = 0 : dans ce cas on ne rentre pas dans la boucle Tant Que et l'algorithme renvoie a, qui est bien le PGCD de a et 0. 2. Lorsqu'on fait tourner l'algorithme à la main avec des entiers naturels, a est le plus grand des deux nombres, de sorte que la première division euclidienne que l'on fait est celle de a par b ≤ a. En fait l'algorithme tel qu'il est écrit fonctionne pour b > a ≥ 0, car dans ce cas a div b = 0, de sorte qu'à la première itération, on a q = 0, a devient b et b devient a : on se retrouve dans le cas a ≥ b ≥ 0. 3. Les principes de l'algorithme ont été décrits en supposant que a et b sont des entiers naturels. On peut toutefois vérier que si a ou b est un entier négatif, alors l'algorithme renvoie suivant les cas soit d = PGCD(a, b) ≥ 0, soit son opposé −d. Nous avons adoptée une dénition du PGCD telle qu'il doit être positif. On peut donc accepter en entrée de l'algorithme tout couple (a, b) ∈ Z2 en faisant une modication mineure : retourner la valeur absolue de a à la sortie de la boucle plutôt que a. 4. Il est facile de faire apparaître un invariant de boucle, constitué de l'ensemble des deux conditions suivantes : PGCD(r0, r1) = PGCD(a, b) ; r0 ≥ 0 et r1 ≥ 0. La terminaison est assurée par le fait que la suite des valeurs de r1 est strictement décroissante et constituée d'entiers naturels. Ceci sut à prouver que l'algorithme calcule dans tous les cas le PGCD de a et de b, car les deux propriétés sont vériées à l'entrée dans la boucle, et à la sortie de la boucle on aura r0 = PGCD(r0, 0) = PGCD(a, b). Supposons que nous voulions, en plus du PGCD, déterminer u et v tels que au + bv = d, où d est le PGCD de a et b (version étendue de l'algorithme d'Euclide). Reprenons les notations précédentes : a = r0 , b = r1 , qk et rk le quotient et le reste de la division euclidienne de rk−2 par rk−1 , N le nombre de divisions à eectuer, de sorte que rN est le dernier reste non nul. Le principe de l'algorithme consiste à calculer à la k -ème itération des entiers uk et vk tels que auk +bvk = rk . Si de telles valeurs uk et vk existent, alors on a en particulier auN + bvN = rN = PGCD(a, b). Sous réserve d'existence de (uk )0≤k≤N et (vk )0≤k≤N , il surait de recueillir les valeurs uN et vN à la sortie de la boucle et elles conviendraient pour u et v . P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 24 Pour construire (uk )0≤k≤N et (vk )0≤k≤N telles que auk + bvk = rk , raisonnons par analyse et synthèse. Analyse. Supposons les (N + 1)-uplets (uk )0≤k≤N et (vk )0≤k≤N construits. On a rk−2 = rk−1 qk + rk pour tout k ∈ {2, . . . , N + 1}, donc nous avons pour k ∈ {2, . . . , N } : auk + bvk = rk−2 − qk rk−1 = auk−2 + bvk−2 − qk (auk−1 + bvk−1 ) = a(uk−2 − qk uk−1 ) + b(vk−2 − qk vk−1 ) ce qui conduit à essayer pour (uk )0≤k≤N et (vk )0≤k≤N des solutions de l'équation récurrente d'ordre 2 suivante : xk = xk−2 − qk xk−1 Si cette approche est bonne (c'est la synthèse qui le dira), nous devrons initialiser notre récurrence d'ordre 2. Nous avons r0 = a et r1 = b, donc pour que la relation au0 + bv0 = r0 soit vraie, il sut de choisir u0 = 1 et v0 = 0. De même, pour que la relation au1 + bv1 = r1 soit vraie, il sut de choisir u1 = 0 et v1 = 1. Synthèse. Soit (uk )0≤k≤N et (vk )0≤k≤N vériant uk = uk−2 − qk uk−1 pour k ∈ {2, . . . , N } u0 = 1 , u1 = 0 v = vk−2 − qk vk−1 pour k ∈ {2, . . . , N } k v0 = 0 , v 1 = 1 (2.12) On a alors : auk + bvk = a(uk−2 − qk uk−1 ) + b(vk−2 − qk vk−1 ) = auk−2 + bvk−2 − qk (auk−1 + bvk−1 ) Raisonnons par récurrence. La propriété auk + bvk = rk est vraie pour k = 0 et pour k = 1. Supposons la vraie jusqu'à l'ordre k − 1, où 2 ≤ k ≤ N . On a alors auk + bvk = auk−2 + bvk−2 − qk (auk−1 + bvk−1 ) = rk−2 − qk rk−1 = rk puisque par hypothèse rk est le reste de la division euclidienne de rk−2 par rk−1 . Cela termine la preuve par récurrence que (2.12) dénit bien deux suites (uk )0≤k≤N et (vk )0≤k≤N vériant la relation auk + bvk = rk pour tout k ∈ {0, . . . , N }. Les entiers uN et vN sont donc tels que auN + bvN = rN = PGCD(a, b) (2.13) Remarques. 1. On note que les deux suites (uk ) et (vk ) vérient la même relation de récurrence, mais évidemment elles sont distinctes puisqu'elles ne sont pas initialisées de la même façon. 2. Il est intéressant de remarquer que d'après (2.12), le calcul de (uk ) peut être fait indépendamment de celui de (vk ). Cette remarque sera utile dans le paragraphe 2.4.2 P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 25 Exercices. 1. En utilisant les principes précédents, écrire la version étendue de l'algorithme d'Euclide, qui prend en entrée deux entiers naturels a et b tels que a ≥ b et qui renvoie leur PGCD d et des entiers de Bezout u et v tels que au + bv = d. 2. Déterminez un invariant de boucle de cet algorithme d'Euclide étendu et démontrez que votre algorithme calcule bien PGCD(a, b) et des entiers de Bezout u et v . 2.3 Nombres premiers Dénition 2.3.1 (Nombre premier ) Un entier relatif p est dit premier s'il est diérent de 0, 1, −1 et si les seuls diviseurs de p sont 1, −1, p, −p. Les entiers non premiers et diérents de 0, 1, −1 sont dits composés. 2.3.1 Propriétés élémentaires des nombres premiers 1. Tout entier diérent de 0, 1, −1 possède un diviseur premier. Preuve. Soit n 6= 0, 1, −1 et soit E l'ensemble des diviseurs > 1 de n. E n'est pas vide puisque |n| ∈ E . Donc E a un plus petit élément p. Si p possède un diviseur d > 0, alors d | n, donc soit d = 1, soit d = p (sinon, cela contredirait la dénition de p comme élément minimal de E ), donc p est premier. 2. L'ensemble P des nombres premiers positifs est inni Preuve. Supposons que P ne possède que r éléments p1 , . . . , pr . Alors l'entier n = p1 . . . pr + 1 n'est divisible par aucun pi (car le reste de la division euclidienne de n par pi est 1). D'après la première propriété, comme n est positif, cela impliquerait que n = 0 ou n = 1, ce qui est absurde puisque le plus petit nombre premier positif est 2, donc n ≥ 3. 3. Si p est premier et ne divise pas n, alors p et n sont premiers entre eux Preuve. C'est évident car si d | p et d | n, alors d = ±1, donc PGCD(p, n) = 1. 4. Un entier p est premier ssi il vérie la propriété suivante : ∀(x, y) ∈ Z2 (p|xy) =⇒ ((p|x) ou (p|y)) (2.14) Preuve. Si p est premier et si p | xy, alors si p ne divise pas y, p et y sont premiers entre eux donc, d'après le théorème de Gauss, p | x. Réciproquement, supposons la propriété vériée. Soit d un diviseur de p, donc p = dd′ , donc p | d ou p | d′ . Si p | d, alors comme d | p, on a d = ±p (et d′ = ±1), donc p est premier. Si p | d′ , alors p = dpd′′ , donc dd′′ = ±1, ce qui implique que d = ±1 puisque d et d′′ sont des entiers, donc p est premier. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 26 2.3.2 Décomposition en nombres premiers Théorème 2.3.1 (Décomposition en produit de nombres premiers ) Pour tout entier n non nul, il existe une unique suite d'entiers naturels (αp )p∈P tous nuls sauf un nombre ni d'entre eux telle que n=± Y (2.15) p αp p∈P Autrement dit, tout entier naturel non nul n s'écrit de façon unique : n = pα1 1 . . . pαr r où les pi sont premiers. Démonstration. On peut bien sûr se contenter de le montrer pour n ∈ N. On va faire une récurrence sur n. Pour n = 1, la suite nulle (αp = 0) convient, et elle est clairement la seule à convenir. Supposons la propriété vraie pour 1 ≤ m ≤ n − 1. On sait que n possède un diviseur premier p0 , donc n = mp0 . On a 1 ≤ m < n car p0 étant premier, on a p0 ≥ 2. Par l'hypothèse de récurrence il existe Y une unique suite pβp . On a donc (βp )p∈P d'entiers, tous nuls sauf un nombre ni d'entre eux, telle que m = n = p0 Y p∈P p , donc la suite dénie par αp = βp si p 6= p0 et αp0 = βp0 + 1 convient. βp p∈P On n'a pas prouvé l'unicité de cette suite car on a privilégié dans le raisonnement l'un des diviseurs p0 de n (on sait qu'il en existe au moins un, mais rien ne prouve dans le cas où il y en a d'autres que l'on trouverait la même suite (αp )p∈P ). Supposons donc que notre entier n s'écrive n= Y pαp = Y pγp p∈P p∈P Soit p0 tel que αp0 ≥ 1 (ce p0 existe car dans notre raisonnement par récurrence, noter que n ≥ 2). Alors Y αp0 p0 γp0 | n = p0 pγp p∈P,p̸=p0 Or, αp p0 0 est premier avec tout premier p 6= p0 , donc est également premier avec Y pγp p∈P,p̸=p0 α γ Grâce au théorème de Gauss, p0 p0 | p0p0 , donc αp0 ≤ γp0 . En changeant les rôles des deux suites, on arrive à γp0 ≤ αp0 , d'où αp = γp dès que αp ≥ 1, d'où l'unicité de la suite (αp ). P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 27 Corollaire 2.3.1. Soient deux entiers n et m de décomposition en facteurs premiers n=± Y p∈P On a : n|m ⇐⇒ pαp , m = ± Y pβp p∈P (∀p ∈ P) (αp ≤ βp ) (2.16) 2.3.3 Vérication élémentaire de primalité Il existe un algorithme élémentaire connu depuis l'antiquité pour tester la primalité d'un entier naturel : le crible d'Eratosthène, qui de plus fournit la liste des nombres premiers inférieurs à un nombre donné. Décrivons son principe. Supposons n non premier (n > 1). Il s'écrit n = pq où p ≥ 2, q ≥ 2, et où p est choisi premier le plus petit possible. Si q est premier, alors q ≥ p, donc n ≥ p2 . Si q est composé, alors q = rs avec r premier. L'entier r est alors un diviseur premier de n, donc on a r ≥ p, d'où encore n ≥ pr ≥ p2 . Ainsi, n est composé ssi il possède un diviseur premier p tel que p2 ≤ n. Il en résulte un test de primalité pour un entier n : on divise n par les nombres premiers p successifs vériant √ p ≤ n et si aucune division ne se fait exactement, c'est que n est premier. En procédant de la façon suivante, le même principe permet de dresser la liste des nombres premiers inférieurs à un entier donné N . On écrit tous les nombres de 2 à N . 2 est premier, on le garde et on raye tous ses multiples (les nombres pairs). 3 est premier, on le garde √ et on raye tous ses multiples, etc. Quand on arrive à m > N , on peut s'arrêter : tous les nombres non rayés sont premiers. Malheureusement cet algorithme (appelé crible d'Eratosthène ) est très lent pour de grandes valeurs de N . Notamment il ne sera pas utilisable en pratique pour tester la primalité de très grands entiers, ce qui serait pourtant très utile en cryptographie. On peut l'améliorer√un peu en donnant √ une condition d'arrêt visuelle (i.e. permettant d'être sûr que p > N sans calculer N ). En eet n est premier ssi sa division par chaque premier p tel que p2 ≤ n n'est pas exacte, donc donne n = pq + r avec 0 < r < p. Ainsi, n est premier ssi pour chaque premier p tel que p2 ≤ n, on a l'encadrement pq < n < p(q + 1). Donc pour repérer sans calcul le plus petit p tel que p2 > n (condition d'arrêt de notre algorithme), on voit qu'il sut que le quotient q vérie q + 1 ≤ p, donc on s'arrête quand le quotient q vérie q < p. Exemple. Supposons qu'on veuille tester la primalité de 211. On divise On divise On divise On divise 211 par 211 par 211 par 211 par le nombre premier le nombre premier le nombre premier le nombre premier 3, le reste est r = 1, le quotient q = 70 5, le reste est r = 1, le quotient q = 42 7, le reste est r = 1, le quotient q = 30 11, le reste est r = 2, le quotient q = 19 P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 28 On divise 211 par le nombre premier 13, le reste est r = 3, le quotient q = 16 On divise 211 par le nombre premier 17, le reste est r = 41, le quotient q = 12. Comme 12 < 17, on peut s'arrêter : 211 est premier. 2.3.4 Le théorème d'Hadamard En utilisant la théorie des fonctions analytiques (ce sont des fonctions de la variable complexe très utiles pour étudier certaines questions d'arithmétique : en mathématiques, des domaines très diérents en apparence sont en fait étroitement interconnectés...), les mathématiciens français Hadamard et De la Vallée-Poussin ont réussi à démontrer (indépendamment l'un de l'autre) un très important résultat sur la raréfaction des grands nombres premiers, qui avait été conjecturé par le prince des mathématiciens , l'allemand Gauss, un siècle avant. Énonçons ce résultat (sans preuve, elle est longue, technique et dicile, et les notions utilisées sont hors-programme en lière INFO). Théorème 2.3.2 (Théorème d'Hadamard - De la Vallée-Poussin ) On note π(N ) le nombre de nombres premiers inférieurs ou égaux à N . On a : π(N ) ∼ N ln N Autrement dit, le quotient de π(N ) et de quand N → +∞ (2.17) N tend vers 1 quand N tend vers l'inni. ln N Par exemple, on peut dire que l'on connaît approximativement le nombre de nombres premiers inférieurs à 1020 : d'après le résultat d'Hadamard, il y en a environ 2.1018 . Par contre ce théorème ne nous donne aucune information sur l'emplacement des grands nombres premiers. De façon générale il reste de très nombreuses questions sans réponse sur les nombres premiers, et beaucoup de ces problèmes sont en étroite liaison avec la cryptographie moderne. 2.4 Inversion modulo n 2.4.1 Éléments inversibles de Z/nZ Soit n un entier naturel non nul. On s'intéresse ici aux éléments inversibles de l'anneau Z/nZ, i.e. aux a ∈ Z/nZ tels qu'il existe b ∈ Z/nZ vériant a × b = 1, ce qui revient à dire : ab ≡ 1 [n] (2.18) Théorème 2.4.1 (Inversibles modulo n) ā ∈ Z/nZ est inversible (pour la multiplication de l'anneau Z/nZ) si et seulement si a et n sont premiers entre eux. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 29 Lorsque a est inversible dans Z/nZ, on dit que l'entier a est inversible modulo n . En vue du cours de cryptographie, il est très important de comprendre la démonstration (d'ailleurs très simple) de ce théorème. Démonstration. Soit a ∈ J0, n−1K (tout élément de Z/nZ a un représentant entre 0 et n−1). Le résultat provient du théorème de Bezout : a inversible ⇐⇒ ∃b ∈ J0, n − 1K tel que a × b = 1 ⇐⇒ ∃b ∈ J0, n − 1K et ∃q ∈ Z tels que ab = 1 + nq ⇐⇒ ∃b ∈ J0, n − 1K et ∃q ∈ Z tels que ab − nq = 1 | {z } relation de Bezout ⇐⇒ a ∧ n = 1 Remarque. Pour n ≥ 2 (seuls cas intéressants en pratique), si a ∈ Z/nZ est inversible, alors a 6= 0, donc b ∈ J1, n − 1K dans cette preuve. En eet, si 0 est inversible, alors il existe c ∈ Z/nZ tel que 0 c = 1, donc 0 = 1, ce qui signie n = 1. Le fait que l'anneau Z/nZ ait n éléments reste vrai pourn = 1 car deux entiers sont toujours congrus modulo 1, donc 0 = Z : on peut écrire Z/1Z = 0 et dans cet anneau réduit à un point, les éléments neutres pour l'addition et la multiplication sont égaux. Corollaire 2.4.1. Z/nZ est un corps ssi n est premier. Démonstration. L'anneau Z/nZ est un corps ssi tout élément a non nul est inversible. D'après le théorème précédent, cela arrive ssi n est premier. 2.4.2 Calcul de l'inverse modulo n Dans la démonstration du théorème 2.4.1, on a utilisé le théorème de Bezout, et on voit que l'inverse éventuel de a est un entier b de Bezout vériant −nq + ab = 1. Il en résulte que le calcul de l'inverse modulo n d'un entier a inversible peut s'eectuer à l'aide de l'algorithme d'Euclide étendu légèrement modié : on teste si un entier est inversible modulo n en calculant le PGCD de n et de a, et on donne le cas échéant l'inverse, dont un représentant sera l'entier de Bezout v calculé lors de l'appel de la fonction Euclide_Bezout sur les arguments n et a (dans cet ordre). Remarque. Le calcul de l'entier de Bezout u est ici inutile : la remarque 2 page 24 montre que le calcul de v peut se faire indépendamment de celui de u, ce qui autorise une économie par rapport à l'algorithme d'Euclide étendu. Exercice. Écrire un algorithme qui prend en entrée deux entiers naturels n et a tels que 1 ≤ a < n, signale si a est inversible modulo n et, si c'est le cas, renvoie l'inverse de a modulo n. L'algorithme doit réaliser l'économie décrite dans la remarque précédente. Cet algorithme est d'usage courant en cryptographie. Il est ecace. En eet, en considérant que l'opération élémentaire est la division euclidienne, on démontre (cf. TD) que sa complexité dans le pire des cas est un O ln(n) . Il est donc linéaire en la taille de la plus grande des données d'entrée (rappelons que ln n est proportionnel au nombre de chires de n). P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 30 2.4.3 Générateurs du groupe (Z/nZ, +) Soit n un entier naturel non nul. On considère le groupe additif Z/nZ. Nous nous proposons ici de déterminer ses générateurs, i.e. les éléments k qui engendrent tous les autres par la seule opération d'addition : k est un générateur de Z/nZ si pour tout x ∈ Z/nZ, il existe ℓ ∈ N∗ tel que x = |k + ·{z · · + k} = ℓ k . ℓ fois Théorème 2.4.2 (Générateurs du groupe additif Z/nZ) Les générateurs du groupe (Z/nZ, +) sont les classes des entiers naturels p < n premiers avec n. Démonstration. D'abord, remarquons que pour que a ∈ Z/nZ soit un générateur, il sut qu'il engendre 1, car 1 est lui même un générateur (tout élément k s'écrit k 1). Or : a engendre 1 ⇐⇒ ∃p ∈ N tel que 1 = p a ⇐⇒ ∃p ∈ N et ∃q ∈ Z tels que ap = 1 + nq ⇐⇒ a ∧ n = 1 Remarque. Ainsi, les générateurs du groupe additif (pour la multiplication ) de Z/nZ. Z/nZ sont aussi les éléments inversibles 2.4.4 Théorème des restes chinois Nous donnons ce théorème sous deux formes, l'une plus théorique , l'autre plus pratique et fonctionnelle , adaptée à la cryptographie. 3 p Pour comprendre la forme théorique, remarquons d'abord que Qppour tout (m1 , . . . , mp ) ∈ N avec mj ≥ 2, le produit cartésien Z/m1 Z × · · · × Z/mp Z = j=1 Z/mj Z peutQ être muni de deux lois de compositions internes qui en font un anneau, dit anneau produit pj=1 Z/mj Z. (i) (i) En eet, si Ai , +, × est un anneau pour chaque i ∈ J1, pK, alors on vérie aisément que A1 × · · · × Ap muni des opérations + et × dénies de la façon suivantes : (p) (1) (x1 , . . . , xp ) + (y1 , . . . , yp ) = x1 + y1 , . . . , xp + yp (2.19) (1) (p) (x1 , . . . , xp ) × (y1 , . . . , yp ) = x1 × y1 , . . . , xp × yp (2.20) vérie les axiomes d'anneau, avec 0A1 , . . . , 0Ap l'élément neutre de + et 1A1 , . . . , 1Ap l'élément neutre de ×. Pour tout k ≥ 2, notons clk (x) la classe de x ∈ Z dans Z/kZ. 3. au programme des classes préparatoires MP et des IUT d'informatique, mais pas des autres lières P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 31 Théorème 2.4.3 (Théorème des restes chinois, forme algébrique ) Soient m1 , . . . , mp des entiers naturels non nuls deux à deux premiers entre eux, Q Q i.e. mi ∧ mj = 1 pour i 6= j , et soit m = pj=1 mj . L'anneau produit pj=1 Z/mj Z est isomorphe à Z/mZ. Plus précisément, l'application suivante est un isomorphisme d'anneau : Qp Φ : Z/mZ −→ j=1 Z/mj Z (2.21) 7→ clm (x) clm1 (x), . . . , clmp (x) Démonstration. D'abord Φ est bien dénie car clm1 (x), . . . , clmp (x) ne dépend pas du représentant de clm (x) choisi. En eet, si y ≡ x mod m, alors il existe k ∈ Z tel que y = x + km = x + k m1 . . . mp , donc y ≡ x mod mj pour 1 ≤ j ≤ p, d'où clmj (x) = clm (y). Vérions que Φ est un morphisme d'anneaux (cf. dénition A.3.2). Pour tout (x, y) ∈ Z2 , on a : Φ clm (x) + clm (y) = = = = |{z} cf. déf. (2.19) = On a de même : Φ clm (x)clm (y) = = = = |{z} cf. déf. (2.20) = Φ clm (x + y) clm1 (x + y), . . . , clmp (x + y) clm1 (x) + clm1 (y), . . . , clmp (x) + clmp (y) clm1 (x), . . . , clmp (x) + clm1 (y), . . . , clmp (y) Φ clm (x) + Φ clm (y) Φ clm (xy) clm1 (xy), . . . , clmp (xy) clm1 (x)clm1 (y), . . . , clmp (x)clmp (y) clm1 (x), . . . , clmp (x) × clm1 (y), . . . , clmp (y) Φ clm (x) × Φ clm (y) Pour que Φ soit un morphisme d'anneau, n'oublions pas de vérier aussi : Φ clm (1) = clm1 (1), . . . , clmp (1) = élément neutre de la multiplication dans l'anneau produit p Y Z/mj Z j=1 Comme pour tout morphisme de groupe, pour vérier que Φ est injectif, il sut de vérier que son noyau est réduit à {clm (0)}. Or, on a : x ∈ Ker Φ ⇐⇒ Φ clm (x) = clm1 (0), . . . , clmp (0) ⇐⇒ clm1 (x), . . . , clmp (x) = clm1 (0), . . . , clmp (0) ⇐⇒ ∀j ∈ J1, pK clmj (x) = clmj (0) ⇐⇒ ∀j ∈ J1, pK mj | x ⇐⇒ m = m1 . . . mp | x car mi ∧ mj = 1 pour i 6= j P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 32 Ainsi, x ∈ Ker Φ ⇐⇒ x = clm (0), donc Φ est injectif. Or, les deux ensembles Z/mZ et Qp j=1 Z/mj Z ont même cardinal m = m1 . . . mp , donc Φ est bijectif. La forme fonctionnelle du théorème des restes chinois est consacrée à la résolution dans Z du système de congruences suivant, où a1 , . . . , ap sont des entiers donnés et m1 , . . . , mp des entiers naturels non nuls deux à deux premiers entre eux : x ≡ a1 x ≡ a2 .. . x ≡ ap mod m1 mod m2 (2.22) mod mp D'après le théorème 2.4.3, le système (2.22) a une unique solution x0 dans J0, m − 1K, où m = m1 . . . mp , et les autres solutions dans Z sont x0 + km où m ∈ Z. En eet, pour toute solution x de (2.22), clm (x) est l'unique antécédent par Φ de clm1 (a1 ), . . . , clmp (ap ) . Résoudre (2.22) revient donc à expliciter l'isomorphisme d'anneau inverse Φ−1 . Puisque mj ∧ mi = 1Y pour j 6= i, d'après une propriété démontrée au paragraphe 2.2.4, ′ l'entier mi = m/mi = mj est premier avec mi , donc m′i est inversible modulo mi . j̸=i Notons m′−1 i un représentant de l'inverse de clmi (m′i ), et dénissons : x0 = p X ! ai m′i m′−1 i mod m (2.23) i=1 Démontrons que x0 est une solution de (2.22). Par dénition de m′−1 j , pour tout j ∈ J1, pK, ′−1 ′−1 ′ ′ on a mj mj ≡ 1 mod mj , donc aj mj mj ≡ aj mod mj . Par ailleurs, pour i 6= j , on a m′i ≡ 0 mod mj , donc ai m′i mi′−1 ≡ 0 mod mj . En sommant toutes ces relations de congruences, on obtient : p X ai m′i m′−1 ≡ 0 + . . . 0 + aj + 0 + · · · + 0 i mod mj i=1 Pp Ainsi, l'entier i=1 ai m′i mi′−1 est une solution de (2.22). En réduisant cet entier modulo m, on obtient une relation de la forme : x0 = p X ai m′i m′−1 + k m1 . . . m p i (k ∈ Z) i=1 Cette relation montre que l'on a aussi x0 ≡ aj mod mj pour tout j ∈ J1, pK. Ainsi, x0 est l'unique solution de (2.22) appartenant à J0, m−1K, et les autres solutions dans Z s'obtiennent en ajoutant un multiple de m. Notons que la formule (2.23) est eectivement fonctionnelle , car l'inverse de m′i modulo mi se calcule par l'algorithme d'Euclide étendu. On peut donc en pratique calculer x0 , donc résoudre le système (2.22). Énonçons le résultat que nous venons de prouver. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 33 Théorème 2.4.4 (Théorème des restes chinois, forme fonctionnelle ) Pour tout (m1 , . . . , mp ) ∈ Zp tel que mi ∧ mj = 1 pour i 6= j et tout (a1 , . . . , ap ) ∈ Zp , le système de congruences (2.22) a une unique solution dans J0, m − 1K donnée par (2.23), où m′i = m/mi et m′−1 est un représentant de l'inverse de la classe de m′i dans Z/mi Z. i Les solutions de (2.22) dans Z sont les entiers x0 + k m1 . . . mp avec k ∈ Z. Corollaire 2.4.2 (Isomorphisme inverse). Sous les hypothèses et les notations des théorèmes 2.4.3 et 2.4.4, on a : Φ−1 : Qp j=1 Z/mj Z clm1 (a1 ), . . . , clmp (ap ) −→ Z/mZ Pp ′ ′−1 7→ clm i=1 ai mi mi (2.24) Exemple. Il semble avéré que les mathématiciens chinois connaissaient ce théorème (sans doute plutôt dans sa version pratique) déjà au début de notre ère. Cela a donné lieu à l'illustration suivante du théorème. La légende raconte qu'il y a très longtemps, un général chinois comptait les soldats qui lui restaient après une bataille de la façon suivante. Il connait le nombre m de soldats avant la bataille (m est très grand, de l'ordre de quelques dizaines de milliers de soldats). Il décompose m en facteurs Q premiers, de sorte qu'il peut écrire m = m1 . . . mn avec mi ∧ mj = 1 pour i 6= j (si m = ni=1 pαi i , il pose mi = pαi i ). Après la bataille il demande à l'armée de se ranger : par rangs de m1 soldats ; il relève le reste a1 ; par rangs de m2 soldats ; il relève le reste a2 ; etc ; par rangs de mn soldats ; il relève le reste an . Grâce à l'algorithme d'Euclide étendu, il peut calculer la solution x0 de ce système de congruences, en choisissant celle qui est entre 0 et m − 1. S'il trouve x0 6= 0 (cas le plus probable), c'est l'eectif restant de son armée. S'il trouve x0 = 0, l'eectif restant est en fait m, i.e. il n'a perdu aucun soldat ! 2.4.5 L'indicateur d'Euler Dénition 2.4.1 (Indicateur d'Euler ) On appelle indicateur d'Euler la fonction φ : N∗ −→ N dénie par φ(n) = Card {k ∈ J0, n − 1K ; k ∧ n = 1}. Pour n > 1, φ(n) est donc le nombre d'éléments de J0, n − 1K inversibles modulo n. C'est aussi le nombre de générateurs du groupe (Z/nZ, +). Puisque 0 ∧ n = n, on a φ(1) = 1 et φ(n) = Card {k ∈ J1, n − 1K ; k ∧ n = 1} pour n ≥ 2. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 34 Proposition 2.4.1 (Propriétés de l'indicateur d'Euler ) Si p est premier, alors pour tout r ∈ N∗ : En particulier : φ(pr ) = pr − pr−1 (2.25) φ(p) = p − 1 (2.26) Démonstration. Les entiers k entre 1 et pr ayant un diviseur supérieur ou égal à 2 commun avec pr ont en fait p pour diviseur puisque p est premier. Ce sont donc les multiples de p de la forme k = qp ≤ pr , donc il y en a pr−1 (car q doit décrire {1, . . . , pr−1 }). Finalement il existe pr − pr−1 entiers inférieurs à pr et premiers avec pr . Théorème 2.4.5 (Une propriété essentielle de φ) Si m et n sont deux entiers naturels non nuls premiers entre eux, alors : φ(mn) = φ(m)φ(n) (2.27) Démonstration. Considérons l'isomorphisme construit dans le théorème 2.4.3 pour m1 = m et m2 = n : Φ : Z/mnZ −→ Z/mZ × Z/nZ clmn (x) 7→ (clm (x), cln (x)) Pour tout k ∈ N∗ , notons Z∗k le groupe multiplicatif des inversibles de l'anneau Z/kZ (cf. proposition A.3.1). D'après la proposition A.3.2, l'isomorphisme Φ induit un isomorphisme entre les groupes Z∗mn et Z∗m ×Z∗n . Comme ces deux groupes sont respectivement de cardinal φ(mn) et φ(m)φ(n), on a l'égalité (2.27). On dispose d'une formule explicite pour φ(n), mais elle nécessite de connaître la décomposition en facteurs premiers de n. Théorème 2.4.6 (φ(n) en fonction de la décomposition de n) On considère la décomposition en facteurs premiers de l'entier n ≥ 2 : n= r Y pαi i i=1 où les αi sont des entiers naturels non nuls. On a : φ(n) = r Y (pαi i − pαi i −1 ) (2.28) i=1 P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 35 Démonstration. C'est une conséquence immédiate de (2.25 et de (2.27). Remarque importante. Cette formule ne permet de calculer φ(n) que si l'on connaît la décomposition en nombres premiers de n. Or, pour n très grand cette factorisation est calculatoirement très dicile. Ceci est à la base de la sécurité du système RSA (et d'autres systèmes cryptographiques) comme on le verra au prochain chapitre. Corollaire 2.4.3. Pour n ≥ 3, φ(n) est pair. Q Démonstration. On a φ(n) = ri=1 pαi i −1 (pi − 1). Si 2 est l'un des facteurs premiers de n, alors 2 apparaît dans la décomposition de n avec un exposant au moins égal à 2, car n est alors un nombre pair, donc n ≥ 4, donc 2 est un facteur de φ(n). Sinon, n est impair, donc n possède un facteur premier impair pi , donc φ(n) est divisible par pi − 1, qui est pair, donc φ(n) est lui aussi pair. 2.5 Les théorèmes d'Euler et de Fermat 2.5.1 Théorème d'Euler Théorème 2.5.1 (Théorème d'Euler ) Si les entiers a et n sont premiers entre eux, alors (2.29) aφ(n) ≡ 1 [n] Démonstration. Puisque a ∧ n = 1, la classe a de a dans Z/nZ est inversible. Puisque φ(n) est le cardinal du groupe des inversibles de Z/nZ, le théorème de Lagrange (théorème A.2.1) nous donne : aφ(n) = 1 i.e. aφ(n) = 1 On a donc bien (2.29). Corollaire 2.5.1. Si a et n sont premiers entre eux l'inverse de a modulo n est : a−1 = aφ(n)−1 (2.30) Remarque. Ce résultat est inutilisable en pratique pour calculer l'inverse modulo n pour n grand (ce qui est le cas dans les applications en cryptographie). En eet il faudrait connaître φ(n), ce qui nécessite de connaître la factorisation de n. En pratique on utilisera donc plutôt l'algorithme d'Euclide modié (fonction Inverse_Mod). Cela n'enlève rien à l'intérêt de ce corollaire du théorème d'Euler, car il est très utile dans des questions plus théoriques (pour justier certaines démarches utilisées en cryptographie par exemple). P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 36 2.5.2 Petit théorème de Fermat Théorème 2.5.2 (Petit théorème de Fermat ) Pour tout nombre premier p, pour tout a ∈ Z, on a (2.31) ap ≡ a [p] Plus précisément, si le nombre premier p ne divise pas a, alors (2.32) ap−1 ≡ 1 [p] Démonstration. Puisque p est premier, φ(p) = p − 1, et si p ne divise pas a, alors a et p sont premiers entre eux, donc d'après le théorème d'Euler on a ap−1 = 1 mod p, ce qui entraîne bien sûr ap = a mod p. Si par contre p divise a, alors a est un représentant de la classe de 0 dans Z/pZ, donc ap = 0 mod p, ce qui donne encore ap = a mod p puisque a = 0 mod p. 2.5.3 Nombres pseudo-premiers et tests ecaces de primalité Les théorèmes d'Euler et de Fermat ont de nombreuses applications en cryptographie, notamment pour le système RSA (cf. chapitre 3), mais ils sont aussi à la base des tests modernes de primalité (algorithmes rapides). Or, dans de nombreux systèmes cryptographiques on a justement besoin d'engendrer (quasi-aléatoirement) de très grands nombres premiers. Malheureusement, la réciproque du théorème de Fermat est fausse : il peut arriver que ap = a mod p pour un nombre p non premier. Si cela arrive on dit que p est pseudo-premier de base a. Il existe même des nombres pseudo-premiers en toute base a ∈ {1, ..., p−1}. Cela implique qu'on peut utiliser le théorème de Fermat comme test de non-primalité (si on trouve a tel que ap 6= a mod p, c'est que p n'est pas premier), mais on ne peut pas l'utiliser a priori comme test de primalité. Cependant si en essayant beaucoup de valeurs de a, on trouve à chaque fois que ap ≡ a mod p, cela nous indique grosso modo que p a de fortes chances d'être premier ! C'est l'idée générale des tests probabilistes de primalité, dont les deux plus célèbres sont le test de Solovay-Strassen (qui utilise en plus d'autres résultats d'arithmétique) et celui de MillerRabin (simple à comprendre et très utilisé en pratique) que nous étudierons au chapitre 3. 2.6 Extension des notions d'arithmétique aux polynômes Certains systèmes cryptographiques (notamment l'actuel standard international AES, pour Advanced Encryption Standard ) utilisent de l'arithmétique sur d'autres anneaux que Z, en particulier sur des anneaux de polynômes. Ces bases mathématiques ne sont pas beaucoup plus diciles, car la plupart des notions étudiées sur Z se généralisent bien à ces anneaux, comme on va le voir. Commençons par quelques rappels sur les polynômes. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 37 2.6.1 Polynômes Soit K un corps commutatif ni (Zp avec p premier par exemple) ou inni (Q, R ou C par exemple). On note K[X] l'ensemble des polynômes à coecients dans K. Rappelons qu'un polynôme n'est rien d'autre qu'une suite P = (ai )i∈N d'éléments de K tous nuls à partir d'un certain rang. La suite (0, 1, 0, 0, . . .) est notée X , et la suite (C, 0, 0, 0, . . .) est appelée polynôme constant égal à C . K[X] est muni d'une addition et d'une multiplication dont voici les dénitions : P + Q = (ai ) + (bi ) = (ai + bi ) X P × Q = (ai ) × (bi ) = aj bk (2.33) (2.34) j+k=i Par exemple, on a X 2 = (0, 1, 0, 0, . . .) × (0, 1, 0, 0, . . .) = (0, 0, 1, 0, . . .) Plus généralement X n est la suite ne comportant que des 0 sauf en position n + 1 où il y a un 1. Muni de ces deux lois internes, K[X] est un anneau commutatif, avec élément neutre pour l'addition la suite nulle, i.e. le polynôme nul 0, et élément neutre pour la multiplication la suite (1, 0, 0, 0, . . .), i.e. le polynôme constant égal à 1. Si N est le plus grand entier naturel tel que aN 6= 0 on dit que deg P = N (avec une exception : par convention deg 0 = −∞, donc un polynôme constant a pour degré 0 sauf si c'est le polynôme nul). Avec cette dénition (et cette convention pour deg 0), on a immédiatement les formules suivantes : deg(P + Q) ≤ max(deg P, deg Q) deg(P Q) = deg P + deg Q (2.35) (2.36) Enn, on peut également munir K[X] d'une structure d'espace vectoriel sur le corps K en dénissant le produit par un scalaire λ ∈ K de la façon suivante : λP = λ(ai ) = (λai ) (2.37) Une base de cet e.v. est alors 1, X, X 2 , X 3 , . . . , i.e tout polynôme s'écrit de façon unique comme combinaison linéaire des ces polynômes particuliers (dits monômes ) : P = (ai ) = deg XP ai X i (2.38) i=0 2.6.2 Divisibilité dans K[X] La plupart des notions d'arithmétique vraies dans Z ont un analogue dans K[X]. On peut en eet démontrer les propriétés suivantes. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 1. 38 Division euclidienne de polynômes. Pour tout polynôme A et tout polynôme B non nul, il existe un couple unique (Q, R) de polynômes vériant A = BQ + R et deg R < deg B (2.39) Si R = 0, on dit que B divise A. 2. PGCD de deux polynômes. Les idéaux de K[X] sont principaux, i.e engendrés par un élément, donc de la forme (P ) = {P Q ; Q ∈ K[X]} On peut donc dénir le PGCD d'une famille nie de polynômes de la même façon que nous l'avons fait dans Z (il est déni à une constante multiplicative près). Par exemple dans R[X] le PGCD des polynômes (X 2 + 1)(X − 1) et (X − 1)2 est X − 1. PGCD(P, Q) est un polynôme constant, on dit que P et Q sont premiers entre eux. Par exemple X 2 + 1 est premier avec X − a dans R[X], pour tout Lorsque a réel, mais X 2 + 1 n'est pas premier avec X − i dans C[X]. Nous avons les mêmes propriétés que dans Z, notamment le théorème de Bezout : P et Q sont premiers entre eux ssi il existe deux polynômes U et V tels que 1 = P U + QV On peut utiliser l'algorithme d'Euclide pour calculer le PGCD de deux polynômes et trouver U et V s'ils sont premiers entre eux. Puisque l'on a le théorème de Bezout, on a un nômes (l'écrire dans ce cadre, en exercice) 3. théorème de Gauss pour les poly- Polynômes irréductibles. Ils jouent dans l'anneau K[X] le rôle que jouent les nombres premiers dans l'anneau Z. Dénition 2.6.1 (Polynôme irréductible ) Un polynôme P est dit irréductible si : (a) P n'est pas constant, (b) P n'est divisible que par les polynômes constants non nuls et par les polynômes λP pour λ ∈ K. Exemples. (a) X 2 + 1 est irréductible dans R[X]. (b) X 2 + 1 n'est pas irréductible dans C[X] car il est divisible par X + i (et par X − i). (c) X 2 + 1 n'est pas irréductible dans Z2 [X] (polynômes à coecients 0 ou 1 avec la règle de calcul 2 = 0) puisque l'on a l'égalité X 2 + 1 = (X + 1)2 dans Z2 [X]. P.Struillou CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE 39 (d) Puisque toute équation polynomiale de degré au moins 1 à coecients complexes possède une racine dans C (théorème de D'Alembert-Gauss), les seuls polynômes irréductibles de C[X] sont de la forme X − a avec a ∈ C, i.e. les polynômes irréductibles de C[X] sont les polynômes de degré 1. (e) Les seuls polynômes irréductibles de R[X] sont les polynômes de degré 1 et les polynômes de degré 2 dont le discriminant ∆ est strictement négatif. 2.6.3 L'anneau Zn [X] (m(X)) Dans certains systèmes cryptographiques (notamment l'actuel standard AES) ou dans d'autres applications (par exemple les codes correcteurs d'erreurs ) on travaille avec des polynômes à coecients dans l'anneau Zn (très souvent n = 2 : les coecients sont des bits). Mais on est amené à réduire les résultats des calculs modulo un polynôme m(X) de degré d. On dit qu'on travaille dans l'anneau A= Zn [X] (m(X)) Cet anneau A s'identie à l'ensemble des polynômes à coecients dans Zn de degré au plus d−1, muni d'une addition et d'une multiplication particulière. De façon précise, l'addition de deux éléments de A est l'addition ordinaire des polynômes, mais en n'oubliant pas d'utiliser le fait que dans Zn on a l'égalité n = 0. La multiplication de deux éléments P et Q de A doit se terminer par la réduction modulo m(X) : le résultat de la multiplication de P par Q est le reste de la division euclidienne de P Q par m. Nous admettrons le résultat suivant, mais la preuve n'utilise que le théorème de Bezout, et elle est à la portée d'un étudiant motivé. Théorème 2.6.1 (Corps ni ) Si n est premier et si m(X) est irréductible dans Zn [X], alors l'anneau corps (i.e. tout élément non nul est inversible dans cet anneau). Zn [X] (m(X)) est un On se reportera au cours de transmissions numérique (codes correcteurs d'erreurs) et au chapitre 4 de ce polycopié pour découvrir de belles applications industrielles de ces notions. Pour AES, n = 2 et d = 8 (car après réduction modulo m, on obtient un polynôme de degré au plus 7, représentant un octet). Précisément, le polynôme irréductible utilisé pour l'implémentation du logiciel AES est m(X) = 1 + X + X 3 + X 4 + X 8 . P.Struillou Chapitre 3 Cryptographie à clef publique 3.1 Généralités 3.1.1 Fonctions à sens unique Une fonction à sens unique est une application f : A → B bijective (i.e. inversible) telle qu'il soit facile (en terme de temps de calcul) de calculer f (x) pour chaque x ∈ A mais très dicile de calculer x = f −1 (y) pour y ∈ B . Par calcul facile , il faut comprendre il existe au moins un algorithme ecace permettant de calculer f (x) , et par calcul dicile , il faut comprendre dans l'état actuel des connaissances, aucun algorithme ecace permettant de calculer f −1 (y) n'est connu . On rappelle au paragraphe 3.1.4 les rudiments nécessaires de théorie de la complexité permettant de donner un sens au mot ecace . Par exemple si p et q sont deux grands nombres premiers, si n = pq , si b est un entier vériant certaines hypothèses (cf. système RSA, paragraphe 3.2), alors la fonction : f : x ∈ J0, n − 1K 7→ xb mod n ∈ J0, n − 1K est une fonction à sens unique dans l'état actuel des connaissances : rien ne garantit qu'un résultat nouveau en mathématiques ne permettra pas dans l'avenir d'inverser facilement cette fonction, mais actuellement c'est calculatoirement très dicile. 3.1.2 Une première application des fonctions à sens unique : le problème du mot de passe De nombreux logiciels demandent à l'utilisateur un code d'accès sous forme d'un mot de passe. L'information sur le code doit donc être écrite quelque part sur le disque, ce qui peut permettre à un utilisateur malveillant de lire le mot de passe. En fait pour éviter ce problème il sut que le logiciel inscrive f (x) sur le disque, où f est une fonction à sens unique (choisie une fois pour toute par les concepteurs du logiciel) et x le mot de passe saisi par l'utilisateur. Ainsi, l'assaillant a accès à f (x) mais cela ne lui permettra pas d'en déduire x. 3.1.3 Systèmes cryptographiques asymétriques Dans un système cryptographique classique (DES par exemple), la règle dk de déchirement se déduit facilement de la règle ek de cryptage si on connaît la clé k utilisée. On parle de système cryptographique symétrique ou à clé privée. 40 CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 41 L'idée des systèmes à clé publique (apparue dans les années 1970) est de laisser à Bob (le receveur du message) le soin de choisir k et de publier la règle ek (dans un répertoire ou un annuaire) qui doit être une fonction à sens unique. Ainsi seul Bob connaît la règle de déchirement dk : même Alice ne peut inverser ek , son rôle se limite à chirer le message qu'elle veut envoyer à Bob à l'aide de la règle publique ek . Ainsi, dans un tel système à clé publique, les rôles de ek et de dk ne sont pas symétriques, et on parle dans ce cas de système cryptographique asymétrique . 3.1.4 Théorie de la complexité et cryptographie Rappelons que la théorie de la complexité des problèmes (cf. LSI 2) permet de classer les problèmes de décision (ce sont les problèmes qui n'admettent que deux réponses possibles : oui ou non ) en problèmes diciles et problèmes simples . Les problèmes considérés simples sont ceux pour lesquels il existe un algorithme trouvant la réponse ( oui ou non ) en temps polynomial de la taille de la donnée d'entrée. La classe des problèmes de décision de ce type est notée P. Les autres problèmes sont considérés diciles . Ce sont a priori les problèmes diciles qui sont intéressants en cryptographie à clef publique, puisqu'on peut essayer de construire des fonctions à sens unique en construisant des fonctions bijectives dont l'inversion nécessite de résoudre un problème polynomialement équivalent à un problème de décision dicile. Néanmoins, il ne faut pas baser la sécurité d'un système sur n'importe lequel de ces problèmes réputés diciles, car il existe des problèmes pour lequel le meilleur algorithme connu à ce jour n'est pas polynomial dans le pire des cas, mais pour lesquels la réponse est en fait donnée rapidement pour la majeure partie des instances en entrée. Remarquons que tant qu'on n'a pas trouvé d'algorithme polynomial résolvant un problème de décision, on ne sait pas si ce problème est dans P ou non (on peut seulement conjecturer qu'il n'y est pas si, malgré tous nos eorts, on ne trouve pas d'algorithme polynomial de résolution). On dit qu'un problème de décision est dans la classe NP si la réponse oui peut être vériée en temps polynomial lorsqu'une information supplémentaire, appelée certicat (ou oracle ) est fournie. De même, si on peut vérier la réponse non en temps polynomial en utilisant au besoin un certicat, on dit que le problème de décision est dans la classe coNP. Exemple. Le problème ayant pour instances les entiers naturels n et dont le but est de répondre à la question n est-il premier ? est dans coNP puisque si n n'est pas premier, on peut le vérier en temps polynomial en fournissant un certicat, qui ici est tout simplement un diviseur de n. Il ne faut pas confondre ce problème avec le problème consistant à trouver les diviseurs de n (ce qui est a priori beaucoup plus dicile). Il est clair que P ⊂ NP et que P ⊂ coNP, car trouver la solution en temps polynomial permet de vérier la solution en temps polynomial ! Mais on ne sait rien sur les réciproques de ces résultats, bien que la plupart de spécialistes de la question soupçonnent fortement que P 6= NP (on conjecture également que NP 6= coNP et que P 6= NP ∩ coNP). P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 42 Remarque. La question non résolue La classe de complexité P est-elle égale à la classe de complexité NP ? a été reconnue comme l'un des 7 problèmes de mathématiques majeurs du 21-ème siècle et sa résolution est dotée d'une récompense de 1 million de dollars (par le Clays Institute ). C'est nalement assez peu si on considère la diculté de la question ! On dit qu'un problème P1 se réduit polynomialement à un problème P2 s'il existe un algorithme polynomial qui résout P1 en utilisant la solution de P2 (en supposant qu'on la connaisse). Dans un tel cas, on dit que P1 n'est pas plus dur que P2 , puisque résoudre P2 en temps polynomial permettrait de résoudre P1 en temps polynomial. Parmi les très nombreux problèmes de la classe NP, on distingue ceux qui sont NP-complets. Un problème de décision P0 appartenant à la classe NP est dit NP-complet si tout autre problème de décision de NP se réduit polynomialement à P0 . Autrement dit, P0 est de diculté maximale parmi les problèmes de NP. Comme la plupart des spécialistes de la complexité pensent que P 6= NP, lorsqu'un problème est prouvé NP-complet, on considère généralement que c'est une démonstration de sa grande diculté calculatoire. Exemple. Problème P du sac à dos. On se donne des entiers naturels a1 , . . . , an et un entier naturel s ≤ ni=1 ai . Existe-t-il un sous-ensemble de {a1 , . . . , an } dont la somme des éléments redonne s ? Ceci est un problème de décision qui a été prouvé NP-complet. Considérons un problème P (de décision ou non), et supposons qu'il existe un problème de décision P0 qui soit NP-complet et qui se réduise polynomialement à P . On dit alors que P est NP-dicile. Cela signie que P est calculatoirement au moins aussi dur que P0 . P est alors au moins aussi dur que n'importe quel problème NP-complet, car tous les problèmes NP-complets sont polynomialement équivalents. Un problème qui a été prouvé NP-dicile peut donc être considéré comme un problème d'une grande diculté calculatoire. P a1 , . . . , an et un entier naturel s ≤ ni=1 ai . Sachant qu'il existe un sous-ensemble de {a1 , . . . , an } dont la somme des éléments vaut s, il Exemple. On se donne des entiers naturels s'agit de déterminer un tel sous-ensemble. Ce n'est pas un problème de décision. Il a été prouvé NP-dicile. Il semble bien que l'idéal serait de baser la sécurité des systèmes à clefs publiques (i.e. la diculté de l'inversion des fonctions réputées à sens unique) sur des problèmes NP-diciles. C'est ce qu'ont essayé de faire Merkle et Hellman avec un système basé sur le problème du sac à dos. Ils ont proposé le système suivant : 1. Bob choisit une instance (a1 , . . . , an ) pour lequel le problème est facile à résoudre (cela existe) et la déguise en une instance (b1 , . . . , bn ) = f (a1 , . . . , an ), ayant l'air quelconque , qu'il publie ((b1 , . . . , bn ) est donc sa clef publique, et le couple constitué de (a1 , . . . , an ) et de la fonction f est sa clef privée). 2. Si Alice veut envoyer un message (x1 , . . . , xn ) à Bob (où les xi sont des bits), elle envoie le message chiré y = b1 x1 + · · · + bn xn . Oscar, s'il intercepte y , doit donc résoudre un problème de sac à dos. C'est simple et cela a l'air solide, mais si on y rééchit, on voit que le problème de sac à dos, bien que NP-dicile dans le cas général, n'a pas vraiment de raison d'être impossible à traiter par Oscar dans ce cas : puisque (a1 , . . . , an ) n'est pas quelconque, (b1 , . . . , bn ) non plus. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 43 Le système de Merkle et Hellman a eectivement été cassé assez vite et n'est donc pas utilisé. En réalité, utiliser un problème NP-dicile en cryptographie n'est pas chose aisée. L'une des raisons à cela est que si l'on essaye de formaliser la notion de fonction à sens unique, on s'aperçoit qu'en fait on n'en connaît aucune, et que si l'on en trouve une, alors on prouve du même coup que P 6= NP ! Ainsi, on utilise en cryptographie à clef publique des fonctions qui sont en pratique à sens unique (i.e la preuve de la sécurité n'est pas fournie, ce qui est un peu inquiétant mais inévitable dans l'état actuel des connaissances). C'est les cas des fonctions utilisées dans les sytèmes RSA et ElGamal, que nous allons maintenant décrire. 3.2 Le système RSA En 1977, Rivest, Shamir et Adleman proposent le premier système asymétrique ecace basé sur les principes de Die et Hellman. Ce système (appelé RSA du nom de leurs auteurs) est devenu un standard international dont il est fondamental de comprendre le principe. 3.2.1 Les principe de RSA et sa mise en oeuvre Décrivons d'abord la mise en oeuvre de RSA, nous expliquerons ensuite pourquoi ça marche . 1. Un utilisateur, appelons le Bob, qui veut qu'une autre personne puisse lui envoyer un message chiré engendre (quasi-aléatoirement) deux grands nombres premiers p et q et calcule puis publie n = pq (3.1) Ce nombre n est appelé le modulus, nous allons voir pourquoi. Bob conserve secrets p et q . 2. Comme p et q sont premiers, Bob connaît la valeur de φ(n) : φ(n) = (p − 1)(q − 1) (3.2) Bob choisit (aléatoirement) un entier naturel b ∈ {2, . . . , φ(n) − 1} premier avec φ(n), an que b soit inversible modulo φ(n), et calcule, à l'aide de la fonction Inverse_Mod appliquée aux arguments φ(n) et b, le nombre a = b−1 mod φ(n) (3.3) En pratique, Bob choisit le représentant a ∈ {1, . . . , φ(n) − 1} en réduisant b−1 modulo φ(n). Bob publie alors b, appelé exposant de chirement, et conserve secret a (ou l'inverse). Notons que pour calculer a à partir de b, nous devons connaître φ(n). Or, celui-ci est en pratique inaccessible au calcul à partir de n puisqu'il faudrait réussir à factoriser n : Bob étant le seul à connaître p et q , il est également le seul à avoir accès à φ(n). 3. Si Alice veut envoyer un message à Bob, elle commence par le découper en blocs x ∈ Zn , et elle envoie à Bob le bloc de message chiré y = ek (x) = xb mod n (3.4) calculé à l'aide de la clef publique k = (n, b) de Bob. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 4. Bob calcule dk (y) = y a mod n 44 (3.5) Le résultat est alors bien le message x. Nous allons expliquer pourquoi en démontrant le théorème suivant, dit théorème RSA. Théorème 3.2.1 (RSA) En suivant le protocole précédent, on a : dk (ek (x)) = x (3.6) Démonstration. On doit démontrer que (xb mod n)a mod n = x Si le message x est premier avec n, c'est une simple conséquence du théorème d'Euler. En eet (xb mod n)a mod n = xab mod n Or, a est l'inverse de b modulo φ(n), donc il existe un entier k tel que ab = 1 + kφ(n) D'après le théorème d'Euler, on a xφ(n) ≡ 1 [n] Comme x ∈ {0, ..., n − 1}, xab mod n vaut exactement x. Si x n'est pas premier avec n, on a x = lp avec l < q ou x = lq avec l < p, car x < n = pq . Supposons x = lp pour xer les idées. Le nombre xab − x = (xkφ(n) − 1)x est divisible par p. Montrons qu'il est aussi divisible par q . On a : xkφ(n) − 1 = (lp)k(p−1)(q−1) − 1 Or, q ne divise pas lp (car l < q , q premier), donc q ne divise pas non plus (lp)k(p−1) , donc (lp)k(p−1) q−1 ≡ 1 [q] d'après le théorème d'Euler appliqué à (lp)k(p−1) (qui est premier avec q , ici φ(q) = q − 1). Ainsi, xab − x est divisible par p et par q , donc par n = pq , donc xab mod n = x Remarque et exercice. Bien que le théorème RSA soit vrai pour tout x < n, en pratique, il faut que les messages x à envoyer soient premiers avec n (vu l'ordre de grandeur de p et q en pratique, ce n'est pas une contrainte très forte), sinon un attaquant qui intercepte y (ou tout simplement l'émetteur du message) retrouve facilement la clé privée de Bob. Voyez-vous comment ? P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 45 3.2.2 Attaques de RSA Oscar a accès à n et à b, qui sont publics. S'il intercepte xb mod n il lui sera très dicile de calculer x par inversion puisque la fonction puissance modulaire est à sens unique. Que peut-il essayer d'autre ? En règle générale, la cryptanalyse consiste à découvrir la clef utilisée, donc ici à découvrir également les nombres premiers p et q tels que n = pq . Ceci est pour Oscar un problème au moins aussi dicile que le déchirement du message x, car si Oscar connaît la clef privée de Bob, il peut déchirer le message comme Bob le fait. Oscar peut donc tenter de factoriser n, ce qui lui donnerait les facteurs premiers p et q . Il accéderait ainsi à φ(n) = (p − 1)(q − 1) et pourrait calculer a = b−1 mod φ(n) grâce à l'algorithme d'Euclide modié. Mais les meilleurs algorithmes connus de factorisation des grands nombres (ceux dits du crible quadratique et du crible du corps de nombres ) sont lents (cf. paragraphe 3.2.3), donc sa tâche va être délicate si n est choisi assez grand, à moins qu'il ne dispose de très gros moyens de calcul. Oscar peut aussi essayer une attaque moins directe : il peut tenter de calculer φ(n) sans factoriser n (nous avons démontré une formule pour φ(n) au chapitre 2, mais elle utilise justement la factorisation en nombres premiers de n). Cela lui surait pour calculer a = b−1 mod φ(n) par l'algorithme d'Euclide, donc pour déchirer le message d'Alice. En réalité, cette approche est, pour Oscar, équivalente à la précédente en terme de complexité (i.e. aussi dicile), car la connaissance de φ(n) lui permettrait de factoriser n. En eet, n est public, et si Oscar connaît φ(n) par un moyen ou un autre, il lui sut de résoudre le système d'équations : pq = n (p − 1)(q − 1) = φ(n) Ceci se ramène à une simple équation du deuxième degré : x2 − (n + 1 − φ(n))x + n = 0 dont les deux solutions sont justement p et q . Ainsi, la connaissance de φ(n) est équivalente à la connaissance de la factorisation de n. Il existe aussi de nombreuses attaques qui utilisent des faiblesses de RSA dans des cas particuliers. On peut éviter de se placer dans ces cas particuliers en respectant scrupuleusement un protocole conseillé par la société RSA elle-même. Par exemple des attaques de RSA ont été réussies lorsque l'exposant b publié par Bob était trop petit (cf. TD). En pratique on conseille maintenant de choisir b au moins égal à n4 . Dans le même ordre d'idée il est conseillé de ne pas choisir des entiers p et q de tailles trop diérentes, sinon un certain type d'attaque sera facilité. Notamment il faut absolument éviter de choisir un petit nombre premier et un autre très grand. Si par exemple on veut un modulus n de taille 4096 bits, on choisira des nombres premiers p et q tous deux de taille environ 2048 bits. Il faut néanmoins que la diérence |p − q| ne√soit pas trop petite, sinon il n'est pas très dicile de trouver un diviseur de n de l'ordre de n... Quelle taille de n préconise-t-on ? Actuellement on est lancé dans une course au record de factorisation d'entier (concours lancé par la société RSA elle-même an de se tenir au courant des progrès en matière d'attaque de son système !). Une équipe internationale de mathématiciens avait déjà réussi à factoriser en 1999 un nombre de 155 chires décimaux, P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 46 donc de 512 bits, ce qui correspondait à l'époque à une taille courante dans les applications pratiques de RSA. Une taille de 4096 bits pour le modulus n de RSA paraît à l'heure actuelle souhaitable. Évidemment les moyens de cette équipe sont hors de portée du premier hacker venu, mais il faut savoir qu'un particulier (Serge Humpich) est parvenu en 1998 à casser en quelques jours la clef RSA des cartes bancaires de l'époque qui faisaient 320 bits, simplement en téléchargeant un logiciel japonais de factorisation ! Ainsi, la factorisation d'un nombre de 129 chires décimaux est actuellement à la portée de n'importe qui (un peu informé) disposant d'un ordinateur personnel ordinaire... 3.2.3 Remarques sur la sécurité de RSA La sécurité de RSA est donc basée sur la diculté calculatoire de la factorisation de n. Ceci est discutable car il n'a jamais été prouvé que casser RSA est un problème polynomialement équivalent à la factorisation de n, bien que cela soit une conjecture communément admise. Il n'est donc pas totalement exclu qu'une autre approche que la factorisation permette la cryptanalyse de RSA, mais cela semble peu crédible. De plus, on ne sait pas si le problème de la factorisation de n est NP-dicile. Nous pouvons seulement constater qu'actuellement le meilleur algorithme de factorisation (dit du crible du corps de nombres, ou encore du crible algébrique ) a une complexité moyenne en temps de l'ordre de 2 e1,92(log n) 1 3 log(log n) 3 (3.7) 1+ε(n) où limn→+∞ ε(n) = 0, de sorte qu'il semble bien que le problème de la factorisation n'est pas dans P. Une telle complexité classe pour l'instant ce problème parmi ceux de complexité nonpolynomiale en la taille log2 n de la donnée d'entrée, mais cet algorithme est tout de même sous-exponentiel. Il existe par ailleurs d'autres algorithmes ayant une complexité pire cas plus forte, mais réussissant en réalité la factorisation de n plus vite dans des cas particuliers. 3.2.4 Authentication à divulgation nulle Alice (utilisateur humain ou machine) souhaite s'authentier auprès de Bob (humain ou système). Cela se fait classiquement en prouvant à Bob qu'elle est bien détentrice d'un certicat privé A qui lui est propre (par exemple un grand nombre ou une suite de caractères). Cela se fait en 3 étapes : l'engagement d'Alice (elle prend l'initiative de demander à s'authentier) ; le dé de Bob (il lui pose une question nécessitant d'être en possession de A pour y répondre) ; la réponse d'Alice au dé et la vérication de sa réponse par Bob. priv priv Alice souhaite de plus que le protocole d'authentication ne fournisse pas d'information (au sens de la théorie de Shannon) sur son certicat privé A : si c'est le cas, le protocole est une preuve à divulgation nulle . priv 3.2.5 Protocole de Guillou-Quisquater Le protocole de Guillou-Quisquater est une solution pour l'authentication à divulgation nulle utilisant RSA. Décrivons ce protocole. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 47 Alice est en possession : d'une clé RSA publique (n, b), où n = pq est son modulus et b son exposant de chirement, et de sa clé privée a, inverse de b modulo φ(n) ; d'un certicat public A ∈ Zn , délivré par un organisme de certication, et d'un certicat privé A = A−a mod n. A est donc l'inverse modulo n de Aa ; on l'appelle certicat privé d'Alice car il se calcule à partir de son certicat public à l'aide de sa clé privée. pub priv priv pub pub Le protocole d'authentication (d'Alice) est alors : 1. Engagement d'Alice : Alice choisit un entier x ∈ Zn aléatoirement, le chire avec sa clé publique, i.e. calcule y = eA (x) = xb mod n. Elle envoie (y, A ) à Bob. 2. Dé de Bob : Bob choisit aléatoirement B ∈ J1, bK et l'envoie à Alice. 3. Réponse d'Alice et vérication par Bob : Alice calcule z = xAB mod n et l'envoie à Bob. Bob calcule AB z b mod n et doit retrouver y . pub priv pub Vérions que Bob retrouve bien y s'il est en présence d'Alice. On a : AB z b mod n = AB xb ABb mod n = AB xb A−abB mod n priv pub pub pub pub Or, on a vu dans la preuve du théorème RSA que Aab mod n = A pub pub , donc : )−1 mod n = 1 (AB A−abB mod n = AB AB pub pub pub pub d'où AB z b mod n = xb mod n = y . pub Le protocole peut être utilisé plusieurs fois à la suite, diminuant à chaque fois la probabilité d'une imposture. On démontre qu'en suivant ce protocole, Alice ne fournit pas d'information (au sens de Shannon) à Bob, hormis la véracité de sa réponse au dé. Il est pour cela important que les dés B de Bob soient choisies aléatoirement, sinon en interceptant un grand nombre de couples (dé de Bob, réponse d'Alice), Oscar peut accumuler beaucoup d'information (au sens de Shannon) sur la clé privée d'Alice. Remarques. 1. RSA n'est pas le seul système à clef publique utilisable pour mettre en ÷uvre un protocole d'authentication à divulgation nulle. Citons notamment le protocole de Fiat-Shamir (1986), qui a longtemps été utilisé (il est désormais considéré comme obsolète), et le protocole de Schnorr, qui utilise le problème du logarithme discret dans un groupe (cf. paragraphe 3.3 et chapitre 5). Par contre, tout système à clé publique ne peut être utilisé : le protocole de GuillouQuisquater utilise le fait que RSA commute, i.e vérie : (3.8) ek (dk (y)) = y Dans tout système cryptographique on a en eet la relation dk (ek (x)) = x, qui assure que le déchirement est possible connaissant la clé, mais on n'a pas forcément la relation (3.8). Pour RSA cette relation est vraie car : (xa )b mod n = (xb )a mod n (3.9) Pour le protocole de Guillou-Quisquater, on voit que la propriété de RSA de muter est essentielle. com- P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 48 2. Ces protocoles d'authentication sont utilisée notamment dans les transactions bancaires. En fait, les systèmes à clé publique sont en général 100 à 1000 fois plus lents que les systèmes à clé privée tels DES ou AES. En pratique, on fait donc cohabiter les deux types de systèmes : après une procédure d'identication et d'authentication, utilisant RSA ou un autre système à clé publique, s'instaure un dialogue chiré utilisant un système symétrique rapide comme DES ou AES. 3.2.6 Signatures numériques et solution RSA Un procédé de signature est constitué d'un ensemble ni P de messages, d'un ensemble ni S de signatures, d'un ensemble ni K de clefs, et pour chaque clef k ∈ K d'une fonction de signature sk : P → S (3.10) qui à un message x associe sa signature sk (x), et d'une fonction de vérication vk : P × S → {vrai,faux} (3.11) qui à tout couple (x, y) constitué d'un message x et d'une signature y associe la valeur vrai ssi y = sk (x). Autrement dit, vk (x, y) =vrai si et seulement si y est la bonne signature du message x. On va donner ici un moyen d'utiliser un système cryptographique à clef publique en mode signature , pourvu qu'il commute. On suppose donc encore ici que la règle publique ek de chirement et la règle privée dk de déchirement vérient (3.8). Pour construire un procédé de signature ecace, il sut alors de considérer la fonction de signature sk = dk et la fonction de vérication vk (x, y) = vrai ⇐⇒ ek (y) = x (3.12) Autrement dit, Alice signe son message x en adjoignant sa signature numérique dk (x) (elle est la seule à pouvoir le faire puisque dk est sa clef privée ). Bob déchire y = dk (x) avec la clef publique ek d'Alice, et compare ce qu'il trouve au message x : si Alice est bien l'émettrice il doit trouver la même chose. Le protocole complet consiste à chirer et signer un message. En notant dA et dB les clefs privées respectives d'Alice et Bob, eA et eB leurs clefs publiques respectives, on obtient : 1. Alice calcule dA (x) et envoie à Bob le couple (eB (x), eB (dA (x))) constitué du message x chiré avec la clef publique de Bob et de la signature d'Alice (chirée également pour plus de sûreté). 2. Bob déchire en calculant dB (eB (x)) = x et dB (eB (dA (x))) = dA (x) 3. Bob vérie la signature d'Alice en utilisant la clef publique d'Alice : eA (dA (x)) redonne en eet le message x. Autrement dit, il utilise la fonction de vérication d'Alice de la façon suivante : vA (x, eA (dA (x))) = vA (x, x)= vrai. Le chirement RSA (qui commute) peut ainsi être utilisé en mode signature. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 49 3.2.7 Utilisation d'une fonction de hachage On voit, dans la description d'un procédé de signature, que la signature numérique occupe une place (en nombre de bits) du même ordre de grandeur que le message lui-même, ce qui peut être gênant pour de longs messages. De plus, nous avons une attaque possible avec le protocole décrit dans le paragraphe précédent. Oscar peut se faire passer pour Alice en envoyant à Bob le couple (y = eA (x), x), où x est un message quelconque, en armant que x est la signature d'Alice au message eA (x). Bien sûr quand Bob va déchirer eB (y) = eB (eA (x)), il va tomber sur un message vide de sens. Mais si la signature est utilisée seulement dans un but d'identication d'Alice par Bob, Oscar a réussi à se faire passer pour Alice aux yeux de Bob ! Ce cas de gure se rencontre par exemple quand un organisme bancaire vous demande de vous identier par l'intermédiaire de votre carte, sans nécessairement que cela nécessite un dialogue sensé entre vous et votre banque. Pour régler ces deux problèmes on a recours à une fonction de hachage h qui transforme un message de longueur quelconque en une empreinte numérique de taille xe (160 bits dans le standard de signature électronique DSS=Digital Signature Standard). Le protocole de signature devient : 1. Alice calcule dA (h(x)) et envoie à Bob le couple (eB (x), eB (dA (h(x)))) constitué du message x chiré avec la clef publique de Bob et de la signature d'Alice hachée (et chirée pour plus de sûreté). 2. Bob déchire en calculant dB (eB (x)) = x et dB (eB (dA (h(x)))) = dA (h(x)) 3. Bob vérie la signature d'Alice en utilisant la clef publique d'Alice : eA (dA (h(x))) redonne en eet h(x). 4. Il reste à Bob à calculer lui aussi h(x) an de comparer avec ce qu'il a trouvé en déchirant le message signée d'Alice. Remarque. On voit donc que la fonction de hachage h doit être publique. Vérions que ce protocole anéantit l'attaque décrite ci-dessus. Si Oscar veut se faire passer pour Alice en prétendant que x est la signature apposée au message y = eA (x), il doit envoyer à Bob le couple (y, dA (h(y))). Il ne peut évidemment pas calculer dA (h(y)). Remarque. Une bonne fonction de hachage doit être à collisions diciles, ce qui signie qu'il doit être calculatoirement dicile de trouver deux messages x1 et x2 6= x1 tels que h(x1 ) = h(x2 ). En eet, Oscar pourrait utiliser un message signé (x, y) authentique (donc y = sk (h(x))) récupéré d'une manière ou d'une autre chez Alice ou chez Bob, et chercher x′ 6= x tel que h(x) = h(x′ ), et obtenir ainsi le message falsié (x′ , y) signé apparemment par Alice ! 3.3 Le problème du logarithme discret et ses applications 3.3.1 Exponentielle et logarithme discret Soit p ≥ 2 un nombre entier. On note Z∗p l'ensemble des éléments inversibles (pour la multiplication) de Z/pZ. Supposons que p soit premier. Dans ce cas, Z/pZ muni de l'addition ∗ et de la multiplication modulo p est un corps, donc Zp = 1, . . . , p − 1 . P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 50 Soit a ∈ J1, p − 1K, considérons l'application qui à x ∈ J1, p − 1K associe ax mod p. On a ax mod p ∈ Z∗p (3.13) En eet, PGCD(a, p) = 1, donc PGCD(ax , p) = 1, i.e. ax est inversible modulo p. L'application expa : x ∈ J1, p − 1K 7→ ax mod p ∈ J1, p − 1K (3.14) est appelée exponentielle modulaire de base a. On va voir que si a et p sont bien choisis, l'exponentielle modulaire de base a est une fonction à sens unique. D'abord, le calcul de ax mod p peut se faire de façon ecace grâce à l'algorithme d'exponentiation rapide ( square and multiply ). Nous devons ensuite regarder dans quel cas expa est injective. Un résultat de théorie des groupes arme que si p est premier alors le groupe multiplicatif Z∗p est cyclique, i.e. ni et engendré par l'un de ses élément, ce qui signie qu'il existe ξ ∈ Z∗p tel que Z∗p = 1, ξ, ξ 2 , . . . , ξ p−2 (3.15) Un tel élément ξ est un générateur du groupe multiplicatif Z∗p , et tout représentant r de ξ (i.e. r = ξ ) est appelé élément primitif modulo p (ou racine primitive de p). Il est clair que ξ ∈ Z∗p est générateur si et seulement si ξ k 6= 1 pour k ∈ {1, . . . , p − 2} et ξ p−1 = 1, i.e. rk mod p 6= 1 pour 1 ≤ k ≤ p − 2 et rp−1 mod p = 1. Théorème 3.3.1 (Inversibilité de l'exponentielle de base a) Soit p premier et a ∈ J1, p − 1K. La fonction expa est inversible si et seulement si a est un élément primitif modulo p. Démonstration. D'abord remarquons qu'ici inversible signie bijective , i.e. injective puisque J1, p − 1K est un ensemble ni. Supposons que a soit un élément primitif modulo p et donnons nous deux entiers x et y , 1 ≤ y ≤ x ≤ p−1, tels que ax ≡ ay mod p. On a ax−y ≡ 1 mod p. Or, x−y ∈ {0, . . . , p−2}, donc x − y = 0. On a prouvé expa (x) = expa (y) =⇒ x = y ce qui montre que expa est injective. Réciproquement, supposons que expa soit injective. On a ax 6= ay pour x 6= y , 1 ≤ x ≤ p − 1 et 1 ≤ y ≤ p − 1). Alors pour tout k ∈ {1, . . . , p − 2}, on a ak 6= ap−1 . D'après le théorème d'Euler, on a ap−1 = 1 (en eet a est premier avec p puisque a ∈ J1, p − 1K). Cela prouve que a est un générateur du groupe multiplicatif Z∗p . Ceci nous conduit à la dénition suivante. Dénition 3.3.1 (Logarithme discret ) Soient p premier et a un élément primitif modulo p. La fonction expa admet une application réciproque, notée loga et appelée logarithme discret de base a. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 51 Nous admettrons que la recherche du logarithme discret d'un nombre y donné est calculatoirement très dicile si p est un très grand nombre premier tel que p − 1 ait un très grand facteur premier. Ainsi, la fonction expa est sous ces conditions une fonction à sens unique. Néanmoins, il faut là aussi suivre les progrès en terme de puissance des machines. Au début du siècle, on conseillait à l'utilisateur de cette fonction à sens unique de travailler avec un p d'au moins 120 chires décimaux (i.e. 400 bits) pour une vraie sécurité. Or, une équipe française a réussi à calculer un log discret avec un p de 120 chires en avril 2001. 3.3.2 Protocole d'échange de clé de Die-Hellman Le protocole de Die-Hellman est une première application de la diculté d'inverser l'exponentielle modulaire. Alice et Bob veulent se munir d'une même clé secrète k alors qu'ils n'ont pas accès à un canal de communication sécurisé (cette clé secrète pourra leur servir par la suite à communiquer via un système cryptographique classique à clé privée, tel DES ou AES). 1. Alice et Bob choisissent ensemble un très grand nombre premier p tel que p−1 possède un très grand facteur premier, ainsi qu'un élément primitif a modulo p (a et p peuvent être publics). 2. Alice engendre aléatoirement A ∈ J1, p − 1K (elle ne doit communiquer A à personne) et envoie à Bob kA = aA mod p (3.16) Remarque. On peut considérer A comme la clé privée d'Alice et kA comme sa clé publique , car le canal n'est pas sûr. Si kA tombe entre les mains d'Oscar, cela n'a pas d'importance puisqu'il n'arrivera pas à retrouver A à partir de kA (il devrait pour cela calculer le logarithme discret de base a de kA ). 3. Bob agit de même de son côté : il engendre aléatoirement une clé privée B ∈ J1, p − 1K et envoie à Alice kB = aB mod p (3.17) 4. Alice calcule et Bob calcule k = (kB )A mod p (3.18) k ′ = (kA )B mod p (3.19) Alice et Bob sont alors tous deux en possession de la même clef secrète : k = k ′ = aAB mod p (3.20) 3.3.3 Chirement d'ElGamal C'est un système cryptographique à clé publique (très utilisé, comme RSA) basé sur la diculté à inverser le log discret. L'idée de Die et Hellman est améliorée an d'obtenir un système cryptographique à clef publique. L'ensemble des messages clairs possibles est P = J1, p − 1K où p est un nombre premier pour lequel l'inversion de l'exponentielle modulaire est dicile. L'ensemble des messages cryptés possibles est C = J1, p − 1K × J1, p − 1K. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 52 1. Alice et Bob choisissent ensemble un très grand nombre premier p tel que p−1 possède un très grand facteur premier, ainsi qu'un élément primitif a modulo p, et ils rendent publiques a et p. 2. Bob engendre aléatoirement B ∈ J1, p − 1K et publie kB = aB mod p (3.21) 3. Si Alice veut communiquer le message x ∈ J1, p − 1K à Bob, elle commence par choisir A ∈ J1, p − 1K (aléatoirement) et elle calcule (suivant le protocole d'échange de clé de Die-Helmann) la clé privée qu'elle va partager avec Bob : k = (kB )A mod p = aAB mod p (3.22) Alice calcule également kx et envoie à Bob le couple (aA mod p, kx) (3.23) Remarque. Oscar ne peut retrouver B à partir de kB , ni A à partir de k. 4. Pour déchirer le message, Bob calcule d'abord (aA )B mod p (3.24) et est ainsi en possession de la clé privée k qu'il partage avec Alice (protocole d'échange de clé de Die-Hellman). Enn, Bob calcule k −1 (kx) = x (3.25) où k−1 désigne bien sûr l'inverse de k modulo p (on sait que cela se calcule avec l'algorithme d'Euclide modié). Bob est en possession du message x d'Alice. 3.4 L'algorithme d'exponentiation modulaire rapide Pour l'implémentation des systèmes RSA ou ElGamal (ou d'autres systèmes), il est nécessaire de pouvoir calculer ecacement (en temps de calcul) des expressions du type xy mod n L'idée de base est l'algorithme élève au carré et multiplie , qu'on utilise naturellement pour calculer une puissance ordinaire. Par exemple, pour calculer x19 à la main , vous calculez x2 , puis x4 = x2 x2 , puis x8 = x4 x4 , x16 = x8 x8 et vous terminez en multipliant par x2 (calculé au passage) et par x. Vous avez alors eectué 6 multiplications au lieu de 18. On peut appliquer ce principe simple pour la multiplication dans Z/nZ. Dans ce cas, on simplie les calculs en utilisant le fait que ab mod n = (a mod n)(b mod n) : après chaque élévation au carré, on réduit modulo n, an de ne jamais avoir à manipuler des grands nombres. L'algorithme utilise en fait la représentation binaire de y . En eet, si y = bj ∈ {0, 1}, alors on a : Y 2j y i+1 i = x2 2 j=0 bj 2 x x = et notons que x2 Pk j avec (3.26) j∈{0,...,k}, bj =1 . La méthode de calcul de xy mod n consiste donc : P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 53 à calculer les carrés successifs x2 pour j de 0 à k en réduisant à chaque étape modulo n ; j et à calculer xy mod n comme le produit de ceux des x2 pour lesquels bj = 1. j Exemple. Calculons 673 mod 100 par cette méthode. On écrit d'abord 73 en base 2, ce qui donne 73 = 1 + 23 + 26 , puis on calcule les carrés 6 successifs de 6 jusqu'à obtenir 62 , en réduisant à chaque fois modulo 100. Pour limiter au maximum les calculs, il est conseillé d'utiliser les représentants entre −49 et 50 : 62 2 62 3 62 4 62 5 62 6 62 = = = = = = 36 362 = −4 (−4)2 = 16 162 = −44 (−44)2 = 36 362 = −4 On a donc, en tenant compte de 73 = 1 + 23 + 26 : 3 6 673 mod 100 = 6.62 .62 mod 100 = 6.16.(−4) mod 100 = 16 Ce calcul a nécessité 6 + 2 = 8 multiplications (et autant de réductions modulo 100) au lieu des 72 multiplications (et réductions) que nécessiterait l'algorithme naïf. Exercice. En suivant ces principes, écrire un algorithme d'exponentiation modulaire rapide, déterminer un invariant de boucle et calculer sa complexité dans le pire des cas. Remarque. Il est très simple d'adapter cet algorithme au calcul de xy pour y entier naturel et x dans un monoïde dont la loi interne a été notée multiplicativement (cf. TD). En eet, on n'utilise que l'associativité de la multiplication. Par exemple, si on implémente à l'avance le produit de deux polynômes, avec ou sans réduction modulo un polynôme m xé (ce qui sera indispensable pour AES), alors le même algorithme permet de calculer P k (ou P k mod m), en changeant simplement le type de X et Res dans les déclarations de variables, qui deviennent dans un tel cas des éléments de K[X]. Lorsque la loi interne (supposée associative) est notée additivement, le même algorithme permet évidemment de calculer rapidement x + x + . . . + x, somme de k termes égaux à x, noté kx. Ici, 2x joue le rôle que joue x2 lorsque la loi est notée multiplicativement. On calcule donc 2x = x + x, puis 4x = 2x + 2x, etc. Ceci est notamment utilisé lors du chirement par courbes elliptiques. 3.5 Un test ecace de primalité Aussi bien dans le système RSA que dans le système d'ElGamal, on a besoin de très grands nombres premiers. On sait qu'il existe des moyens d'obtenir des nombres entiers quasi-aléatoires (fonctions Random). La méthode usuelle de génération d'un nombre premier de k bits est la suivante. On génère aléatoirement un nombre impair de k bits. On teste sa primalité, par exemple par la méthode présentée plus bas. S'il est premier, c'est ni. Sinon, on lui ajoute 2 et on teste de nouveau sa primalité, etc. P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 54 Le théorème d'Hadamard permet de montrer que cette méthode simpliste permet d'obtenir un nombre premier aléatoire de k bits avec un nombre de tests raisonnable (cf. TD). On doit donc être capable de tester la primalité d'un très grand nombre impair, de façon ecace. Pour cela il existe un célèbre algorithme appelé test de Miller-Rabin basé sur les notions suivantes. Dénition 3.5.1 Soit n ≥ 3 un entier impair. On écrit n = 2r s + 1 où s est impair (3.27) Soit a un entier naturel non nul. On dit que n passe le test de Miller en base a si l'une au moins des deux conditions suivantes est vériée : as ≡ 1 mod n (c1 ) i il existe i ∈ {0, . . . , r − 1} tel que a2 s ≡ −1 mod n (c2 ) Théorème 3.5.1 Si n ≥ 3 est premier et si 1 ≤ a ≤ n − 1, alors n passe le test de Miller en base a. Démonstration. Soit n ≥ 3 un nombre premier, qu'on écrit n = 2r s + 1 avec s impair, et soit a ∈ {1, 2, . . . , n − 1}. D'après le petit théorème de Fermat, on a rs an−1 = a2 On introduit ≡1 mod n i yi = a2 s , i ∈ {0, 1, . . . , r} de sorte que 2 yi−1 = yi On a yr ≡ 1 mod n, ce qui s'écrit aussi 2 yr−1 − 1 ≡ 0 mod n Autrement dit (yr−1 − 1)(yr−1 + 1) est divisible par n. Or n est premier, donc soit n divise yr−1 + 1, soit n divise yr−1 − 1. Dans le premier cas on a yr−1 ≡ −1 mod n, donc n passe la condition (c2 ) du test de Miller pour i = r − 1. Dans le deuxième cas, on a yr−1 ≡ 1 mod n, ce qui s'écrit 2 yr−2 −1≡0 mod n et on peut recommencer le même raisonnement : soit yr−2 + 1 est divisible par n, et dans ce cas n passe la condition (c2 ) pour i = r − 2, soit yr−2 − 1 ≡ 0 mod n. Cela s'itère. Si n ne passe la condition (c2 ) ni pour i = r − 1, ni pour i = r − 2,..., ni pour i = 1, alors on a y1 − 1 ≡ 0 mod n donc y02 − 1 ≡ 0 mod n. Or, on a y0 = as . Si y0 + 1 est divisible par n alors n passe (c2 ) pour i = 0. Sinon c'est que y0 − 1 est divisible par n, donc n passe la condition (c1 ). P.Struillou CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE 55 Remarque. Bien sûr, pour programmer le test de Miller, on ne suit pas l'ordre de cette démonstration qui part de la n . On teste dans l'ordre (c1 ), puis si nécessaire (c2 ) pour i = 0, puis si nécessaire (c2 ) pour i = 1, etc, jusqu'à tester si nécessaire (c2 ) pour i = r − 1. C'est ecace car chaque test utilise le résultat du calcul précédent, par une simple élévation au carré suivie d'une réduction modulo n. Il peut malheureusement arriver qu'un entier passe le test de Miller sans être premier, ce qui implique que le test de primalité de Miller-Rabin possède une probabilité d'erreur. Néanmoins, nous avons le théorème suivant (dont la preuve est délicate) : Théorème 3.5.2 Si n est composé, alors n passe le test de Miller en base a (1 ≤ a ≤ n − 1) pour au plus n−1 bases a. 4 Ce théorème permet de prouver (cf. TD) qu'en eectuant susamment d'itérations de l'algorithme de test (avec à chaque fois une nouvelle base a choisie aléatoirement), la probabilité qu'un entier n non premier soit qualié de premier par l'algorithme peut être rendue arbitrairement petite. Remarque. On soupçonnait depuis longtemps que le problème de décision n est-il pre- mier ? était dans la classe P des problèmes polynomiaux en la taille de n. Une équipe de mathématiciens indiens (Agrawal-Kayal-Saxena) l'a enn démontré en 2002 en construisant un test de primalité qui tourne en O (ln n)12 , voire en O (ln n)6 si une certaine conjecture mathématique est vraie ! Cela n'enlève pas son intérêt au test probabiliste de Miller-Rabin qui continuera d'être utilisé, car si ce nouvel algorithme déterministe est bien polynomial, on ne peut tout de même pas dire d'un algorithme qui a une complexité de degré 12, ou même 6, en la taille de la donnée d'entrée qu'il est ecace (en pratique, lorsqu'il s'agit de résoudre des problèmes courants, les algorithmes polynomiaux qu'on considère comme réellement rapides sont de complexité de degré inférieur à 3). L'algorithme déterministe de AKS n'est donc en pratique utilisé que pour des applications pour lesquelles on souhaite une preuve de la primalité du nombre testé. P.Struillou Chapitre 4 Advanced Encryption Standard AES est le standard international de chirement des données depuis 1999. Il utilise l'arithmétique des corps nis (une relecture des pré-requis mathématiques est ici indispensable). Les deux concepteurs belges Daemen et Rijmen de AES ont remportés en 1999 le concours ouvert par le National Institute of Standards and Technologie, dont l'appel d'ore visait à remplacer DES, standard américain du chirement des données. Le cahier des charges exigeait, en plus d'une sécurité renforcée par rapport à triple-DES, une adaptabilité de la taille des clés (an de pouvoir les faire évoluer avec la puissance des ordinateurs), des performances excellentes (rapidité du chirement et du déchirement), ainsi qu'une portabilité sur des supports variés. Comme DES, AES est un système symétrique à clé privée utilisant plusieurs tours, le calcul des clés de tour ayant lieu en parallèle dans un sous-algorithme dit de cadencement de clé. On décrit ici dans une première section les opérations à mener pour le chirage (et le déchirage), et dans une deuxième section nous étudierons la gestion des clés de tour. 4.1 Chirement 4.1.1 Fonctionnement général du chirement 1. Le message binaire est découpé en blocs de 128 bits. 2. Chaque bloc est disposé dans un tableau d'octets à 4 lignes et 4 colonnes. On obtient un tableau (aij )1≤i≤4,1≤j≤4 où les aij sont des octets (en eet 4 × 4 × 8 = 128). 3. On ajoute bit à bit (opération xor), i.e. modulo 2, la clef initiale de 128 bits, mise elle aussi sous forme d'un tel tableau. 4. On fait 10 tours des opérations décrites dans les 4 sous-sections suivantes. 4.1.2 Transformation non-linéaire sur les octets On utilise une transformation non-linéaire lors de la routine appelée SubBytes. Chaque octet est interprété mathématiquement comme un élément du corps de Galois GF (28 ), qui, par dénition, est le corps GF (28 ) = 56 Z2 [X] (m(X)) (4.1) CHAPITRE 4. ADVANCED ENCRYPTION STANDARD 57 où m(X) est le polynôme irréductible (4.2) m(X) = X 8 + X 4 + X 3 + X + 1 D'après le théorème 2.6.1, GF (28 ) est bien un corps. On note également GF (28 ) = F28 . Cela signie qu'à chaque octet est associé un polynôme à coecients dans {0, 1} de degré au plus 7, que l'on est capable d'additionner des octets (bit à bit) et surtout de les multiplier pour donner un nouvel octet (car cette multiplication se termine par une réduction modulo m(X) an de toujours travailler avec des polynômes de degré au plus 7). La routine SubBytes transforme chaque octet aij en un octet bij = S(aij ), où S agit en deux temps. 8 1. On calcule a−1 ij inverse de aij dans GF (2 ) (d'où l'importance de travailler dans un corps), à condition bien sûr que aij ne soit pas l'octet nul (sinon on ne le transforme pas). En pratique pour inverser le polynôme aij , on peut utiliser un algorithme d'Euclide modié car l'inverse d'un polynôme p(X) est un polynôme u(X) ∈ GF (28 ) tel que (4.3) p(X)u(X) + m(X)v(X) = 1 (pour un certain v(X) ∈ GF (28 ), on a donc une relation de Bezout dans GF (28 )). On s'inspire de l'algorithme d'Euclide ordinaire et on l'adapte à des calculs sur ces polynômes : faire des divisions euclidiennes de polynômes (en partant de la division de m(X) par p(X)) ; l'algorithme s'arrête quand le reste r(X) = 0. Le PGCD de p(X) et de m(X) vaut toujours 1 puisque m(X) est irréductible (ce qui au passage permet de comprendre pourquoi la condition m irréductible implique que GF (28 ) est un corps : tout élément p(X) non nul est bien inversible). On peut donc calculer, comme dans l'algorithme d'Euclide étendu ordinaire, des polynômes de Bezout u(X) et v(X) vériant p(X)u(X) + m(X)v(X) = 1. En sortie de boucle on recueille u(X) = p(X)−1 mod m(X). Noter que ce calcul d'inverse est une opération non-linéaire (donc très intéressante pour la sécurité de ce système cryptographique). 2. L'octet a−1 ij est mis en colonne (il est donc interprété mathématiquement comme un vecteur à 8 coordonnées dans {0, 1}). On lui applique à gauche une matrice M et on ajoute un vecteur B (nous avons donc une transformation ane sur l'octet a−1 ij ). Daemen et Rijmen ont choisi : 1 1 1 1 M = 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 et B = 0 1 1 (4.4) 0 Z On remarquera que pour la matrice M utilisée, det M 6= 0, de sorte que comme 2Z est un corps, M est inversible, ce qui est évidemment une condition nécessaire pour le futur déchirement ! P.Struillou CHAPITRE 4. ADVANCED ENCRYPTION STANDARD 58 Ces deux opérations étant eectuées, on a obtenu un tableau d'octets bij , et on passe à un deuxième traitement, dit de décalage des lignes. 4.1.3 Décalage des lignes Le décalage des lignes est réalisé lors de la routine appelée ShiftRows. Dans le tableau 4 × 4 d'octets, on eectue une permutation circulaire d'un cran vers la gauche des octets de la deuxième ligne (donc la ligne d'octets (b21 , b22 , b23 , b24 ) devient (b22 , b23 , b24 , b21 )). On décale de même la troisième ligne de deux crans vers la gauche et la quatrième ligne de 3 crans vers la gauche. Noter que l'inversion de cette opération (en vue du déchirement) est évidente : on eectuera les mêmes décalages vers la droite. Sur le nouveau tableau d'octets, on eectue encore un traitement, dit de brouillage des colonnes. 4.1.4 Brouillage des colonnes Le brouillage des colonnes est réalisé lors de la routine appelée MixColumns. Une colonne de 4 octets est interprétée mathématiquement comme un élément de E= GF (28 )[X] (X 4 + 1) (4.5) Attention, ça se complique : cette interprétation mathématique signie que chacun des 4 octets composant la colonne est considéré comme un coecient d'un polynôme de degré au plus 3. Remarque. Le polynôme comprendre : X 4 + 1 est lui même à coecients dans GF (28 ), donc il faut X 4 + 1 = 00000001X 4 + 00000001 Les éléments de E sont donc des colonnes de 4 octets : σ1 σ2 w= σ3 σ4 (4.6) Une telle colonne w d'octets est appelée word et est interprétée mathématiquement comme le polynôme suivant : w(X) = σ1 X 3 + σ2 X 2 + σ3 X + σ4 (4.7) Si dans le traitement on doit multiplier deux word on doit donc, à la n, réduire le produit modulo X 4 + 1. Ces principes de calcul étant compris, explicitons le traitement que l'on fait subir à un word dans cette routine MixColumns. On le multiplie, dans E , par le polynôme particulier a(X) = 3X 3 + X 2 + X + 2 = 00000011X 3 + 00000001X 2 + 00000001X + 00000010 P.Struillou CHAPITRE 4. ADVANCED ENCRYPTION STANDARD 59 Daemen et Rijmen ont choisi ce polynôme de préférence à un autre car, d'une part il est inversible dans E (cet ensemble E n'est pas un corps mais seulement un anneau car le polynôme X 4 + 1 n'est pas irréductible dans GF (28 )[X], il y a donc dans E des éléments non nuls non inversibles), ce qui est une condition nécessaire en vue du déchirement ; d'autre part la multiplication par ce polynôme se traduit simplement par l'application à gauche de la colonne d'octet de la matrice suivante : 2 1 A= 1 3 3 2 1 1 1 3 2 1 1 1 3 2 (4.8) où bien sûr 1, 2 et 3 désignent des éléments particuliers de GF (28 ) : 1 = 00000001, 2 = 00000010 = X, 3 = 00000011 = X + 1 Par exemple la première colonne d'octets w devient 2σ1 + 3σ2 + σ3 + σ4 L'utilisation de cette matrice A permet d'oublier qu'on travaille dans E : pour eectuer le produit a(X)w(X) dans E il sut de calculer le produit matriciel Aw à condition bien sûr de faire tous les calculs dans GF (28 ) (donc ne pas oublier de réduire chaque produit modulo m(X)). Le choix des octets 1, 2 et 3 a été fait an de faciliter l'implémentation des calculs. En eet la multiplication d'un octet σ par 1 ne change rien. La multiplication de σ par 3 revient à multiplier σ par 2 et ajouter σ (car dans un corps la multiplication est distributive par rapport à l'addition). Reste à savoir implémenter la multiplication par 2 = X . Soit σ = b7 b6 b5 b4 b3 b2 b1 b0 un octet P interprété comme l'élément σ(X) = 7k=0 bk X k de GF (28 ). Alors 2σ est le polynôme Xσ(X) = 7 X bk−1 X k + b7 X 8 k=1 qu'il faut réduire modulo m(X) = X8 + X 4 + X 3 + X + 1. Dans GF (28 ) nous avons X 8 = −(X 4 + X 3 + X + 1) = X 4 + X 3 + X + 1 Donc : Si b7 = 0, 2σ = (00000010)(0b6 b5 b4 b3 b2 b1 b0 ) = (b6 b5 b4 b3 b2 b1 b0 0) Si b7 = 1, 2σ = (00000010)(1b6 b5 b4 b3 b2 b1 b0 ) = (b6 b5 b4 (b3 + 1)(b2 + 1)b1 (b0 + 1)1) Ainsi, la multiplication par 2 s'implémente par simple décalage des bits dans l'octet suivi d'une addition dans un des deux cas. Le tableau obtenu de 16 octets subit un dernier traitement : l'addition d'une clé de tour. 4.1.5 Addition de la clé de tour L'addition d'une clé est réalisé lors de la routine AddRoundKey. Une clé (diérente à chaque tour) de 128 bits (dans la version initiale de AES, car ceci est modiable : on peut utiliser des clés de 192 ou de 256 bits) est simplement ajoutée bit à bit au tableau de 16 octets, avant de passer au tour suivant. P.Struillou CHAPITRE 4. ADVANCED ENCRYPTION STANDARD 60 4.2 Déchirement On l'a quasiment expliqué au fur et à mesure de la description des 4 routines. Il sut d'eectuer les opérations inverses dans l'ordre inverse. Donc, à un bloc chiré de 128 bits : on additionne la clef, on multiplie les word dans E par a(X)−1 (ce qui se traduit en pratique par l'action d'une matrice A−1 à coecients dans GF (28 )), on eectue des permutations circulaires des lignes vers la droite, on soustrait B à chaque octet, on multiplie chaque octet par M −1 , on les inverse dans GF (28 ) (grâce à l'algorithme d'Euclide). Après 10 tels tours inverses , il reste à ajouter la clé initiale et on retrouve nos 128 bits. Il nous reste à expliquer comment les clés de tour sont construites en parallèle de l'algorithme principal. 4.3 Algorithme de cadencement des clés Les clés de tour sont construites en parallèle du chirement de la façon suivante. La clé initiale K0 de 128 bits est découpée en 4 word w0 , w1 , w2 , w3 (où, rappelons le, wi est un groupe de 4 octets). On construit à partir de K0 par récurrence 10 clé K1 , ..., K10 de 4 word. Supposons Ki−1 = (w4i−4 , w4i−3 , w4i−2 , w4i−1 ) construite (pour 1 ≤ i ≤ 10). 1. Le word w4i−1 subit d'abord une permutation circulaire (d'un cran vers la gauche) ′ de ses 4 octets, ce qui donne un nouveau word noté w4i−1 . ′ 2. On applique la routine SubBytes à chacun des 4 octets de w4i−1 (cette transformation non-linéaire assure un vrai changement de la clé à chaque tour). 3. On additionne bit à bit chacun des octets ainsi transformés par SubBytes avec le polynôme X i−1 (modulo m(X)). 4. Le word obtenu est ajouté bit à bit au word w4i−3 . À l'issue de ces quatre étapes on a obtenu w4i , premier word de la nouvelle clé Ki . 5. Les word w4i+1 , w4i+2 , w4i+3 sont calculés plus simplement en ajoutant wj−1 et wj−3 pour j ∈ {4i + 1, 4i + 2, 4i + 3}. Cela achève la construction de la clé de tour Ki = (w4i , w4i+1 , w4i+2 , w4i+3 ) à partir de Ki−1 . 4.4 Conclusion La possibilité d'agrandir la taille de la clé devrait permettre à AES de rester un standard pendant quelques temps. Il doit normalement remplacer DES, mais celui-ci est tellement présent dans l'industrie que la transition va probablement prendre plusieurs années. Au contraire de ce qui s'est passé pour DES, les principes de fonctionnement de AES sont tous publics, même si pour les comprendre en profondeur, il faut faire l'eort de comprendre l'algèbre utilisée. C'est un excellent exemple de l'utilisation directe dans l'industrie de concepts de mathématiques pures. P.Struillou Chapitre 5 Chirement par courbes elliptiques Les courbes elliptiques sont des objets mathématiques qui ont trouvé ces dernières années une application privilégiée en cryptographie à clé publique, notamment parce que leur utilisation permet de limiter la taille des clés utilisées. En mathématiques, elles ont notamment été utilisées par Wiles pour démontrer le grand théorème de Fermat en 1994. 5.1 Qu'est-ce qu'une courbe elliptique ? D'abord, cela n'a pas grand chose à voir avec une ellipse. Leur nom provient de leur lien avec les intégrales elliptiques, elles-même ainsi appelées parce qu'elle apparaissent dans le calcul de la longueur d'arcs d'ellipses. Soit K un corps. Nous appellerons courbe elliptique sur le corps K l'ensemble Ea,b (K) des couples (x, y) ∈ K 2 tels que y 2 = x3 + ax + b (5.1) 1 où (a, b) ∈ K 2 est tel que le discriminant ∆ = −16(4a3 + 27b2 ) est non ajoute un point noté ∞ pouvant s'interpréter comme le point à l'inni. nul, auxquels on Lorsque le corps de base K est égal à R, le fait que ∆ 6= 0 permet de garantir que la courbe ne possède ni point double, ni point de rebroussement . Dans un premier temps, nous allons en eet supposer que K = R an de nous familiariser avec la notion d'addition de deux points de la courbe elliptique, plus simple à comprendre lorsqu'on s'appuie sur une représentation géométrique. Mais on n'oubliera pas dans la suite que les courbes elliptiques utilisées en cryptographie sont dénies sur un corps ni et qu'une courbe elliptique sur un tel corps est bien évidemment un ensemble ni de points. 2 5.2 Structure de groupe d'une courbe elliptique Le but est de munir Ea,b (K) d'une structure de groupe, la loi interne étant notée additivement. La représentation géométrique rendue possible par la considération du cas K = R permet de comprendre comment on dénit cette loi +. 1. Cette dénition est incomplète et ne convient pas dans certains cas, que nous ne rencontrerons pas dans cette introduction au sujet. 2. Voir schémas 61 CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES 62 On s'appuie pour dénir l'addition sur une propriété géométrique (admise) : toute droite passant par deux points de la courbe (distincts du point à l'inni), ou toute tangente à la courbe, recoupe la courbe en un point (éventuellement à l'inni, lorsque cette droite est verticale). Par ailleurs, il est clair sur l'équation (5.1) que si un point (x, y) est élément de Ea,b (K), alors son symétrique (x, −y) par rapport à l'axe y = 0 est aussi sur Ea,b (K). Lorsque K = R, on peut dénir la somme de deux points de la courbe Ea,b (R), de la façon suivante : 1. Lorsque P = (xP , yP ) et Q = (xQ , yQ ) sont deux points de Ea,b (R) distincts de ∞ et tels que xP 6= xQ , on construit d'abord le point R tel que la droite (P Q) recoupe la courbe en R, puis on construit le symétrique R′ de R par rapport à la droite y = 0. C'est ce point R′ (qui appartient à Ea,b (R)) qu'on appelle somme de P et de Q et qu'on note P + Q. Lors de cette construction, il peut arriver que la droite (P Q) soit tangente en Q (respectivement en P ) à la courbe. Dans ce cas, on considère que le point R est égal à Q (respectivement à P ). Cette convention est naturelle si on considère ce cas comme un cas limite du précédent. 2. Pour P = Q distinct de ∞, on procède de même en remplaçant la droite (P Q) par la tangente à la courbe en P , ce qui là aussi est naturel. On obtient P + P , noté 2P . 3. Lorsque la droite (P Q) (ou la tangente en P ) est verticale (cas xP = xQ , i.e Q symétrique de P par rapport à la droite y = 0), le point R est le point à l'inni, qui est son propre symétrique par rapport à la droite y = 0. Dans un tel cas, P +Q (ou 2P ) est donc égal à ∞, dont on rappelle qu'il appartient à Ea,b (R). On voit l'importance de rajouter un point à l'inni à l'ensemble des points d'équation y 2 = x3 + ax + b. Cela permet de dénir P + Q dans tous les cas. 4. Lorsque l'un des deux points, disons Q, est le point à l'inni, alors la droite (P Q) est considérée verticale et elle recoupe la courbe elliptique au symétrique de P par rapport à la droite y = 0. La somme P + ∞ est donc égale à P (qui appartient bien à Ea,b (R)). Lorsque les deux points sont à l'inni, la tangente à la courbe en ∞ recoupe la courbe en ∞, donc on a ∞ + ∞ = ∞. Nous avons ainsi déni une loi interne + sur Ea,b (R). Cette loi interne est manifestement commutative puisque la droite (P Q) est égale à la droite (QP ). Pour l'utilisation en cryptographie, le corps K est ni et cette dénition purement géométrique de + ne convient pas car il faut bien évidemment pouvoir implémenter la somme de deux points P = (xP , yP ) et Q = (xQ , yQ ) de la courbe Ea,b (K). Soit K un corps quelconque. La dénition suivante de P + Q coïncide avec celle que l'on vient de dénir géométriquement dans le cas où K = R. 1. Lorsque P = (xP , yP ) et Q = (xQ , yQ ) sont deux points de Ea,b (K) distincts de ∞ avec xP 6= xQ , on pose P + Q = xP +Q , yP +Q avec : xP +Q = yQ − yP xQ − xP 2 −xP −xQ et yP +Q = yQ − yP yQ xP − yP xQ − xP +Q xQ − xP xQ − xP (5.2) P.Struillou CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES 63 2. Lorsque P est un point de Ea,b (K) distinct de ∞ et tel que yP 6= 0, on pose P + P = 2P = (x2P , y2P ) avec : x2P = 3x2P + a 2yP 2 − 2xP et y2P = 3x2P + a 2yP (xP − x2P ) − yP (5.3) 3. Lorsque P et Q sont des points de Ea,b (K) tels que xP = xQ , on pose P + Q = ∞. 4. Pour tout P ∈ Ea,b (K), on pose P + ∞ = ∞ + P = P . Bien entendu, pour un corps K quelconque, il faut interpréter les divisions qui apparaissent dans (5.2) et dans (5.3) comme des produits par l'inverse. On vérie par un calcul sans diculté que dans tous les cas xP +Q , yP +Q est bien un élément de Ea,b (K) : lorsque ce point n'est pas à l'inni, l'équation (5.1) est vériée pour x = xP +Q , y = yP +Q . On a donc bien dénie une loi interne + sur Ea,b (K). Il s'agit maintenant de vérier que, muni de cette loi interne, l'ensemble Ea,b (K) est un groupe. Nous admettons que la loi + est associative (i.e. (P1 + P2 ) + P3 = P1 + (P2 + P3 ) pour tout (P1 , P2 , P3 ) ∈ Ea,b (R)), la vérication se réduisant à un calcul pénible. Dans le cas K = R, il est possible de se convaincre géométriquement de cette propriété. Il faut vérier qu'il existe dans Ea,b (K) un élément neutre pour la loi +. Le point à l'inni joue ce rôle puisqu'il est immédiat que pour tout P ∈ Ea,b (K), on a P + ∞ = ∞ + P = P . On peut donc noter, si on le souhaite : (5.4) ∞ = 0Ea,b (K) Pour P = (x, y) ∈ Ea,b (K) distinct de ∞, le cas 3 de la dénition de la somme nous montre que si on ajoute à P son symétrique (x, −y) par rapport à la droite y = 0, on obtient l'élément neutre ∞. Cela marche aussi lorsque P = ∞ puisque ∞ + ∞ = ∞. Tout élément P de Ea,b (K) possède donc un symétrique −P pour la loi + (i.e. un opposé puisque la loi interne est notée additivement) : lorsque P = (x, y) est distinct de ∞, on a −P = (x, −y) ; lorsque P est le point à l'inni, on a −P = ∞ = P . Ainsi, muni de la loi interne +, l'ensemble Ea,b (K) est un groupe d'élément neutre ∞. Il est de plus clair sur (5.2) que la loi interne est commutative, donc Ea,b (K), + est un groupe commutatif. 5.3 Courbes elliptiques sur un corps ni En cryptographie, on utilise des courbes elliptiques sur le corps ni à q éléments, noté K = Fq , avec q = pn où p est un nombre premier supérieur ou égal à 5. On peut obtenir une représentation de ce corps en procédant comme on l'a fait au chapitre 4 pour le corps 3 3. tous les corps à q éléments sont isomorphes P.Struillou CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES 64 de Galois GF (28 ) (à l'aide de classes de polynômes modulo un polynôme irréductible xé). La première chose à faire en pratique est donc d'implémenter les calculs dans Fq (addition et multiplication modulaires, calcul de l'inverse par l'algorithme d'Euclide étendu). On xe donc un nombre premier p ≥ 5, un entier naturel non nul n, on pose q = pn , on choisit a et b dans Fq tels que 4a3 + 27b2 6= 0 dans Fq . On note Ea,b (Fq ) l'ensemble des couples (x, y) ∈ F2q vériant y 2 ≡ x3 + ax + b mod q (5.5) auxquels on ajoute un point noté ∞. On munit cet ensemble Ea,b (Fq ) de la structure de groupe dénie à la section précédente. Cette courbe elliptique ne ressemble en rien à ce que l'on appelle courbe en géométrie élémentaire. C'est un ensemble discret (et même ni). La première question qui se pose dans les applications envisagées est d'ailleurs combien de points Ea,b (Fq ) possède-t-il ? . Le résultat suivant (admis) donne une estimation de l'ordre du groupe Ea,b (Fq ). Théorème 5.3.1 Théorème de Hass √ √ q + 1 − 2 q ≤ #Ea,b (Fq ) ≤ q + 1 + 2 q (5.6) On voit que si q est grand, l'ordre de grandeur du nombre de points de la courbe elliptique Ea,b (Fq ) est le même que celui du corps Fq sur lequel elle est construite : #Ea,b (Fq ) ∼+∞ q . 2 3 Exemple. Soit la courbe elliptique construite sur F13 = Z/13 Z, d'équation √ y ≡ x − 5x + 8 mod 13. On trouve 20 points dans E−5,8 (F13 ). On a bien √ 14 + 2 13 = 22. 14 − 2 13 = 6 ≤ 20 ≤ La détermination de #Ea,b (Fq ) est importante en pratique car elle permet d'éviter de choisir une courbe elliptique pour laquelle certaines attaques particulières sont possibles. En 1971, dans un contexte très diérent, Shanks avait trouvé un algorithme permettant de déterminer √ l'ordre du groupe Ea,b (Fpn ) en temps O 4 pn . Les motivations cryptographiques ont relancé l'intérêt pour le sujet dans les années 1990 et des mathématiciens ont cherché des algorithmes plus ecaces. On connaît désormais une méthode qui tourne en temps O n5/2 , ce qui constitue une amélioration considérable par rapport à l'algorithme de Shanks. Exemple. Soit une courbe elliptique construite sur un corps Fq avec q de 160 bits. Pour la même puissance de calcul, l'algorithme de Shanks détermine son ordre en 1 an, alors que la méthode moderne, dite AGM+SST, le fait en 60 ms. 5.4 Protocoles cryptographiques et courbes elliptiques Pour simplier, nous allons nous limiter à décrire comment on adapte les méthodes classiques au chirement par courbes elliptiques. L'idée de base est de mettre en ÷uvre le système cryptographique ElGamal (ou simplement le protocole d'échange des clés de DieHelmann) dans un groupe Ea,b (Fq ), + . Il faut donc d'abord comprendre ce que devient le problème du logarithme discret dans ce groupe additif. P.Struillou CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES 65 Dans le groupe multiplicatif Z∗p , × , avec p premier et c élément primitif, le logarithme discret de base c de y = cx = c × . . . × c est le nombre x. Dans le contexte des courbes elliptiques, on doit donc se donner un élément M de la courbe, il génère un sous-groupe hM i de Ea,b (Fq ), + (composé des multiples de M ) et étant donné y = xM = M + . . . + M dans ce sous-groupe, x joue le rôle du logarithme discret de base M de y . Les protocoles de Die-Helmann et ElGamal sont envisageables en travaillant dans hM i et en remplaçant la multiplication modulo p par l'addition dans Ea,b (Fq ) sous la condition que la recherche de x connaissant y = xM soit dicile d'un point de vue algorithmique. Pour cela, il est clair qu'il est nécessaire que l'ordre m du sous-groupe hM i doit être grand, car une recherche exhaustive de x (en calculant M , M + M , (M + M ) + M , etc, et en comparant à chaque fois à y ) aboutit en au plus m étapes. L'ordre de hM i = ∞, M, 2M, . . . , (m − 1)M est en eet le plus petit entier naturel m tel que mM soit égal à l'élément neutre ∞ (i.e. l'ordre m de M dans le groupe additif Ea,b (Fq )). Cette condition nécessaire sur la taille du sous-groupe engendré par M n'est a priori pas susante, sinon n'importe quelle structure de groupe pourrait donner lieu à une variante des schémas de Die-Helmann et ElGamal ! Ces protocoles peuvent être mis en ÷uvre à la condition que dans le groupe utilisé le problème du logarithme discret soit dicile. Il se trouve que, dans l'état actuel des connaissances, c'est le cas lorsque l'on prend pour groupe un grand sous-groupe cyclique hM i d'une courbe elliptique (sauf exceptions, d'où la précaution signalée plus haut). Pour cette introduction au sujet, il nous reste à re-écrire les protocoles de Die-Helmann et d'ElGamal dans le contexte des courbes elliptiques. 5.4.1 Protocole de Die-Helmann par courbes elliptiques On adapte simplement ce qui a été décrit page 51. 1. Alice et Bob choisissent ensemble une courbe elliptique Ea,b (Fq ) et un élément M ∈ Ea,b (Fq ) d'ordre m très grand. 2. Alice engendre aléatoirement une clé privée r ∈ {1, . . . , m − 1} et envoie à Bob l'élément rM du sous-groupe hM i de Ea,b (Fq ). Notons que si Oscar rentre en possession de rM , il ne pourra retrouver r puisque le problème du logarithme discret dans hM i est dicile. 3. Bob agit de même : il engendre aléatoirement une clé privée s ∈ {1, . . . , m − 1} et envoie à Alice l'élément sM du sous-groupe hM i de Ea,b (Fq ). 4. Alice calcule r(sM ) et Bob calcule s(rM ). Alice et Bob sont en possession de la même clé secrète K = (rs)M ∈ hM i, élément du sous-groupe hM i de Ea,b (Fq ). Remarque. Ce protocole appelle deux commentaires. 1. Puisque le calcul exhaustif des multiples successifs de M est très long pour Oscar, il l'est aussi pour Alice et Bob ! Mais pour calculer rM ou sM , ces derniers ne vont évidemment pas employer ce moyen : ils peuvent utiliser l'algorithme d'exponentiation rapide en remplaçant la multiplication par l'addition dans Ea,b (Fq ). Par contre, Oscar n'a pas d'autre choix que de calculer successivement M , M +M , (M +M )+M , etc, et de les comparer à ce qu'il a intercepté. 4 4. dans ce contexte, il est donc plus juste d'appeler cet algorithme calcul rapide de multiples P.Struillou CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES 66 2. Heureusement, il existe des organismes (par exemple le National Institut of Standard and Technology) qui peuvent fournir des courbes elliptiques et des éléments M convenables an de servir de clés publiques à Alice et Bob. En utilisant ces objets, non seulement on est sûr que l'ordre m de M est grand, mais on sait aussi que l'on n'est pas dans l'un des cas particuliers pour lesquelles des attaques fonctionnent. 5.4.2 Chirement ElGamal par courbes elliptiques On adapte simplement ce qui a été décrit page 51 et 52. 1. Alice et Bob choisissent ensemble une courbe elliptique Ea,b (Fq ) et un élément M ∈ Ea,b (Fq ) d'ordre m très grand. 2. Bob engendre aléatoirement une clé privée s ∈ {1, . . . , m − 1} et envoie à Alice l'élément sM du sous-groupe hM i de Ea,b (Fq ). 3. Si Alice veut envoyer un message à Bob, elle commence par le coder en un élément X du sous-groupe hM i. Alice engendre aléatoirement une clé secrète r ∈ {1, . . . , m − 1} et calcule les éléments rM et K = r(sM ) du sous-groupe hM i de Ea,b (Fq ). Elle envoie à Bob le couple suivant, constitué de deux points de la courbe elliptique : 5 (rM , X + K) 4. Bob calcule s(rM ) et rentre ainsi en possession de la clé secrète K (protocole de Die-Helmann). Il lui reste à retrancher K (i.e. ajouter le point symétrique −K ) du deuxième point envoyé par Alice et il retrouve X , qu'il lui reste à transformer en texte. Remarques. 1. Le premier avantage de ce système sur le ElGamal classique (ou sur RSA) est qu'à chaque fois que l'on change de courbe elliptique, on change de groupe. Cela complique considérablement la recherche d'algorithmes ecaces de calcul du logarithme discret , de sorte qu'actuellement on peut, pour le même niveau de sécurité, utiliser des clés beaucoup plus courtes que pour les autres systèmes à clé publique. On estime qu'une clé de 200 bits pour ECC (Elliptic Curve Cryptography ) ore le même niveau de sécurité qu'une clé de 1024 bits pour RSA, ce qui constitue une gros avantage notamment pour l'implantation sur puces. De plus, bien que la loi interne + soit un peu longue à expliquer, les principes arithmétiques de calcul de sommes dans une courbe elliptique se réalisent bien sur ce type de support. 2. L'avantage cité plus haut présente une contrepartie : la variété des groupes sur lesquels on travaille fait qu'on est loin d'avoir ni leur étude mathématique et qu'il est donc tout à fait envisageable que des trappes secrètes permettant de casser le système existent dans certains cas. 3. Autre inconvénient : la cryptographie par courbes elliptiques est protégée par une multitude de brevets ! l'éthique cryptographique en prend un coup... 4. Signalons une autre application des courbes elliptiques, cette fois en cryptanalyse : il existe un algorithme de factorisation d'entiers sous-exponentiel qui utilise ces objets mathématiques. 5. Cette étape de codage n'est pas triviale et on renvoie aux ouvrages spécialisés pour expliquer comment un élément de texte peut être transformé en un point d'une courbe elliptique P.Struillou Annexe A Groupes, anneaux et corps Cette annexe regroupe le minimum à connaître sur les groupes, anneaux et corps. On va munir les ensembles de structures algébriques de plus en plus riches. A.1 Lois de composition interne Dénition A.1.1 (Loi de composition interne ) Une loi de composition interne (en abrégé : l.c.i.) sur l'ensemble E est une application ϕ de E × E dans E : ϕ: E×E → E (x, y) 7→ ϕ(x, y) On préfère souvent noter ϕ(x, y) = x T y , ou bien ϕ(x, y) = x + y (notation additive ), ou bien x ∗ y , ou x · y , ou même xy (notation multiplicative ), suivant le contexte. A.2 Groupes A.2.1 Un peu d'histoire Vous savez résoudre les équations algébriques (ou équations polynomiales) de degré 1 et 2. Il existe également des formules, trouvées par les mathématiciens italiens de la renaissance, permettant de résoudre dans C l'équation de degré 3 par radicaux, i.e. en utilisant uniquement les opérations d'addition, de soustraction, de multiplication, de division et les prises de radicaux (i.e. des calculs de racines n-ièmes). Ces formules sont dites de Cardan. Ces mathématiciens ont aussi réussi à résoudre par radicaux l'équation algébrique de degré 4. Ensuite, les mathématiciens se sont évidemment attaqué à l'équation de degré 5, mais n'ont pas réussi à trouver de formule de résolution par radicaux pour cette équation. Il y a une bonne raison à cela : le mathématicien norvégien Abel a prouvé au début du 19-ième siècle que la résolution générale de l'équation de degré 5 est impossible, ce qui ne veut pas dire qu'il n'y a pas de racines (le théorème de D'Alembert arme qu'il y en a 5 dans C lorsqu'on 67 ANNEXE A. GROUPES, ANNEAUX ET CORPS 68 les compte avec leur multiplicité), mais signie qu'il n'existe pas de formule par radicaux donnant les solutions dans tous les cas. Quelques temps après Abel, la théorie des groupes a été inventée par le mathématicien français Galois pour résoudre le problème suivant : sous quelles conditions la résolution par radicaux d'une équation algébrique de degré ≥ 5 est-elle possible ? Cette théorie a depuis eu les applications les plus diverses, en mathématiques bien sûr, mais aussi dans certaines branches de la physique et de la chimie (par exemple en physique quantique et en cristallographie) et de l'informatique (notamment en cryptographie). A.2.2 Dénition d'un groupe Dénition A.2.1 (Groupe ) Soit G un ensemble muni d'une l.c.i. T , G est un groupe si : 1. T est associative, i.e. ∀(x, y, z) ∈ G3 (x T y) T z = x T (y T z) 2. G possède un élément neutre pour la l.c.i. T , i.e. un élément e vériant ∀x ∈ G x T e = e T x = x 3. Tout élément x de G admet un symétrique, i.e. un élément x′ de G vériant x T x ′ = x′ T x = e Exemples : 1. Z muni de l'addition usuelle des nombres entiers est un groupe, l'élément neutre étant le nombre (entier) 0 et le symétrique de x étant le nombre (entier) −x. On dénit de même les groupes (Q, +), (R, +) et (C, +). 2. (N, +) n'est pas un groupe (non-existence du symétrique). 3. Z muni de la multiplication usuelle des nombres entiers n'est pas un groupe (seuls 1 et -1 admettent un symétrique : eux-mêmes). 4. Q∗ , R∗ et C∗ , munis de la multiplication sont des groupe, l'élément neutre étant le nombre 1 et le symétrique de x (qui est non nul) étant x−1 = 1/x. 5. Rn muni de l'addition composante par composante est un groupe, l'élément neutre étant 0Rn = (0, . . . , 0), et le symétrique de (x1 , . . . , xn ) étant (−x1 , . . . , −xn ). 6. L'ensemble Mn,m (R) des matrices à coecients réels à n lignes et m colonnes, muni de l'addition des matrices, est un groupe, d'élément neutre la matrice nulle à n lignes et m colonnes, le symétrique d'une matrice M étant la matrice dont tous les coecients sont les opposés des coecients de M . 7. Pour n ≥ 2 entier, l'ensemble Z/nZ des classes d'entiers modulo n est un groupe pour l'addition, d'élément neutre la classe de 0. P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 69 8. L'ensemble U des nombres complexes de module 1 est un groupe pour la multiplication, d'élément neutre 1. 9. Pour n ∈ N∗ , l'ensemble Un des racines n-ièmes de l'unité est un groupe pour la multiplication, d'élément neutre 1. 10. L'ensemble des rotations anes du plan de centre (0, 0) est un groupe pour la loi ◦ (composition), d'élément neutre l'application Id. 11. Pour n ∈ N∗ , l'ensemble des rotations anes du plan de centre (0, 0) et d'angle k2π/n (k ∈ Z) est un groupe pour la loi ◦, d'élément neutre l'application Id. 12. Soit E un ensemble non vide. L'ensemble des permutations de E (bijections de E sur E ) est un groupe pour la loi ◦, d'élément neutre l'application IdE . A.2.3 Propriétés 1. Dans un groupe, l'élément neutre est unique. 2. Dans un groupe, l'élément symétrique x′ de x est unique. Dénition A.2.2 (Groupe abélien ) Soit (G, T ) un groupe. Lorsque la l.c.i. T est commutative, i.e. ∀(x, y) ∈ G2 xT y = yT x on dit que G est un groupe abélien, ou groupe commutatif. Pour un groupe abélien, la l.c.i. est souvent notée additivement : xT y = x + y Dans ce cas l'élément neutre se note en général e = 0G (ou plus simplement 0 s'il n'y a pas de risque de confusion avec le nombre 0). Le symétrique est alors noté x′ = −x (opposé de x). Soit n un entier naturel et x un élément du groupe. On peut alors dénir nx = x + · · · + x (somme de n termes égaux à x). Si n est un entier négatif, nx est la somme de (−n) termes égaux à l'opposé (−x) de x. Pour un groupe quelconque, on préfère en général noter la l.c.i. multiplicativement : xT y = xy L'élément neutre est dans ce cas noté e ou 1G (ou simplement 1 s'il n'y a pas de risque de confusion avec le nombre 1), et le symétrique est noté x′ = x−1 (inverse de x). Pour x ∈ G et n ∈ N, on dénit alors xn : x0 = 1G , x1 = x, x2 = x x, etc. Puisque x est inversible, on −n peut même dénir xn pour n ∈ Z : si n < 0, xn = x−1 P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 70 A.2.4 Sous-groupes Soit G un groupe et F un sous-ensemble de G. F est un sous-groupe de G si F est un groupe pour la l.c.i. induite par celle de G (i.e. la même l.c.i. restreinte à F × F ). Il sut pour cela que : 1. ∀(x, y) ∈ F 2 x T y ∈ F 2. ∀x ∈ F x−1 ∈ F 3. F contient e A.2.5 Sous-groupes engendrés - groupes monogènes Proposition A.2.1 (Intersection de sous-groupes ) Toute intersection de sous-groupes de G est encore un sous-groupe de G. Dénition A.2.3 (Générateurs ) Soit G un groupe et soit A une partie de G. On appelle sous-groupe engendré par A le plus petit sous-groupe (au sens de l'inclusion) contenant A. C'est l'intersection des sous-groupes de G contenant A. Les éléments de A sont appelés générateurs de G. Dénition A.2.4 (Groupe monogène, groupe cyclique ) Soit a un élément d'un groupe G, noté multiplicativement. On appelle groupe monogène engendré par a le sous-groupe engendré par la partie {a}. C'est l'ensemble des ak quand k décrit Z. On le note hai. Un groupe monogène ni est dit cyclique. Autrement dit, comme son nom l'indique, il sut d'un seul générateur a pour engendrer un groupe monogène. Un groupe monogène G est soit inni (par exemple dans (Z, +), 1 engendre Z), soit ni, auquel cas l'expression cyclique se comprend bien dans la mesure où, en notant n le cardinal de G (dit aussi ordre du groupe), on a : G = hai = {1G = a0 , a, a2 , . . . , an−1 } Exemples de groupes cycliques : 1. (Z/nZ, +) est cyclique. En eet Z/nZ = h1i (car k = n 1) et d'ordre ni n. 2. (Un , ×) est cyclique. En eet Un = ei2π/n et d'ordre ni n. P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 71 Dénition A.2.5 (Ordre d'un élément dans un groupe ) Soit G un groupe ni, noté multiplicativement, d'élément neutre e. Pour tout x ∈ G, il existe m ∈ N∗ tel que xm = e. Le plus petit m vériant cette propriété s'appelle l'ordre de x. Remarque : Un groupe ni d'ordre n est cyclique si et seulement si il existe un élément d'ordre n (car un tel élément est un générateur). Exemple de groupe ni non cyclique. Considérons le groupe symétrique de l'ensemble {1, 2, 3}, i.e. l'ensemble S3 des permutations de {1, 2, 3} muni de la loi ◦. Ce groupe est d'ordre 3! = 6. Il n'est pas cyclique. En eet, il n'existe aucun élément d'ordre 6 : L'identité est d'ordre 1. Les 3 transpositions (les permutations qui échangent deux éléments et laissent invariant l'élément restant) sont d'ordre 2. Le cycle s = (1, 2, 3) (cette notation signie que s(1) = 2, s(2) = 3 et s(3) = 1) est d'ordre 3. En eet, s2 (1) = s ◦ s(1) = 3, s2 (2) = 1 et s2 (3) = 2, donc s2 est le cycle (1, 3, 2) ; puis s3 = id. Le cycle (1, 3, 2) est en conséquence lui aussi d'ordre 3. Théorème A.2.1 (Théorème de Lagrange ) Soient G un groupe ni d'ordre n et x ∈ G. L'ordre de x divise n. Exemple. On a vu que les éléments de S3 sont soit d'ordre 1, soit d'ordre 2, soit d'ordre 3, ce qui est en accord avec le théorème de Lagrange puisque les diviseurs de 6 sont 1, 2, 3 et 6. A.2.6 Sous-groupes de Z Proposition A.2.2 (Sous-groupes de Z) Les sous-groupes du groupe additif Z sont les ensembles de la forme nZ = {np ; p ∈ Z}, où n est un entier naturel quelconque. Remarque : Les sous-groupes du groupe additif Z sont donc tous monogènes (nZ est engendré par n puisque np = n + . . . + n). P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 72 A.2.7 Morphisme de groupe Dénition A.2.6 (Morphisme de groupes ) Soit (G, T ) et (G′ , T ′ ) deux groupes. Une application f : G → G′ est un morphisme groupes, ou homomorphisme de groupes, si : de ∀(x, y) ∈ G2 f (x T y) = f (x) T ′ f (y) Soit f un morphisme, f est un endomorphisme si G = G′ , un isomorphisme si f est bijective, un automorphisme si G = G′ et f bijective. (G, T ) et (G′ , T ′ ) sont des groupes isomorphes lorsqu'il existe un isomorphisme de groupes entre G et G′ . Exemple : Soit n ≥ 2 un entier. Les groupes (Z/nZ, +) et (Un , ×) sont isomorphes car l'application f : k ∈ Z/nZ 7→ eik2π/n ∈ Un est bien dénie (f k ne dépend pas du représentant k choisi) et est un isomorphisme de groupes (vérication conseillée en exercice). Plus généralement tout groupe G cyclique d'ordre n ≥ 2 est isomorphe à (Z/nZ, +). En eet, en notant la loi de G multiplicativement et en appelant a un générateur de G, l'application f : k ∈ Z/nZ 7→ ak est un isomorphisme de groupes. Dans le cas de Un , on peut choisir a = ei2π/n . Par exemple, l'ensemble Rn des rotations anes du plan, de centre (0, 0) et d'angle k2π/n (k ∈ Z), muni de la loi ◦, est en fait cyclique d'ordre n, car en notant r la rotation d'angle 2π/n, on a : Rn = {rk ; k ∈ J0, n − 1K} En eet, rk = r◦· · ·◦r est en fait la rotation d'angle k2π/n, et l'on a clairement rn = Id = r0 , donc r est un générateur de (Rn , ◦) (qui est donc monogène) et ce groupe est d'ordre ni n, donc il est isomorphe à la fois à (Z/nZ, +) et à (Un , ×). Il est d'ailleurs bien connu que l'on obtient l'axe de l'image du point d'axe z par la rotation rk en multipliant z par eik2π/n , de sorte que (Un , ×) et (Rn , ◦) sont en fait deux représentations du même groupe. On note enn que l'image d'un générateur d'un groupe monogène par un isomorphisme est un générateur du groupe image. Proposition A.2.3 Soit f un morphisme du groupe G d'élément neutre e dans le groupe G′ d'élément neutre e′ . On note les l.c.i. dans G et G′ multiplicativement. On a alors : f (e) = e′ f (x)−1 = f (x−1 ) P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 73 A.3 Anneaux A.3.1 Dénition d'un anneau Dénition A.3.1 (Anneau ) Soit A un ensemble muni de deux l.c.i. notées + (appelée addition) et · (appelée multiplication). A est un anneau si 1. (A, +) est un groupe abélien 2. la multiplication est associative 3. la multiplication est distributive à droite et à gauche par rapport à +, c-à-d : ∀(x, y, z) ∈ A3 x · (y + z) = (x · y) + (x · z) et (y + z) · x = (y · x) + (z · x) 4. la multiplication admet un élément neutre 1A : ∀x ∈ A x · 1A = 1A · x = x Remarques et vocabulaire : Dans certains ouvrages, l'existence de l'élément neutre pour la multiplication n'est pas exigée dans la dénition. Si cet élément neutre existe, ces ouvrages parlent alors d'anneau unitaire. Si de plus la multiplication est commutative, on dit que c'est un anneau commutatif. Exemples : 1. (Z, +, ·), où + et · désignent l'addition et la multiplication usuelles des nombres entiers, est un anneau commutatif (0 est l'élément neutre de l'addition et 1 est l'élément neutre de la multiplication). On dénit de même les anneaux (Q, +, ·), (R, +, ·) et (C, +, ·). 2. L'ensemble Mn (R) des matrice carrées d'ordre n à coecients réels, muni de l'addition usuelle des matrices (coecient par coecient) et du produit matriciel usuel (produit dit ligne par colonne ) est un anneau (non commutatif dès que n ≥ 2). La matrice nulle est l'élément neutre de l'addition et la matrice In est l'élément neutre de la multiplication. 3. Soit n ≥ 2 un entier. (Z/nZ, +, ×) est un anneau pour l'addition et la multiplication modulo n, d'éléments neutres 0 pour l'addition et 1 pour la multiplication. A.3.2 Sous-anneaux Soit (A, +, ·) un anneau. B ⊂ A est un sous-anneau si c'est un anneau pour les l.c.i. induites. Pour que B ⊂ A soit un anneau, il faut et il sut que : 1. 2. 3. 4. 0A ∈ B ∀(x, y) ∈ B 2 , x + y ∈ B ∀x ∈ B, −x ∈ B ∀(x, y) ∈ B 2 , x.y ∈ B P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 74 5. ∃1B ∈ B, ∀x ∈ B 1B .x = x.1B = x Remarque : Ainsi 0B = 0A , mais il arrive que 1B 6= 1A . A.3.3 Morphisme d'anneaux Nous avons déjà déni le concept de morphisme de groupe. De façon générale, un morphisme pour une certaine structure algébrique est une application respectant la ou les lois de la structure (par exemple un morphisme de groupe additif respecte l'addition, c-à-d que l'image d'une somme est la somme des images). On a donc la dénition suivante : Dénition A.3.2 (Morphisme d'anneaux ) Soit A et A′ deux anneaux, f : A → A′ est un morphisme d'anneaux si 1. ∀(x, y) ∈ A2 f (x + y) = f (x) + f (y) 2. ∀(x, y) ∈ A2 f (x · y) = f (x) · f (y) 3. f (1A ) = 1A′ Attention : dans cette dénition, on a noté de façon identique les additions dans A et dans A′ , ainsi que les multiplications (abus de notation fréquent qui nécessite de toujours bien savoir dans quel ensemble on travaille). A.3.4 Eléments inversibles dans un anneau Proposition A.3.1 (Groupe des inversibles d'un anneau ) Soit (A, +, ·) un anneau. L'ensemble noté A∗ des éléments inversibles pour la multiplication est un groupe pour la multiplication. On déduit donc immédiatement de la proposition A.2.3 la proposition suivante : Proposition A.3.2 (Image d'un inversible par un morphisme ) Soit f : A → A′ un morphisme d'anneau. Si x est inversible dans A alors f (x) est inversible dans A′ et on a f (x)−1 = f (x−1 ) A.3.5 Formule de Newton Soit n un entier naturel. Dans un anneau A on peut dénir nx = x + · · · + x (n termes). Si n est un entier négatif, nx est la somme de (−n) termes égaux à l'opposé (dans le groupe additif A) de x. Avec ces notations, dans un anneau A commutatif, on a, pour un entier naturel n : ∀(a, b) ∈ A 2 n (a + b) = n X Cnk ak bn−k k=0 P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 75 C'est encore vrai dans un anneau non commutatif pour des éléments a et b qui commutent (c-à-d vériant ab = ba) A.4 Corps A.4.1 Dénition d'un corps Dénition A.4.1 (Corps ) Un corps est un anneau K dans lequel chaque élément diérent de l'élément neutre de + est inversible pour la multiplication : (∀x ∈ K \ {0K }) (∃ y ∈ K) (x · y = y · x = 1K ) Cet élément y est alors unique et est noté x−1 . Autrement dit un anneau K est un corps si le groupe multiplicatif K ∗ des éléments inversibles est K \ {0K }. Exemples : 1. (Q, +, ·), (R, +, ·) et (C, +, ·) sont des corps (commutatifs). 2. (Z, +, ·) n'est pas un corps, car les seuls éléments inversibles sont 1 et −1. 3. L'anneau (Z/nZ, +, ×) est un corps si et seulement si n est un nombre premier. En eet, en vertu du théorème de Bezout, a ∈ J1, n − 1K est inversible modulo n (ce qui signie qu'il existe (b, k) ∈ Z2 tel que ab = 1 + kn) si et seulement si a est premier avec n (i.e. P GCD(a, n) = 1). Ainsi, si n est premier, alors tout nombre a ∈ J1, n − 1K est premier avec n, donc a est inversible, donc (Z/nZ, +, ×) est un corps. Réciproquement, si (Z/nZ, +, ×) est un corps, alors tout a ∈ J1, n − 1K est inversible modulo n, donc tout a ∈ J1, n − 1K est premier avec n, donc n est un nombre premier. 4. Plus généralement, on démontre qu'un corps ni a un cardinal égal à la puissance d'un nombre premier, et réciproquement, pour tout p premier et m ∈ N∗ , on peut construire un corps à pm éléments en représentant ses éléments par des classes de polynômes à coecients dans Z/pZ modulo un polynôme irréductible de degré m (choisi une fois pour toutes) : cf. paragraphe 2.6.3. De plus, tous les corps à pm éléments sont isomorphes, de sorte qu'on peut parler du corps ni à pm éléments, qu'on note Fpm ou GF (pm ). A.4.2 Construction du corps des complexes On rappelle ici une construction élémentaire du corps des nombres complexes. On munit l'ensemble R2 = {(a, b); a ∈ R, b ∈ R} de deux l.c.i. + et × dénies par : (a, b) + (c, d) = (a + c, b + d) (a, b) × (c, d) = (ac − bd, ad + bc) P.Struillou ANNEXE A. GROUPES, ANNEAUX ET CORPS 76 On vérie sans peine que (R2 , +, ×) est un anneau commutatif, avec (0, 0) le neutre de + et (1, 0) le neutre de ×. C'est en fait un corps, car si (a, b) 6= (0, 0), on a : (a, b) × a −b , 2 2 2 a + b a + b2 = (1, 0) Ainsi, tout élément non nul est inversible. On vérie immédiatement que l'ensemble F = {(a, 0); a ∈ R} est un sous-corps isomorphe à R (l'isomorphisme de corps φ : (a, 0) 7→ a permet d'identier la droite F et le corps des réels). Enn on vérie que (a, b) = (a, 0) × (1, 0) + (0, 1) × (b, 0) Cela permet d'écrire (a, b) = a + ib en identiant (a, 0) et a, et en notant i = (0, 1) On note C = (R2 , +, ×) C n'est donc rien d'autre que R2 muni de deux l.c.i. adéquates. On vérie a posteriori que l'on a i2 = (0, 1) × (0, 1) = (−1, 0) Autrement dit i2 = −1. a − ib Remarquons que l'inverse de a + ib est 2 , on retrouve donc : 2 a +b 1 z z = = 2 z zz |z| P.Struillou