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é

NOTATIONS PRÉLIMINAIRES

Cryptographie et fonctions à sens unique

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

Recherche dans un tableau

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

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

D'UN THÉORÈME NOUVEAU

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

Chapitre VI - Méthodes de factorisation

INF 4420: Sécurité Informatique Cryptographie II

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

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

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.

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

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

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

CORRECTION EXERCICES ALGORITHME 1

Introduction a l'algorithmique des objets partages. Robert Cori. Antoine Petit. Lifac, ENS Cachan, Cachan Cedex. Resume

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

Calculateur quantique: factorisation des entiers

La cryptographie du futur

Polynômes à plusieurs variables. Résultant

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

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

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

Factorisation d entiers (première partie)

Programmation linéaire

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

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

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

ÉPREUVE COMMUNE DE TIPE Partie D

Vers l'ordinateur quantique

Carl-Louis-Ferdinand von Lindemann ( )

Couples de variables aléatoires discrètes

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

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

chapitre 4 Nombres de Catalan

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Cryptographie. Master de cryptographie Architectures PKI. 23 mars Université Rennes 1

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

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

Triangle de Pascal dans Z/pZ avec p premier

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

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

Représentation d un entier en base b

Axiomatique de N, construction de Z

Peut-on tout programmer?

Cours d arithmétique Première partie

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

Conversion d un entier. Méthode par soustraction

Sécurité de l'information

3 Approximation de solutions d équations

OPTIMISATION À UNE VARIABLE

Cours d Informatique

Une forme générale de la conjecture abc

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

Initiation à la programmation en Python

FONDEMENTS DES MATHÉMATIQUES

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Raisonnement par récurrence Suites numériques

Premiers exercices d Algèbre. Anne-Marie Simon

1 Introduction au codage

Résumé du cours d algèbre 1, Sandra Rozensztajn. UMPA, ENS de Lyon, sandra.rozensztajn@ens-lyon.fr

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

108y= 1 où x et y sont des entiers

CH.6 Propriétés des langages non contextuels

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Licence Sciences et Technologies Examen janvier 2010

CHAPITRE VIII : Les circuits avec résistances ohmiques

Rapport de stage de fin de première année : exemples de groupes, leur traitement par MAGMA, et applications en cryptographie

Cours de Probabilités et de Statistique

Correction TD algorithmique

Par combien de zéros se termine N!?

Une version javascript sera disponible directement dans le cours prochainement.

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

Cours de mathématiques

6. Les différents types de démonstrations

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Problème 1 : applications du plan affine

Date : Tangram en carré page

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

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

Informatique Générale

Réalisabilité et extraction de programmes

Cours d Analyse. Fonctions de plusieurs variables

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

Tests de primalité et cryptographie

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

LE PROBLEME DU PLUS COURT CHEMIN

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Programmation Objet - Cours II

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Algorithmes récursifs

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Transcription:

Univ. Lille 1 - Licence et Master Info 2009-2010 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 2 Groupes 4 2.1 Structure de groupe......... 4 2.2 Groupes nis et carrés latins.... 6 2.3 Théorème de Lagrange........ 6 2.4 Groupes cycliques.......... 7 2.5 Exponentiation............ 7 3 Anneaux 9 3.1 Structure d'anneau.......... 9 3.2 Algorithme d'euclide......... 9 3.2.1 Algorithme classique..... 9 3.2.2 Algorithme binaire...... 10 3.2.3 Algorithme d'euclide étendu 10 3.2.4 Inverse modulaire....... 11 4 Corps 11 4.1 Structure de corps.......... 11 4.2 Propriétés des corps......... 12 4.3 Corps nis............... 12 4.4 Construction de corps nis...... 12 4.4.1 Existence de corps nis non premiers............ 12 4.4.2 Corps à 4 éléments...... 13 4.5 Corps nis à q = p n éléments.... 14 4.5.1 Polynômes irréductibles... 14 4.5.2 Application à la construction de corps nis......... 15 5 Table de nombres premiers 15 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 : Racines carrées dans Z/nZ 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 Tab. 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 a 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 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 a i B i deux entiers. Sortie: c = ab. 1: pour i = 0... N faire 2: d 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: d i d 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 d 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. 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

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. 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 2 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 }{{} m fois a a m = a }. {{.. 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 Tab. 2 Notations additives et multiplicatives Dans toute la suite, pour désigner l'opération interne d'un groupe nous utiliserons la notation multiplicative. 5

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 et sont des bijections. g a : G G x a x 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 3 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 Tab. 3 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 3 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 3 et celui présenté dans 4. 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 Tab. 4 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 5 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. 2.3 Théorème de Lagrange Lorsqu'un groupe est ni, le nombre de ses éléments est appelé ordre du groupe. 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 tel que a m = 1. De plus, le plus petit entier non nul m satisfaisant cette relation divise n. 6

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 Tab. 5 Les deux carrés latins d'ordre 5 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. Exemples : 1. Les groupes additifs Z/nZ sont cycliques d'ordre n, et 1 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. 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. 7

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 4 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 4 Exponentiation dans un groupe Entrée: a G un élément d'un groupe 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 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 6 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. Tab. 6 Calcul de 2 13 par l'algorithme 4 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). 8

Remarque Dans un groupe ni d'ordre n, le calcul de l'inverse (ligne 6 de l'algorithme 4) 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. 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 n (R) des matrices carrées d'ordre n à coecients dans un anneau 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 5 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 5 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 7 montre les diérentes étapes de l'exécution de l'algorithme 5 sur les entiers a = 651 et b = 69. 9

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 Tab. 7 Calcul de pgcd(651, 69) par l'algorithme 5 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. Algorithme 6 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 Le tableau 8 montre une trace de l'exécution de l'algorithme 6 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. 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 7 calcule ces coecients pour un couple d'entiers positifs. Le tableau 9 montre une trace de l'exécution de l'algorithme 7 sur les entiers a = 651 et b = 69. 10

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 Tab. 8 Calcul de pgcd(1200, 1152) par l'algorithme 6 Algorithme 7 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 1 u 1, u 1 x 8: v 1 v 1, v 1 x 9: n tant que 10: retourner d = a 1, u = u 2, v = v 2 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. 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 8. Le tableau 10 montre une trace de l'exécution de l'algorithme 7 sur les entiers a = 217 et n = 23. 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. 11

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 Tab. 9 Calcul des coecients de Bezout de a = 651 et b = 69 par l'algorithme 7 Algorithme 8 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 1 v 1, v 1 x n tant que retourner v 1 (mod n) 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. 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. 12

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. Tab. 10 Calcul de 217 1 (mod 23) par l'algorithme 8 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 11. 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 Tab. 11 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 12). 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 Tab. 12 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. 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 13

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. 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 9. 14

Algorithme 9 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. 5 Table de nombres 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 Tab. 13 Table des nombres premiers jusqu'à 1000 15

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 Exponentiation dans un groupe................................. 8 5 Algorithme d'euclide pour calculer le pgcd de deux entiers a et b.............. 9 6 Algorithme binaire de calcul du pgcd.............................. 10 7 Algorithme d'euclide étendu.................................. 11 8 Calcul de l'inverse d'un entier inversible modulo un autre.................. 12 9 Test d'irréductibilité d'un polynôme.............................. 15 (version du 18 mars 2010.) 16