• Aucun résultat trouvé

Codes lin´ eaires

Dans le document The DART-Europe E-theses Portal (Page 41-47)

2.3 Mod` eles de s´ ecurit´ e pour le chiffrement et la signature

3.1.1 Codes lin´ eaires

Les codes actuellement les plus utilis´es forment la famille descodes lin´eaires. Dans ces codes, les messages que l’on veut coder sont vus comme des vecteurs de longueur k d’´el´ements d’un corps fini `aq ´el´ementsFq. Ces ´el´ements de Fkq sont transform´es en un ´el´ement deFnq, n≥k par une application lin´eaire. L’ensemble des images de Fkq par cette application forme lecode C qui est donc un sous-espace vectoriel deFnq et peut ˆetre d´ecrit enti`erement par une base form´ee de k vecteurs lin´eairement ind´ependants deFnq.

3.1. ´El´ements de th´eorie des codes correcteurs d’erreurs 31

Figure3.2 – Protection de l’information lors du passage par un canal bruit´e `a l’aide d’un code correcteur d’erreur.

D´efinition 3.1.1 (Matrice g´en´eratrice) Soit C un code lin´eaire sur Fq de longueur n et de dimensionk. Une matrice g´en´eratriceGde C est une matrice k×ndont les lignes forment une base deC.

Si G s’´ecrit sous la forme G= (Ik|A) o`uIk est la matrice identit´e de dimension k etA est une matricek×(n−k), on dit alors que Gest sous forme syst´ematique.

L’encodage d’un ´el´ement x de Fkq en un ´el´ement c ∈ C peut ˆetre r´ealis´e simplement en calculant le produitc=xG. Si la matriceGest sous forme syst´ematique, leskpremiers symboles de c sont exactement les k ´el´ements de x; ils sont appel´es symboles d’information, les n−k derniers symboles forment lessymboles de redondance.

Un code lin´eaire peut ´egalement ˆetre d´efini par une matrice de parit´e dont nous donnons la d´efinition ci-dessous.

D´efinition 3.1.2 (Code dual) Soit C un code de longueurn sur Fq. Le code dualde C, not´e C est l’ensemble des vecteurs qui sont orthogonaux `a tous les mots du code C :

C=

x∈Fnq |x·c= 0 pour tout c∈ C

D´efinition 3.1.3 (Matrice de parit´e) SoitC un code lin´eaire de matrice g´en´eratriceG. Une matrice de parit´eHdeCest une matrice g´en´eratrice du codeC. On a :C= kerH, c’est-`a-dire :

C ={x∈Fnq |HxT = 0}.

De plus, si G est sous forme syst´ematique G = (Ik|A), alors H = (AT|In−k) o`u ·T d´esigne la transposition.

message

Figure 3.3 – Encodage et transmission d’un message par un code lin´eaire dont la matrice g´en´eratrice est sous forme syst´ematique.

Durant la transmission, un vecteur d’erreur e∈ Fnq est ajout´e au vecteur c pour former le message re¸cu y = c+e. Informellement, on appellera correction le fait de retrouver e tel que y−e∈ C et d´ecodage l’action consistant `a retrouver `a partir d’un mot y ∈ C le message m tel que y=mG o`uG est une matrice g´en´eratrice du code C. Si Gest sous forme syst´ematique, ce d´ecodage peut alors ˆetre fait simplement en lisant leskpremiers ´el´ements dey−e. Par abus de langage, on appellera parfoisd´ecoder l’action de retrouver une erreur etelle que y−e∈ C.

Afin de d´efinir formellement les notions pr´ec´edentes, il est utile d’introduire les d´efinitions suivantes :

D´efinition 3.1.4 (Support, Distance et Poids de Hamming) Soient x = (x1, . . . , xn) et y= (y1, . . . , yn) deux vecteurs deFnq.

– Le support de x, not´e supp(x) est l’ensemble des indices des positions non nulles de x : supp(x) ={1≤i≤n| xi 6= 0}.

– Le poids de Hamming de x, not´e wt(x) est le nombre de positions non nulles de x : wt(x) =|supp(x)|.

– La distance de Hamming entre x et y, not´ee dist(x,y) est le nombre de positions o`u ils diff`erent. De fa¸con ´evidente, dist(x,y) =wt(x−y).

Le poids et la distance de Hamming forment respectivement une norme et une distance surFn2.

Nous ´etablissons les d´efinitions suivantes :

D´efinition 3.1.5 (Encodeur, d´ecodeur, t-correction) Soit C un code d´efini par une ma-trice de parit´e G de taille k×n(n≥k).

3.1. ´El´ements de th´eorie des codes correcteurs d’erreurs 33 – Un encodeur est une fonctionEnc:Fkq → C ⊂Fnq qui `ax associe xGet telle que Enc(x)6=

