Vous êtes sur la page 1sur 23

Mathématiques autour de la cryptographie

Mathématiques autour de la cryptographie.

Index
Codage par division
Codage série
Code cyclique
Code dual
Code linéaire
Corps de Galois
Elément primitif
m – séquence
Matrice génératrice
Matrice de contrôle
Ordre multiplicatif
Polynôme générateur
Polynôme minimal
Polynôme primitif
Représentation polynomiale

www.emse.fr/~dutertre/enseignement.html - 2008 1
Mathématiques autour de la cryptographie

Introduction aux codes correcteurs – Pierre Csillag.

Codes linéaires.

Définitions.
 Les codes linéaires sont des codes où les bits du mot de code dépendent linéairement
(selon xor et and) des bits d’information.
mot d’information i = (i1, i2, … , ik) ij ∈ B = {0, 1}
mot de code c = (c1, c2, … , cn) cj ∈ B
On notera le code C (n, k)
n = longueur du mot de code (en bits)
k = nombre de bits d’information
r = nombre de bits de contrôle
on a n=k+r

 Sous espace vectoriel.


Avec k bits, on peut former 2k mots différents, lesquels constituent un espace vectoriel
de dimension k, soit Bk.
Dans un code linéaire C (n, k), les bits de contrôle sont liés aux bits d’information, il y
a donc une bijection entre les mots d’information et les mots du code.
Les relations de liaison sont linéaires, il y a donc isomorphisme entre l’espace
vectoriel Bk et les mots du code C (n, k).
Les mots du code appartiennent à la fois à Bn (comme mot de longueur n) et à un
espace vectoriel de dimension k (par isomorphisme entre C (n, k) et Bk).
Les mots d’un code linéaire forment un sous espace vectoriel
de dimension k de Bn .

 Théorème fondamental des codes linéaires.


La distance minimale d’un code est la plus petite distance que l’on peut trouver entre
des mots de code différents pris deux à deux.
c’, c’’ ∈ C (n, k) La distance entre c’ et c’’ est le poids de c’ ⊕ c’’. Or tous les
éléments de C forment un sous espace vectoriel donc c’’’ = c’ ⊕ c’’ ∈ C

www.emse.fr/~dutertre/enseignement.html - 2008 2
Mathématiques autour de la cryptographie

La distance minimale d’un code linéaire est égale


au poids minimal du code.

Matrice génératrice.
 Définition.
k mots linéairement indépendants forment une base pour le sous espace (de dim. k).
On appelle matrice génératrice G du code une matrice k, n dont les k lignes sont les k
mots de la base.
N’importe quel mot du code sera une combinaison linéaire des mots de base, donc on
pourra obtenir un mot de code correspondant à un mot d’information par le produit
matriciel
c = i.G
n

*
n = k n

 Forme canonique réduite : G’


(opérations élémentaires sur les lignes)

1
1 (0)
G’ = k A = 1k Ak, r
(0)
1

k r

(forme réduite à gauche)


Les lignes de la nouvelle matrice génératrice G’ forment la base canonique du sous
espace vectoriel des mots du code. Elle engendre un code systématique, car dans le
produit c = i.G’ la sous matrice unitaire reproduira les bits d’information.

www.emse.fr/~dutertre/enseignement.html - 2008 3
Mathématiques autour de la cryptographie

Contrôle de parité.
Idée : on peut caractériser l’appartenance d’un vecteur libre A à un plan P, par le fait
qu’il est orthogonal à un vecteur B porté par une droite D. Ici, les vecteurs de P et ceux
de D constituent deux sous espaces orthogonaux de notre espace habituel à trois
dimensions. (puis généralisation à des espaces abstraits , sous espaces vectoriels de
Bn).
 Sous espace orthogonal.
Soit En un espace vectoriel à n dimensions sur {0, 1}
a = (a1, a2, … , an ) et b = (b1, b2, … , bn ) ∈ En
produit scalaire :
c = a.b = a1.b1 ⊕ a2.b2 ⊕ … ⊕ an.bn
Définition de l’orthogonalité :
a ⊥ b ⇔ a.b = 0
! La notion d’orthogonalité a ces propriétés légèrement différentes de celles auxquelles nous
sommes habituées ; étant donné que En est défini sur un corps fini, un vecteur non nul peut
être orthogonal à lui-même.
Soient Ek et Er deux sous espaces de En. On dit que Er est le sous espace orthogonal de
Ek, si
- k+r= n
- tous les vecteurs de Ek sont orthogonaux à tous les vecteurs de Er

 Matrice de contrôle.
