Structures algébriques et algorithmes



Documents pareils
Structures algébriques

Introduction à l étude des Corps Finis

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Quelques tests de primalité

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Nombres premiers. Comment reconnaître un nombre premier? Mais...

NOTATIONS PRÉLIMINAIRES

Axiomatique de N, construction de Z

Mathématiques Algèbre et géométrie

D'UN THÉORÈME NOUVEAU

Recherche dans un tableau

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

Chapitre VI - Méthodes de factorisation

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Cryptographie et fonctions à sens unique

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Développement décimal d un réel

chapitre 4 Nombres de Catalan

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Calculateur quantique: factorisation des entiers

Le chiffre est le signe, le nombre est la valeur.

Cours 02 : Problème général de la programmation linéaire

avec des nombres entiers

Conversion d un entier. Méthode par soustraction

Date : Tangram en carré page

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Extrait du poly de Stage de Grésillon 1, août 2010

INF 4420: Sécurité Informatique Cryptographie II

Cours arithmétique et groupes. Licence première année, premier semestre

Pour l épreuve d algèbre, les calculatrices sont interdites.

Factorisation d entiers (première partie)

Développements limités. Notion de développement limité

Cours d arithmétique Première partie

4. NOMBRES COMPLEXES ET TRIGONOMÉTRIE

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Couples de variables aléatoires discrètes

Carl-Louis-Ferdinand von Lindemann ( )

Complément d information concernant la fiche de concordance

Premiers exercices d Algèbre. Anne-Marie Simon

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Polynômes à plusieurs variables. Résultant

Vers l'ordinateur quantique

3 Approximation de solutions d équations

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Peut-on tout programmer?

Représentation des Nombres

ÉPREUVE COMMUNE DE TIPE Partie D

Compter à Babylone. L écriture des nombres

Résolution de systèmes linéaires par des méthodes directes

UNIVERSITE IBN ZOHR Faculté des sciences Agadir. Filière SMA & SMI. Semestre 1. Module : Algèbre 1

FONDEMENTS DES MATHÉMATIQUES

Cours de mathématiques


Par combien de zéros se termine N!?

CORRECTION EXERCICES ALGORITHME 1

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Les opérations binaires

Programme de la classe de première année MPSI

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

Tests de primalité et cryptographie

Programmation linéaire

Fonction inverse Fonctions homographiques

V- Manipulations de nombres en binaire

Exercices de dénombrement

Raisonnement par récurrence Suites numériques

CHAPITRE VIII : Les circuits avec résistances ohmiques

Cours d Analyse. Fonctions de plusieurs variables

I. Ensemble de définition d'une fonction

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Triangle de Pascal dans Z/pZ avec p premier

Chapitre 7. Récurrences

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Définitions. Numéro à préciser. (Durée : )

Correction TD algorithmique

Introduction à l'informatique. Vincent Boyer et Jean Méhat

Représentation d un entier en base b

1 Recherche en table par balayage

Problème 1 : applications du plan affine

TP 1 : 1 Calculs en binaire, octal et hexadécimal

DOCM Solutions officielles = n 2 10.

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Proposition de programmes de calculs en mise en train

1 Définition et premières propriétés des congruences

6. Les différents types de démonstrations

Rappels et compléments, première partie : Nombres complexes et applications à la géométrie

Cours de Probabilités et de Statistique

Informatique Générale

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Équations non linéaires

Transcription:

Univ. Lille 1 - Master Info 2011-2012 Principes et Algorithmes de Cryptographie Table des matières Structures algébriques et algorithmes 1 Entiers et opérations sur les entiers 2 1.1 Taille d'un entier........... 2 1.2 Les entiers dans l'ordinateur..... 3 1.3 Arithmétique sur les entiers..... 3 1.3.1 L'addition........... 3 1.3.2 La multiplication....... 4 1.4 Nombres premiers.......... 4 1.5 Nombre de nombres premiers.... 4 1.5.1 Tests de primalité...... 5 2 Groupes 6 2.1 Structure de groupe......... 6 2.2 Groupes nis et carrés latins.... 7 2.3 Théorème de Lagrange........ 8 2.4 Groupes cycliques.......... 9 2.5 Exponentiation............ 10 3 Anneaux 11 3.1 Structure d'anneau.......... 11 3.2 Algorithme d'euclide......... 12 3.2.1 Algorithme classique..... 12 3.2.2 Algorithme binaire...... 12 3.2.3 Algorithme d'euclide étendu 12 3.2.4 Inverse modulaire....... 14 3.3 Racines carrées modulo n...... 15 3.3.1 Cas n premier......... 15 3.3.2 Cas n produit de deux nombres premiers...... 16 4 Corps 16 4.1 Structure de corps.......... 16 4.2 Propriétés des corps......... 16 4.3 Corps nis............... 16 4.4 Construction de corps nis...... 17 4.4.1 Existence de corps nis non premiers............ 17 4.4.2 Corps à 4 éléments...... 17 4.5 Corps nis à q = p n éléments.... 18 4.5.1 Polynômes irréductibles... 18 4.5.2 Application à la construction de corps nis......... 18 Bibliographie Notes de cours établies à partir des ouvrages suivants 1. Cours d'algèbre. Primalité, divisibilité, codes de Michel Demazure, Cassini, 1997. 2. The art of computer programming, vol 2, seminumerical algorithms de Donald E. Knuth, Addison Wesley, 3ème édition, 1998. 3. A course in computational algebraic number theory de Henri Cohen, Springer, 4ème édition, 2000. 4. Modern Computer Algebra de Joachim von zur Gathen et Jürgen Gerhard, Cambridge university press, 1999. 5. Handbook of applied cryptography de Alfred Menezes & al., CRC Press, 1996. Disponible par internet à l'adresse http://www.cacr.math.uwaterloo.ca/hac/. NOTES DE COURS ENCORE INACHEVEES : Theorème chinois des restes 1