Enc(x0) six6=x0 (Encest surjective).

– Un d´ecodeur est une fonction Dec:C →Fkq qui associex `a y si y=Enc(x)

– Un t-correcteur est une fonction Corr:Fnq → C qui renvoiec si et seulement si x =c+e o`u e∈Fnq et wt(e)≤t et renvoie ⊥ (erreur) sinon.

Par abus de langage, on dira que Dec corrige t erreurs (ou est t-correcteur) si et seulement si∀e∈Fnq tq wt(e)≤t, Dec(Enc(x) +e) =x.

On dira que le d´ecodage est complet (ou total) si quelque soit le mot d´ecod´e, le d´ecodeur renvoie toujours un mot de code. Si Dec(Enc(x) + e) = x0 6= x, on dira qu’une erreur de d´ecodages’est produite.

Le troisi`eme param`etre d’un code lin´eaireC par ordre d’importance, apr`es sa longueur et sa dimension, est sadistance minimum. Il s’agit du minimum d des distances de Hamming entre deux de ses mots :

d = min dist(x,y)

= min wt(x−y), x∈ C,y∈ C,x6=y

Dans le cas d’un code lin´eaire, la diff´erence de deux mots du code est elle aussi dans le code.

On a donc

d= min

w∈C,w6=0wt(w)

D´efinition 3.1.6 (code [n, k, d]) Un code lin´eaire de longueurn, de dimensionket de distance minimum dest appel´e un code [n, k, d].

Calculer la distance minimum d’un code de longueur n, de dimension k peut ˆetre extrˆ e-mement coˆuteux puisqu’il faut ´enum´erer les 2k mots du code et calculer leur poids, ce qui est rarement r´ealisable en pratique. Il existe cependant une borne, ditedu singleton, permettant de l’estimer.

Th´eor`eme 3.1.1 (Borne du singleton) Tout code[n, k, d]v´erifie la majorationn−k≥d−1.

Si cette borne est atteinte, le code est dit MDS (pour Maximum Distance Separable) ou parfait.

Preuve – Un mot de code contenant un unique symbole d’information est de poids au plus n−k+ 1. Par suite,d≤n−k+ 1.♦

De plus, la borne de Gilbert-Varshamov permet de s’assurer de l’existence de codes de param`etres donn´es.

Th´eor`eme 3.1.2 (Borne de Gilbert-Varshamov) Il existe un code lin´eaire surFqde longueur n, de dimension k et de distance minimale≥d pourvu que

GVq(n, d)def=

d−1

X

i=0

n i

(q−1)i ≥qn−k.

La preuve de ce th´eor`eme peut ˆetre trouv´ee dans [Moo05] ou [Wel88], par exemple.

D´ecodage `a maximum de vraisemblance

Le d´ecodage `a maximum de vraisemblance consiste `a associer au mot re¸cu le mot de code le plus proche au sens de la distance de Hamming. Par exemple, soit le code binaire C d´efini par la matrice de parit´e

G=

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

La premi`ere colonne de la figure 3.4 ´enum`ere les mots du code et leur poids ; on observe alors que la distance minimale de C est d = 3. Supposons que durant deux transmissions du mot c = (0,1,1,0,1,1) les erreurs e= (0,1,0,0,0,0) et e0 = (0,0,1,0,1,0) se produisent. Les mots re¸cus sont donc respectivementy =c+e= (0,0,1,0,1,1) et y0 =c+e0 = (0,1,0,0,0,1). Les deux derni`eres colonnes de la figure 3.4 ´enum`erent les distances de y et y0 `a chacun des mots du code ; le message y est donc d´ecod´e en c = (0,1,1,0,1,1) alors que y0 est d´ecod´e par le mot c0 = (0,1,0,1,0,1). Le d´ecodage `a maximum de vraisemblance fournit donc un crit`ere de d´ecodage complet.

Mot de code poids distance au mot distance au mot de Hamming (0,0,1,0,1,1) (0,1,0,0,0,1)

(1,0,0,0,1,1) 3 2 3

(0,1,0,1,0,1) 3 4 1

(0,0,1,1,1,0) 3 2 5

(1,1,0,1,1,0) 4 5 4

(1,0,1,1,0,1) 4 3 4

(0,1,1,0,1,1) 4 1 2

(1,1,1,0,0,0) 3 4 3

Figure3.4 – D´ecodage `a maximum de vraisemblance