Soit un code C (n, k) défini par une matrice génératrice G.
D code dual de C défini sur le sous espace orthogonal à l’ensemble des mots du code C.
Soit H la matrice génératrice de ce code dual (r, n)
G.Ht = 0
Ht transposée de la matrice H
H est une matrice de contrôle (de parité) pour le code C

G = 1k Ak, r alors H = Ak, rt 1r

www.emse.fr/~dutertre/enseignement.html - 2008 4
Mathématiques autour de la cryptographie

En effet

Ak, r

G.Ht = 1k Ak, r
1r

G.Ht = Ak, r + Ak, r = 0

Codes cycliques.

Définitions.
 Un code cyclique est un code linéaire C (n, k) tel que toute permutation circulaire sur
les symboles d’un mot de code donne encore un mot du code :
[cn-1, cn-2, … , c0] ∈ C ⇒ [cn-2, … , c0, cn-1] ∈ C

 Représentation polynomiale.
On peut considérer les symboles d’un mot comme les coefficients d’un polynôme
c = [cn-1, cn-2, … , c0] ⇔ c(x) = cn-1xn-1 + … + c1x + c0
c = [110101] ⇔ c(x) = x5 + x4 + x2 + 1
addition modulo 2 i.e. xor
La correspondance entre le mot et sa représentation polynomiale est une bijection.

 Permutation circulaire.
• Une position vers la gauche :
[cn-1, cn-2, … , c0] ⇔ cn-1xn-1 + … + c1x + c0
⇓ ⇓
[cn-2, … , c0, cn-1] ⇔ cn-2xn-1 + … + c0x + cn-1
Equivalent à prendre le produit x.c(x) modulo xn – 1 (ou bien modulo xn + 1)
• i positions vers la gauche :
cad effectuer i fois le décalage précédent vers la gauche
a = [10101] n=5

www.emse.fr/~dutertre/enseignement.html - 2008 5
Mathématiques autour de la cryptographie

pour i = 3 permutations circulaires


a’’’ = [01101]
a’’’= x3(x4 + x2 + 1) mod(x5 + 1)

x7 + x5 + x3 x5 + 1
x7 + x2
x5 + x3 + x2
x5 +1
a’’’(x) = x3 + x2 + 1

Une autre méthode consiste à exploiter le fait que x5 = 1


a’’’= x5(x2 + 1) + x3 = x3 + x2 + 1 a’’’ = [01101]

Polynôme générateur.
Tout code linéaire C contient un mot non nul, dont le polynôme est de degré inférieur aux
degrés des polynômes associés à tous les autres mots non nuls du code.
Cet élément est unique, car s’il y en avait deux, leur somme serait de degré inférieur.
Examinons :
1
1 (0)
G = k A
(0)
1

k r

Les lignes de G forment la base canonique de sous espace vectoriel des mots de code.
Le polynôme de degré le plus faible de cette base correspond à la ligne inférieure de la
matrice. Ce polynôme de degré r est le polynôme de plus faible degré de tous mots du code.
Dans le cas d’un code cyclique, on appelle ce polynôme g(x) le polynôme générateur du code.
g(x) = grxr + gr-1xr-1 + … + g1x + g0
avec gr = 1 et g0 = 1 (sinon en factorisant par x on obtiendrait un poly. de d° inf.)
soit g(x) = xr + gr-1xr-1 + … + g1x + 1

 Matrice génératrice.
Le code étant cyclique, les permutations circulaires sur les bits du mot g,
correspondant au polynôme générateur g(x), sont aussi des mots du code. Ainsi, les
polynômes g(x), x.g(x), x2g(x), … , xk-1g(x) correspondent à k mots linéairement
indépendants de C, donc forment une base pour le sous espace des mots de C. Par suite,

www.emse.fr/~dutertre/enseignement.html - 2008 6
Mathématiques autour de la cryptographie

tout mot de code est une combinaison linéaire de g(x), x.g(x), x2g(x), …, xk-1g(x) ,
donc est le produit d’un polynôme quelconque et de g(x).
Autrement dit : tout mot d’un code cyclique est multiple de g(x).
xk-1g(x) 1 gr-1 … g1 1
xk-2g(x) (0) (0)
G = = …
(0) x.g(x) (0)
g(x) 1 gr-1 … g1 1

 Le code cyclique est un idéal.


D’après la nature de la matrice génératrice précédemment trouvée, un mot de code est
une combinaison linéaire des polynômes : g(x), x.g(x), x2g(x), … , xk-1g(x)
Donc un mot de code est le produit de g(x) par un polynôme quelconque modulo
xn + 1 ; autrement dit c’est un multiple de g(x).