1 Entiers et opérations sur les entiers 1.1 Taille d'un entier Il existe plusieurs notations possibles pour les nombres entiers. En particulier, dans la numération de position, les entiers peuvent être représentés par des mots nis sur un alphabet dont les symboles sont usuellement appelés chires. Ainsi le nombre entier qui donne la valeur (arrondie à l'entier inférieur) de cent euros en francs français se note 657 en base 10. Ce mot de trois lettres (ou chires) qui dénote l'entier 657 signie que cet entier est égal à 657 = 6 10 2 + 5 10 1 + 7 10 0, c'est à dire une somme de puissances de 10 consécutives coecientées par des nombres compris entre 0 et 9 = 10 1. On comprend alors que par le même procédé, on peut écrire cet entier dans d'autres bases B au moins égales à 2. Par exemple en base 2, puisque l'on a 657 = 1 2 9 + 0 2 8 + 1 2 7 + 0 2 6 + 0 2 5 + 1 2 4 + 0 2 3 + 0 2 2 + 0 2 1 + 1 2 0, le nombre 657 peut s'écrire en base 2 avec le mot de dix chires binaires 1010010001. Nous voyons donc que selon la base de numération choisie le mot dénotant 657 peut être plus ou moins long. Et même pour une base xée la longueur n'est pas unique, puisque on peut toujours préxer un mot dénotant un entier par un mot de la forme 0 k. Par exemple en base 10, les mots 657, 0657, 00657,... dénotent tous le même entier. Lorsque l'écriture ne comprend pas de 0 en tête, on parle d'écriture standard. Nous donnons donc la dénition suivante de la taille d'un entier. Dénition 1.1. La taille d'un entier n > 0 en base B 2, notée n B, est la longueur du plus petit mot le dénotant dans cette base. Autrement dit, c'est le nombre de chires nécessaires pour l'écriture standard de l'entier n en base B, c'est-à-dire sans zéros superus à gauche. Par exemple, 657 10 = 3 et 657 2 = 10. Une expression de la taille d'un entier est donnée par le thérorème qui suit. Théorème 1.1. n B = log B n + 1. Dans ce théorème, la notation x désigna la partie entière du réel x, c'estàdire le plus grand nombre entier inférieur ou égal à x, et la notation log B x désigne le logarithme en base B de x, c'està dire log B x = ln x. ln B La formule exacte de l'expression de la taille d'un entier donnée par le théorème 1.1 peut se simplier par l'approximation n B log B n, approximation d'autant plus valable que l'entier n est grand. La taille d'un entier croît donc logarithmiquement en fonction de sa valeur, et comme la croissance des fonctions logarithmiques est assez lente, cela explique la capacité de la numération de position à dénoter de très grands nombres entiers. Corollaire 1.1. n B n B ln B ln B = log B B. Ainsi pour de très grands entiers, le rapport des tailles dans deux bases diérentes est approximativement constant. Dans le cas des bases B = 10 et B = 2 ce rapport est log 10 2 0.3010299957, autrement dit la taille de l'écriture en base 10 d'un entier est approximativement égale à 30% de celle en base 2. 2

1.2 Les entiers dans l'ordinateur Il faut distinguer entre les entiers machine qui sont ceux représentables dans un registre du processeur, et les autres qui ne le sont pas, souvent nommés entiers multiprécision. Les registres des processeurs ont une taille xée (couramment 32 ou 64 bits sur les PC actuels). Les entiers machine sont donc les entiers représentables par des mots binaires d'une taille xée n, c'estàdire les entiers de l'intervalle [0, 2 n 1] dans leur version non signée, ou les entiers de [ 2 n 1, 2 n 1 1] dans leur version signée. Non signés Signés taille min max min max n = 32 bits 0 2 32 1 4 10 9 2 31 2 10 9 2 31 1 2 10 9 n = 64 bits 0 2 64 1 18 10 18 2 63 9 10 18 2 63 1 9 10 18 Table 1 Entiers machine L'arithmétique sur les entiers machine est eectuée par l'unité arithmétique et logique du processeur. Si on souhaite travailler avec des entiers dépassant les limites des entiers machine, et c'est le plus souvent le cas en cryptographique, il faut utiliser une représentation en multiprécision. Plusieurs réalisations sont possibles. Par exemple, la bibliothèque GMP 1 de programmation de calculs en multiprécision, implémente les entiers multiprécision sous forme de tableaux dynamiques de mots machines considérés comme des chires de la base B = 2 n (avec n = 32 ou 64), avec un champ supplémentaire pour indiquer le nombre N de mots utilisés et le signe s de l'entier représenté. Autrement dit l'entier a = ( 1) s a i B i 0 i N est représenté par le signe s et l'entier N ainsi qu'un tableau des entiers machine a 0, a 1,... a N. Bien évidemment, pour les entiers multiprécision, il faut programmer les opérations arithmétiques de base (addition, multiplication,... ), et c'est ce que fait la bibliothèque GMP. 1.3 Arithmétique sur les entiers 1.3.1 L'addition Algorithme 1 Addition de deux entiers multiprecision de même signe Entrée: a = ( 1) s 0 i N a i B i et b = ( 1) s 0 i N b i B i deux entiers de même signe s. Sortie: c = ( 1) s 0 i N+1 c i B i tel que c = a + b. 1: γ 0 0 2: pour i = 0... N faire 3: c i a i + b i + γ i, γ i+1 0 4: si c i B alors 5: c i c i b, γ i+1 1 6: n si 7: n pour 8: c N+1 γ N+1 9: retourner ( 1) s 0 i N+1 c i B i Les opérations d'addition et de soustraction apparaissant aux lignes 3 et 5 de l'algorithme 1 sont des opérations sur les entiers machine. Le nombre d'opérations sur les entiers machine requis dans l'addition de deux entiers multiprécision de taille N par l'algorithme 1 est en O(N). Cet algorithme est donc linéaire en la taille des entiers ajoutés. On peut facilement adapter l'algorithme 1 en un algorithme d'addition de deux polynômes A(X) = 0 i N a ix i et B(X) = 0 i N b ix i. L'algorithme est alors plus simple car il est inutile de gérer les retenues comme dans le cas des entiers. L'addition de la ligne 2 de l'algorithme 2 peut être une addition de deux entiers, deux rationnels, deux réels, deux complexes selon l'espace des coecients des polynômes considérés. 1. GNU Multiple Precision, http://gmplib.org/ 3

Algorithme 2 Addition de deux polynômes Entrée: A(X) = 0 i N a ix i et B(X) = 0 i N b ix i deux polynômes de degré N Sortie: C(X) = 0 i N c ix i avec C = A + B. 1: pour i = 0... N faire 2: c i a i + b i 3: n pour 4: retourner 0 i N c ix i 1.3.2 La multiplication Algorithme 3 Multiplication de deux entiers multiprécision Entrée: a = ( 1) s 0 i N a i B i et b = ( 1) s 0 i M b i B i deux entiers. Sortie: c = ab. 1: pour i = 0... N faire 2: c i 0 3: pour j = 0... M faire 4: p a i b j. p s'écrit p = p 1 B + p 0 avec 0 p i < B 5: c i c i + p 0 B i+j + p 1 B i+j+1 6: n pour 7: n pour 8: retourner ( 1) s+t 0 i N c i B i. Le nombre d'opérations (additions et multiplications) sur les entiers machines dans le calcul du produit de deux entiers de taille N et M est en O(NM). Cet algorithme est donc quadratique en la taille des entiers multipliés. 1.4 Nombres premiers Les nombres premiers sont les nombres qui sont divisibles par exactement deux nombres : eux-mêmes et 1 2. L'intérêt essentiel des nombres premiers réside dans le théorème fondamental de l'arithmétique. Théorème 1.2. Théorème fondamental de l'arithmétique Tout nombre entier non nul possède une unique décomposition en facteurs premiers. 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 Table 2 Liste des nombres premiers inférieurs à 1000. 1.5 Nombre de nombres premiers Théorème 1.3. 1. Il existe une innité de nombres premiers (Euclide). 2. On se place ici dans l'ensemble N des entiers naturels. La notion de nombres premiers peut être étendue à l'ensemble Z des entiers relatifs, et ce sont alors les nombres ayant exactement 4 diviseurs. 4

