• Aucun résultat trouvé

2.2.1 Vocabulaire pour débuter

Soit Fq un corps ni à q éléments, où q est une puissance d'un nombre premier p.

Dénition 2.1 (Code linéaire) On dit que C est un code linéaire de paramètres [n, k]q si et seulement si C est un sous-espace vectoriel de Fn

q de dimension k. En d'autres termes, un code linéaire est un ensemble de vecteurs de longueur n, qui est stable par addition et par multiplication par un scalaire, dont une base contient k vecteurs (indépendants). (Un scalaire est un élément de l'ensemble auquel appartiennent les composantes de la matrice.)

Dénition 2.2 (Mot de code) On appelle mot de code un élément de C . En d'autres termes, c'est un vecteur de longueur n appartenant au code C , c'est donc une combinaison linéaire à coecients dans Fq des éléments d'une base de cet en-semble.

Dénition 2.3 (Espace ambiant) On appelle espace ambiant l'espace-vectoriel Fn q. En d'autres termes, c'est l'espace de tous les mots de longueur n et à coecients dans Fq.

Proposition 2.1 Le cardinal de C est qk, où k est sa dimension en tant que Fq -espace-vectoriel.

2.2.2 Rappels d'algèbre linéaire en dimension nie

Dénition 2.4 (Rang d'une matrice) Le rang d'une matrice quelconque G ∈ Mk,n(Fq), noté rg(G), est égal au plus grand entier s tel que l'on puisse extraire une matrice carrée de taille s × s de G qui soit inversible.

Remarque 2.1 Soit G ∈ Mk,n(Fq), avec k 6 n. Alors : 0 6 rg(G) 6 k.

De manière plus générale, le rang d'une matrice a pour borne supérieure le minimum entre le nombre de lignes et le nombre de colonnes de cette matrice.

Propriété 2.1 Soient A et B des matrices de même format.

2.2. CODES LINÉAIRES TR 2. Si B est une matrice carrée inversible, alors rg(A · B) = rg(A ).

Dénition 2.5 (Opérations élémentaires sur une matrice) Sur les lignes (res-pectivement sur les colonnes) :

1. La suppression d'une ligne (respectivement d'une colonne) ne contenant que des 0.

2. La multiplication de tous les éléments d'une ligne (respectivement une co-lonne) par un scalaire non nul.

3. L'ajout à une ligne (respectivement une colonne) d'une combinaison linéaire des autres lignes (respectivement colonnes).

4. L'échange de deux lignes (respectivement colonnes).

Dénition 2.6 (Matrices équivalentes) On dit que deux matrices sont équiva-lentes si et seulement si on peut passer de l'une à l'autre via des opérations élémen-taires.

Théorème 2.1 Deux matrices équivalentes ont même rang.

Théorème 2.2 (de la dimension) Soit F une famille d'éléments de dimension n d'un ensemble ni E . Les propriétés suivantes sont équivalentes :

1. F est une base de E .

2. F est une famille libre et contient n éléments.

3. F est une famille génératrice de E et contient n éléments. 4. F est une famille libre et génératrice de E .

Dénition 2.7 (Rang d'une famille de vecteurs) Soit E un espace-vectoriel et F = {E1, E2, . . . , En} une famille d'éléments de E . On appelle rang de F , noté rg(F ), la dimension du sous-espace-vectoriel de E engendré par F .

2.2.3 Matrice génératrice, encodage

Dénition 2.8 (Matrice génératrice) Soit C un code linéaire de paramètres [n, k]q. On dit que G ∈ Mk,n(Fq) est une matrice génératrice de C si et seulement si ses lignes forment une base de C . Donc G est de rang k et on a :

C , M · G|M ∈ Fk q .

Proposition 2.2 Soient C un code linéaire de paramètres [n, k]q et G ∈ Mk,n(Fq) une matrice génératrice de C . Alors G est de rang k, noté rg(G) = k.

Preuve Soient C un code linéaire de paramètres [n, k]q et G ∈ Mk,n(Fq)une matrice génératrice de C . On a, par dénition :

dimFn

q(C ) = k.

D'après le Théorème 2.2 (de la dimension) et comme les lignes G forment une base de C (d'après la Dénition 2.8), alors on a :

rg(lignes de G) = dimFnq(C ) = k. 

Remarque 2.2 (Rang plein) On dit que G est de rang plein, car k est la valeur maximale de rg(G) et rg(G) = k.