Rappel : un anneau est un ensemble A muni de deux lois internes :


• dont la première (loi dite additive) structure A en un groupe abélien
(commutatif),
• et la seconde (loi dite multiplicative) est associative, et distributive par
rapport à la première.
(On peut dire qu’un anneau est un ensemble où les opérations de type addition,
soustraction et multiplication fonctionnent correctement).

Un idéal d’un anneau A est un sous ensemble I de A tel que


∀a ∈ I et ∀x ∈ A ⇒ a.x ∈ I
Soit K[x] l’ensemble des polynômes défini sur un corps K (poly. dont les coeffs. sont les elts.
d'un corps K). Nous savons que K[x] est structuré en anneau par les lois d’addition et de
multiplication des polynômes. On peut facilement vérifier que l’ensemble K[x] / (xn + 1) des
restes de la division des polynômes par xn + 1 est aussi un anneau, où la multiplication des
polynômes se sous-entend modulo xn + 1.
Dans un code cyclique, un mot de code est un multiple du polynôme g(x), donc le code
cyclique est un idéal de K[x] / (xn + 1). Et réciproquement, tout idéal de K[x] / (xn + 1) est un
code cyclique.
Lorsque tous les éléments d’un idéal sont des multiples d’un même élément, ont dit que
l’idéal est principal. Dans notre cas, tous les idéaux de l’anneau K[x] / (xn + 1) sont

www.emse.fr/~dutertre/enseignement.html - 2008 7
Mathématiques autour de la cryptographie

principaux (on dit que c’est un anneau principal), donc tous les codes cycliques sont des
idéaux principaux.

Contrôle de parité.
 Propriété caractéristique de g(x).
Exprimons la division euclidienne de xn + 1 par le polynôme générateur g(x) :
xn + 1 = g(x).h(x) + R(x) d°R(x) < r d° de g(x)
n
g(x).h(x) + R(x) = 0 mod(x + 1)
R(x) = g(x).h(x) mod(xn + 1)
le membre de droite est un multiple de g(x), donc c’est un mot du code.
Le membre de gauche ne peut être un mot non nul du code, car d°R(x) < r ; or, le mot
de code non nul du plus faible d° est précisément g(x) dont le degré est r.
Donc R(x) est fatalement nul.
soit xn + 1 = g(x).h(x)
g(x) divise xn + 1 …..
Une condition nécessaire et suffisante pour qu’un polynôme g(x) soit générateur (de d°
minimal) d’un code cyclique est qu’il divise xn + 1.

 Code dual.
La relation xn + 1 = g(x).h(x) peut aussi s’écrire
g(x).h(x) = 0 mod(xn + 1)
ce qui rappel G.Ht = 0
Q ? Y a-t-il une correspondance simple entre le polynôme h(x) et une matrice de
contrôle H ?
Soit le code cyclique C (n, k) engendré par le polynôme g(x), et un mot c de ce code.
Le polynôme c(x) est un multiple de g(x) :
c(x) = f(x).g(x)
comme g(x) divise xn + 1 on a :
g(x).h(x) = 0 mod(xn + 1)
c(x).h(x) = f(x).g(x).h(x) = 0 mod(xn + 1)
Donc le polynôme h(x) continue à jouer un rôle analogue à H
h(x).c(x) = 0 ⇔ H.ct = 0
…………..
… on obtient la matrice de contrôle H :

www.emse.fr/~dutertre/enseignement.html - 2008 8
Mathématiques autour de la cryptographie

h0 h1 … hk-1 hk
(0)
H = …
(0)
h0 h1 … hk-1 hk

En résumé, on obtient une matrice génératrice du code dual d’un code cyclique, à
partir du polynôme h(x) pris comme polynôme générateur, mais dans lequel on a
inversé le sens des coefficients.
Exemple :
A partir de la décomposition en facteurs irréductibles de x7 + 1 (n = 7, k = 4) :
x7 + 1 = (x3 + x2 + 1)(x3 + x + 1)(x + 1)
en prenant g(x) = x3 + x2 + 1
alors
h(x) = (x3 + x + 1)(x + 1) = x4 + x3 + x2 + 1
d’où G et H :

1 1 0 1 0 0 0 h(x) = 1+x2+x3+x4

0 1 1 0 1 0 0 1 0 1 1 1 0 0
G =
0 0 1 1 0 1 0 H = 0 1 0 1 1 1 0
0 0 0 1 1 0 1 0 0 1 0 1 1 1
g(x) = x3+x2+1

Codage Série.
 Codage par multiplication.
Tout mot d’un code cyclique est multiple du polynôme générateur :
∀ c(x)∈ C (n, k) c(x) = f(x).g(x) mod(xn + 1)
avec f(x) polynôme qcq ; en prenant le poly. correspondant au mot d’information i(x) :
c(x) = i(x).g(x) mod(xn + 1)
Méthode simple de réalisation matérielle du codage : circuit multiplieur de polynômes
(l’un fixe le multiplieur, l’autre variable le multiplicande).
Les coefficients du produit de 2 polynômes forment le produit de convolution discret
des coefficients des 2 polynômes.
Exemple avec (x3 + x2 + x).(x3 + x + 1) :

www.emse.fr/~dutertre/enseignement.html - 2008 9
Mathématiques autour de la cryptographie

x3 + x2 + x + 0 1110
1 + x + 0 + x3 1101
0 0 0
x3 + x2 + x + 0 1110
1 + x + 0 + x3 1101
x+0=x 10 1
3 2 1110
x +x +x+0
1 + x + 0 + x3 1101
x2 + x2 + 0 = 0 110 0
3 2 1110
x +x +x+0
1 + x + 0 + x3 1101
x3 + x3 + 0 + 0 = 0 1100 0
x3 + x2 + x + 0 1110
1 + x + 0 + x3 1101
x4 + 0 + x4 = 0 101 0
x3 + x2 + x + 0 1110
1 + x + 0 + x3 1101
0 + x5 = x5 01 1
x3 + x2 + x + 0 1110
1 + x + 0 + x3 1101
x6 1 1

x6 + x5 + x ou encore 1100010

D’où la réalisation matérielle suivante :

1100010
(x6 + x5 + x)
(1 + x + x3)
1110
(x3 + x2 + x)

Le multiplicande est entré dans un registre à décalage bit de poids faible en tête ; le
multiplieur est câblé physiquement (le 1 est l’élément neutre de la multiplication, AND
logique) ; les bits sont additionnées modulo 2 (xor). Les bits du produit sortent (en série) avec
les bits de poids faible en tête. Le code obtenu n’est pas systématique.
 Codage par division.
Permet d’obtenir un code systématique.
i(x) = ik-1xk-1 + … + i1x1 + i0x0
le mot peut s’écrire

0 … 0 ik-1 … i0

r k

www.emse.fr/~dutertre/enseignement.html - 2008 10
Mathématiques autour de la cryptographie

Multiplions i(x) par xr :


xr.i(x) = ik-1xn-1 + … + i1xr+1 + i0xr

ik-1 … i0 0 … 0

k r

Divisons maintenant xr.i(x) par g(x) (dont le d° est r)


xr.i(x) = g(x).Q(x) + R(x) avec d°R(x) < r
R(x) peut s’écrire

0 … 0 Rr-1 … R0

k r

ou encore, le mot
xr.i(x) + R(x) = g(x).Q(x)
étant un multiple de g(x), est un mot du code.
Le mot correspondant se compose de 2 sous mots disjoints :

ik-1 … i0 Rr-1 … R0

k r

En résumé, on peut coder (code cyclique, sous forme systématique) un mot


d’information ,
1. en le multipliant par xr, puis
2. en divisant le résultat par g(x). Le reste de la division fournit les bits de
contrôle.

 Circuit diviseur (de polynômes).


Construction du circuit réalisant la division de x7 + x5 + x + 1 par x3 + x + 1 :

www.emse.fr/~dutertre/enseignement.html - 2008 11
Mathématiques autour de la cryptographie

Q(x)

1 0 1 0 0 0 1 1 1 0 1 1
1 0 1 1
1 0 0 1 0 Q(x)
0 0 1 0
x7 + x5 +x+1 x3 + x + 1 1 0 1 1
x7 + x5 + x4 0 1 0 0
x4 + 0 + 0 + x + 0
4
x +x+1 1 0 1 1
x4 + x2 + x 1 0 01
2
x +1 1 0 1 1
0 1 0 1
1 0 1 1

1 0 1 R(x)

On voit les 4 bits du diviseur défiler de la gauche vers la droite. La soustraction


(= addition) modulo 2 n’est effectuée que si le bit au dessus du bit de gauche du
diviseur (bit encadré) est à 1.
Par ailleurs, le MSB du diviseur vaut toujours 1 ; donc le résultat de l’addition des bits
le plus à gauche vaut toujours 0. On peut donc "sous entendre" le MSB du diviseur et
"anticiper" les opérations : lorsque le bit encadré vaut 1, l’addition se fera comme si
les 3 bits du diviseur étaient décalés d’un cran vers la gauche ; et si le bit encadré vaut
0, on se contentera de recopier les bits du résultat précédent, sans additionner les bits
du diviseur :
1 0 1 0 0 0 1 1 1 0 1 1
0 1 1
1 0 0 1 0
0 0 1 0
0 1 1
0 1 0 0
0 1 1
1 0 01
0 1 1
0 1 0 1
0 1 1

1 0 1

Ici, le dividende était fixe, et c’est le diviseur que l’on faisait défiler. Il est plus
pratique de fixer le diviseur et de faire défiler le dividende, lequel sera variable :

www.emse.fr/~dutertre/enseignement.html - 2008 12
Mathématiques autour de la cryptographie

(1) 0 1 1 diviseur
0 0 0 1 0 1 0 0 0 1 1 dividende
0 0 1 0 1 0 0 0 1 1
0 1 0 1 0 0 0 1 1
1 0 1 0 0 0 1 1
0 0 1 0 0 1 1
0 1 0 0 1 1
1 0 0 1 1
0 1 0 1
1 0 1 reste
quotient

Dans ce cas de figure, lorsqu’un 1 arrive "en butée" à gauche, l’addition des bits du
diviseur se fera de nouveau d’une manière anticipée ; et lorsqu’un 0 se trouve à
gauche, le mot ne subira qu’un simple décalage.
On pourra donc matérialiser cette opération par un registre à décalage, dans lequel,
chaque fois qu’il y a un 1 dans le quotient (cad en sortie du registre), le dividende sera
complémenté (a xor 1 = not(a)) sur les bits correspondant aux bits non nuls du
diviseur :
(1) 0 1 1 (x3) + x + 1

x2 x 1

1 x x2

www.emse.fr/~dutertre/enseignement.html - 2008 13
Mathématiques autour de la cryptographie

Corps de Galois.

Corps finis.
 Rappels / Définitions.
• Un anneau est un ensemble A muni de 2 lois internes,
- la loi additive structure A en un groupe abélien (commutatif),
- la loi multiplicative est associative et distributive par rapport à la
première.
• Un corps (field) est un anneau K où tout élément, sauf l’élément neutre de la
loi additive, possède un inverse par rapport à la loi multiplicative. (Un corps est
un ensemble où les 4 opérations : addition, soustraction, multiplication et
division fonctionnent correctement).
• Un corps de Galois (un corps fini) est un corps dont le cardinal est fini.

Théorèmes sur les corps finis ;


- tout corps fini est commutatif.
- le cardinal de tout corps fini est un nombre primaire pm (puissance
entière d’un nombre premier).
- Tous les corps finis de même cardinal sont isomorphes.

 Corps de Galois à p éléments (p premier).


Un corps de Galois à p éléments est un corps isomorphe à Z/pZ, ensemble des classes
résiduelles modulo p (p étant un nombre premier).
Notation CG(p), GF(p), Fp

Etude de CG(3) sur l’exemple de Z/3Z


+ 0 1 2 × 0 1 2
0 0 1 2 0 0 0 0
1 1 2 0 1 0 1 2
2 2 0 1 2 0 2 1

Chaque élément non nul à un inverse pour la multiplication : les éléments non nuls
forment un sous-groupe multiplicatif.

www.emse.fr/~dutertre/enseignement.html - 2008 14
Mathématiques autour de la cryptographie

Mise en évidence de la nécessité d’avoir un nombre p premier avec Z/4Z


+ 0 1 2 3 × 0 1 2 3
0 0 1 2 3 0 0 0 0 0
1 1 2 3 0 1 0 1 2 3
2 2 3 0 1 2 0 2 0 2
3 3 0 1 2 3 0 3 2 1

2 n’a pas d’inverse pour la multiplication (c’est un diviseur de zéro) : Z/4Z n’est pas
un corps c’est seulement un anneau.

Retour à CG(3) représenté par Z/3Z :


Toutes les puissances de 1 valent 1. 11 = 1 etc.
21 = 2 22 = 1 23 = 2 24 = 1 …
Les puissances successives de 2 décrivent tous les éléments du sous-groupe
multiplicatif.
Le sous-groupe est cyclique et 2 en est un générateur.
On appelle ordre multiplicatif µ d’un élément a de CG(p) le plus petit entier positif
tel que aµ = 1
ici µ(1) = 1
µ(2) = 2
On appel élément primitif un élément de CG(p) dont l’ordre multiplicatif est p – 1.
Donc un élément primitif est un générateur du sous-groupe cyclique.

Le sous- groupe multiplicatif d’un corps de Galois est toujours cyclique.

Exemple sur Z/7Z :


× 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6
2 0 2 4 6 1 3 5
3 0 3 6 2 4 1 4
4 0 4 1 5 2 6 3
5 0 5 3 1 6 4 2
6 0 6 5 4 3 2 1

Calculons les puissances successives de chacun des éléments :


1 est l’élément neutre de la multiplication 11 = 1 12 = 1 … µ(1) = 1
21 = 2 22 = 4 23 = 1 µ(2) = 3

www.emse.fr/~dutertre/enseignement.html - 2008 15
Mathématiques autour de la cryptographie

31 = 3 32 = 2 33 = 6 34 = 4 35 = 5 36 = 1 µ(3) = 6
41 = 4 42 = 2 43 = 1 µ(4) = 3
51 = 5 52 = 4 53 = 6 54 = 2 55 = 4 56 = 1 µ(5) = 6
61 = 6 62 = 1 µ(6) = 2
Les puissances successives décrivent des cycles : le sous groupe est bien cyclique. Les
ordres multiplicatifs sont 1, 2, 3 et 6 donc des diviseurs de 6 (d’une manière générale,
l’ordre multiplicatif de tout élément du groupe cyclique divise p – 1).
Deux éléments, 3 et 5, sont primitifs : leur ordre est 6.

En figurant les éléments sur un cercle, disposés dans l’ordre des puissances
successives d’un élément primitif (par exemple 3), on met en évidence un
isomorphisme de groupe bien éloquent :
2 3

1
6

5
4

En effet, la multiplication par 3 correspond exactement à la rotation de 60°, celle par 2


à la rotation de 120° etc. et les puissances successives des éléments deviennent :

2 3 2

1 1 1
6 6

5
4 4

2 2 3

1 1
6

5
4 4

Un théorème de Fermat (le petit théorème de Fermat) devient visible grâce à cette
représentation :
∀ a ∈ CG(p) ap-1 = 1

www.emse.fr/~dutertre/enseignement.html - 2008 16
Mathématiques autour de la cryptographie

 Corps de Galois à pm éléments.


Un corps fini à pm éléments CG(pm) est isomorphe au corps des polynômes (à
coefficients dans CG(p)) modulo un polynôme (irréductible dans CG(p)) de degré m.
CG(p) est le corps de base (ou sous corps premier, ground field) pour CG(pm).

Exemple : construire CG(8) (=CG(23))


D’après la définition il faut trouver un polynôme de troisième degré, irréductible sur
CG(2).
CG(2) n’étant autre que l’ensemble {0, 1} muni de l’addition et de la multiplication
modulo 2
+ 0 1 × 0 1
0 0 1 0 0 0
1 1 0 1 0 1

Le polynôme x3 + x + 1 est irréductible dans CG(2), car s’il avait des facteurs il en
aurait obligatoirement un du 1er degré. Or les deux polynômes du 1er degré étant x + 1
et x, au moins l’une des deux racines, 0 ou 1, devrait être racine de x3 + x + 1.
Puisqu’il n’en est rien, x3 + x + 1 est irréductible dans CG(2).
Donc, CG(23) peut être considéré comme l’ensemble des classes résiduelles des
polynômes sur CG(2) modulo x3 + x + 1.
Autrement dit, l’ensemble des éléments de CG(23) est l’ensemble des polynômes sur
CG(2) dont le degré est inférieur à 3.
représentation polynomiale vectorielle
0 000
1 001
x 010
x+1 011
x2 100
x2 +1 101
x2 + x 110
2
x +x+1 111
3
Nous retrouvons les éléments de B , ensemble des mots de 3 bits, dont nous
connaissons déjà la structure d’espace vectoriel, donc la structure de groupe additif.
Mais pour l’étude du sous-groupe multiplicatif, il est commode d’introduire la notion
de corps d’extension.

www.emse.fr/~dutertre/enseignement.html - 2008 17
Mathématiques autour de la cryptographie

Soit un polynôme irréductible dans un corps K. En adjoignant à K une racine du


polynôme (et ses puissances successives), on obtient un nouveau corps (sur-corps de
K) appelé corps d’extension de K. Dans ce nouveau corps, le polynôme n’est plus
irréductible.

Exemple : nous avons déjà vu que le polynôme x3 + x + 1 était irréductible dans


CG(2).
Soit α une racine de x3 + x + 1. Alors on a
α3 + α + 1 = 0 ou encore α3 = α + 1
Munis de cette relation, cherchons les puissances successives de α, exprimées dans les
deux représentations :
1 = 1 001
α = α 010
α2 = α2 100
α3 = α+1 011
α4 = α2 + α 110
α5 = α2 + α + 1 111
α6 = α2 +1 101
α7 = 1 001
α est un élément primitif d’ordre pm – 1 = 7 ; il est un générateur pour le sous-groupe
cyclique commutatif (7 étant un nombre premier, tous les éléments non nuls de CG(8)
sont primitifs).

α est racine de x3 + x + 1. Les autres racines de ce polynôme sont elles éléments de


CG(8) ?
0 0+0+1=1
1 1 + 1 + 1 =1
α α3 + α + 1 = 0 α est racine
α2 α6 + α2 + 1 = … = 0 α2 est racine
α3 α9 + α3 + 1 = … = α4
α4 α12 + α4 + 1 = … = 0 α4 est racine
α5 … = α2

www.emse.fr/~dutertre/enseignement.html - 2008 18
Mathématiques autour de la cryptographie

α6 …=α
D’où la décomposition de x3 + x + 1 en facteurs irréductibles sur CG(8) :
x3 + x + 1 = (x + α)(x + α2)(x + α4)

 Polynôme minimal d’un élément.


• L’ordre multiplicatif µ d’un élément a de CG(pm) est le plus petit µ, tel que
ai + µ = ai ou encore aµ = 1
• α est un élément primitif de CG(pm), si µ(α) = pm – 1
Le polynôme minimal m(x) d’un élément β de CG(pm) est le polynôme (non nul)
m(x) de plus faible degré dont β est racine : m(β) = 0
m(x) est forcement irréductible, sinon il ne serait pas de degré minimal.
Dans notre exemple de CG(23), le polynôme minimal de chaque élément est :
élément polynôme minimal
0 x
1 x+1
α x3 + x + 1
α2 x3 + x + 1
α3 x3 + x2 + 1
α4 x3 + x + 1
α5 x3 + x2 + 1
α6 x3 + x2 + 1
Récapitulons maintenant les éléments de CG(23) définis par x3 + x + 1, dans les 3
représentations (nous appellerons la 1ère la représentation polaire) :
polaire représentation polynomiale vectorielle
0 0 000
1 1 001
α α 010
α2 α2 100
α3 α+1 011
α4 α2 + α 110
α5 α2 + α + 1 111
α6 α2 +1 101

www.emse.fr/~dutertre/enseignement.html - 2008 19
Mathématiques autour de la cryptographie

Nous voyons que les éléments de CG(2), 0 et 1 sont éléments de CG(23), plus
généralement, CG(p) est toujours sous-groupe de CG(pm).

Dans notre exemple on a α7 = 1, donc on peut considérer α comme racine septième de


l’unité dans CG(p3). Plus généralement, on peut considérer tout élément primitif de
CG(pm) comme racine (pm – 1)ième de l’unité dans CG(pm).

Un théorème important affirme, que pour tout éléments a et b de CG(pm), on a


(a + b)p = ap + bp
Cela se vérifie aisément dans le cas binaire ; dans tout corps fini CG(2m), on a
notamment (x + 1)2 = x2 + 1 à cause du double produit qui est nul.
La conséquence de ce fait est, que si β est racine d’un polynôme minimal, β2 l’est
aussi, ainsi que β4, β8, β16, … , et le nombre de racines ainsi obtenues ne risque pas de
dépasser le degré du polynôme, car les exposants de β doivent se comprendre modulo
2m. Par suite, le polynôme minimal de l’élément β est aussi celui des éléments β2, β4,
β8, β16, …
Les éléments qui admettent le même polynôme minimal sont dits conjugués.
Dans notre exemple, le polynôme
minimal de l’élément 1 est m0(x) = x + 1
celui de α, α2 et de α4 est m1(x) = m2(x) = m4(x) = x3 + x + 1
celui de α3, α6 et de α12 est
(cad α3, α6 et de α5) m3(x) = m6(x) = m5(x) = x3 + x2 + 1
Donc α, α2 et α4 sont conjugués ; ainsi que α3, α6 et α5.

On peut vérifier que le produit de tous les polynômes minimum distincts, de m0(x) à
−1
+ 1 . Par exemple, pour m = 3 :
m
m2m-1-1(x) redonne x 2
x7 + 1 = m0(x)m1(x)m3(x) = (x +1)(x3 + x + 1)(x3 + x2 + 1)
6
= ∏ (x − α i )
i =0

www.emse.fr/~dutertre/enseignement.html - 2008 20
Mathématiques autour de la cryptographie

 Polynômes primitifs.
Un polynôme primitif est un polynôme minimal, dont au moins une racine est
primitive (c'est-à-dire élément primitif d’un corps de Galois).
Dans notre exemple, x3 + x + 1 et x3 + x2 + 1 sont primitifs, x ne l’est pas.
On démontre que pour tous les degrés, il existe au moins un polynôme primitif.

m – séquence.

Une application de la théorie des corps de Galois et des circuits diviseurs par un
polynôme : les générateurs de m - séquence (séquence à longueur maximal,
maximum length sequence, pseudorandom number genrators).
Reprenons la structure du circuit diviseur par le polynôme h(x) = x3 + x + 1 :

1 x x2

Initialisons les bascules à l’état 1 0 0 (de la gauche vers la droite), et étudions les états
successifs à chaque impulsion de l’horloge :
100
010
001
110
011
111
101
100
Nous voyons qu’après sept coups d’horloge le système revient à son état initial : le
dispositif décrit un cycle de 7 états. De plus les sept mots obtenus sont, dans leur
représentation vectorielle, les 7 puissances successives de a, racine du polynôme
primitif h(x) = x3 + x + 1 engendrant ainsi le groupe multiplicatif de CG(23).

www.emse.fr/~dutertre/enseignement.html - 2008 21
Mathématiques autour de la cryptographie

La bascule de gauche produit la séquence [1001011], idem pour les 2 autres avec un
décalage.
La période de cette séquence (7 bits) est liée au fait que le polynôme
h(x) = x3 + x + 1 est primitif, donc il engendre les 23 – 1 = 7 éléments de CG(23). De la
même manière, un circuit diviseur, construit à partir de n’importe quelpolynôme
primitif de degré m à coefficients binaires engendrera une séquence de longueur 2m -1.
Tout polynôme non primitif, du même degré, conduirait à une séquence plus courte,
d’où le nom de séquence à longueur maximal.

Les séquences ainsi générées ont des propriétés statistiques très intéressantes. Elles
sont parfaitement déterministes ; mais beaucoup des propriétés statistiques des signaux
aléatoires y sont vérifiées  signal pseudo - aléatoire.

Pour caractériser un signal aléatoire : moyenne, fonction d’autocorrélation. Ces deux


grandeurs s’étudient plus facilement sur un signal centré, donc nous allons sous
entendre les valeurs -1 et +1 pour les valeurs logiques binaires 0 et 1.
Une m-séquence comporte 2m-1 – 1 zéros et 2m-1 uns, puisque le mot [0 … 00] ne fait
pas partis du groupe cyclique. Pour des m importants, la différence entre le nombre
des uns et celui des zéros devient négligeable. La moyenne tend donc vers zéro
lorsque m augmente (avec la représentation -1 et +1).

La fonction d’auto corrélation pour un signal discret x(k) est :


1 n −1
K xx (i ) = lim n→∞ ∑ x( j ) x(i + j )
n j =0
ce qui devient dans le cas d’un signal binaire a(k) :
1 n −1
K aa (i ) = lim n→∞ ∑ (− 1)a j +ai + j
n j =0
Si l’on désigne par a(k) le kième terme de la m-séquence, alors la fonction
d’autocorrélation Kaa(x) vaut 1 lorsque k est égal à un multiple de 2m – 1 (c’est la
période du signal), et on peut montrer que toute les autres valeurs de k
−1
Kaa(i) =
2 −1
m

Dans l’exemple précédent :

www.emse.fr/~dutertre/enseignement.html - 2008 22
Mathématiques autour de la cryptographie

Kaa(i)
1

i
-1 / 7
0 7 14

Lorsque m augmente, la fonction d’autocorrélation des m-séquences tend vers celle


d’un bruit blanc (~dirac).

Variante du circuit : registre à décalage, dont les sorties sont, ou ne sont pas, reliées
aux entrées d’un xor selon, les coefficients du polynôme réciproque de h(x). La sortie
du xor est rebouclée à l’entrée du registre à décalage.

Pour l’exemple précédent le polynôme réciproque est xmh(1/x) = x3 + x2 + 1 :

1 (x) x2 x3

www.emse.fr/~dutertre/enseignement.html - 2008 23

Vous aimerez peut-être aussi