Upload
jerome-fernandez
View
109
Download
0
Embed Size (px)
Citation preview
Introduction aux corps finis
Intérêt
• Les opérations sur l’anneau des entiers classiques sont relativement lentes.
• Les calculs dans les corps finis peuvent être fait beaucoup plus vite, surtout sur architectures dédiées.
• Pour cette raison, il existe des cryptogrammes utilisant les corps finis (ex: courbes elliptiques)
• De plus ils sont utilisés dans d’autres domaines des communications (codes en blocs, Reed-Solomon, BCH, codes de Goppa …)
Notion de corps
• Un corps est un anneau où tous les éléments non nuls sont inversibles.
• Exemples: l’ensemble des réels, des complexes ou des quaternions sont des corps.
• L’ensemble des entiers ou des entiers relatifs sont des anneaux mais pas des corps.
• Z/2Z est un corps, Z/4Z n’en est pas un.• L’ensemble Q[2] formé des réels de la forme
a+b2 avec a,bQ est un corps.
Polynômes irréductibles
• On dit qu’un polynôme P est irréductible s’il n’admet pas de factorisation.
• Cette notion dépend de l’ensemble où sont considérés les coefficients de P.
• Exemple: Prenons P(X)=X2-2. Si on considère ce polynôme comme un polynôme de R[X], alors il n’est pas irréductible (P(X)=(X+2)(X-2)).
• Par contre, si on considère P(X) comme un polynôme de Q[X], P est irréductible.
Condition nécessaire
• Soit P un polynôme à coefficients dans K.• Si P est irréductible, alors P ne s’annule pas sur K. Par
contre on n’a pas la réciproque.• Preuve: Soit aK, tel que P(a)=0. On fait alors la division
euclidienne de P par (X-a) et on a P(X)=(X-a).Q(X)+R(X) avec deg(R)<deg(X-a)=1. R est donc réduit à une constante de K et donc P(X)=(X-a).Q(X)+b avec bK. Or P(a)=0 et donc b=0. Donc P(X)=(X-a).Q(X) et P n’est pas irréductible.
• Posons P(X)=X4-4X2+4=(X2-2)2. Ce polynôme n’est pas irréductible dans Q[X] et pourtant il ne s’annulle pas dans Q.
Théorèmes principaux
• Théorème: Soit p un nombre premier et I(X) un polynôme irréductible de degré n1 dans Z/pZ[X]. Alors (Z/pZ[X])/I est un corps. Il possède pn éléments et il ne dépend pas de I (seulement du degré de I). Ce corps est appelé corps de Galois à pn éléments, noté CG(pn) (ou GF(pn) en anglais).
• Théorème: Les seuls corps finis qui existent sont les corps de Galois.
Exemples
• Soit p=3 et P(X)=X3+2X+1. P(X) est bien irréductible dans Z/3Z[X] (on peut vérifier par exemple qu’aucun des polynômes de Z/3Z[X] de degré inférieur ou égal à 2 ne divise P(X)). (Z/3Z[X])/P est donc un corps.
• Soit p premier quelconque et P(X)=(X+a) avec aZ/pZ quelconque. Alors Z/pZ[X]/P est un corps. Il est formé des restes modulo P des polynômes de Z/pZ[X]. Or deg(P)=1 donc le reste modulo P d’un polynôme est de degré 0 (donc une constante). Ce corps est isomorphe à Z/pZ.
Calculs dans un anneau quotient
• Soit A un anneau et I un idéal de A. La relation définie pour P,QA par PQ si et seulement si P-QI est une relation d’équivalence. L’ensemble des classes d’équivalence est appelé anneau quotient A/I et a une structure naturelle d’anneau quand on transporte l’addition et la multiplication de A par la relation d’équivalence .
Exemple
• Soit Z l’anneau des entiers relatifs et 3Z={xZ | yZ, 3y=x}.• 3Z est l’ensemble des entiers de Z divisibles par 3. La relation est donc
définie par x1x2 si et seulement si yZ, x1-x2=3y.• Dans Z, 0, 1 et 2 sont envoyés dans trois classes différentes, que l’on notera 0,
1 et 2 respectivement.• Soit xZ quelconque alors parmi les nombres x,x-1 et x-2 un et un seul est
divisible par 3. Donc x0, 1 ou 2. Donc il y a seulement trois classes d’équivalence dans l’anneau quotient.
• Le théorème précédent dit en gros que pour calculer dans l’anneau quotient, on peut faire les calculs dans l’anneau et ramener ensuite le résultat dans l’anneau quotient par la relation d’équivalence.
• Exemple. Soit à calculer 22. On prend des représentants de chaque classe dans Z, par exemple 17 et 5. On a alors 175=85 dans l’anneau Z. Or 851 et donc 22=1 dans l’anneau quotient.
• Il s’agit en fait de l’anneau des entiers modulo 3.
Cas des corps finis
• La relation d’équivalence est P-QI.• L’idéal est I={ RK[X] | S K[X],
R(X)=S(X).I(X) }.• Deux polynômes P et Q sont dans la même classe
si et seulement si P(X)-Q(X) = S(X).I(X) avec SK[X] donc P(X) = Q(X) mod I(X).
• Pour faire les calculs, on prend donc n’importe quel élément de la classe et on fait les calculs modulo I(X).
Exemple
• Soit CG(27)Z/3Z[X]/X3+2X+1.• L’ensemble des classes d’équivalence est exactement
l’ensemble des restes des polynômes de Z/3Z[X] modulo X3+2X+1.
• Il s’agit donc de tous les polynômes de degré strictement inférieur à 3 dans Z/3Z[X].
• Soit à calculer (X2+X+2).(X2+2X+1).• On prend deux représentants dans l’anneau Z/3Z[X] et on les
multiplie. (X2+X+2).(X2+2X+1) =X4+2X2+2X+2.• On réduit modulo X3+2X+1: X4+2X2+2X+2 = X.(X3+2X+1) –
2X2 –X +2X2+2X+2 = X.(X3+2X+1) + X+2.• Donc (X2+X+2).(X2+2X+1)=X+2.
Cas de la division
• On veut calculer des divisions dans les corps CG(pn).• En fait, on va définir l’inversion.• Soit donc A(X) Z/pZ[X]/I où I est un polynôme
irréductible de Z/pZ[X].• On cherche donc un polynôme B(X) Z/pZ[X]/I avec
A(X).B(X)=1.• Au niveau des équivalents dans Z/pZ[X], çà donne
rA(X).rB(X)=1+S(X).I(X).• On peut résoudre par l’algorithme de Bezout et on
revient à Z/pZ[X]/I par réduction modulo (cf. TP).
Représentation linéaire
• Théorème: CG(pn) est un espace vectoriel de dimension n sur CG(p)Z/pZ.
• Cà veut dire que l’on peut représenter les éléments de CG(pn) comme des n-uplets d’éléments de CG(p).
• X2+X+2(1,1,2)• On parle de représentation linéaire du corps
CG(pn).
Racines de polynômes
• Théorème: Soit P un polynôme irréductible de Z/pZ[Y] de degré égal à n. Alors P est entièrement décomposable dans GF(pn)[Y].
• Exemple: P(Y)=Y3+Y2+2Y+1 est irréductible dans Z/3Z[Y].
• Dans CG(27)Z/3Z[X]/X3+2X+1, P admet 2X2+2X+2, X2+2X et 2X+2 comme racines.
• On vérifie que l’on a bien Y3+Y2+2Y+1 = (Y-2X2-2X-2) . (Y-X2-2X) . (Y-2X-2) dans CG(27)Z/3Z[X]/X3+2X+1.
Groupe multiplicatif
• Théorème: Soit p un nombre premier et n1. Alors (CG(pn)-{0},*) est un groupe. De plus il est monogène i.e. il existe CG(pn)-{0} tel que pour tout CG(pn)-{0}, k entier compris entre 0 et pn-2 tel que =k. On dit que est un générateur du groupe. On a de plus CG(pn)-{0}, pn-
1=1.
Exemple
• Dans CG(27)Z/3Z[X]/X3+2X+1, on a 0, 26=1.
• Si =X, alors est un un générateur de CG(27)-{0}.
• De même X3 est un générateur.
• Par contre X2 n’en est pas un.
Racines primitives
• Définition: Soit I un polynôme à coefficients dans CG(pn) et soit une racine de I. Si est un générateur de CG(pn)-{0}, on dit que est une racine primitive de I.
• Exemple: Dans CG(27)Z/3Z[X]/X3+2X+1, P admet 2X2+2X+2, X2+2X et 2X+2 comme racines. Toutes ses racines sont primitives.
• Y3+Y2+Y+2 admet X2, X2+X+1 et X2+2X+1 comme racines. Aucune n’est primitive.
Nouvelle définition
• Théorème: Soit I un polynôme de degré n, irréductible sur Z/pZ[X]. Alors toutes les racines de I sont primitives. Soit l’une d’entre elles. CG(pn) est le plus petit anneau contenant 0 et et on a un isomorphisme d’anneau avec Z/pZ[X]/I, si on pose f()=X.
Exemple
• Soit I(X)=X3+2X+1. I est irréductible dans Z/3Z[X] et admet au moins une racine primitive dans CG(27).
• Représentation linéaire: quel que soit CG(27), se représente de manière unique par =c22+c1+c0 avec ci{0,1,2}. Grâce à l’isomorphisme, les calculs se font comme précédemment modulo 3 et modulo I.
• On préfère généralement cette définition pour éviter les confusions entre les variables des polynômes sur GF(27)[Y] et Z/3Z[X]/I.
Représentation exponentielle
• Soit I un polynôme de degré n, irréductible sur Z/pZ[X] et une racine primitive de I dans CG(pn).
• Alors pour tout élément non nul de CG(pn), on a = k, avec 0kpn-2.
• k est le logarithme discret de .• Conjecture: le problème du calcul du
logarithme discret est exponentiel.
Multiplication et division
• Soit non nul dans CG(pn), alors pn-
1=1.• Soit 1= k1, alors 0. 1 =0.• Soit 2= k2, alors 1.2= k, avec
k=k1+k2 (mod pn-1).• De plus, 1/2= k’, avec k’=k1-k2 (mod
pn-1).
Logarithme de Zech
• Soit un élément générateur de CG(pn).
• Soit k un entier quelconque tel que k-1, on pose =1+k.
• Alors 0, donc il existe Z(k) tel que =Z(k).
• Z(k) est le logarithme de Zech de k. Il dépend du choix de .
Addition
• Soit un élément générateur de CG(pn).• Soit 1= k1 et 2= k2, alors 1 +2 =
k1+k2=k1(1+k2-k1).• Si k2-k1-1, alors 1 +2 = k1+Z(k2-k1).• Si k2-k1=-1, alors 1 +2 = 0.• On doit calculer des logarithmes discrets
pour calculer la table de Zech on doit se limiter à des petits corps finis.
Table de Zech pour CG(27)
• I(X)=X3+2X+1, racine primitive de I
• Soit à calculer =20+2.=(18+1)2=(1+1/ 8 )2=(1+8 )-6
=Z(8).20=15.20=9
11 4 15 3 6
10 2 16
9 21 1 18 17
1 2 3 4 5
5
10
0
ik
Z(i+k) pour CG(27)
Construction de petits corps finis
• Soit I(X) un polynôme de degré n à coefficients dans CG(p).
• Soit une racine de I(X).
• I(X) est irréductible si et seulement si la suite uk= k pour 0kpn-2 donne pn-1 éléments distincts non nuls.
Construction de CG(16)
• Exemple: CG(16).• I(X)=X4+1 sur CG(2), racine primitive• On calcule récursivement uk=k
• Si I(X) est irréductible, on doit générer 15 éléments distincts (les éléments du groupe multiplicatif).
• On a u0=1, u1=, u2= 2, u3= 3, u4= 4=1.• On ne génère donc que 4 éléments et donc I n’est
pas irréductible (X4+1=(X+1).(X3+X2+X+1)).
Construction de CG(16)
• I(X)=X4+X+1 sur CG(2), racine primitive
1
3
2
+1
2+3+2
3++12+13+
2++13+2+
3+2++13+2+1
3+1
Construction de grands corps finis
• Soit I(X) un polynôme de degré n à coefficients dans CG(p).
• Soit une racine de I(X).• I(X) est irréductible si et seulement si
génère le groupe multiplicatif CG(pn)-{0}.• I(X) est irréductible si et seulement si on a
pn-1 = 1 et (pn-1)/d 1 pour tout diviseur d de pn-1.
Construction de CG(2163)
• I(X)=X163+X7+X6+X3+1 sur CG(2), racine primitive
• On a 2163-1 = 1.• On factorise 2163-1=150287*704161*110211473
*27669118297* 36230454570129675721• On calcule (2163-1)/150287= 159+158+
157+155+152+…+5+3+ 2+1.• On continue avec 704161, etc …• On trouve finalement que I est bien irréductible.
Codes de Reed-Solomon
• Soit CG(2k) un corps de Galois et une racine primitive
• Soit d un entier positif, on pose G(Y)=(Y- i0).(Y- i0+1).(Y- i0+2).(Y- i0+2d-1).
• Soit E={G(Y).A(Y) | ACG(2k)[Y], deg(A)<2k-2d-1}
• Alors deux polynômes distincts de E ont au moins 2d coefficients dans GF(2k) qui sont différents.
• De plus, si PCG(2k)[Y], deg(P)<2k-1, il existe un algorithme (ex: Berlekamp-Massey) qui permet de trouver QCG(2k)[Y], deg(Q)<2k-1, QE tel que les coefficients de Q et P diffèrent au plus de d valeurs dans CG(2k).
Application aux télécoms
• Exemple: CG(256), RS(255,239), G(Y) est de degré 16.• On a 239 octets de données d0, …, d238.• On forme le polynôme D(Y)=d0.Y16+d1.Y17+…+d238.Y254.• On calcule dans GF(256)[Y], le reste R(Y) de D(Y) modulo G(Y).• Le polynôme C(Y)=D(Y)-R(Y) est un mot du code RS(255,239)
et ses 239 coefficients dominants sont exactement les données di.• On transmet ce polynôme sur une ligne bruitée qui peut induire
des erreurs.• A la réception, si au plus d octets sont faux, l’algorithme de
Berlekamp-Massey permet de retrouver C(Y) et donc les données.
Autres applications
• Cryptographie sur courbes elliptiques.• Construction de fonctions fortement non linéaires
pour des fonctions de hachage.• Codes correcteurs: codes BCH, codes de Goppa,
codes à résidus quadratiques.• Construction de géométries projectives pour les
codes LDPC (Low Density Parity Check Codes).• Etc…