Dénition 2.9 (Fonction d'encodage) Soient C un code linéaire de paramètres [n, k]q et G ∈ Mk,n(Fq) une matrice génératrice de C . La fonction d'encodage asso-ciée à G est l'application suivante :

fG : Fkq −→ Fn q

M 7−→ B = M · G,

L'image de la fonction d'encodage est le code linéaire associé : Im(fG) = C .

Proposition 2.3 Soient C un code linéaire de paramètres [n, k]q, G ∈ Mk,n(Fq) une matrice génératrice de C et S ∈ Mk,k(Fq) une matrice carrée inversible. Alors S · G est aussi une matrice génératrice du code C .

Dénition 2.10 (Codes équivalents par permutation) Soient deux codes linéaires C1 et C2, de paramètres [n, k]q, avec respectivement comme matrice génératrice G1 ∈ Mk,n(Fq) et G2 ∈Mk,n(Fq). On dit que C1 et C2 sont équivalents si G1 = S · G2· P, où S est une matrice inversible dans Mk,k(Fq) et P est une matrice de permutation dans Mn,n(Fq).

2.2.4 Distance de Hamming, capacité de correction

Dénition 2.11 (Support) Dans l'espace ambiant, le support d'un vecteur A = (a1, . . . , an) ∈ Fn

q est l'ensemble des indices de ses coordonnées non nulles. On le note :

Supp(A) , {i; ai 6= 0}.

Dénition 2.12 (Poids de Hamming) Dans l'espace ambiant, le poids de Ham-ming d'un vecteur A = (a1, . . . , an) ∈ Fn

q est le nombre de coordonnées non nulles de celui-ci. On le note wH(A). Autrement dit, on a :

wH(A) , |{i; ai 6= 0}| = |Supp(A)|.

Remarque 2.3 Le poids minimal des lignes de G n'est pas nécessairement le poids minimal du code C .

Notation 2.1 Soit C un code linéaire de longueur n. On appelle µi le nombre de mots de code de poids i, pour 0 6 i 6 n.

Dénition 2.13 (Énumérateur de poids) Soient C un code linéaire de longueur n et µi le nombre de mots de code de poids i, pour 0 6 i 6 n. Alors, le polynôme

WC(x, y) =

n

X

i=0

µi· xi· yn−i

d'inconnues x et y est appelé l'énumérateur de poids de C .

Dénition 2.14 (Distance de Hamming) Dans l'espace ambiant, la distance de Hamming dH entre deux mots, A = (a1, . . . , an) ∈ Fn

q et B = (b1, . . . , bn) ∈ Fn q, est le nombre de coordonnées distinctes entre les deux :

2.2. CODES LINÉAIRES TR

Propriété 2.2 Soient A et B deux éléments de Fn

2, ⊕ l'opérateur OU EXCLUSIF bit à bit (c'est-à-dire l'addition coordonnée par coordonnée dans F2) et ∧ l'opérateur ET bit à bit (c'est-à-dire la multiplication coordonnée par coordonnée dans F2). On a alors :

 wH(A) = dH(A, 0), où 0 dénote le mot tout à zéro,

 dH(A, B) = wH(A ⊕ B) = wH(A) ⊕ wH(B) − 2 · wH(A ∧ B)

Dénition 2.15 (Distance minimale) La plus petite distance non nulle entre deux mots de code (diérents) est appelée distance minimale du code. On la note d.

Dénition 2.16 (Paramètres d'un code linéaire) On dit qu'un code est de type (ou a pour paramètres) [n, k, d]q s'il est à valeurs dans Fq et si on a :

n : longueur d'un mot de code k : dimension du code

d : distance minimale du code

Remarque 2.4 Lorsque la distance minimale du code n'intervient pas dans les pro-pos, nous simplierons la notation [n, k, d]q par [n, k]q. De plus, si le cardinal du corps n'intervient pas, nous allégerons encore cette notation par [n, k].

Dénition 2.17 (Boule de Hamming) Soient A ∈ Fn

q et ε un entier positif. On dénit la boule de Hamming B de centre A et de rayon ε par :

B(A, ε) , {C ∈ Fn

q; dH(A, C) 6 ε}.

Proposition 2.4 Soit ε un entier positif. Pour tout A ∈ Fn

q, la cardinalité de la boule de Hamming B de centre A et de rayon ε est donnée par :

νq(n, ε) , |B(A, ε)| = ε X i=0 n i  · (q − 1)i.

Dénition 2.18 (Capacité de détection) Soit C un code linéaire de paramètres [n, k, d]q. La capacité de détection de C est la quantité d − 1. On dit alors que C est (d − 1)-détecteur.

Dénition 2.19 (Capacité de correction) Soit C un code linéaire de paramètres [n, k, d]q. La capacité de correction de C , notée t, est dénie par :

t , d − 1 2

 On dit alors que C est t-correcteur.

Figure 2.3  Capacité de correction t d'un code C

t

d

Remarque 2.5 Les codes sont parfois qualiés de détecteurs et de correcteurs. Nous nous intéresserons uniquement à l'aspect correction dans cette thèse.

Dénition 2.20 (Rendement) On appelle rendement noté % d'un code de para-mètres [n, k] le ratio % , k

n.

Dénition 2.21 (Rayon de recouvrement) Le rayon de recouvrement d'un code linéaire C de paramètres [n, k]q, noté ρ, est déni de la manière suivante :

ρ=4 max A∈Fn q n dH(C , A)o=4 max A∈Fn q  min B∈C dH(B, A)  . (2.2)

Dénition 2.22 (Code parfait) Un code est dit parfait si son rayon de recouvre-ment est égal à sa capacité de correction. Autrerecouvre-ment dit, un code est parfait (ou t-parfait) s'il est t-correcteur et si toute erreur détectée est corrigée.

2.2.5 Produit scalaire, code dual

Dénition 2.23 (Produit scalaire) Soient A = (a1, . . . , an) et B = (b1, . . . , bn) dans Fn

q. Le produit scalaire entre A et B est : < A, B >,

n

X

i=1

ai· bi.

Dénition 2.24 (Code dual) Soit C un code linéaire de paramètres [n, k]q. Le code dual (ou code orthogonal), noté C, est l'espace-vectoriel orthogonal de C pour le produit scalaire sur Fn

q déni précédemment. On note : C ,A ∈ Fn q < B, A >= 0, ∀B ∈C . Remarque 2.6 Soient A, B ∈ Fn

q. On dit que A et B sont orthogonaux si et seule-ment si < A, B >= 0.

Dénition 2.25 (Co-dimension de C ) Soit C un code linéaire de paramètres [n, k]q. La dimension du code dual est la co-dimension de C . On la notera r, avec :

2.2. CODES LINÉAIRES TR

2.2.6 Matrice de contrôle

Dénition 2.26 (Matrice de contrôle) Soit C un code linéaire de paramètres [n, k]q. On appelle matrice de contrôle (ou matrice de parité) de C , toute matrice génératrice du code dual C, notée H. On a H ∈ Mr,n(Fq) et :

C , B ∈ Fn

q|B ·tH = 01,r .

Proposition 2.5 Soient C un code linéaire sur F2 et H une matrice de contrôle de C . La distance minimale d'un code C est égale au nombre minimal de colonnes de H dont la somme vaut zéro (c'est-à-dire colonnes linéairement dépendantes).

Proposition 2.6 Soient C un code linéaire de paramètres [n, k, d]2 et H une ma-trice de contrôle de C . d > 3 si et seulement si H ne contient ni colonne nulle ni colonnes identiques.

Dénition 2.27 (Fonction syndrome) Soient C un code linéaire et H une ma-trice de contrôle de C . On dénit la fonction syndrome associée à H de la manière suivante :

SH: Fn

q −→ Fr q

C 7−→ C ·tH où SH(C) = C ·tH est appelé le syndrome du mot C.

Pour alléger les notations, il est possible que le syndrome de C soit noté S ou SC dans la suite de cette thèse.

Remarque 2.7 On a ∀B ∈ C , B ·tH = 01,r et G ·tH = 0k,r ∈Mk,r(Fq).

Remarque 2.8 Avec C = (c1, . . . , cn) ∈ Fnq, notons que : SH(C) =

n

X

j=1

cj· Hj,

où Hj correspond à la j-ème colonne de H. Autrement dit, SH(C) correspond au produit scalaire entre le vecteur C et chaque colonne Hj de H.

Dénition 2.28 (Coset-leader) Soient N ∈ Fr

q et E ∈ Fn

q. On dit que E est le coset-leader de N si et seulement si SH(E) = N et wH(E) est le plus petit poids d'un vecteur de l'espace ambiant ayant pour syndrome N.

Dénition 2.29 (Forme systématique) Soient C un code linéaire de paramètres [n, k] et G une matrice génératrice de C . On dit que G est sous forme systématique si

G =Ik|A ,

où Ik est la matrice identité dans Mk,k(Fq) et A une matrice dans Mk,r(Fq).

Proposition 2.7 Soient C un code linéaire de paramètres [n, k] et G une matrice génératrice de C sous forme systématique. Le code C admet alors pour matrice de contrôle (sous forme systématique) :

Remarque 2.9 Lorsqu'un code linéaire a une matrice génératrice sous forme sys-tématique, alors tout mot du code est composé du mot source suivi de la redondance (c'est-à-dire de l'information suivie de la redondance d'information).

Un mot de code peut a priori être corrigé par n'importe qui, à condition de savoir quel code a été utilisé (quelle est sa structure), an d'utiliser l'algorithme adéquat (c.f. Section 2.3 pour le problème du décodage). Donc, il n'y a pas vraiment de secret. Par contre, on peut vouloir chirer ce mot de code avant de l'envoyer ou cacher la structure du code. C'est là que la théorie des codes rejoint la cryptologie. Nous proposons au lecteur à la n de ce chapitre une description des codes de Goppa classiques binaires irréductibles (c.f. Section 2.5), utilisés en cryptographie, et du cryptosystème de McEliece, qui les utilise, dans le chapitre suivant (c.f. Chapitre 3).