D´ecodage `a distance born´ee

Si le d´ecodage complet est int´eressant, sa mise en œuvre est souvent coˆuteuse et pas toujours souhaitable : on peut pr´ef´erer ne corriger que les erreurs dont on est sˆur. Dans ce contexte, la propri´et´e 3.1.1 nous permet d’´etablir un autre crit`ere de d´ecodage, celui-ci non complet : le d´ecodage `a distance born´ee, d´efini pour une certaine borne t. S’il s’av`ere qu’un message a ´et´e alt´er´e par moins deterreurs, alors le message est corrig´e, sinon il est rejet´e.

3.1. ´El´ements de th´eorie des codes correcteurs d’erreurs 35 Propri´et´e 3.1.1 SoientC un code [n, k, d]sur Fq et t=bd−12 c. Soit B(y, t) la boule de centrey et de rayont, c’est-`a-dire l’ensemble des vecteursv∈Fnq tels que dist(y, v)≤t. Alors pour tout y de Fnq, B(y, t) contient au plus un motx∈ C.

Preuve – Supposons l’existence de deux motsxetx0 appartenant `a B(y, t)∩ C. Leur apparte-nance `a B(y, t) garantit que leurs distances `a y sont toutes deux inf´erieures `a tet par in´egalit´e triangulaire quedist(x, x0)≤2t < d. Or,xetx0 sont ´egalement des mots de C, leur distance ne peut donc ˆetre inf´erieure `a d. Il ne peut donc pas exister simultan´ement deux mots deC dans B(y, t).♦

Cette propri´et´e nous permet aussi de voir que la capacit´e de correction `a distance born´ee d’un code ne d´epend pas de l’ordre de ses symboles. On d´efinit l’´equivalence de code comme suit :

D´efinition 3.1.7 ( ´Equivalence de codes) Deux codes sont dits ´equivalentssi leurs matrices g´en´eratrices (resp. de parit´e) se d´eduisent l’une de l’autre par permutation de colonnes. On notera cette ´equivalence C1 ≡ C2 et on ´etendra cette notation `a leurs matrices g´en´eratrices (resp.

de parit´e).

Par exemple, les codes de g´en´eratrices G = 0 0 1 1 1 1 0 0

!

et G0 = 1 0 0 1 0 1 1 0

! sont

´equivalents.

D´ecodage par syndrome

Le d´ecodage par syndrome est une technique permettant de r´ealiser un d´ecodage `a distance born´ee. Elle s’appuie sur la notion decoset :

D´efinition 3.1.8 (Coset) SoitC un code [n, k, d]sur Fq. Pour tout vecteurx∈Fnq, on appelle Coset (ou translat´e) de C l’ensemble

a+C={a+c:c∈ C}.

Tout vecteurx∈Fnq est dans un coset (au moinsx+C) et chaque coset contientqkvecteurs.

Deux vecteursxetysont dans le mˆeme coset si et seulement si (x−y)∈ C. On peut ´egalement remarquer que deux cosets soit sont disjoints, soit co¨ıncident : il ne peut pas y avoir de chevauche-ment partiel entre deux cosets (voir [MS77], Ch. 1,§4, par exemple). Cette propri´et´e permet de partitionner l’espaceFnq en cosets deC :

Fnq =C ∪(x1+C)∪ · · · ∪(x`+C)

avec `=qn−k−1. Supposons qu’un vecteur y∈Fnq soit re¸cu ; il appartient `a l’un des cosets ci dessus, disons (xi+C). Il existe donc un mot c∈ C tel quey=xi+c. Soitc0 le mot transmis,

l’erreur est donce=y−c0=xi+c−c0, c’est-`a-dire qu’elle appartient `a (xi+C). Une strat´egie de d´ecodage `a maximum de vraisemblance consiste donc `a retrouver le coset d’un mot re¸cu y, puis `a trouver le vecteurede poids minimal dans ce coset, appel´ecoset leader .

La fa¸con la plus simple d’identifier le coset dans lequel se trouve un mot, consiste `a calculer son syndrome :

D´efinition 3.1.9 (Syndrome) Soit H une matrice de parit´e d’un code C sur Fq de longueur n et de dimension k. Le syndrome d’un mot x∈Fq est le vecteur

s=HxT

o`u xT d´enote le transpos´e de x. Celui-ci est un vecteur colonne de longueur n−k.

Par d´efinition de la matrice de parit´e, le syndrome d’un mot x est nul si et seulement si x est un mot de code. Siy=x+e avecx∈ C, alors

s=HyT =HxT +HeT =HeT,

le syndrome d’un vecteur caract´erise donc son erreur et est un invariant de coset. En effet, deux vecteurs x et y sont dans le mˆeme coset si et seulement si (x−y) ∈ C, c’est-`a-dire que H(x−y)T = 0 et donc que HxT = HyT. Le stockage des coset leaders dans une table index´ee par leur syndrome permet donc (quand il est possible) de d´ecoder un mot en erreur.

Dans le document The DART-Europe E-theses Portal (Page 41-47)