Académique Documents
Professionnel Documents
Culture Documents
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
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
www.emse.fr/~dutertre/enseignement.html - 2008 2
Mathématiques autour de la cryptographie
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
1
1 (0)
G’ = k A = 1k Ak, r
(0)
1
k r
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
www.emse.fr/~dutertre/enseignement.html - 2008 4
Mathématiques autour de la cryptographie
En effet
Ak, r
G.Ht = 1k Ak, r
1r
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
x7 + x5 + x3 x5 + 1
x7 + x2
x5 + x3 + x2
x5 +1
a’’’(x) = x3 + x2 + 1
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
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
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
ik-1 … i0 0 … 0
k r
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
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)
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.
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
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.
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
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
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
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)
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).
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.
www.emse.fr/~dutertre/enseignement.html - 2008 22
Mathématiques autour de la cryptographie
Kaa(i)
1
i
-1 / 7
0 7 14
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.
1 (x) x2 x3
www.emse.fr/~dutertre/enseignement.html - 2008 23