2. Le nombre π(n) de nombres premiers inférieurs ou égaux à n est une fonction croissante avec n équivalente à l'inni π(n) n ln n (Hadamard, de la Vallée Poussin, n XIXème). 3. Plus précisément, on a pour tout entier n 59 ( n 1 + 1 ) ln(n) 2 ln(n) < π(n) < n ln(n) ( 1 + 3 ). 2 ln(n) 4. Lorsque t est un entier au moins égal à 3, le nombre π t de nombres premiers de taille t bits est minoré par π t = π(2 t ) π(2 t 1 2 t 2 ) > (t 1) ln(2). 1.5.1 Tests de primalité Il existe plusieurs algorithmes pour tester la primalité d'un nombre entier. L'un des tests les plus simples est la recherche du plus petit diviseur de l'entier n à tester, en sachant que n est premier si et seulement s'il n'admet aucun diviseur compris entre 2 et n. L'algorithme 4 eectue Coût de l'algorithme 4 dans le pire des cas : O( n) divisions. Autrement dit, pour tester un Algorithme 4 Test par recherche du plus petit diviseur Entrée: n un entier au moins égal à 3. Sortie: déterminer si n est premier. 1: k 2 2: tant que k ne divise pas n et k n faire 3: k k + 1 4: n tant que 5: si k divise n alors 6: retourner NON 7: sinon 8: retourner OUI 9: n si entier de taille t bits : O(2 t/2 ) divisions. Soit un algorithme exponentiel en la taille de l'entier à tester. Un théorème dû à Miller Théorème 1.4. Théorème de Miller Soit n > 1 un entier impair. On pose n 1 = 2 s u avec u impair. S'il existe un entier 1 < a < n tel que a u 1 (mod n) et a 2iu 1 (mod n) pour i [0, s 1], alors n est composé, et l'entier a est appelé témoin de non primalité de n. De plus, si n est un entier impair composé, au moins les trois quarts des entiers a compris entre 1 et n sont des témoins de non primalité de n. Analyse du test de Miller-Rabin 1. Algorithme probabiliste toujours correct si réponse négative ; possibilité d'erreur si réponse positive ; réponse toujours correcte si n est premier ; possibilité d'erreur si n est composé, mais probabilité d'erreur < 1 4. 2. Complexité algorithmique (dans le pire des cas) : deux calculs de pgcd (cf algo 8 page 12) ; une exponentiation modulaire (cf algo 7 page 10 ; s élévations au carré. Algorithme cubique en nombre d'opérations sur les bits. 5

Algorithme 5 Test de non primalité de Miller-Rabin Entrée: n un entier impair au moins égal à 3. Sortie: déterminer si n est premier. 1: choisir au hasard a [2, n 2] 2: calculer g = pgcd(a, n) 3: si g > 1 alors 4: retourner NON 5: n si 6: calculer u et s tels que n 1 = 2 s u avec u impair 7: b 0 a u (mod n) 8: si b 0 = 1 alors 9: retourner (probablement) OUI 10: n si 11: pour 1 i s faire 12: b i b 2 i 1 (mod n) 13: n pour 14: si b s = 1 alors 15: j min{0 i b i+1 = 1} 16: sinon 17: retourner NON 18: n si 19: g pgcd(b j + 1, n) 20: si g = 1 ou g = n alors 21: retourner (probablement) OUI 22: sinon 23: retourner NON 24: n si 2 Groupes 2.1 Structure de groupe Dénition 2.1. Un groupe est un ensemble G muni d'une opération interne, notée ci-dessous, tel que les propriétés suivantes sont satisfaites : associativité l'opération est associative a, b, c G (a b) c = a (b c) ; élément neutre l'opération possède un élément neutre e e G a G a e = e a = a ; inverse tout élément possède un inverse (à gauche et à droite) a G b G a b = b a = e. Le groupe est dit commutatif ou abélien si en plus, l'opération est commutative, c'est-à-dire si a, b G a b = b a. Exemples 1. Les ensembles usuels de nombres signés entiers Z, rationnels Q, réels R, complexes C munis de l'opération d'addition usuelle (+) sont des groupes commutatifs innis. 2. Les ensembles de nombres entiers modulaires (Z/nZ) muni de l'addition modulo n sont des groupes commutatifs nis. 3. Si on enlève 0, les ensembles K\{0}, avec K = Q, ou R, ou C sont des groupes commutatifs innis pour la multiplication usuelle ( ). 4. Les ensembles R[X] des polynômes à coecients dans R, R étant un anneau (cf la section 3), par exemple l'un des ensembles de nombres cités ci-dessus, muni de l'addition usuelle des polynômes sont des groupes commutatifs innis. 6

5. L'ensemble S n des permutations des entiers de 1 à n, muni de l'opération ( ) de composition est un groupe ni non commutatif. Contre-exemples 1. L'ensemble N des entiers naturels muni de l'addition usuelle n'est pas un groupe : hormis 0, élément neutre pour l'addition, aucun entier ne possède d'inverse pour l'addition (il manque les nombres négatifs). 2. De même, l'ensemble A des mots sur un alphabet A, muni de l'opération de concaténation n'est pas un groupe : hormis le mot vide, élément neutre pour la concaténation, aucun mot ne possède d'inverse pour la concaténation. 3. Les ensembles de nombres signés munis de l'opération de multiplication usuelle ( ) ne sont pas des groupes : le nombre 0 interdit l'existence d'un élément neutre. Même si on enlève le nombre 0 de ces ensembles la structure n'est pas toujours celle d'un groupe. Par exemple, Z \ {0} n'est pas un groupe puisque en dehors de 1 et 1 aucun entier n'admet d'inverse pour la multiplication. En revanche, Q \ {0}, R \ {0} et C \ {0} sont des groupes multiplicatifs (innis et commutatifs). 4. Les ensembles Z/nZ\{0} munis de la multiplication modulo n ne sont pas des groupes. En revanche les ensembles Z/nZ des éléments inversibles pour la multiplication modulo n sont des groupes nis ayant ϕ(n) éléments, où ϕ désigne la fonction indicatrice d'euler dénie pour n 2 par ϕ(n) = n p n(1 1 p ) p parcourant les nombres premiers divisant n. Une autre expression possible pour ϕ s'obtient à partir de la décomposition en facteurs premiers de n = r i=1 psi i par ( r ) r ϕ = (p si i p si 1 i ). i=1 p si i Remarque Lorqu'un ensemble est muni d'une opération interne qui ne satisfait que les deux premières propriétés (associativité et existence d'un élément neutre), la structure algébrique qui en résulte est nommée monoïde. L'ensemble des entiers naturels munis de l'addition, et l'ensemble des mots sur un alphabet muni de la concaténation sont des monoïdes. Notation additive ou multiplicative? Deux opérations courantes notées + (addition) et ou bien (multiplication) apparaissent fréquemment (sur les nombres, sur les polynômes,... ). Le tableau 3 compare les notations lorque l'opération est additive ou multiplicative. Notation additive Notation multiplicative Combinaison de deux éléments a, b G a + b a b ou a b ou ab Composée m-ième d'un élément a G (m N \ {0}) ma = a +... + a a } {{ } = a }. {{.. a } m fois a m fois a Élément neutre (m = 0) 0a = 0 a 0 = 1 Inverse (m = 1) a a 1 Composée m-ième d'un élément a G (m N) ( m)a = m( a) a m = (a 1 ) m m, p Z, a G (m + p)a = ma + pa a m+p = a m a p m, p Z, a G (mp)a = m(pa) a mp = (a m ) p i=1 Table 3 Notations additives et multiplicatives Dans toute la suite, pour désigner l'opération interne d'un groupe nous utiliserons la notation multiplicative. 2.2 Groupes nis et carrés latins Théorème 2.1. Soit G un groupe ni d'ordre n et a un élément de G. Les applications g a : G G x a x 7

et sont des bijections. d a : G G x x a Une conséquence de ce théorème est que si l'opération de groupe est représentée par un tableau à deux entrées x et y, éléments du groupe, donnant l'élément x y, alors toutes les lignes de ce tableau, ainsi que toutes les colonnes contiennent chaque élément du groupe une et une seule fois. Autrement dit, ce tableau est un carré latin. Les deux tableaux présentés en 4 montrent deux carrés latins d'ordre 4 représentants le groupe additif des entiers modulo 4 et le groupe multiplicatif des entiers non nuls modulo 5. + 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 1 2 3 4 1 1 2 3 4 2 2 4 1 3 3 3 1 4 2 4 4 3 2 1 Table 4 Tables des groupes (Z/4Z, +) et (Z/5Z \ {0}, ) Si on assure la correspondance 0 a, 1 b, 2 c et 3 d dans le premier tableau et la correpsondance 1 a, 2 b, 3 d et 4 c dans le second, alors les deux tableaux de 4 sont identiques après permutation des deux dernières lignes et des deux dernières colonnes de l'un ou l'autre des deux tableaux. Les deux groupes (Z/4Z, +) et (Z/5Z \ {0}, ) sont isomorphes. Il n'existe que deux carrés latins d'ordre 4 non identiques à permutation près des lignes et des colonnes, et à nommage près des éléments : celui des deux groupes présentés dans 4 et celui présenté dans 5. Ce second carré latin est celui correspondant au groupe produit (Z/2Z Z/2Z, +) dans lequel les éléments sont des couples de deux entiers modulo 2 (autrement dit des mots de deux bits), et l'addition est l'addition modulo 2 composante par composante (autrement dit le ou-exclusif bit à bit). a b c d b a d c c d a b d c b a Table 5 Second carré latin d'ordre 4 Une question naturelle qui se pose est celle de savoir si à tout carré latin il correspond un groupe ni. La réponse est positive pour les carré latins jusqu'à l'ordre 4 : il existe un seul carré latin d'ordre 1, 2 et 3 qui donnent les tables des groupes additifs Z/1Z, Z/2Z et Z/3Z, et nous venons de voir qu'il existe deux carré latins d'ordre 4 donnant chacun la table de groupes nis d'ordre 4. Il existe aussi deux carrés latins d'ordre 5 que la table 6 montre. Le carré de gauche peut être vu comme la table d'addition modulo 5 et correspond donc à la table d'un groupe. En revanche celui de droite ne peut pas être la table d'un groupe ni, puisqu'alors l'opération ne serait pas associative. La réponse à la question initiale est donc négative. a b c d e b c d e a c d e a b d e a b c e a b c d a b c d e b d a e c c e d b a d a e c b e c b a d Table 6 Les deux carrés latins d'ordre 5 2.3 Théorème de Lagrange Lorsqu'un groupe est ni, le nombre de ses éléments est appelé ordre du groupe. 8

Théorème 2.2. (Lagrange) Soit G un groupe ni d'ordre n, d'élément neutre 1. Alors quelque soit l'élément a G, il existe un entier m > 0 tel que a m = 1. De plus, le plus petit entier non nul m satisfaisant cette relation divise n. Dénition 2.2. Pour un élément a d'un groupe ni, le plus petit entier m satisfaisant a m = 1 est appelé ordre de cet élément. Corollaire 2.1. Pour tout élément a d'un groupe ni d'ordre n, on a a n = 1. Corollaire 2.2. L'inverse d'un élément a d'un groupe ni d'ordre n est égal à a 1 = a n 1. Remarque : Deux cas particuliers du corollaire 2.1 sont le (petit) théorème de Fermat et le théorème d'euler rappelés ci-dessous. Théorème 2.3. (Fermat) Soit n un nombre premier. Alors pour tout entier a non divisible par n on a a n 1 (mod n) = 1. Théorème 2.4. (Euler) Soit n 2 un entier. Pour tout entier a premier avec n on a 2.4 Groupes cycliques a ϕ(n) (mod n) = 1. Dénition 2.3. Un groupe cyclique est un groupe ni G dans lequel existe un élément a de même ordre que l'ordre n du groupe, c'est à dire un groupe dont les éléments sont de la forme a i avec a G et 0 i < n. Un élément d'ordre n est appelé générateur du groupe cyclique. Théorème 2.5. Le nombre de générateurs d'un groupe cyclique d'ordre n est égal à ϕ(n). Exemples : 1. Les groupes additifs Z/nZ sont cycliques d'ordre n, et tout entier premier avec n est un générateur. 2. Lorsque n est un nombre premier, Z/nZ \ {0} est un groupe cyclique d'ordre n 1. Tous les groupes nis ne sont pas cycliques. En eet, il existe des groupes nis non commutatifs (cf 2.1), et les groupes cycliques sont tous commutatifs. Mais il existe aussi des groupes nis commutatifs non cycliques, comme par exemple le groupe d'ordre 4 (Z/2Z Z/2Z, +) que nous avons vu dans la partie 2.2 et dont tous les éléments non nuls sont d'ordre 2. Dans un groupe cyclique, une fois xé un générateur a, l'opération de ce groupe revient à une addition modulo l'ordre du groupe. En eet, pour deux éléments quelconques du groupe x = a i et y = a j, on a x y = a i a j = a (i+j) (mod m). Du point de vue de l'informaticien, il est donc toujours possible de représenter les éléments d'un groupe cyclique d'ordre m par les entiers compris entre 0 et m 1 et d'implanter l'opération de ce groupe par une addition modulo m. Étant donné un groupe cyclique G d'ordre n, il est possible de trouver un générateur par une méthode probabiliste, si on dispose d'un générateur aléatoire d'éléments de G. Le principe consiste à tirer un élément au hasard dans G, et de vérier qu'il est bien générateur de G. Pour cette vérication, il sut de s'assurer que pour aucun diviseur de n, l'élement choisi au hasard n'a pour ordre ce diviseur. Ceci est facilement faisable dès lors que l'on connaît la décomposition en facteurs premiers de n. L'algorithme 6 suit ce principe. Les calculs de puissances à faire à la ligne 2 peuvent être ecacement eectués grâce à l'algorithme d'exponentiation rapide 7 décrit page 10. 9

Algorithme 6 Trouver un générateur d'un groupe cyclique Entrée: G un groupe cyclique d'ordre n, et n = k i=1 pei Sortie: g un générateur de G. 1: choisir un élément g G au hasard 2: pour chaque facteur premier p i de n, vérier que g n/pi 1. 3: si c'est le cas alors 4: retourner g 5: sinon 6: revenir en [1] 7: n si i. L'algorithme 6 est ecace puisque pour chaque élément g choisi au hasard dans G, la probabilité qu'il soit un générateur est égale à ϕ(n) n, et comme pour tout entier n 5, on a ϕ(n) > n ln ln n, 1 cette probabilité est supérieure à ln ln n, ce qui signie qu'en moyenne, ln ln n tirages aléatoires d'éléments de G susent pour trouver un générateur. 2.5 Exponentiation L'exponentiation dans un groupe multiplicatif (ou la multiplication par un entier dans un groupe additif) est une opération fréquente en arithmétique, et en cryptographie (cf protocole d'échange de clés de Die-Hellman, cryptosystème RSA, cryptosystème de El Gamal,... ). Il est donc utile qu'on s'y attarde un peu. Le problème de l'exponentiation est celui du calcul eectif et ecace de a m lorsque a est un élément d'un groupe (ou d'un monoïde), et m un entier relatif quelconque. Bien entendu il est toujours possible de calculer a m en suivant la dénition a m = a... a, c'est-à-dire en eectuant m 1 multiplications d'éléments de G. Cependant, cette méthode devient impensable en pratique dès lors que m devient grand, ce qui est souvent le cas en cryptographie. Il nous faut donc un algorithme d'exponentiation plus rapide. L'algorithme 7 répond ecacement à notre problème. Sa description suppose donnés la représentation des éléments du groupe, et en particulier de son élément neutre 1, ainsi que l'implantation des opérations de multiplication et d'élévation au carré dans ce groupe (cette dernière opération pouvant toujours être réalisée grâce à la première). Algorithme 7 Exponentiation dans un groupe Entrée: a G un élément d'un groupe d'ordre n dont l'élément neutre est noté 1, m Z Sortie: c = a m 1: r 1 2: si m = 0 alors 3: retourner r 4: sinon 5: si m < 0 alors 6: s a 1, k m 7: sinon 8: s a, k m 9: n si 10: n si 11: tant que k > 1 faire 12: si k est impair alors 13: r r s 14: n si 15: s s 2 16: k k 2 17: n tant que 18: r r s 19: retourner r 10

En fait, si on n'utilise que des exposants positifs (m > 0), cet algorithme ne s'applique pas uniquement au calcul de la puissance d'un élément d'un groupe, puisque qu'alors on n'a pas besoin de calculer d'inverse de a (ligne 6). En particulier, on peut l'appliquer pour le calcul de a m lorsque a est dans (Z, ) ou dans (Z/nZ ). Le tableau 7 montre les diérentes étapes de cet algorithme appliqué à a = 2 N et m = 13 (la colonne i indique les numéros des étapes de la boucle tantque, et dans la colonne de la variable k l'écriture binaire est inscrite entre parenthèses). i r s k 1 2 13 (1101) 1 2 4 6 (110) 2 2 16 3 (11) 3 32 256 1 (1) 8192 2 13 = 8192. Table 7 Calcul de 2 13 par l'algorithme 7 On peut vérier que ce calcul a nécessité trois élévations au carré (ligne 15) et trois multiplications (lignes 13 et 18), soit six multiplications en tout si l'élévation au carré est accomplie par une multiplication. De manière générale, le nombre d'opérations dans G eectuées pour calculer a m, m > 0, avec cet algorithme est lié à la représentation binaire de l'entier m. En particulier il eectue m 2 1 élévations au carré auxquelles il faut ajouter une multiplication pour chaque bit de m valant 1. Par exemple, pour m = 13 dont l'écriture binaire est 1101, on retrouve les m 2 1 = 3 élévations au carré et les trois multiplications correspondant aux trois bits valant 1. Ainsi le nombre d'opérations dans G est compris entre m 2 et 2 m 2 1, et comme on a m 2 = log 2 m + 1, cet algorithme est en O(log m). Remarque Dans un groupe ni d'ordre n, le calcul de l'inverse (ligne 6 de l'algorithme 7) d'un élément a peut toujours se faire par le calcul de a n 1. Ainsi le calcul de l'inverse se ramène à un calcul d'exponentiation. Toutefois, dans certaines structures il existe d'autres méthodes de calcul d'un inverse (cf le calcul d'inverse dans la section 3.2.4 par exemple). 3 Anneaux 3.1 Structure d'anneau Dénition 3.1. Un anneau est un ensemble A muni de deux opérations internes, notées usuellement + et (ou ), tel que les propriétés suivantes soient satisfaites : groupe additif A muni de l'opération + est un groupe commutatif ; mutiplication associative l'opération est associative a, b, c A (a b) c = a (b c) ; élément neutre multiplicatif l'opération possède un élément neutre e A a A a e = e a = a ; distributivité l'opération est distributive par rapport à + a, b, c A a (b + c) = a b + a c, et (b + c) a = b a + c a. L'anneau est dit commutatif si en plus l'opération l'est. On note usuellement 0 et 1 les éléments neutres pour l'addition et pour la multiplication. 11

Exemples 1. Z muni de l'addition et de la multiplication usuelle des entiers est un anneau commutatif. 2. De même pour Q, R et C. 3. Z/nZ muni de l'addition et de la multiplication modulo n des entiers est un anneau commutatif. 4. L'ensemble R[X] des polynômes à coecients dans un anneau R, muni de l'addition et de la multiplication usuelle des polynômes est un anneau commutatif. 5. L'ensemble M n (R) des matrices carrées d'ordre n à coecients dans un anneau R muni de l'addition et de la multiplication usuelle est un anneau non commutatif. 3.2 Algorithme d'euclide 3.2.1 Algorithme classique L'algorithme d'euclide classique permet de calculer le pgcd de deux entiers, ou de deux polynômes. Il consiste essentiellement à eectuer des divisions euclidiennes jusqu'à obtenir un reste nul. L'algorithme 8 permet de calculer le pgcd de deux entiers positifs. Pour des entiers de signe quelconque, il sut de remarquer que pgcd(a, b) = pgcd( a, b ). Algorithme 8 Algorithme d'euclide pour calculer le pgcd de deux entiers a et b Entrée: a et b deux entiers positifs Sortie: d = pgcd(a, b) 1: Soient a 1 a et b 1 b 2: tant que b 1 0 faire 3: Calculer le quotient q et le reste r dans la division euclidienne de a 1 par b 1 4: a 1 b 1 5: b 1 r 6: n tant que 7: retourner a 1 Le tableau 8 montre les diérentes étapes de l'exécution de l'algorithme 8 sur les entiers a = 651 et b = 69. i q r a 1 b 1 651 69 1 9 30 69 30 2 2 9 30 9 3 3 3 9 3 4 3 0 3 0 pgcd(651,69) = 3 Table 8 Calcul de pgcd(651, 69) par l'algorithme 8 3.2.2 Algorithme binaire L'algorithme binaire de calcul du pgcd est particulièrement bien adapté lorsque les entiers sont représentés en binaire, car aucune division n'est eectuée, les seules divisions par deux étant réalisées par de simples décalages à droite. Le tableau 9 montre une trace de l'exécution de l'algorithme 9 sur les entiers a = 1200 et b = 1152. 3.2.3 Algorithme d'euclide étendu Le théorème de Bézout stipule que le pgcd de tout couple de nombres entiers peut toujours s'exprimer comme une combinaison linéaire à coecients entiers de ces deux nombres. 12

Algorithme 9 Algorithme binaire de calcul du pgcd Entrée: a et b deux entiers positifs Sortie: d = pgcd(a, b) 1: Soient a 1 a, b 1 b et p 1 2: tant que a 1 et b 1 sont tous deux pairs faire 3: a 1 a 1 2, b 1 b 1 2 et p 2p 4: n tant que 5: tant que a 1 0 faire 6: tant que a 1 pair faire 7: a 1 a 1 2 8: n tant que 9: tant que b 1 pair faire 10: b 1 b 1 2 11: n tant que 12: si a 1 b 1 alors 13: a 1 (a 1 b 1 ) 2 14: sinon 15: t (b 1 a 1 ) 2 16: b 1 a 1 17: a 1 t 18: n si 19: n tant que 20: retourner p b 1 a 1 b 1 p 1200 1152 1 600 576 2 300 288 4 150 144 8 75 72 16 33 9 16 12 9 16 3 3 16 0 3 16 pgcd(1200,1152) = 48 Table 9 Calcul de pgcd(1200, 1152) par l'algorithme 9 Théorème 3.1. Bezout Pour tout couple de nombres entiers a et b, il existe deux entiers u et v tels que pgcd(a, b) = au + bv. De tels entiers u et v sont appelés coecients de Bezout. Par exemple, pour le couple (a, b) = (651, 69), on peut prendre (u, v) = (30, 283). En eet, on a bien pgcd(651, 69) = 3 = 651 30 69 283. On peut adapter l'algorithme d'euclide de calcul du pgcd pour calculer les coecients de Bezout d'un couple d'entiers. L'algorithme d'euclide étendu 10 calcule ces coecients pour un couple d'entiers positifs. Le tableau 10 montre une trace de l'exécution de l'algorithme 10 sur les entiers a = 651 et b = 69. Remarque : Les coecients de Bezout ne sont pas uniques. Par exemple, on a pu voir que pgcd(651, 69) = 651 30 69 283 = 651 7 69 66. 13

Algorithme 10 Algorithme d'euclide étendu Entrée: a, b deux entiers positifs Sortie: d = pgcd(a, b) et u, v coecients de Bezout tels que d = au + bv 1: a 1 a, b 1 b 2: u 1 0, u 2 1, v 1 1, v 2 0 3: tant que b 1 0 faire 4: Calculer q, r tels que a 1 = b 1 q + r avec 0 r < b 1 5: x u 2 qu 1, y v 2 qv 1 6: a 1 b 1, b 1 r 7: u 2 u 1, u 1 x 8: v 2 v 1, v 1 x 9: n tant que 10: retourner d = a 1, u = u 2, v = v 2 i q r u 1 u 2 v 1 v 2 a b 0 0 1 1 0 651 69 1 9 30 1 0-9 1 69 30 2 2 9-2 1 19-9 30 9 3 3 3 7-2 -66 19 9 3 4 3 0-23 7 217-66 3 0 3 = 651 7 + 69 66 Table 10 Calcul des coecients de Bezout de a = 651 et b = 69 par l'algorithme 10 3.2.4 Inverse modulaire Un entier a est inversible modulo un entier n si est seulement si a et n sont premiers entre eux, c'estàdire si leur pgcd vaut 1. Dans ce cas les coecients de Bezout u et v fournissent la relation pgcd(a, n) = 1 = nu + av. Si on la considère modulo n cette relation donne l'égalité 1 = av (mod n), ce qui revient à dire que la réduction modulo n du coecient v est l'inverse de a dans l'anneau Z/nZ, a 1 (mod n) = v (mod n). Pour calculer l'inverse modulo n d'un entier a premier avec n, il sut de calculer le coecient de a dans une relation de Bezout et réduire ce coecient modulo n. C'est ce que fait l'algorithme 11. Algorithme 11 Calcul de l'inverse d'un entier inversible modulo un autre Entrée: a 1, n 2 deux entiers premiers entre eux Sortie: a 1 (mod n) (entier compris entre 1 et n 1) a 1 a, b 1 b v 1 1, v 2 0 tant que b 1 0 faire Calculer q, r tels que a 1 = b 1 q + r avec 0 r < b 1 x u 2 qu 1, y v 2 qv 1 a a 1 b 1, b 1 r v 2 v 2, v 1 x n tant que retourner v 2 (mod n) Le tableau 11 montre une trace de l'exécution de l'algorithme 10 sur les entiers a = 217 et n = 23. 14

i q r v 1 v 2 a 1 b 1 0 1 0 23 217 1 0 23 0 1 217 23 2 9 10 1 0 23 10 3 2 3-2 1 10 3 4 3 1 7-2 3 1 5 3 0-23 7 1 0 a 1 mod 23 = 7 mod 23 = 7. Table 11 Calcul de 217 1 (mod 23) par l'algorithme 11 k 0 1 2 3 4 5 6 7 8 9 10 k (mod 11) 0 1 4 9 5 3 3 5 9 4 1 k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 k (mod 11) 0 1 4 9 1 10 6 4 4 6 10 1 9 4 1 3.3 Racines carrées modulo n Table 12 Carrés modulo 11 et modulo 15 Observons les carrés modulo 11 et modulo 15 (cf tables 12). Nous constatons que modulo 11, seuls les nombres 0, 1, 3, 4, 5 et 9 sont des carrés parfaits, et qu'hormis 0, les autres sont carrés de deux nombres. Et modulo 15, seuls 0, 1, 4, 6, 9 et 10 sont des carrés parfaits et que 0 est le carré d'un seul nombre, 6, 9 et 10 sont carrés de deux nombres, et 1 et 4 sont carrés de quatre nombres. Donc une équation du type x 2 = a (mod n), (1) dans laquelle n est un entier naturel xé, a un entier compris entre 0 et n 1 et x l'inconnue, peut avoir 0, 1 ou plusieurs solutions. Les questions qui se posent au sujet de l'équation 1 sont 1. comment connaître l'existence d'une solution? 2. si elle admet des solutions combien en admet-elle? 3. comment les calculer? Nous allons répondre à ces questions d'abord dans le cas où n est un nombre premier, puis ensuite dans le cas particulier où n est le produit de deux nombres premiers impairs. 3.3.1 Cas n = p premier On considère ici l'équation (1) dans le cas où n est un nombre premier p qu'on supposera impair, le cas p = 2 étant trivial. Nombre de solutions : Comme l'ensemble Z/pZ des entiers modulo p est un corps lorsque p est un nombre premier (cf section 4), le nombre de solutions que peut avoir une telle équation ne peut pas dépasser deux. En fait seul dans le cas a = 0 l'équation (1) admet une seule solution. En eet lorsque a 0, si on vérie facilement que si l'équation admet une solution r, alors elle admet aussi n r pour solution, et comme p est impair, r et p r sont de parités diérentes et donc diérents. Donc l'équation 1 avec a 0 possède 0 ou 2 solutions. Lorsqu'elle en possède deux, on dit que l'entier a est un résidu quadratique modulo p. Décision : Comment décider si un entier a est un résidu quadratique? Une conséquence du théorème de Lagrange (cf 2.2) est qu'un entier a est un résidu quadratique modulo un nombre premier p si et seulement si on a a p 1 2 (mod p) = 1. Comme le calcul d'une exponentiation modulaire peut se faire ecacement grâce à l'algorithme 7, on en déduit un algorithme de décision (cf algo 12) 15

Algorithme 12 Algorithme de décision d'existence d'une racine carrée modulo un nombre premier Entrée: p un nombre premier, a un entier compris entre 1 et p 1. Sortie: Vrai si a est un résidu quadratique modulo p, Faux dans le cas contraire. s a p 1 2 (mod p) si s = 1 alors retourner Vrai sinon retourner Faux n si Exemples : Prenons p = 11. 1. Pour a = 9, on a a 5 (mod 11) = 1, et donc 9 est un résidu quadratique modulo 11. 2. Pour a = 6, on a a 5 (mod p) = 10, et donc 6 n'est pas un résidu quadratique modulo 11. Calcul des solutions : Nous allons limiter le calcul des solutions dans le cas où p (mod 4) = 3 3. On suppose que a est un résidu quadratique modulo p. Dans ce cas, on peut vérier que le nombre r déni par r = a p+1 4 (mod p) est une racine carrée de a. En eet r 2 = a p+1 2 = a a p 1 2 = a. On en déduit donc l'algorithme 13 de calcul des racines de l'équation (1). Algorithme 13 Calcul de racines carrées modulo un nombre premier Entrée: p un nombre premier congru à 3 modulo 4, et a un résidu quadratique modulo p Sortie: les solutions de l'équation x 2 = a (mod p) r a p+1 4 (mod p) retourner r et p r Exemple : Avec p = 11 qui est bien congru à 3 modulo 4, et a = 9, on a a 3 (mod p) = 3, et donc 3 et 11 3 = 8 sont les deux solutions de l'équation (1). 3.3.2 Cas n produit de deux nombres premiers 4 Corps 4.1 Structure de corps Dénition 4.1. Un corps est un ensemble K muni de deux opérations internes notées + et tel que 1. (K, +, ) est un anneau ; 2. tout élément non nul de K possède un inverse pour la multiplication, autrement dit (K \ {0}, ) est un groupe. Exemples 1. Q, R et C munis de l'addition et la multiplication usuelles sont des corps innis commutatifs. 2. Si p est un nombre premier Z/pZ muni de l'addition et de la multiplication modulo p est un corps ni commutatif. On note F p le corps des entiers modulo p. Ces corps sont appelés corps nis premiers. 3. Il existe des méthodes de calcul des solutions dans les autres cas un peu plus complexe, mais qui ne nous intéressent pas. 16

4.2 Propriétés des corps 1. L'élément neutre de l'addition est un élément absorbant pour la multiplication, c'estàdire 2. Dans un corps, on a Autrement dit, il n'existe pas de diviseurs de 0. 4.3 Corps nis a K a 0 = 0 a = 0. a a = 0 a = 0 ou a = 0. Voici quelques propriétés supplémentaires des corps nis. 1. L'ordre de l'élément neutre de la multiplication 1 dans le groupe additif (K, +) d'un corps ni K est un nombre premier. Ce nombre est appelé caractéristique du corps. 2. Le groupe multiplicatif d'un corps ni est cyclique. 4.4 Construction de corps nis 4.4.1 Existence de corps nis non premiers Les seuls corps nis que l'on connaît à ce stade sont les corps premiers F p = Z/pZ avec p premier. Existe-t-il d'autres corps nis dont le cardinal n'est pas premier? Nous allons voir que oui mais pas pour n'importe quel cardinal. 4.4.2 Corps à 4 éléments Cherchons un corps à quatre éléments K = {0, 1, a, b}. Considérons l'ordre m de 1 dans le groupe additif (K, +). Comme ce groupe est d'ordre 4, m divise nécessairement 4. Donc m = 1, ou 2, ou 4. De plus, on sait que l'ordre de 1 est un nombre premier. Par conséquent m = 2 et pour tout élément x K, x + x = 0. En se souvenant que la table d'addition forme un carré latin nous n'avons plus le choix et nous obtenons celle représentée par le tableau 13. Il ressort de cette table d'addition que b = 1 + a (et de + 0 1 a b 0 0 1 a b 1 1 0 b a a a b 0 1 b b a 1 0 Table 13 Table d'addition du corps à 4 éléments manière symétrique a = b + 1). Voyons maintenant la multiplication. Comme 0 est un élément absorbant pour la multiplication, 1 est un élément neutre, et que l'ensemble des éléments non nuls forme un groupe multiplicatif, c'est-à-dire que la table de multiplication sans la ligne et colonne correspondant à 0 est un carré latin 3 3, il n'y a qu'une seule possibilité de remplir cette table (cf 14). 0 1 a 1 + a 0 0 0 0 0 1 0 1 a 1 + a a 0 a 1 + a 1 1 + a 0 1 + a 1 a Table 14 Table de multiplication du corps à 4 éléments Nous avons muni l'ensemble K d'une opération de groupe additif et d'une multiplication tel que les éléments non nuls de K forme aussi un groupe. Il reste à vérier que la multiplication est distributive par rapport à l'addition, ce que nous laissons à titre d'exercice. 17

Nous avons donc obtenu un corps à quatre éléments F 4 = {0, 1, a, 1 + a}. On peut remarquer que a 2 = 1 + a ou encore a 2 a 1 = a 2 + a + 1 = 0 (souvenons nous qu'en caractéristique deux, 1 = 1). Autrement dit dans le corps F 4, a est une racine du polynôme P (X) = X 2 + X + 1 F 2 [X] (qui n'en a pas dans F 2 ). Si on observe bien les éléments de F 4 et l'arithmétique obtenue, on peut voir F 4 comme l'ensemble des polynômes à coecients dans F 2 de degré au plus 1. L'addition dans ce corps n'est alors rien d'autre que l'addition usuelle des polynômes et la multiplication dans ce corps rien d'autre que la multiplication des polynômes modulo le polynôme P (X) = X 2 + X + 1, la réduction modulo P (X) revenant à considérer que X 2 = X + 1. Remarques : Cette situation est tout à fait analogue à celle utilisée pour dénir le corps C des nombres complexes, dans lequel on exprime souvent les nombres complexes sous forme algébrique z = a + ib, avec a, b R, forme qui exprime les nombres complexes sous forme polynomiale de degré au plus 1 en i. La forme algébrique de la somme de deux nombres complexes est dénie comme la somme des polynômes en i les représentants, et celle du produit par multiplication polynomiale réduite modulo le polynôme i 2 + 1 = 0 (i 2 ). Choix du polynôme : Pour dénir le corps F 4, aurait-on pu choisir un autre polynôme? Pour l'addition peu importe le choix du polynôme. En revanche, le polynôme inue sur la multiplication. Par exemple, aurait-on pu choisir Q(X) = X 2 + X? La réponse est négative, parce qu'alors on aurait a(1 + a) = a + a 2 = 0, et on aurait deux éléments non nuls de K dont le produit est nul, ce qui est impossible dans un corps. L'existence de diviseurs de zéro provient du fait que le polynôme Q(X) = X(1 + X) n'est pas irréductible dans F 2 [X]. 4.5 Corps nis à q = p n éléments 4.5.1 Polynômes irréductibles Dénition 4.2. Soit K un corps, et P (X) K[X] un polynôme. Le polynôme P est irréductible s'il ne peut pas se mettre sous la forme d'un produit de deux polynômes de degré au moins égal à 1. Les polynômes irréductibles sont aux polynômes ce que sont les nombres premiers aux nombres entiers. On peut en particulier montrer que tout polynôme se décompose de manière unique (à l'ordre près des facteurs et à un coecient multiplicatif constant près) en un produit de polynômes irréductibles. Exemples : 1. P (X) = X 2 + 1 est irréductible dans R[X]. 2. En revanche, P (X) = X 2 + 1 n'est pas irréductible dans F 2 [X]. 3. Les polynômes de degré 3 irréductibles dans F 2 [X] sont X 3 + X 2 + 1 et X 3 + X + 1. 4. De manière générale, tout polynôme de degré 1 est irréductible dans K[X] et ceci quelque soit le corps, ni ou non. Quels sont les polynômes irréductibles? Combien y en a-t-il? Comment les reconnaître? La réponse est facile pour les corps des réels et des complexes. 1. Dans R[X] les polynômes irréductibles sont tous les polynômes de degré 1 et les polynômes de degré 2 dont le discriminant (le fameux = b 2 4ac) est négatif. 2. Dans C[X] les polynômes irréductibles sont tous les polynômes de degré 1 et eux seulement. Dans le cas des corps nis, on admettra le théorème suivant qui donne l'existence de polynômes irréductibles de tout degré. Théorème 4.1. Soit p un nombre premier. Pour tout entier n 1 il existe un polynôme irréductible à coecients dans F p de degré n. Le théorème suivant donne une condition nécessaire et susante pour qu'un polynôme à coecient dans un corps ni soit irréductible. 18

Théorème 4.2. Soit F q un corps à q Un polynôme P F q [X] de degré n 1 est irréductible si et seulement si 1. P divise le polynôme X qn X, 2. et pgcd(x qn/t X, P ) = 1 pour tout diviseur premier t de n. Dès lors que l'on connaît les diviseurs premiers du degré n (ce qui est équivalent à connaître la factorisation de n) ce théorème donne un algorithme de décision d'irréductibilité d'un polynôme. C'est l'algorithme 14. Algorithme 14 Test d'irréductibilité d'un polynôme Entrée: P (X) F q [X] polynôme de degré n 1. Sortie: décision sur l'irréductibilité de P. 1: A X qn (mod P (X)) 2: si A X alors 3: conclure que P est réductible. 4: n si 5: pour chaque facteur premier t de n faire 6: si pgcd(x qn/t x, P ) 1 alors 7: conclure que P est réductible. 8: n si 9: n pour 10: conclure que P est irréductible. 4.5.2 Application à la construction de corps nis Théorème 4.3. Soit n 1 un entier, p un nombre premier et P (X) un polynôme de degré n irréductible dans F p [X]. Alors l'ensemble F p [X]/(P (X)) des polynômes à coecients dans F p de degré strictement plus petit que n, muni de l'addition usuelle et de la multiplication modulo P (X) est un coprs ni à q = p n éléments. Ce théorème est analogue au fait que les entiers considérés modulo un nombre premier forment un corps. Corollaire 4.1. Soit p un nombre premier. Pour tout entier n 1 il existe un corps ni à q n éléments. Liste des algorithmes 1 Addition de deux entiers multiprecision de même signe.................... 3 2 Addition de deux polynômes................................... 4 3 Multiplication de deux entiers multiprécision......................... 4 4 Test par recherche du plus petit diviseur............................ 5 5 Test de non primalité de Miller-Rabin............................. 6 6 Trouver un générateur d'un groupe cyclique.......................... 10 7 Exponentiation dans un groupe................................. 10 8 Algorithme d'euclide pour calculer le pgcd de deux entiers a et b.............. 12 9 Algorithme binaire de calcul du pgcd.............................. 13 10 Algorithme d'euclide étendu.................................. 14 11 Calcul de l'inverse d'un entier inversible modulo un autre.................. 14 12 Algorithme de décision d'existence d'une racine carrée modulo un nombre premier.... 16 13 Calcul de racines carrées modulo un nombre premier..................... 16 14 Test d'irréductibilité d'un polynôme.............................. 19 (version du 5 avril 2012.) 19