Vous êtes sur la page 1sur 58

Thorie des codes

Yves Denneulin, Jean-Louis Roch, Eric Tannier

20 janvier 2000

Table des matires


Introduction

1 La notion de code
1.1

1.2

1.3

Codes et systmes de codage

. . . . . . . . . . . . . . . . . .

1.1.1

Dnitons . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2

Dchirabilit d'un code . . . . . . . . . . . . . . . . .

1.1.3

Proprit du prxe

. . . . . . . . . . . . . . . . . . .

10

L'arbre de Human . . . . . . . . . . . . . . . . . . . . . . . .

10

1.2.1

Dnitions

1.2.2

Reprsentation des codes instantanns

. . . . . . . . . . . . . . . . . . . . . . . .

2.2

2.3

10

. . . . . . . . .

11

Thorme de McMillan . . . . . . . . . . . . . . . . . . . . . .

11

2 Thorie de l'information
2.1

15

Source d'information . . . . . . . . . . . . . . . . . . . . . . .

15

2.1.1

Source sans mmoire . . . . . . . . . . . . . . . . . . .

15

2.1.2

Longueur moyenne d'un code

16

. . . . . . . . . . . . . .

2.1.3

Extension d'une source . . . . . . . . . . . . . . . . . .

16

2.1.4

Source gnrale (avec mmoire) . . . . . . . . . . . . .

16

Algorithme de codage de Human

. . . . . . . . . . . . . . .

16

2.2.1

Description de l'algorithme

. . . . . . . . . . . . . . .

17

2.2.2

L'algorithme de Human est optimal . . . . . . . . . .

Entropie d'une source

. . . . . . . . . . . . . . . . . . . . . .

18
19

2.3.1

Quantit d'information . . . . . . . . . . . . . . . . . .

19

2.3.2

Entropie . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.4

Thorme de Shannon

. . . . . . . . . . . . . . . . . . . . . .

21

2.5

Codes compresseurs usuels . . . . . . . . . . . . . . . . . . . .

23

3 Dtection et correction d'erreurs


3.1

27

Formalisation du problme et dnitions


3.1.1

Code systmatique par blocs

. . . . . . . . . . .

28

. . . . . . . . . . . . . .

28

3.1.2

Code correcteur et distance de Hamming . . . . . . . .

30

3.1.3

Code parfait

33

3.1.4

Cas particulier o

. . . . . . . . . . . . . . . . . . . . . . .

V = f0; 1g - Codes de Hamming


3

34

TABLE DES MATIRES

3.1.5
3.2

. . . . . . . . . . .

36
37

3.2.2

Anneau quotient

V [X ]=P (X ) . . . . . .
deg(P )
Isomorphisme entre V [X ]=P et V

. . . . . . . .

37

. . . . . . . .

38

. . . . . . . . . . .

38

. . .

40

. . . . . . . . . . . . . . . .

41

. . . . . . . . . . . . . . . . . . . . . .

41

. . . . . . . . . . . . . . . . . . . . .

43

3.2.4

PGCD et polynmes irrductibles

3.2.5

Factorisation de

X n 1 : classes cyclotomiques

Construction de codes cycliques


3.3.2
3.3.3

Codes linaires
Codes cycliques

Construction d'un code cyclique : polynme gnerateur

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

Codage et dcodage d'un code cyclique . . . . . . . . .

45

3.3.5

Classes cyclotomiques et distance minimale . . . . . .

46

3.3.6

Codes BCH . . . . . . . . . . . . . . . . . . . . . . . .

47

3.3.4

Codes cycliques usuels

. . . . . . . . . . . . . . . . . . . . . .

4.2

4.3

47

3.4.1

Codes de Reed-Solomon

. . . . . . . . . . . . . . . . .

48

3.4.2

Codes C.I.R.C.

. . . . . . . . . . . . . . . . . . . . . .

49

3.4.3

Quelques autres codes cycliques . . . . . . . . . . . . .

49

4 Mthodes de chirement
4.1

36

. . . . . . . . . . . . . . . . . . . . . . . . .

Corps ni

3.3.1

3.4

. . . . . . . . . . . . . . . . .

Bases mathmatiques des codes cycliques


3.2.1

3.2.3

3.3

Codes cycliques : CRC

51

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

4.1.1

52

Mthode d'attaque . . . . . . . . . . . . . . . . . . . .

Systmes conventionnels cl prive

. . . . . . . . . . . . . .

53

. . . . . . . . . . . . . . . . . . . . . . . . . .

53

4.2.1

Le DES

4.2.2

L'exponentiation

. . . . . . . . . . . . . . . . . . . . .

Cryptographie cl publique

. . . . . . . . . . . . . . . . . .

4.3.1

Secret et authentication

4.3.2

L'algorithme RSA

4.3.3

54
56

. . . . . . . . . . . . . . . .

57

. . . . . . . . . . . . . . . . . . . .

58

Utilisation de RSA . . . . . . . . . . . . . . . . . . . .

60

Introduction
SOURCE

CANAL

DESTINATION

PERTURBATION
Fig. 1  Schma fondamental du codage

La transmission de messages entre un metteur et un destinataire via un


canal de communication introduit dirents problmes.
 Le canal permet de transmettre des signaux (typiquement des bauds).
Il s'agit alors de transformer le message mettre (par exemple un
texte en franais) en une squence de signaux : on parle de

codage.

Le

destinataire doit tre capable de dcoder la squence de signaux reus


pour pouvoir lire le message mis.
 Dans un souci d'ecacit, la squence de signaux doit tre la plus
courte possible. On s'intresse donc des codages qui minimisent la
taille de la squence mise : on parle de

compression.

 Le medium peut introduire des erreurs : certains signaux mis peuvent


tre perdus ou altrs lors de la transmission. Dans ce cas, pour que
l'metteur puisse dcoder correctement le message reu, on utilise des
codages spciques, permettant de

dtecter,

introduites lors de la transmission. On parle de

teur.

corriger les erreurs


code dtecteur/correc-

voire

 Le canal est gnralement partag par plusieurs couples metteurdestinataire. Pour que l'metteur puisse envoyer un message qui ne
puisse tre lu que par un destinataire spcique (bien que la squence
de signaux associe soit visible par d'autres individus), le message doit
tre

crypt

grce un codage spcique. La

cryptographie

tudie des

codages et des protocoles permettant de communiquer des messages de


manire secrte, de signer des documents ou d'authentier un metteur.
La thorie des codes et ses trois domaines d'application que sont la compression, la dtection/correction d'erreurs et la cryptographie utilisent la

TABLE DES MATIRES

thorie des corps nis (dont on donnera un rappel des grands principes), et
quelques lments de probabilits, de thorie des graphes et de manipulation
des chanes de symboles.
Le premier chapitre de ce cours est une introduction la notion de code,
comprend les dnitions et proprits fondamentales concernant les objets
mathmatiques introduits. Les trois chapitres suivants, consacrs respectivement la thorie de l'information, du codage dtecteur/correcteur et de la
cryptographie, prsentent les rsultats mathmatiques fondamentaux et les
algorithmes gnriques qui en dcoulent. Chacun de ces trois chapitres est
illustr par une utilisation pratique dans le contexte des tlcommunications.

Chapitre 1

La notion de code
Ce chapitre donne les dnitions de base et quelques proprits utiles
la manipulation des codes.

1.1 Codes et systmes de codage


1.1.1 Dnitons
V est un ensemble ni de k lments fv1 ; : : : ; vk g. Le
k de V est not jV j.
+ (enUn code C sur un vocabulaire V est un sous-ensemble ni de V
semble des chanes sur V de longueur non nulle). Un lment ci de C est
appel mot de code. Sa longueur est note l (ci ). L'arit du code est le cardinal de V .
Un

vocabulaire

cardinal

Exemple :

C = f0; 10; 110g


V = f0; 1g.

est un code d'arit 2 (on dit aussi binaire)

sur le vocabulaire

Dans tout ce cours, dans un souci de simplicit et de par leur importance pratique en tlcommunications, on s'intresse plus particulirement
aux codes binaires. Cependant, la plupart des rsultats sont gnralisables
des codes d'arit quelconque.
Soit S = fs1 ; : : : ; sq g un ensemble ni, qu'on appelle le vocabulaire
source. On appelle un message une chane sur S . Soit C un code sur un vocabulaire V ; une fonction d'encodage de S dans C est une bijection f : S ! C .
(C; f ) est alors appel schma de codage pour S .

Exemple : Le sous-ensemble du codage ASCII pour les lettres majuscules


est le suivant :

CHAPITRE 1.

LA NOTION DE CODE

01000001

01001010

01010011

01000010

01001011

01010100

01000011

01001100

01010101

01000100

01001101

01010110

01000101

01001110

01010111

01000110

01001111

01011000

01000111

01010000

01011001

01001000

01010001

01011010

01001001

01010010

espace

00100000

a1 :::an via un canal permettant de transmettre les mots d'un code C , on le traduit sous la forme c1 :::cn = f (a1 ):::f (an ).
Le fait que f soit bijective ne sut cependant pas pour que le message puisse
Pour communiquer un message

tre dcod sans ambigut par le rcepteur.

S = fA; : : : ; Z g
C = f0; : : : ; 25g crits en base 10 :
f (A) = 0; f (B ) = 1; : : : ; f (J ) = 9; f (K ) = 10; f (L) = 11; : : : ; f (Z ) = 25:
Prenons l'exemple du codage des lettres de l'alphabet

par les entiers

Le codage 1209 peut alors correspondre dirents messages : par exemple,


BUJ ou MAJ ou BCAJ.
Il est donc ncessaire d'ajouter des contraintes sur le code pour qu'un
message quelconque puisse tre dchir sans ambigut.

1.1.2 Dchirabilit d'un code


C sur un vocabulaire V est dit uniquement dchirable (on dit
non ambig) si et seulement si, pour tout x = x1 : : : xn 2 V + , il existe

Un code
parfois

c = c1 : : : cm 2 C + telle que
c1 : : : cm = x1 : : : xn
Proprit 1 Un code C sur un vocabulaire V est uniquement dchirable si
et seulement si pour toutes squences c = c1 : : : cn et d = d1 : : : dm de C + :
c = d =) (n = m et 81  i  n; ci = di )
au plus une squence

Exemple :




C = f0; 01; 001g n'est pas uniquement dchirable.


C = f01; 10g est uniquement dchirable.
C = f0; 10; 110g est uniquement dchirable.

Thorme 1 (Kraft) Il existe un code uniquement dchirable sur un voV dont les mots fc1 ; : : : ; cn g sont de longueur l1 ; : : : ; ln si et seule-

cabulaire
ment si

n
X
i=1

1 1
jV jli

1.1.

CODES ET SYSTMES DE CODAGE

Preuve 1/ ())
Soit C un code uniquement dchirable, d'arit q .
Pour 1  k  m = max(longueurs des mots de C ), Soit rk
de mots de longueur k .

le nombre

Nous dveloppons l'expression suivante, pour un entier quelconque

n
X

i=1

u:

m
1 )u = (X
rk u
)

qli

k=1

qk

Chaque terme est de la forme

ri1 : : : riu
qi1 +:::+iu
s = i1 + : : : + iu ,

Et en regroupant pour chaque valeur


termes

on obtient les

ri1 : : : riu
qs
i1 +:::+iu =s
X

Soit

N (s) =

P
i1 +:::+iu =s ri1 : : : riu .

n
X
i=1

L'expression initiale s'crit :

mu
1 )u = X
N (s)

qli

s=u

qs

N(s) est le nombre de combinaisons de mots de


Comme

de longueur totale

s.

est uniquement dchirable, deux combinaisons ne peuvent tre

C , de taille q, N (s) est infrieur


s sur ce vocabulaire, soit qs. Donc

gales au mme mot sur le vocabulaire de


au nombre total de messages de longueur

(
Et en prenant la

n
X
i=1

1 )u  mu m + 1  mu
q li

u-ime racine,
n
X
i=1

Si

u tend vers l'inni,

()

1  (mu)1=u
q li
n
X

1 1

qli
i=1

2/ (

Ce rsultat est une consquence du thorme de McMillan, que nous


verrons plus loin dans ce chapitre.

10

CHAPITRE 1.

LA NOTION DE CODE

1.1.3 Proprit du prxe


On dit qu'un code
dit parfois qu'il est

sur un vocabulaire

instantan,

ou

couple de mots de code distincts

irrductible)

a la

proprit du prxe

(on

si et seulement si pour tout

(c1 ; c2 ), c2 n'est pas un prxe de c1 .

a = 101000, b = 01, c = 1010 : b


mais c est un prxe de a.
Exemple :

n'est pas un prxe de

Grce la proprit du prxe, on peut dchirer les mots d'un tel code
ds la n de la rception du mot (instantanit), ce qui n'est pas toujours le

V = 0; 01; 11,
m = 001111111111 : : : , il faut attendre l'occurence

cas pour les codes uniquement dchirables : par exemple, si


et si on reoit le message
suivante d'un

0 pour pouvoir dhirer le second mot (0 ou 01 ?).

Proprit 2

Tout code possdant la proprit du prxe est uniquement d-

chirable.

Preuve

C sur V qui n'est pas uniquement dchirable.


n telle que a = c : : : c = d : : : d , les c et
Alors il existe une chane a 2 V
1
1
i
l
k
di tant des mots de C et ci 6= di pour au moins un i. Choisissons le plus
petit i tel que ci 6= di (8j < i, cj = dj ). Alors l (ci ) 6= l (di ). Si l (ci ) < l (di ),
ci est un prxe de di et dans le cas contraire di est un prxe de ci . C n'a
Soit un code

donc pas la proprit du prxe.

La rciproque est fausse : le code

C = f0; 01g est uniquement dchirable,

mais ne possde pas la proprit du prxe.

Proprit 3

Tout code dont tous les mots sont de mme longueur possde
la proprit du prxe.

1.2 L'arbre de Human


1.2.1 Dnitions
On donne ici les dnitions dans le cas binaire, mais elles sont gnralisables pour des codes d'arit quelconque.
On appelle un
a soit

arbre de Human

un arbre binaire tel que tout sous-arbre

0 soit 2 ls (il est localement complet). Dans ce dernier cas, on assigne

le symbole 1 l'arte reliant la racine locale au ls gauche et 0 au ls
droit.
A chaque feuille d'un arbre de Human, on peut associer un mot de

f0; 1g+ : C'est la chane des symboles marquant les artes d'un chemin depuis
la racine jusqu' la feuille. On appelle

code de Human

correspondant aux chemins d'un arbre de Human.

l'ensemble des mots

1.3.

11

THORME DE MCMILLAN

Fig. 1.1  Exemple d'arbre de Human

Exemple : le code correspondant l'arbre de la gure 1.1 est :

f111; 110; 10; 0111; 0110; 010; 001; 0001; 0000g


1.2.2 Reprsentation des codes instantanns
Proprit 4 Un code de Human possde la proprit du prxe.
Preuve Si un mot de code c1 est un prxe de c2 , alors le chemin reprsentant c1 dans l'arbre de Human est inclus dans le chemin reprsentant c2 .
Comme c1 et c2 sont, par dnition, associs des feuilles de l'arbre, c1 = c2 .
Il n'existe donc pas deux mots dirents dont l'un est le prxe de l'autre,
et le code de human a la proprit du prxe.

Proprit 5

Tout code qui possde la proprit du prxe est contenu dans


un code de Human.

Preuve On construit

un arbre de Human partir d'un code

quel-

conque possdant la proprit du prxe :


Soit un arbre de Human complet (toutes les feuilles sont distance
constante de la racine) de hauteur
Chaque mot

ci

de

l = max(longueurs

des mots de

C ).

est associ un chemin depuis la racine jusqu' un

noeud. On peut alors laguer le sous-arbre dont ce noeud est racine (tous
les mots pouvant tre reprsents dans les noeuds de ce sous-arbre ont
pour prxe). Tous les mots de

ci

sont toujours dans les noeuds de l'arbre

rsultant. On peut eectuer la mme opration pour tous les mots. On a


nalement un code de Human contenant tous les mots de

C. 2

1.3 Thorme de McMillan


Thorme 2 (McMillan)

Sur un vocabulaire V , il existe un code qui possde la proprit du prxe dont les mots fc1 ; : : : ; cn g sont de longueur

12

CHAPITRE 1.

l1 ; : : : ; ln

LA NOTION DE CODE

si et seulement si
n
X
i=1

1 1
jV jli

Preuve 1/ preuve de ()) : on suppose qu'il existe un code instantann


l1 ; : : : ; ln . On a montr qu'on peut construire

avec les longueurs de mots

sa reprsentation par un arbre de Human. L'arbre complet initial a pour

hauteur , et

jV jl feuilles. On compte chaque opration d'lagage le nombre

de feuilles de l'arbre initial complet qu'on enlve ainsi l'arbre de Human.


Pour un mot de longueur
de hauteur

li ,

soit

li ,

jV jl

li

c'est le nombre de feuilles de l'arbre complet


(on suppose enleve, car non rutilise, une

feuille d'un sous-arbre de hauteur 0). Pour toutes les oprations, on enlve

Pn
i=1

jV jl

li

feuilles. Mais on ne peut en enlever au total plus que le nombre

initial, soit

n
X
i=1

d'o

jV jl li  jV jl

n
X

1 1
j
V
jli
i=1

2/ preuve de (

() : on sait que l'ingalit est satisfaite. On cherche

construire un arbre de Human dont les mots de code ont pour longueur

l1 ; : : : ; ln ,

mots que l'on suppose classs par ordre croissant de leurs lon-

gueurs. Pour pouvoir choisir un noeud dans l'arbre complet pour un mot de

jV jl

lk

feuilles de l'arbre

complet initial. Si on a dj plac les mots de longeur

on a

longueur
enlev

lk ,

Pk 1
i=1

il doit y avoir dans l'arbre au moins

jV jl

li

l1 ; : : : ; lk 1 ,

feuilles de l'arbre initial par les successives oprations

d'lagage. Il reste donc

jV jl (1

l'ingalit de Kraft que

n
X
i= k
soit

jV jl (1

k 1
X
i=1

Pk 1
i=1

1 1
jV jli

jV j li ) 

On peut donc placer le mot de longueur

jV j li ) feuilles. Or, on sait d'aprs


k 1
X
i=1

n
X
i=k

jV jli

jV jl li  jV jl

lk

lk , et en ritrant l'opration construire


l1 ; : : : ; ln ,

l'arbre de Human. Le code de Human, de longueurs de mots


vrie la proprit du prxe.

Remarque : Ceci prouve l'implication laisse en suspens du thorme de


Kraft.

1.3.

THORME DE MCMILLAN

13

Corollaire 1 S'il existe un code uniquement dchirable dont les mots sont
de longueur l1 ; : : : ; ln , alors il existe un code instantann de mmes longueurs
de mots.

C'est une consquence des thormes de Kraft et McMillan. Les codes


dchirables qui ne possdent pas la proprit du prxe ne produisent pas
de code aux mots plus courts que les codes instantanns, auxquels on peut
donc se restreindre pour la compression d'information (leurs proprites les
rendent plus maniables).

14

CHAPITRE 1.

LA NOTION DE CODE

Chapitre 2

Thorie de l'information
Un premier intrt de la thorie mathmatique des codes rside dans
l'optimisation possible de la taille d'un message qui doit transiter par un
canal, ou tre stock sur un support. On eectue donc ce codage la sortie
de la source, et on dcode l'entre de la destination. Nous supposons ici que
le canal n'est pas soumis aux perturbations (on parle de codage sans bruit),
le codage de canal et la gestion des erreurs sont tudis au chapitre suivant.
Il existe des techniques d'encodage permettant de choisir des codes ecaces
ainsi qu'une thorie importante, originairement dveloppe par Shannon en
1948 permettant de quantier l'information contenue dans un message et de
calculer la taille minimale d'un schma de codage, et de connatre ainsi la
valeur d'un code donn.

2.1 Source d'information


2.1.1 Source sans mmoire
Dnition 1 On dnit une source d'information par un couple S = (S; P )
o S = (s1 ; : : : ; sn ) est un vocabulaire source et P = (p1 ; : : : ; pn ) est une
distribution de probabilit. 8i, pi est la probabilit d'occurence de si dans S .

Pour une telle source, dite sans mmoire, les vnements (occurences d'un
symbole) sont considrs comme indpendants, et leur probabilit reste stable
au cours de l'mission (la source est stationnaire).

Dnition 2 Une source S est dite sans redondance si tous les symboles de
S apparaissent avec la mme probabilit (p1 = : : : = pn = n1 ).
Nous allons montrer dans ce chapitre qu'une source redondante peut tre
code de manire liminer la redondance dans l'vocabulaire lisible par le
canal. Nous prcisons donc le schma de codage dni en introduction de ce
cours :

15

16

CHAPITRE 2.

SOURCE

CODAGE
DE
SOURCE

THORIE DE L'INFORMATION

CANAL

Source sans redondance

DECODAGE

DESTINATAIRE

Canal sans perturbation

Fig. 2.1  Codage de source

2.1.2 Longueur moyenne d'un code


Dnition 3 Soient S = (S; P ) une source, (C; f )
de S . La longueur moyenne de (C; f ) est :
l(C; f ) =

n
X
i=1

un schma d'encodage

l(f (si ))P (si )

S = fa; b; c; dg, P = ( 12 ; 41 ; 18 ; 18 ), V = f0; 1g.


C = ff (a) = 00; f (b) = 01; f (c) = 10; f (d) = 11g,

Exemple :
Si

2.
Si C = ff (a) = 0; f (b) = 10; f (c) = 110; f (d) = 1110g,
1 + 2  1 + 3  1 + 4  1 = 1:875
moyenne du schma est : 1 
2
4
8
8

la longueur

moyenne du schma est

la longueur

Nous utilisons la longueur moyenne d'un schma d'encodage pour mesurer son ecacit.

2.1.3 Extension d'une source


Soit une source S sans mmoire. La k -ime extension S k de
S est le doublet (S k ; P k ), o S k est l'ensemble des mots de longueur k sur
S , et P k est la distribution de probabilit ainsi dnie : pour un mot s =
si1 : : : sik 2 S k , P k (s) = P (si1 : : : sik ) = P (si1 ) : : : P (sik ).

Dnition 4

S = (s1 ; s2 ), P = ( 41 ; 34 )
1 3 3 9
2
2
alors S = (s1 s1 ; s1 s2 ; s2 s1 ; s2 s2 ) et P = (
16 ; 16 ; 16 ; 16 )
Exemple :

2.1.4 Source gnrale (avec mmoire)


COMPLTER

2.2 Algorithme de codage de Human


Cette mthode permet de trouver le meilleur schma d'encodage d'une
source sans mmoire

S.

2.2.

17

ALGORITHME DE CODAGE DE HUFFMAN

2.2.1 Description de l'algorithme


La source coder est

S = (S; P ),

le vocabulaire de codage

ncessaire l'optimalit du rsultat de vrier que

V.

Il est

jV j 1 divise jS j 1 (an

d'obtenir un arbre localement complet). Dans le cas contraire, il est facile de


rajouter des symboles

S , de probabilits d'occurence nulle, jusqu' ce que

jV j 1 divise jS j 1. Les mots de codes associs (les plus longs) ne seront


pas utiliss.

On construit avec le vocabulaire source


auxquels on associe les probabilits de

P.

un ensemble de noeuds isols

p1

p2

p3

pn

s1

s2

s3

sn

Fig. 2.2  algorithme de Human : dpart

jV j

p ;::: ;p j j

Soient
symboles de plus faibles probabilits. On
i1
i V les
construit un arbre (sur le modle des arbres de Human), dont la racine

pi1 + : : : + pijV j ,
pi1 ; : : : ; pijV j . La gure 2.3

est un nouveau noeud et auquel on associe la probabilit


et dont les branches sont incidentes aux noeuds
montre un exemple de cette opration pour
p1

jV j = 2.

pn

pi+pj

s1

sn

pi

sj

si

pj

Fig. 2.3  algorithme de Human : premire tape (

On recommence ensuite avec les

j V j= 2)

jV j plus petites valeurs parmi les noeuds

du plus haut niveau (les racines), jusqu' n'obtenir qu'un arbre ( chaque
itration, il y a

jV j 1 lments en moins parmi les noeuds de plus haut

niveau), dont les mots de

S sont les feuilles, et dont les mots de code associs

dans le schma ainsi construit sont les mots correspondant aux chemins de
la racine aux feuilles.

Exemple : Soit la source coder sur

V = f 0; 1g

18

CHAPITRE 2.

THORIE DE L'INFORMATION

Symbole

Probabilit

0,35

0,10

0,19

0,25

0,06

0,05

Les tapes successives de l'algorithme son dcrites par la gure 2.4.


Le code de Human construit est alors :
Symbole

Mot de code

11

010

00

10

0111

0110

2.2.2 L'algorithme de Human est optimal


Thorme 3

Le code issu de l'algorithme de Human est optimal parmi


tous les codes de S sur V.

Preuve COMPLTER 2
On peut pourtant obtenir des codes plus ecaces partir des extensions
de la source, comme on peut le voir partir d'un exemple :

S = (S; P ), S = (s1; s2), P = (1=4; 3=4). Un codage de Human


S donne videmment s1 ! 0 et s2 ! 1, et sa longueur moyenne est 1.
2
2 2
Un codage de Human pour S = (S ; P ) donne :

Soit
pour

s1 s1 ! 010
s1 s2 ! 011
s2 s1 ! 00
s2 s2 ! 1

3  161 + 3  163 + 2  163 + 169 = 27


16 = 1; 6875
La longueur moyenne de ce code est donc l = 1; 6875, et en comparaison
2
avec le code sur S (les mots de S sont de longueur 2), l = 1; 6875=2 =
0; 84375, ce qui est meilleur que le code sur la source originelle.
et sa longueur moyenne est

Nous pouvons encore amliorer ce codage en examinant la source

S 3.

Il est aussi possible d'aner le codage par une meilleure modlisation de


la source : souvent, l'occurence d'un symbole n'est pas indpendante des
symboles prcdemment mis par une source (dans le cas d'un texte, par
exemple). Dans ce cas, les probabilits d'occurence sont conditionnelles et

2.3.

19

ENTROPIE D'UNE SOURCE

il existe des modles (le modle de Markov, en particulier) qui permettent


un meilleur codage. Mais ces procds ne conduit pas des amliorations
innies. Il existe un seuil pour la longueur moyenne, appel entropie, ne
dpendant que de la source, en de duquel on ne peut pas trouver de code.
Ce rsultat thorique important fait l'objet des sections suivantes.

2.3 Entropie d'une source


2.3.1 Quantit d'information
Nous arrivons aux notions fondamentales de la thorie de l'information. Il
est important, au-del des dnitions mathmatiques de la quantit d'information et de l'entropie (que seul le thorme de Shannon pourrait justier),
de saisir la signication de ces grandeurs, et c'est pourquoi nous commenons
par cette approche intuitive.
Soit une source

S = (S; P ). Nous ne connaissons de cette source qu'une

distribution de probabilit, mais nous cherchons mesurer quantitativement


quel point nous ignorons le comportement de

certitude

S . Par exemple, cette in-

est plus grande si le nombre de symboles dans

Elle est faible si une probabilit

pi

est proche de

1,

est plus grand.

et plus forte en cas

d'quiprobabilit.
An de choisir une fonction qui quantie l'incertitude, nous cherchons
une mesure de l'information

contenue dans un vnement

(pour une

source, c'est l'occurence d'un symbole s apparaissant avec une probabilit


p). C'est une fonction croissante de l'improbabilit de cet vnement.

Par exemple, imaginons une source pouvant mettre deux symboles, l'un
avec une probabilit

1 , l'autre avec une probabilit p2 = 99 . L'appap1 = 100


100

rition du premier symbole fournira au destinataire plus d'information sur la


source (il ne lui manque que le second, qui apparatra avec une forte probabilit) que l'apparition du second, qui laissera le destinataire pratiquement
aussi peu inform sur la source qu'avant l'apparition du symbole.

I (x) fonction inverse de la probabilit d'occux. I (x) = f ( P (1x) ). Soit I (p) = f ( p1 ). D'autres axiomes sont imposs

Nous devons donc choisir


rence de

par cette approche intuitive :

- la fonction quantit d'information

I (p) est positive et continue.

- l'information apporte par un vnement certain est nulle.

x, y, la quantit d'information apporx et y sera la somme des quantits d'information I (x) et I (y) ; puisque

- pour deux vnements indpendants


te par

la probabilit d'occurence de deux vnements est le produit des probabili-

I est fonction inverse de la probabilit


I (x; y) = I (x) + I (y), soit f ( P (x)1P (y) ) = f ( P (1x) ) + f ( P (1y) ).

ts, et que la quantit d'information


de

x, I

vrie

Les seules fonctions satisfaisant ces axiomes sont :

I (x) = K  log(

1 )
P (x)

20

CHAPITRE 2.

THORIE DE L'INFORMATION

ce qui est un rsultat classique que nous ne redmontrons pas. Choisir une
constante

revient choisir une base pour le logarithme, ce qui est qui-

valent choisir une unit de mesure. Par convention, on choisit le


l'unit

bit

pour binary unit, ou parfois

shannon.

log2

et

Nous arrivons la dni-

tion :

Pour une source S = (S; P ), La quantit d'information fournie par l'occurence d'un symbole s 2 S de probabilit p 2]0; 1] est :

Dnition 5

I (p) = log2 ( )
p

2.3.2 Entropie
L'entropie d'une source est la quantit moyenne d'information contenue
dans cette source.

Dnition 6 L'entropie
(p1 ; : : : ; pn ) est :

d'une source

S = (S; P ), S = (s1; : : : ; sn), P =

H (S ) = H (p1 ; : : : ; pn ) =
C'est une mesure de

l'incertitude

n
X

pi log2 ( )
pi
i=1

lie une loi de probabilits, ce qui

est illustr par l'exemple suivant : On considre la variable alatoire (source)


issue du jet d'un d n faces. Il y a plus d'incertitude dans le rsultat de ce jet
si le d est normal que si le d est biais. Ce qui se traduit par

H (p1 ; : : : ; pn )  H ( n1 ; : : : ; n1 ) = log2 n

8p1; ldots; pn,

En gnralisant,

Proprit 6

Soit

S = (S; P ) une source, de loi (p1; : : : ; pn).


H (S )  log2 n

Preuve Nous commenons par montrer un lemme dont nous aurons plusieurs fois besoin.

lemme de Gibbs : Soient (p1 ; : : : ; pn ), (q1 ; : : : ; qn ) deux lois de proba-

bilitdiscrtes.

n
X

qi
0
pi
i=1
Preuve du lemme : on sait que 8x 2 IR, ln(x)  x
1. Donc
n
X

Soit puisque

pi  ln

pi  log

qi
pi

i=1
Pn
Pn
i=1 pi = i=1 qi
n
X
i=1

n
X
i=1

pi  (

= 0,

pi  ln

qi
pi

0

qi
pi

1)

2.4.

21

THORME DE SHANNON

Par suite,

n
X
i=1

pi  log

qi
pi

0

Appliquons ensuite ce lemme la distribution


on obtient

(q1 ; : : : ; qn ) = ( n1 ; : : : ; n1 ),

H (S )  log2 n

S une source, et S k sa k-ime extension.


H (S k ) = kH (S )
Preuve On dveloppe l'expression de H (S k ) :

Proprit 7

Soient

H (S k ) =

X
i1 ;::: ;ik ;0ij jV j

pi1 : : : pik log

pi1 : : : pik

Soit

H (S k ) =

X
i1 ;::: ;ik

pi1 : : : pik log

1 + ::: +
p
i1

X
i1 ;::: ;ik

pi1 : : : pik log

pik

Le premier terme de cette somme est :

X
i1 ;::: ;ik

pi1 : : : pik log

jV j
jV j
jV j
X
1 =X
1 X
pi1 log 
pi2  : : : 
pik
p
p
i1

i1

i1 =1

Puisque la somme des probabilits

jV j
X
i1 =1

pi1 log

pj

i2 =1

vaut toujours

ik =1

1, ceci est gal :

1 = H (S )
p
i1

Et en replaant ce terme dans l'expression prcdente,

H (S k ) = H (S ) + : : : + H (S ) = kH (S )

2.4 Thorme de Shannon


Ce thorme fondamental de la thorie de l'information est connu sous
le nom de

thorme de Shannon

ou

thorme du codage sans bruit

Nous commenons par noncer le thorme dans le cas d'une source sans
mmoire :

22

CHAPITRE 2.

THORIE DE L'INFORMATION

Soit une source S sans mmoire d'entropie H .


Tout code uniquement dchirable de S sur un vocabulaire de taille
de longueur moyenne l, vrie :

Thorme 4

l

H
log2 Q

De plus, il existe un code uniquement dchirable de


de taille Q, de longueur moyenne l, qui vrie :

l<

Preuve

Q,

S sur un vocabulaire

H
+1
log2 Q

C = (c1 ; : : : ; cn ) un code de S uniquement dQ, et (l1 ; : : : ; ln ) les longueurs des


Pn
1 , K  1 d'aprs le throme de Kraft. Soient
mots de C . soit K =
i=1 Qli
P
(q1 ; : : : ; qn ) tels que 8i; qi = QKli . On a alors 8i; qi 2 [0; 1] et ni=1 qi = 1
donc (q1 ; : : : ; qn ) est une distribution de probabilits. On peut donc applipremire partie

: Soit

chirable sur un vocabulaire de taille

quer le lemme de Gibbs (dmontr en section 2.3.2) :

n
X
i=1
Soit ici,

n
X
i=1

Ou encore

n
X
i=1

Et comme

pi log

logK  0,

pi ),

: Soient

il existe un code de

pilog

qi
pi

0

Q li
Kpi

0

n
1 X
pi li logQ + logK
p
i

i=1

H (S )  l  logQ

D'o le rsultat.

seconde partie

pi log

li = blogQ p1i c.

Comme

sur un vocabulaire de taille

chirable, avec des longueurs de mots gales

blogQ p1i c + 1, pi < Q li+1


n
X
i=1

Q,

 1 (car Qli 
uniquement d-

(l1 ; : : : ; ln ).

et par suite,

pi log

n
1 >X
pi li logQ logQ
p
i

i=1

l<

H (S )
+1
logQ

Soit

Pn
1
i=1 Qli

On en dduit le thorme pour la

k-ime extension de S

Comme

li <

2.5.

CODES COMPRESSEURS USUELS

Soit une source S stationnaire d'entropie H .


Tout code uniquement dchirable de S k sur un vocabulaire de taille
de longueur moyenne lk , vrie :

Thorme 5

lk
k

23

Q,

 logH Q
2

De plus, il existe un code uniquement dchirable de S k sur un vocabulaire


de taille Q, de longueur moyenne lk , qui vrie :

lk
H
<
+ 1=k
k log2 Q

Preuve la preuve de ce thorme est immdiate d'aprs la proprit selon


k
laquelle H (S ) = k  H (S ). 2
Pour une source stationnaire quelconque, le thorme peut s'noncer :

Thorme 6

Pour toute source stationnaire d'entropie H , il existe un procd de codage uniquement dchirable sur un vocabulaire de taille Q, et
de longueur moyenne l, aussi proche que l'on veut de sa borne infrieure
H=log2 (Q).
En thorie, il est donc possible de trouver un code s'approchant indniment de l'entropie. En pratique pourtant, si le procd de codage consiste
coder les mots d'une extension de la source, on est limit videmment par

jS k j = jSjk , ce qui peut reprsenter un trs grand

le nombre de ces mots (


nombre de mots).

L'algorithme de Human (ou des variantes) est utilis en pratique, souvent en mme temps que d'autres procds de codages, pas toujours optimaux en thorie, mais qui font des hypothses raisonnables sur la forme
des chiers compresser (ce sont des modles de source) pour diminuer
l'entropie, ou accepter une destruction d'information que l'on suppose sans
consquence pour l'utilisation des donns.

2.5 Codes compresseurs usuels


 L'algorithme de la commande pack de Unix est une implmentation
de l'arbre de Human.
 L'algorithme de Lempel-Ziv (utilis par les commandes compress de
Unix, ou gzip) est une variante sur le code de Human : deux arbres
sont implments, un pour les chanes de caractres, l'autre pour les
distances entre occurences. Les distances entre deux occurences d'une
chane sont bornees : lorsque la distance devient trop grande, on repart
a 0.

24

CHAPITRE 2.

THORIE DE L'INFORMATION

 Il y a aussi des compressions avec perte d'information : par exemple,


le codage au format JPEG (Joint Photographic Experts Group) compresse des images xes. L'algorithme de codage est complexe, et se
droule en plusieurs etapes. Le principe de base est que les couleurs
des pixels voisines dans une image dirent peu. On code donc le dcalage par rapport a la pixel voisine. De plus, une image est un signal :
plutt que les valeurs des pixels, on calcule les frequences (transformee
de Fourier DFT, transformee en cosinus discte DCT). En ne gardant
que les premiers termes de la decomposition (les plus importants), on
perd un peu d'information mais l'image reste visible. L'image est nalement cod comme une suite de nombres (une valeur de DCT suivie
du nombre de pixels ayant cette valeur qui sont consecutives selon
un balayage en zigzag de l'image). En n d'algorithme, un codage de
Hufmann compresse le chier de nombres ainsi obtenus.
 Le format MPEG (Motion Picture Experts Group) assure la compression d'images animes). L'algorithme de codage utilise JPEG pour coder une image mais prend en compte le fait que deux images consecutives dans une squence video sont tres voisines. Une des particularits
des normes MPEG est de chercher compenser le mouvement (ex.
zoom etc) d'une image a la suivante. Une sortie MPEG(-1) contient 4
sortes d'images : des images au format MPEG, des images codes par
dirences avec l'image prcdente, des images bidirectionnelles codees
pare dierence avec l'image prcdente et la suivante, enn des images
basse resolution utilises pour l'avance rapide sur un magntoscope.

2.5.

25

CODES COMPRESSEURS USUELS

0.05

0.06
f

0.10

0.35

0.25

0.19

tri dans lordre croissant


0.11

0.10

0.35

0.25

0.19

c
0.05

0.06
f

e
construction de larbre et tri du niveau le plus haut
0.21

0.19

0.35

0.25

0.11

0.10
b
0.05

0.06
f

e
tape suivante

0.25

0.41

0.35
d

a
0.19

0.21
c
0.10

0.11
b
0.05

0.06
f

tape suivante

0.40

0.60
0

1
0.21

0.19

0.25
d

0.35

1
a

1
0.11

0
0.10
b

0
0.05

1
0.06

e
arbre final

Fig. 2.4  Exemple de construction d'un code de Human

26

CHAPITRE 2.

THORIE DE L'INFORMATION

Chapitre 3

Dtection et correction
d'erreurs
Lorsqu'une source met une squence de bits S = s1 ; : : : ; sk , la squence
S 0 = s01 ; : : : ; s0k reue par le collecteur peut direr : si s0i 6= si , on dit qu'il y
a eu erreur sur le bit d'indice i.
Le taux d'erreur dpend de la nature de la ligne de transmission (locale/internationale, nombre de rpteurs, support cble/satellite, ...) ; il varie
typiquement de

10

10

7.

Les mthodes pour se protger contre ces erreurs en les dtectant voire
en les corrigeant de manire automatique, consistent ajouter des bits

bits de contrle, l'aide d'un mcodeur. Le codeur transforme donc la squence transmettre

d'information supplmentaires, appels


canisme appel

S = s1 ; : : : ; sk

en une squence

(S ) = s01 ; : : : ; s0k ; : : : ; s0k+r

qui comporte

bits de redondance par rapport au message initial.


Pour permettre le dcodage, la fonction

doit bien sr tre injective ;

ainsi, lorsqu'il n'y a pas d'erreur, le calcul aprs rception de

permet de reconstruire le message source.

 1 (s01 ; s0k+r ) =

 tant injective, E = Im() est un sous-ensemble E  f0; 1gk+r comk


portant seulement 2 mots de code (chacun cod sur k + r bits). Ainsi, la
k+r
E )
rception d'un mot qui n'est pas dans E (i.e. dans E = f0; 1g
indique une erreur. La dtection d'erreur repose alors sur le test de non-

E . Comme il est possible de recevoir un mot commportant


des erreurs mais appartenant E , on parle de syndrome d'erreur.
Dans un souci d'ecacit, le code  doit tre choisi pour que ce test :

appartenance

 permette de dtecter le plus d'erreurs possibles ;


 soit le moins coteux possible.
Suite une dtection d'erreurs, le dcodeur peut ventuellement procder
une correction, on distingue deux classes de corrections :
 correction directe : le signal erron reu contient susamment d'informationn pour permettre de retrouver le mot mis ;

27

28

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

Mot de code sur 7 bits

Mot avec bit de parit

1
0
00000000

0101001

0101001

0001001

0001001

0000000

Fig. 3.1  Dtection d'erreur par bit de parit.

 correction par retransmission (ou ARQ) : une demande de retransmission du message source est eectue lorsque l'erreur ne peut pas tre
corrige.
Le but de ce chapitre est d'introduire les principaux codes dtecteurs/correcteurs
d'erreurs, les codes

cycliques (on dit aussi polynmiaux), et leurs fondements

mathmatiques.

Un exemple simple de dtection : bit de parit longitudinale.


Soit
Pk
S = s1 ; : : : ; sk ; soit alors (S ) = s1 ; : : : ; sk ; sk+1 o sk+1 = ( i=1 si )mod2
1
indique si S contient un nombre pair ou impair de 1.
De manire vidente (cf gure 3.1), l'ajout d'un bit de parit longitudinale
permet de dtecter toutes les ereeurs portant sur un nombre impair de bits.

Un exemple simple de correction directe : contrle de parit longitudinale et transversale. Corriger une erreur se ramne localiser les
bits o une erreur est apparue.

3.1

Formalisation du problme et dnitions

3.1.1 Code systmatique par blocs


Soit

le vocabulaire de base ; les lments de

sont appels des

chires.

+) et de multiplication

On supposera de plus que les oprations d'addition (


(

) de chires dans V

sont dnies et confrent

une structure d'anneau

commutatif :
 le chire 0 (resp. 1) est l'lment neutre pour + (resp




(V; +; 0) est un groupe commutatif, i.e. + est associative et commutative et tout elment x 2 V a un inverse pour l'addition, not
x.
 est associative et commutative (car anneau commutatif ).
 est distributive sur + : x  (y + z) = (x  y) + (x  z).

V est un corps : ainsi


V n comme un espace vectoriel de dimension n sur

De plus, nous supposerons dans toute la suite que


nous pourrons considrer
le corps
1

) ;

V.

On a aussi que

XORki=1 si .

3.1.

29

FORMALISATION DU PROBLME ET DFINITIONS

Nous verrons la section 3.2 que le fait de considrer

comme un corps

impose des restrictions sur son nombre d'elments, qui doit alors tre de la
forme

jV j = pm o m est un nombre premier (rsultat de base sur les corps

nis).
En particulier, on s'intressera ici surtout aux cas o

d entier.
Pour jV j  10,

est de cardinal

2d

avec

V comme un corps interdit seulement


V est 6 ou 10. Dans tous les cas, on peut toujours
enlever (ou ajouter) V quelques lments articiellement pour que son
m avec p nombre premier.
cardinal soit de la forme p
+
Soit m 2 V
un message transmettre (on suppose donc le message
le fait de considrer

les cas o le cardinal de

source pralablement encod sous forme d'une squence de chires l'aide


d'un code sur

V ).

Dnition 7
redondance

Un codage
consiste :

systmatique par blocs de

1. partitionner le message m = m0 : : : mlk 1


de k chires conscutifs, i.e. :

m = M0 :::Ml 1
2. Coder chaque bloc
i.e. :

: Vk !Vr

Le message

Mi

avec

k chires avec r bits de

2 V lk transmettre en blocs

Mi = mik : : : m(i+1)k 1

en ajoutant

chires de redondance

Ri

2 V r,

Ri = (Mi )

est une fonction.

m est alors cod par la squence : [M0 R0 M1 R1 : : : Ml 1 Rl 1 ].

On dnit les quantits suivantes :

n = k + r est appel longueur du code ;


k
 R =
n est appel rendement du code ;
 le code est dit code(n; k ).
Un code (n,k) est dit t-dtecteur (resp. t-correcteur) si il permet de dtecter
(resp. corriger) toute erreur portant sur t chires ou moins.


Exemples :
 L'ajout d'un bit pour contrler la parit des 7 bits qui le prcdent est
un code systmatique par bloc. C'est un code (8,7). Il est 1-dtecteur
et 0-correcteur avec un rendement 87,5%.
 Le contrle de parit longitudinale et transversale sur 21 bits (avec
ajout de 11 bits de contrle) est un code (32,21). Il est 1-correcteur
avec un rendement 65,625%.

30

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

3.1.2 Code correcteur et distance de Hamming


Le nombre (minimal) d'erreurs lors de la transmission d'un mot de code
est le nombre de chires dirents entre le mot mis et le mot reu ; cette
quantit dnit une distance appele

distance de Hamming.

n ; les mots de
V n qui est vu comme un espace vectoriel
n : m m
de dimension n sur V . Soient m1 et m2 deux lments de V
1
2
n
(resp. m1
m2) dsigne donc l'lment de V
obtenu par addition (resp.
multiplication) composante par composante de m1 et m2 .
Dans toute la suite on considre un code de longueur

code sont donc des lments de

x = (x1 ; : : : ; xn ) 2 V n .
On appelle poids de Hamming de x, note w(x),
non nulles de x i.e.

Dnition 8

Soit

le nombre de composantes

w(x) = Cardfi 2 f1; : : : ; ng=xi 6= 0g


V = Z=2Z, w vrie w(x  y) = w(x) + w(y) 2w(x
y) et on a donc
l'ingalit triangulaire : w (x  y )  w (x) + w (y ).
Si

x = (x1 ; : : : ; xn ) et y = (y1 ; : : : ; yn ) deux mots de V n .


On appelle distance de Hamming entre x et y , note d(x; y ), le nombre de
composantes pour lesquelles x et y dirent, i.e.

Dnition 9

Soient

d(x; y) = w(x y):


La quantit

ainsi dnie est bien une distance sur

Vn

x, y et z dans
on a :
+
 d(x; y ) 2 R ;
 d(x; y ) = 0 () x = y ;
 d(x; y ) = d(y; x) ;
 d(x; y )  d(x; z ) + d(y; z ).

tout

Vn;

en eet pour

Cette distance de Hamming permet de caractriser le nombre d'erreurs


que peut corriger un code

C de longueur n. En eet, soit m 2 C un mot de n

0
0
chires mis et soit m le mot reu, suppos dirent de m (i.e. d(m:m ) > 0) :
0
 pour que C puisse dtecter une erreur, il est ncessaire que m 62 C
(sinon, le mot reu est un mot de

donc considr correct).

 pour pouvoir faire une correction (i.e. retrouver

partir de

0
faut que m soit l'unique mot de C le plus proche de m ; i.e.

m0 ,

8x 2 C : x 6= m =) d(x; m0 ) > d(m; m0 ):


Dnition 10

Soit

un code de longueur n.

8x 2 V n :

est dit

t-correcteur

Cardfc 2 C=d(x; c)  tg  1:

ssi

il

3.1.

FORMALISATION DU PROBLME ET DFINITIONS

31

La correction d'une erreur peut aussi tre dcrite en considrant les boules

Bt (c) de centre c 2 C

et de rayon

t:

Bt (c) = fx 2 V n =d(c; x)  tg:

Lors de la rception de

m0 , on peut corriger m0
Bd(m;m0 ) (m0 )

La capacit de correction d'un code


entre deux elments de

Dnition 11

C.

en

m ssi on a :

C = fmg:

est donc lie la distance minimale

La distance minimale du code C , note (C ), est dnie par :

(C ) =

min

(c1 ;c2 )2C 2 ;c1 6=c2

d(c1 ; c2 ):

Ces deux remarques sont la base du thorme suivant qui caractrise

t-correcteur.
Thorme 7 Soit C
un code

un code de longueur n. Les proprits suivantes sont


quivalentes :
(i) C est t-correcteur ;
(ii) 8x 2 V n : Cardfc 2 C=d(x; c) Ttg  1 ;
(iii) 8c1 ; c2 2 C : c1 6= c2 =) Bt (c1 ) Bt (c2 ) = ;
(iv) 8c1 ; c2 2 C : c1 6= c2 =) d(c1 ; c2 ) > 2t ;
(v) (C )  2t + 1.
La preuve est immdiate :



(i) () (ii) est la dnition d'un code t-correcteur.


T
(ii) =) (iii) : par la contrapose. Supposons 9x 2 Bt (c1 ) Bt (c2 ) ;
ainsi c1 et c2 sont une distance  t de x. D'aprs (ii), cela n'est
possible que pour au plus un mot de code ; donc c1 = c2 .
(iii) =) (iv) : par l'absurde. Si d(c1 ; c2 )  2t ; soient i1 ; : : : ; id avec
d  2t les indices o les chires de c1 et c2 dirent. Soit x le mot
Vn

c1 sauf les chires


c1 ; :::; cd=2 qui sont gaux ceux de c2 . Alors d(x; c1 ) =
d=2  t et donc x 2 Bt (c1 ). De
mme, d(x; c2 ) = d
(d=2)  t et donc
T
x 2 Bt (c2 ). D'o x 2 Bt (c1 ) Bt (c2 ) ce qui contredit (iii).
(iv) =) (v) : d'aprs (iv), on a d(c1 ; c2 )  2t + 18(c1 ; c2 ) 2 C 2 . D'o
(C )  2t + 1.
(v) =) (ii) : par la contrapose. Supposons 9x 2 V n : Cardfc 2
C=d(x; c)  tg  2. Il existe alors c1 6= c2 tels que d(x; c1 )  d(x; c2 ) 
t. D'o comme d, distance de Hamming, vre l'ingalit triangulaire :
d(c1 ; c2 )  d(c1 ; x) + d(x; c2 )  2t. Donc (C )  2t.
de

dont les chires sont les mmes que ceux de

en position




cqfd.

Exercice 1. Montrer que si C est t-correcteur alors C est d-dtecteur avec


d  2t. La rciproque est-elle vraie ?

32

CHAPITRE 3.

Exercice 2.

Soit

DTECTION ET CORRECTION D'ERREURS

un code

(n; k) sur un vocabulaire V . Ecrire un pro-

gramme qui calcule le taux de dtection et de correction du code ; donner le


cot de ce programme en fonction de
Application : Soit le code binaire
Que valent

k et n.

f0000000000; 0000011111; 1111100000; 1111111111g.

n et k pour ce code ? Calculer son rendement, son taux de dtec-

tion et de correction.

Exercice 3.

Le contrle de parit transversale et longitudinale sur 4 bits

conduit au code (9,4) suivant :


Le mot de code associ la source

b0 b1 b2 b3

est :

[b0 ; b1 ; b2 ; b3 ; (b0 + b1 ); (b2 + b3 ); (b0 + b2 ); (b1 + b3 ); (b0 + b1 + b2 + b3 )]:


On obtient ainsi C= { 000000000, 000101011, 001001101, 001100110, ... }.
1. Montrer que C est exactement 1 correcteur.
2. Donner une conguration comportant 2 erreurs non corrigibles.
3. Montrer que C est 3-dtecteur mais pas 4-dtecteur.

3.1.3 Code parfait


t;

Un code

t-correcteur

permet de corriger toute erreur

e de poids w(e) 

mais il peut subsister des erreurs dtectes non corriges (voir exercice

prcdent). On dit qu'un code est parfait lorsque toute erreur dtecte est
corrige. Ce paragraphe tudie quelques proprits des codes parfaits.

Dnition 12

Un code t-parfait est un code t-correcteur dans lequel toute


erreur dtecte est corrige.

t-parfait, lorsqu'on reoit un mot m0 62 C , alors il existe un


0
unique mot m de C tel que d(m; m )  t. De plus, comme C est t-correcteur,
les boules de rayon t et de centre des mots de C sont deux deux disjointes ;
Si

est

d'o le thorme suivant.

Thorme 8 Le code C (n; k) sur V est t-parfait ssi les boules de centre les
mots de C et de rayon t forment une partition disjointe de V n , i.e.
Vn =

c2C

Bt (c):

videmment, une telle partition n'est possible que pour certaines valeurs

de

et

k,

en fonction du cardinal de

V.

Le throrme suivant donne des

t-correcteurs et t-parfaits.
Thorme 9 Soit C (n; k) un code t correcteur sur V . Alors
conditions ncessaires pour l'existence de codes

1 + Cn1 (jV j 1) + Cn2 (jV j 1)2 +    + Cnt (jV j 1)t  jV jn k :


Si de plus il y a galit, alors C (n; k ) est t-parfait.

3.1.

FORMALISATION DU PROBLME ET DFINITIONS

La preuve repose sur le calcul du cardinal de


2 disjointes dans le cas d'un code

c2C Bt

33

(c), les boules tant 2

t-correcteur.
t de V n est :

En eet, le cardinal d'une boule de rayon

jBt (x)j = 1 + Cn1(jV j 1) + Cn2 (jV j 1)2 +    + Cnt (jV j 1)t :


k
n associes
Comme un code C (n; k ) possde exactement jV j lments de V
des boules 2 2 disjointes dont l'union est incluse dans

V n , on a :


jV jk 1 + Cn1 (jV j 1) + Cn2 (jV j 1)2 +    + Cnt (jV j 1)t  jV jn;


d'o la premire ingalit. Si il y a galit, alors le cardinal de l'union est gal

jV jn ; de plus, comme le code est t-correcteur, les boules sont disjointes.

Donc leur union est gale

V n et le code est parfait. cqfd.

Exercice 4. Montrer que tout code 1-correcteur sur des mots de k = 4


bits (V = f0; 1g) requiert au moins 3 bits de redondance. Montrer que si il
existe un code 1-correcteur avec 3 bits de redondance, alors il est parfait.

3.1.4 Cas particulier o V

f0 1g - Codes de Hamming
;

V =PF 2 = Z=2Z.
x 2 F2n ; on a w(x) = Cardfi 2 f1; : : : ; ng=xi 6= 0g = ni=1 xi .
Dans F2 , a + b = a
b ; on a alors les proprits suivantes :
Proprit 8 Soit x et y deux lments quelconques de F2n ; on a :
 w(x) = d(x; 0) ;
 d(x; y ) = w(x + y ) ;
 w(x + y ) = w(x) + w(y ) 2w(x:y ).
Dans le cas d'un vocabulaire binaire, on peut prendre
Soit

Exercice 5. Soit un code binaire (k + r; k) 1-correcteur


ajouter r bits de redondance pour k bits de donnes.
a. Montrer que

k  2r

qui consiste

r 1:

b. En dduire une borne sur le rendement maximal d'un code 1-correcteur


dont le nombre de bits de contrle est

3, puis 4, puis 5, puis 6.

c. Existe-t-il un code 1-parfait de longueur

n = 2m ?

Codes de Hamming.
r r  k + 1 permet de dterminer le nombre
Connaissant k , l'ingalit 2
minimal de bits de contrle ajouter pour obtenir un code 1-correcteur. Les
codes de Hamming (1950) permettent alors d'atteindre cette limite thorique : pour

n bits, le nombre de bits de contrle est log2 n + 1. Ce sont des

34

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

(n; n blog2 nc 1).


n
Soit c = c1 : : : cn 2 f0; 1g un mot de code. Les bits ci dont l'indice i est une
codes

puissance de 2 sont des bits de contrle ; les autres sont des bits de donnes.
Le bit de contrle d'indice

i = 2l

est le ou-exclusif (contrle de parit) de

tous les bits de donnes dont les indices crits en base 2 ont le ime bit 1.
Pour assurer la correction, le contrle de parit est fait de la faon suivante. Tous les bits de contrle d'indice

i = 2l

sont vris ; une erreur est

e la somme
i qui ne sont pas vris. Si il y a une seule
erreur, elle provient alors du bit e.
Thorme 10 Le code de Hamming (n; n blog2 nc 1) est un code 1-

dtecte si l'un de ces bits est erron (parit errone). Soit alors
des indices des bits de contrle

correcteur qui requiert un nombre de bits de contrle minimal parmi tous les
codes (n; k ) qui sont 1-correcteur.
En particulier, le code de Hamming (2m 1; 2m 1 m) est un code 1-parfait.
La preuve dcoule directement des proprits ci-dessus. cqfd.

Exemple : Code de Hamming (7,4). Les bits c1 ; c2 ; c4 sont des bits de


contrle ; les bits c3 ; c5 ; c6 ; c7 sont des bits de donnes. On a : 3 = 1 +2 ; 5
= 1+4 ; 6 = 2+4 ; 7=1+2+4. D'o : c1 = c3  c5 + c7 ; c2 = c3  c6  c7 ;
enn c4 = c5  c6  c7 .
Ainsi

1101 est cod sous la forme : 1010101.

Correction d'erreur dans le code (7,4).


posons que l'on recoit le mot

En reprenant l'exemple, sup-

1111101 : le message source est alors 1101, mais

le contrle de parit indique que les bits 2 et 4 sont errons ; la correction


d'une erreur unique est alors ralise en modiant le bit d'indice 4+2=6. Le
mot corrig est alors

3.1.5

1111 (qui est cod en 1111111).

Codes cycliques : CRC

Pour qu'un code correcteur soit intressant en pratique, il faut qu'il soit
ecace calculer d'une part (i.e. implmentable sur un circuit simple) et
que d'autre part il permette facilement de calculer le mot de code le plus
proche du mot reu lors de la dtection d'erreurs.
De plus, il est important de pouvoir construire des codes ayant un rendement maximal : pour un nombre de chires de redondance donn, le taux
de correction doit tre maximal.
En pratique, les codes les plus utiliss qui satisfont ces critres sont
les codes de redondance cyclique, appels

CRC.

Ces codes sont des codes

linaires (i.e. les bits de contrle sont des combinaisons linaires des bits
d'information) qui sont de plus stables par dcalage des chires. Un tel code
est caractris par un

mial.

polynme gnrateur ;

on parle parfois de

code polyno-

3.2.

35

BASES MATHMATIQUES DES CODES CYCLIQUES

3.2 Bases mathmatiques des codes cycliques


Un code correcteur peut tre vu comme l'image d'une application  de
V k dans V n . L'analyse de  dans un contexte quelconque est dicile ; aussi,
on se restreint au cas o  est linaire. Pour pouvoir tudier ce cas, il faut
k et V n soit des espaces vectoriels, donc que V soit un corps.
que V
Tous les rsultats d'algbre linaire sont alors valides. Par exemple, si 
n
est une application linaire de V , alors : dim(Im()) + dim(Ker()) = n.
Dans cette section, nous rappelons les conditions pour que V puisse tre
muni d'une structure de corps ni. Puis nous rappelons le thorme chinois des restes qui explicite une bijection (plus prcisment un isomorphisme
d'anneau) entre

d'une part et l'ensemble des polynmes coecients

n d'autre part.
n 1 dans un corps ni qui est
Enn, nous tudions la factorisation de X

dans

Vn

et de degr strictement infrieur

la base de la construction des codes cycliques.

3.2.1 Corps ni


pd o p est un nombre
d
premier et d un entier. Il existe alors un unique corps Fq q = p elments.
Ce corps peut tre caractris algorithmiquement de la faon suivante. p
tant un nombre premier, Fp = Z=pZ est un corps. Soit alors Fp [x] l'anneau
2
des polynmes coecients dans Z=pZ ; cet anneau est un anneau euclidien
Plus prcisment, tout corps ni est de cardinal

et

principal3

: la notion de pgcd existe et il y a des polynmes

irrductibles,

i.e. premier avec tous les polynmes de degr infrieur.

Id (x) = xd +
irrductible de degr d. L'anneau quotient K = Fp [x]=Id (x):Fp [x]

En particulier, pour tout

Pd 1
i
i=0 i x

d,

il existe au moins un polynme

est alors un corps : cette construction est analogue la construction du corps

Z=q:Z

q nombre premier, mais en remplaant Z


q par le polynme irrductible Id (x).

avec

premier

par

Fp [x]

et l'entier

Ainsi on a construit un corps dont tous les lments peuvent tre vus comme
les restes dans la dicvision euclidienne par le polynme

d. Comme il y a pd restes possibles, jK j = pd .


Tout corps Fq est alors isomorphe K ; ceci
algorithmique du corps Fq .

Id (x) qui est de degr

fournit une caractrisation

3.2.2 Anneau quotient V [X ]=P (X )


Soit

V [X ] = fP =

Pd
i
i=0 ai X =d

polynmes coecients dans


2

2 N ; (a0 ; : : : ad) 2 V d+1 g l'anneau des

V . On note deg(P ) le degr du polynme P .

Il existe une division euclidienne, et donc des pgcd et des lments premiers  ou
irrductibles  c'est dire sans diviseur trivial.
3
tout elment admet une dcomposition unique en facteurs irrductibles.

36

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

V est un corps, V [X ] est un anneau euclidien : 8A; B 2 V [x] :


9!(Q; R) 2 V [x] avec deg(R) < deg(B ) tels que :
A = B:Q + R:
Q est le polynme quotient dans la division euclidienne de A par B ; le reste
R est aussi not A mod B .
Soit alors P un polynme de degr d  1 ; grce la division euclidienne,
l'ensemble des polynmes de degr infrieur strictement d peut tre muni
d'une structure d'anneau quotient, not V [x]=P et dni comme suit :
V [X ]=P = fA mod P : A 2 V [X ]g
En eet, soit A et B deux polynmes de V [X ]=P . Les oprations arithmComme

tiques d'addition et de multiplication sont dnies comme suit :

A +V [X ]=P B = (A +V [X ] B ) mod P
A V [X ]=P B = (A V [X ] B ) mod P
Par abus de langage, nous notons dans la suite ces oprations
elles sont bien sr toujours ralises modulo

dans l'anneau

+ et  (ou :) ;
V [X ]=P .

(V [X ]=P; +; ) a bien une structure d'anneau commutatif :


0:X 0 not 0) est lment neutre pour + ;
0
le polynme unit (1:X not 1) est lment neutre pour  ;
(V [X ]=P; +; 0) est un groupe commutatif ;
(V [X ]=P; ) est un monoide :  est stable et associative.
 est distributive par rapport + ;

Ainsi,

 le polynme nul (






 est commutative ; l'anneau est donc commutatif.

3.2.3 Isomorphisme entre V [X ]=P et V deg(P )


Soit P un polynme de degr n ; l'ensemble V [X ]=P

est alors celui des

n.
u = [u0 ; :P
: : ; un 1 ] de V n , on peut associer de manire bin 1
i
jective le polynme (u) =
i=0 ui X . De part les proprits de l'opration
polynmes de degr strictement infrieur
A tout vecteur

modulo, on a trivialement les proprits suivantes :





8u; v 2 V n; 8 2 V : (u +V n :V n v) = (u) +V [X ]=P  V [X ]=P (v)


(0V n ) = OV [X ]=P

Aisni,

V [X ]=P .

est un isomorphisme entre les deux

De plus, nous avons vu que

V [X ]=P

espaces vectoriels

est un anneau ;

une structure d'anneau. La multiplication

 dans V [X ]=P :
8u; v 2 V n : u V n v =

Vn

confre alors

et

Vn

V n peut tre dnie partir de

la multiplication

1 ( (u) 

Par abus de notation, cette multiplication sera note


sr dnie que par rapport au polynme

V [X ]=P .

de degr

(v))

. Son sens n'est bien


n qui dnit l'anneau

3.2.

37

BASES MATHMATIQUES DES CODES CYCLIQUES

3.2.4

PGCD et polynmes irrductibles

De la mme manire que l'on peut dcomposer un entier

n = pn1 1 :::pnk k

sous forme de produits et puissances de nombres premiers, on peut dcomposer un polynme sous la forme de produits de polynme premiers (on

irrductibles).

dit en fait

composition.
L'anneau

Le but de ce pargraphe est d'introduire cette d-

V [X ] des polynmes coecients dans V

tant euclidien, l'op-

ration de pgcd est dnie ; l'algorithme d'Euclide appliqu deux polynmes

et

est valide et fournit un polynme de degr maximal (unique si on le

choisit unitaire) qui divise la fois

et

V . Par ailleurs, l'idendit de Bezout

est valide :

8u; v 2 V [x] 9a; b 2 V [X ] = a:u + b:v = pgcd(u; v)


De plus, l'algorithme d'Euclide tendu (ou ses variantes plus ecaces) donne
un algorithme qui permet de calculer eectivement deux polynmes
dont les degrs respectifs sont strictement infrieurs ceux de
et

u=pgcd(u; v).

Deux polynmes sont dits


nul, i.e.

0
pgcd(U; P )=X

= 1.

premiers entre eux


Autrement dit,

et

v=pgcd(u; v)

si leur pgcd est de degr


et

n'admettent aucun

facteur commun non trivial.


Dans, ce cas, l'identit de Bezout s'crit :

9AU ; B 2 V [X ]=AU :U + B:P = 1;


soit encore

AU :U

l'anneau quotient

mod P = 1 : autrement dit U est


V [X ]=P et d'inverse AU mod P .

alors

inversible

dans

De manire similaire ce qui se passe pour les entiers avec les nombres

premiers,

il existe des polynmes dits

irrductibles

qui n'ont aucun diviseur

non trivial. Autrement dit, un polynme est irrductible ssi il est premier
avec tous les polynmes de degr infrieur lui-mme :

est irrductible

() 8U 6= 0 2 V [X ]=P :

pgcd

(U; P ) = 1

U de l'anneau quotient V [X ]=P admet un inverse


V [X ]=P est un corps.
Par ailleurs, l'anneau des polynmes V [X ] coecients dans V est principal donc factoriel : tout lment P 2 V [X ] admet une dcomposition en
Ainsi, tout lment non nul

AU

dans cet anneau ; autrement dit

facteurs irrductibles :

o les

di

P = g1d1 : : : gkdk

sont des entiers non nuls et les polynmes

est unitaire , les

gi

gi

sont irrductibles. Si

peuvent tre choisis unitaires : la dcomposition est

alors unique une permutation d'indice prs.


4

i.e. le coecient du monme de plus haut degr de

est gal 1.

38

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

Le thorme fondamental de l'algbre montre que tout polynme de degr


a exactement

racines  distinctes ou confondues  dans une extension

algbrique susante (disons la clture du corps

V , i.e. le plus petit corps qui

contient toutes les racines de tous les polynmes irrductibles coecient

V ). Soient donc i ses n racines ; on a P = ni=1 (X i ).


Lorsque une racine apparat plusieurs fois ( i = j ), elle est dite
dans

Sinon, elle est dite simple.

multiple.

P = g1 : : : gn car les di sont


di  2 indique que P a au moins une racine
multiple dans la cloture algbrique de V .
n 1 a toutes ses racines simples. Il
En particulier, le polynme P = X
Lorsque

a toutes ses racines simples , on a

alors tous gaux 1 ; en eet,

peut donc s'ecrire comme un produit de polynmes irrductibles :

Xn
o les

1 = g1 : : : gk

gi sont irrductibles et tous distincts.

Exemple.

Dans

F 2 [X ]

X 3 1 = (X

1):(X 2 + X + 1)

X 2 + X + 1 est irrductible : il n'est divisible ni par


X (0 n'est pas racine) ni par X + 1 (-1=1 n'est pas racine) qui sont les deux
On vrie aisment que

seuls polynmes non triviaux de degr infrieur lui.

3.2.5

Factorisation de X n

Les facteurs du polynme

: classes cyclotomiques

X n 1 jouent un rle important pour les codes

correcteurs cycliques. Ce paragraphe est consacr la caractrisation de ces


facteurs.

n n'est pas premier avec q = pm . On


premier avec p et donc q . Dans F q , on a l'idendit

Tout d'abord considrons le cas o

0 
a alors n = n :p
6

0
avec n

remarquable

(a + b)i:p = ai:p + bi:p


n 1 = X n0 :p 1 = (X n0 1)p . Trouver les facteurs de X n 1
On a alors X
n0
dans F q se ramne donc trouver ceux de X
1 dans le cas o n0 est
premier avec

q.

Racine simple. Soit a une racine de P ; on a alors P (a) = 0) donc (X


a) divise
. Soit Q le polynme tel que P = (X a):Q. On dit que a est racine simple de P ssi a
n'est pas racine de Q, i.e. Q(a) 6= 0.
Sinon, dans le cas o Q(a) = 0, on dit que a est racine multiple de P .
j j
6
i:p j . Or C j est multiple de p
Il sut de dvelopper : (a + b)i:p = i:p
i:p
j =0 Ci:p a + b
sauf pour j = 0 et j = i:p. Comme Fq est de caractristique p, p:x = 0. Les seuls termes
non nuls dans le dveloppement sont donc ai:p et bi:p .

3.2.

39

BASES MATHMATIQUES DES CODES CYCLIQUES

Dans ce cas, pour tout corps ni

Fq

et pour tout

n entier

premier avec

q, il existe une racine primitive n-ime de l'unit qui vrie :


Xn

En gnral,

1=

n'appartient pas

Fq

nY1
i=0

(X i )

mais une extension algbrique de ce

corps.

Exemple.

Dans

Comme

F2 ,

X3

1 = (X 1)(X 2 + X + 1).

0 et 1, seuls lments de F 2 ne sont pas racines de X 2 + X +1,

ce polynme admet deux racines distinctes dans une extension de

F2 ;

l'une de ces racines.


3 = 1, d'o 4 + 2 + 1 = + 2 + 1 = 0. Ainsi, 2 est
2
3 1 sont :
l'autre racine de X + x + 1. Finalement les 3 racines de X
; 2 ; 3 = 1.
n 1 s'crit donc sous la forme Q
i
Tout diviseur de X
i2 (X ) o 
est une partie de f0; : : : ; n 1g. Le thorme suivant caractrise les diviseurs
n 1 qui sont dans F [X ], i.e. dont les coecients sont dans F .
de X
q
q
Thorme 11 Soit   f0; : : : ; n 1g une partie de Z=nZ. Alors g =
Q
i
n 1.
i2 (X ) est un diviseur de X
De plus, g 2 F q [X ] ssi  est stable par multiplication par q .
Les parties  stables par multiplication par q et minimales sont de la
2
s 1 g o s est le plus petit entier tel que
forme i = fi; i:q; i:q ; : : : ; i:q
s
(q :i) mod n = i. i est appele classe cyclotomique de i relative q modulo
n.
n 1 dans F [X ] est associ une telle classe
Tout diviseur lmentaire de X
q
soit

On a :

cyclotomique.
Le calcul des classes cyclotomiques permet alors de dcomposer facilement

Xn

1 dans F q [X ] en facteurs irrductibles.

Exemple 1. Reprenons l'exemple de la dcomposition de X 3 1 dans F 2 [X ].


3 1 (dans une extension algbrique).
Soit une racine primitive de X
Les classes cyclotomiques et les polynmes irrductibles associs sont
alors :

i = 0 : 0 = f0g. D'o g0 = X 0 = X 1.


 pour i = 1 : 1 = f1; 2g (car 4 = 1 mod 3). D'o g1 = (X
1 )(X 2 ).
Exemple 2. Considrons la dcomposition de X 7 1 dans F 2 [X ]. Les classes
 pour

cyclotomiques et les polynmes irrductibles associs sont alors :

i = 0 : 0 = f0g. D'o g0 = X 0 = X 1.


pour i = 1 : 1 = f1; 2; 4g (car 8 = 1 mod 7). D'o g1 = (X
1 )(X 2 )(X 4 ).

 pour


40

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

i = 3 : 3 = f3; 6; 5g (car 2:5 = 10 = 3 mod 7). D'o g3 =


(X 3 )(X 5 )(X 6 ).
En fait, on montre que F 2 [X ] n'admet que deux ploynmes irrductibles
3
2
3
de degr 3 : (1 + X + X ) et (1 + X + X ). Ces deux polynmes sont
donc g1 et g3 .

 pour

3.3 Construction de codes cycliques


3.3.1 Codes linaires
Nous avons vu qu'un code correcteur
plication

x2

V k.

:

Vk

Vn

(n; k) est caractris par une ap-

qui donne le mot de code

ci 2 V n

associ un mot

 est linaire.
Dnition 13 Soit C = f(x)=x 2 V k g  V n un code (n; k) sur V . Le
code C est dit linaire ssi  est une application linaire de V k ! V n .
 est alors caractris par une matrice GC comportant k lignes et n colonnes
et coecients dans V . La matrice GC est appele matrice gnratrice du
code C .
Les lignes de GC forment un systme gnrateur de C . De plus, comme le codage est injectif, rang(GC ) = dim (C ) = k . Ainsi les k lignes de GC forment
une base du sous-espace vectoriel C , i.e. un systme libre et gnrateur.
Le code est dit linaire ssi

Dans la littrature, les mots de code sont reprsents sous forme de vecteurs
lignes : d'o le choix de reprsenter

 par une matrice rectangulaire avec plus

de colonnes que de lignes.

(4; 3) de parit sur V = f0; 1g. Le mot de


code associ au mot d'information X = [x0 ; x1 ; x2 ] est alors B = [b0 ; b1 ; b2 ; b3 ; b4 ]

Exemple.

Considrons le code

dni par :

8
>
>
<

b0 = x0
b1 = x1
b2 = x2
>
>
:
b3 = x0 + x1 + x2 mod 2
Ce code est donc un code linaire sur V = Z=2Z de matrice gnratrice :
2

B = X:G
Thorme 12 Soit C
On a alors :

Alors

un code

C est (d 1)-dtecteur et
(n; k; d).
i.e.

1 0 0 1
G = 4 0 1 0 1 5:
0 0 1 1

d

(n; k) linaire et soit d = minx2C ;x6=0 w(x).


(C ) = d;

1
2 -correcteur. Le code C est alors dit

code

3.3.

41

CONSTRUCTION DE CODES CYCLIQUES

Preuve. Comme  est linaire, C = Im() est un sous-espace vectoriel de


V n.
Donc 0 2 C (0 est le vecteur dont les n composantes sont nulles). D'o :
8c 2 C; (C )  d(c; 0) = w(c), i.e. (C )  minc2C w(c).
Rciproquement, soient c1 et c2 deux lments de C tels que (C ) = d(c1 ; c2 ) =
w(c1 c2 ). Comme C est un sous-espace vectoriel, c = c1 c2 appartient
C ; (C )  minc2C w(c).
Finalement (C ) = minc2C w (c). cqfd
Thorme 13 Borne de Singleton.
(n; k) linaire sur V est majore par :

La distance minimale

d'un code

dn k+1

Preuve. Soit C un code linaire dni par l'application linaire . Comme


 est injective, rang() = k. D'o dim(C ) = dim(Im())=k.
n dont les k
Considrons le sous-espace E de V
1 dernires composantes
sont nulles : dim(E ) = n
k + 1.
n et dim(C ) + dim(E ) = n +1 > n. Il existe
Ainsi, E et C sont deux sev de V
T
donc un lment non nul a dans C
E . Comme a 2 E , w(a)  n k + 1 ;
comme a 2 C , (C )  w (a)  n
k + 1. cqfd.
Exemple.

Le code de Hamming

nratrice :

1
6 1
G=6
4 0
1

1
0
1
1

(7; 4) est un code linaire de matrice g1


0
0
0

0
1
1
1

0
1
0
0

0 0
0 0 77
1 05
0 1
Sa distance est 3 ; c'est donc un code linaire (7; 4; 3).
Plus gnralement, le code de Hamming pour

blog2 nc ; 3).
3.3.2

n bits est un code7 (n; n 1

Codes cycliques

Un code cyclique est un code linaire qui est stable pour l'opration de
dcalage de chire.

Dnition 14
V n dnie par

On appelle

opration de dcalage

l'application linaire

([u0 ; : : : ; un 1 ]) = [un 1 ; u0 ; : : : ; un 2 ]
7

nous avons vu qu'un tel code est 1-correcteur

de

42

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

On vrie trivialement que l'opration

:

Dnition 15

Soit

0
6 1
6
 = 666 0
4 0
0

 est linaire en exhibant sa matrice

0   1
0   0
1 0  0

..

..

 0

..

.
.
.

1 0

un code linaire de

V n. C

3
7
7
7
7
7
5

est

cyclique

ssi

(C ) = C

Exemple. Le code de parit (n; n 1) est un code cyclique.


En eet, si
P
c = (c0 ; : : : ; cn 1 ) est un mot de code,Palors cn 1 = ni=02 ci mod 2.
n 3 c mod 2 ; ainsi,  (c) =
Mais on a alors aussi cn 2 = cn 1 +
i=0 i
(cn 1 ; c0 ; : : : ; cn 2 ) est aussi un mot de code. Le code de parit est
donc cyclique.

3.3.3 Construction d'un code cyclique : polynme gnerateur


n pouNous avons vu (3.2.3) que tout elment U = [u0 ; : : : ; un 1 ] de V
vait tre reprsent par le polynme de degr n de V [X ] :
PU =

n
X1
i=0

ui X i :

1 est un polynme de degr n, V n  V [X ]=(X n 1). Dans


[ ](
1), on a alors
P(U ) = [X:PU (X ) un 1 :(X n 1)] mod (X n 1) = X:PU

n
Comme X
V X = Xn

 d'un vecteur
V [X ]=(X n 1).

Autrement dit, l'opration de dcalage


son polynme associ par

dans

revient multiplier

Cette proprit est la base du thorme suivant qui donne une caractrisation algbrique d'un code cyclique.

Thorme 14 Tout code cyclique C = (n; k) admet une matrice gnratrice


GC de la forme :
2
3
m
6  (m) 7
7
GC = 6
4
::: 5
k 1 (m)
avec m = [a0 ; a1 ; : : : ; an k = 1; 0; : : : ; 0] tel que
g(X ) =

n
Xk
i=0

ai X i

3.3.

43

CONSTRUCTION DE CODES CYCLIQUES

est un diviseur unitaire de (X n 1) de degr r = n k .


Le polynme g est appel polynme gnrateur du code cyclique.
Rciproquement, tout diviseur g de (X n 1) est polynme gnrateur d'un
code cyclique.
Cette proprit permet la construction directe de code correcteur par la

X n 1. Un tel polynme peut tre calcul


partir des classes cyclotomiques relatives q modulo n.
donne d'un polynme diviseur de

Exemple : construction d'un code cyclique (7,4)

. Nous avons vu que

(X 7 1) = (X 1)(1+ X 2 + X 3 )(1+ X + X 3 ) dans F 2 [X ]. g = (1+ X 2 + X 3 )


est donc le polynme gnerateur d'un code cyclique. Comme
3 et que

n = 7, ce code est un code (7,4). Sa matrice est :


2

1
6 0
GC = 6
4 0
0

0
1
0
0

1
0
1
0

1
1
0
1

Plus gnralement, la factorisation de


non triviaux de







0
1
1
0

0
0
1
1

0
0
0
1

est de degr

3
7
7
5

X 7 1 permet d'exhiber 6 diviseurs

X 7 1 qui dnissent chacun un code cyclique :

g1 = X 1 : code cyclique (7,6)


g2 = X 3 + X + 1 : code cyclique (7,4)
g3 = X 3 + X 2 + 1 : code cyclique (7,4)
g4 = (X 1)(X 3 + X + 1) : code cyclique (7,3)
g5 = (X 1)(X 3 + X 2 + 1) : code cyclique (7,3)
g6 = (X 3 + X + 1)(X 3 + X 2 + 1) : code cyclique (7,1)

3.3.4 Codage et dcodage d'un code cyclique


Le lien entre code cyclique et polynme gnerateur est important ; il est
la base des algorithmes ecaces de codage et de dcodage qui vitent la

O(nk)) en la remplaant par une multiplication par le polynme g , de cot O (n log n). L'intrt
multiplication par la matrice gnratrice

GC

(de cot

pratique est que les circuits associs au codage et dcodage sont relativement
simples raliser.
Soit

un code cyclique de polynme gnrateur

gnratrice de

construite partir de

Opration de codage.
k
Soit a = [a0 ; : : : ; ak 1 ] 2 V
polynme associ.
Le mot de code associ

g ; soit G une matrice

g comme dans le thorme 14.

un mot source et

Pa =

Pk 1
i
i=0 ai X

son

a est (a) = aG de polynme associ PaG . De part

44

CHAPITRE 3.

l'criture de

DTECTION ET CORRECTION D'ERREURS

G partir des coecients de g(X ) (thorme 14), on a :


k 1
X

PaG =

i=0

ai (X i g(X ) mod X n 1)

= [g(X )(

k 1
X
i=0

ai X i )] mod X n 1

= [g(X ):Pa (X )] mod X n 1


Le codage correspond donc un produit de polynmes, les degrs des monmes tant pris modulo
que

Xn

= 1 = X0

: en eet, calculer

Xn

1 revient considrer

Soit le code cyclique (7,4) prcdent associ au polynme g =


(1 + X 2 + X 3 ). Soit a = [a0 ; a1 ; a2 ; a3 ] un mot source ; le code de ce

Exemple.

s:G ; il est obtenu par multiplication droite par


G. Le mme mot est obtenu en calculant les coecients du

mot est alors gal


la matrice

polynme :

(a0 + a1 X + a2 X 2 + a3 X 3 )(1 + X 2 + X 3 ) mod X 7 1


a = [1001] : Pa :g mod X 7 1 = (1 + X 3 )(1 + X 2 + X 3 ) =
1+ X 2 +2:X 3 + X 5 + X 6 = 1+ X 2 + X 5 + X 6 . Donc (a) = [1010011].
Ainsi, pour

Dtection d'erreur et opration de dcodage.


Le codage prcdent montre que tout mot de code reu est un multiple

de

g(X ).

Soit

2 V n un message reu et soit Pm son polynme associ.

Lors du dcodage, on calcule d'abord


 si

Pe = Pm

mod

g;

Pe = 0 : le polynme reu est bien un multiple de g

: il correspond

donc un mot de code. On retrouve le message mis en calculant la


division de polynme
 sinon,

Pm =g.

Pe 6= 0 : le mot reu n'est pas un mot de code et il y a donc eu

des erreurs lors de la transmission.


La dtection d'erreur est donc ralise via le calcul de

Pe

est appel

syndrome d'erreur.

Pe = Pm

modulo

g;

Pe est non nul, on peut procder une correction. Une manire


n en associant chacun le mot de
brutale est de tabuler tous les mots de V
Dans le cas o

code le plus proche, qui correspond au message corrig. La correction se fait


alors par lecture de la table.
Le lien entre code cyclique et polynmes fait qu'il existe des algorithmes
moins coteux en place mmoire pour corriger un message erron. La mthode de Meggitt et ses variantes en sont un exemple.

3.3.

45

CONSTRUCTION DE CODES CYCLIQUES

3.3.5

Classes cyclotomiques et distance minimale

Le taux de correction d'un code cyclique est dicile calculer. Cependant, ce paragraphe prsente un thorme qui permet de garantir une minoration de la distance minimale d'un code, et par suite (cf thorme 12)
une minoration du taux de dtection. Ce thorme est de plus constructif :
il permet la construction de codes cycliques ayant un taux de correction
garanti.
On suppose que

est premier avec

1 dans F q [X ] ; soit C

tive de

Xn

teur

Comme

q.

Soit alors

une racine primi-

un code cyclique de polynme gnra-

g est un diviseur de X n 1, on a g = i2 (X i ) o


  f0; 1; : : : ; n 1g est la runion de classes cyclotomiques relatives q
modulo n. Le thorme suivant montre que l'analyse de  permet d'avoir
une minoration de la distance minimale (C ) du code C .
Thorme 15 On suppose que n est premier avec q.
Si il existe un entier a tel que fa + 1; a + 2; : : : ; a + sg   alors
g.

(C )  s + 1:

Le code

Exemple.

est donc au moins s-dtecteur et

[s=2]-correcteur.

n = 7 et V = F 2 . Un code cyclique est alors associ


X 7 1. Nous avons vu que les classes cyclotomiques

Considrons

un diviseur de

relatives 2 modulo 7 sont :

0 = f0g ; g0 = X 1.
1 = f1; 2; 4g ; g1 = (1 + X + X 3 ).
2
3
 3 = f3; 6; 5g ; g2 = (1 + X + X ).
On a : f1; 2g  1 . Ici, s = 2 : le code (7,4) associ g1 est donc au



moins 1-correcteur.
De la mme faon, on a

f5; 6g  3 ; le code (7,4) associ g2 est donc

aussi au moins 1-correcteur (c'est un code de Hamming).

C associ au polynme g = g1 :g2 ;


g est de degr 6, C est un code (7,1) quiTcomporte 6 bits de redondance. Il est caractris par la classe  = 1
3 = f1; 2; 3; 4; 5; 6g ;
ici, s = 6. Ce code est donc au moins 3-correcteur.

Considrons maintenant le code


comme

3.3.6 Codes BCH


En application du thorme 15, Bose, Chaudhuri et Hocquenghem ont
propos une mthode de construction de codes cycliques ayant un taux de
correction arbitraire. Ces codes sont appels codes BCH.
Soit

un entier arbitraire. Pour avoir un taux de correction de

au

moins, il sut en eet d'aprs la proposition prcdente que le polynme

f a+1 ; a+2 ; : : : ; a+2t g. Autrement dit, il sut que g


soit associ la partie   f1; 2; : : : ; n
1g plus petite union possible de
classes cyclotomiques contenant fa + 1; a + 2; : : : ; a + 2tg.
ait parmi ses racines

46

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

Un tel code est appel code BCH. Sa distance minimale est suprieure

2t et donc son taux de correction est garanti suprieur t. De part leurs

proprits algbriques, il existe des algorithmes spciques de codage et dcodage des code BCH, plus performants que ceux pour les codes cycliques
quelconques.
Dans la plupart des cas pratiques, on choisit

n premier avec q ; X n

se factorise alors partir des classes cyclotomiques, toutes les racines tant
de multiplicit 1 (cf 3.2.5). En particulier, les codes BCH les plus utiliss
correspondent

n = qt

1 ; un tel code est dit primitif.

Les paragraphes suivants prsentent dirents codes de type BCH qui


sont utiliss dans l'industrie.

3.4 Codes cycliques usuels


Nous prsentons dans cette section rapidement quelques codes utiliss en
pratique.
Pour les applications o le taux d'erreurs est faible, un codage de Hamming peut tre utilis. Le Minitel par exemple utilise un code de Hamming
(128,120) qui est 1-correcteur : le message est trononn en blocs de 15 octets, i.e. 120 bits ; Un 16me octet contient 8 bits de contrle qui permet
de localiser un bit d'erreur parmi les 128. En outre un 17me octet, dit de
validation et ne contenant que des 0, est utilis pour dtecter des perturbations importantes. Le code nal est donc un code binaire 1-correcteur de
paramtres (136,120).
Cependant, les dveloppements des codes cycliques et notamment la mise
au point de procdure de codage et de dcodage particulirement ecaces ont
motiv l'intgration de ces codes correcteurs dans de nombreuses applications
o le taux d'erreurs est important et donc la capacit de correction critique.
Les paragraphes suivants montrent quelques uns de ces codes utiliss pour la
lecture de disques compacts et pour la transmission d'images par satellites.

3.4.1 Codes de Reed-Solomon


Les codes de Reed-Solomon sont des codes BCH primitifs sur
(i.e.
avec

q=2
q).

m)

et de longueur

n=2

V = F 2m

1 (i.e. n = q 1 ; n est donc premier

L'intrt de ces codes est double. D'une part, ils sont optimaux dans le
sens o ils requirent un nombre de chires de redondance minimal pour une
capacit de correction xe. D'autre part, ils sont particulirement faciles
coder et dcoder.
En eet, le polynme

X 2m 1

1 se factorise trs simplement sur F 2m

3.4.

47

CODES CYCLIQUES USUELS

ses racines sont tous les lements non nuls de

m
X2 1 1 =
Le groupe multiplicatif

F 2m

2F2m

F 2m

(X ):

f0g

f0g tant cyclique, soit un lment primitif.

On a alors :

m
X2 1

1=

m 1
2Y

i=1

(X i ):

La construction d'un code de Reed-Solomon avec

r chires de redondance
r, dont les racines

repose sur le choix d'un polynme gnrateur de degr


sont conscutives :

g(X ) =

s+
r 1
Y
i=s

(X i ):

Le code de Reed-Solomon ainsi obtenu est donc un code

n r) avec r arbitraire.

(n = 2m 1; k =

Le taux de correction de ce code est optimal. En eet, en tant que code

du code de Reed-Solomon est au moins  r+1.


Or, la borne de Singleton (thorme 13) montre que  n
k + 1 = r + 1;
ainsi, la distance est = r + 1 et atteint la borne de Singleton.

BCH, la distance minimale

Les codes de Reed-Solomon sont trs utiliss en pratique. Ainsi, le satellite d'exploration de Jupiter

Galileo utilise le code de Reed-Solomon (255,223)

33. Ce code est 16-correcteur sur le corps F 8 . Le corps F 8 est en8 7 2


gendr par le polynme irrductible de F 2 [X ] : x + x + x + x +1. Soit une
de distance

racine de ce polynme. Le polynme gnrateur du code de Reed-Solomon


(255,223,33) est alors :

g=
qui est de degr

r = 32.

43
Y
j =12

(X 11j )

3.4.2 Codes C.I.R.C.


Les codes de Reed-Solomon sont la basee des codes C.I.R.C. (Cross

Interleaved Reed-Solomon Code,

i.e. code de Reed-Solomon entrelacement

crois). Les codes C.I.R.C. sont des codes "raccourcis" des codes de ReedSolomon : ils ne contiennent que les mots du code de Reed-Solomon commenant par un nombre x de 0, en supprimant ces 0 de tte. Ils ont donc
la mme distance que le code de Reed-Solomon dont ils sont issus.
Par exemple, le code C.I.R.C (32,28,5) est un code raccourci du code de
Reed-Solomon(255,251,5) est utilis pour les diques compacts. Ce code permet de dtecter 4 erreurs et d'en corriger 2, ce qui s'avre assez ecace pour
les disques compacts qui sont soumis de multiples perturbations (rayures,
poussires, dfauts de surface etc).

48

CHAPITRE 3.

DTECTION ET CORRECTION D'ERREURS

3.4.3 Quelques autres codes cycliques


De nombreux autre codes cycliques ou leurs variantes sont utiliss en
pratique.
Les codes de Golay sont des codes cycliques dont la longueur
nombre premier, de plus premier avec

q =

card

(V ).

Dans, ce cas

est un

(X n

1) possde une factorisation simple en deux facteurs non triviaux de degr


chacun (n
1)=2. Ainsi, le code de Golay avec n = 11 et q = 3 est un code
ternaire associ un polynme gnerateur de degr r = 5. Ce code a donc
pour paramtre (11; 6) ; il est 2-correcteur et parfait.
Les codes de Reed-Muller sont des codes (n; k ) cycliques tendus : les
mots de code sont ceux d'un code cyclique (n
1; k) avec un chire supplmentaire qui est la somme des n
1 chires du mot du code cyclique. Ces
codes de Reed-Muller sont notamment utiliss pour la transimssion d'images
par satellite.

Chapitre 4

Mthodes de chirement
4.1 Introduction
Chirer un texte consiste le transformer en une forme code par chirement et rciproquement par dchirement. Ces transformations sont gnralement paramtres par une ou plusieurs cls. La motivation principale du
chirement rside en la scurisation d'un canal de communication qui peut
tre espionn.
Les trois services principaux fournis par les systmes de chirement sont :

Secret

Le secret consiste

empcher l'accs

aux informations qui transitent

pour ceux qui ne sont pas autorissS. Ils peuvent lire ce qui passe sur
le canal mais ne peuvent pas le dchirer.

Authentication

consiste

signer

lectroniquement un document an de

prouver en tre l'auteur et qu'il ne s'agit donc pas un faux.

Intgrit

permet de vrier que le message n'a pas subi d'altrations lors

de son parcours. Cette vrication ne se place pas au mme niveau que


celles vues au chapitre prcdent, elle concerne plutt une modication
volontaire par un tiers lors de son transfert sur le canal, qui aurait donc
dans ce cas modi les

checksums

pour masquer ses modications.

Le chirement classique ne s'intresse gnralement qu'au premier aspect


et, jusqu' ces dernires annes, ne s'intressait qu'aux cls secrtes. Les 20
dernires annes ont vu merger l'tude de nouvelles tendances :
 l'authentication devient aussi, voire mme plus, importante que le

secret ,
 une partie de la cl ne doit pas tre prive, an de ne pas provoquer
une explosion du nombre de cls ncessaires pour communiquer avec
un grand nombre de personnes.
1

Cela est particulirement vraie dans le cas du commerce lectronique : il faut pouvoir
prouver que la commande vient bien de la personne qui la livraison est destine pour
viter les contestations.
49

50

CHAPITRE 4.

MTHODES DE CHIFFREMENT

De plus, les oprations de chirement et dchirement portant sur de


grandes quantits de donnes, le critre d'ecacit est trs important an
de pouvoir chirer  la vole des ux audio ou vido par exemple.
Un systme de chirement idal devrait donc rsoudre tous ces problmes
en mme temps : utiliser des cls publiques, fournir du secret, de l'authentication et de l'intgrit. Malheureusement, il n'existe pas de technique unique
qui satisfasse ces trois critres. Les systmes conventionnels comme le DES
utilisent des cls prives et les systmes cl publique fournissent de l'authentication mais sont inecaces pour le chirement de grandes quantits
de donnes car trop coteux. Cependant les systmes conventionels et les systmes cl publique ne sont pas mutuellement exclusifs ; ils se compltent
au contraire trs bien.
Nous allons dans la suite prsenter dirents algorithmes de chirement.
La notation utilise est la suivante : E et D reprsentent respectivement les
oprations de chirement et de dchirement. Il est requis que D(E(M))=M.
On suppose toujours que D est secret mais E peut tre public.

4.1.1 Mthode d'attaque


Satisfaire le secret signie qu'un attaquant ne peut pas :
 trouver M partir de E(M) ; le systme de chirement doit tre rsistant aux attaques sur le message cod,
 trouver la mthode de dchirement D partir d'une squence {E(

Mi )}

M1 ,M2 ,M3 ,. . .},

pour une squence quelconque de messages en clairs {

le systme doit tre sr vis--vis des attaques avec du texte en clair.


En liaison avec la premire partie du cours on peut dire qu'une cl est
bonne si son entropie est leve car cela signie qu'elle ne contient pas de
patterns rpts plusieurs fois.

Attaque brutale
Elle consiste en l'numration de toutes les valeurs possibles de la cl,
c'est--dire une exploration complte de l'espace des cls. La complexit de
cette mthode apparait immdiatement : une cl de 128 bits oblige essayer

2128 combinaisons direntes.

Pour une cl de 64 bits, il existe

1:844  1019

combinaisons direntes,

sur un ordinateur calculant un milliard de cls par seconde il faudra 584 ans

pour tre sr de trouver la cl .

Attaque par squences connues


Ce type d'attaque consiste a supposer une certaine partie du message (par
exemple les enttes standards dans le cas d'un message transmis par courrier
2

ou un an avec 584 ordinateurs tournant en parallle

4.2.

51

SYSTMES CONVENTIONNELS CL PRIVE

lectronique) et de partir de cette connaissance pour essayer de deviner la


cl.
Elle peut marcher si l'algorithme de chirement laisse apparatre des
patterns du message original.

Attaque par squences forces


Cette mthode d'attaque est base sur la prcdente, elle consiste faire
chirer par la victime un bloc dont l'attaquant connait le contenu.

Attaque par analyse direntielle


Cette attaque se base utilise les faibles dirences existant entre des messages successifs (par exemple des logs de serveur) pour essayer de deviner la
cl.

4.2 Systmes conventionnels cl prive


Dans un systme cryptographique conventionel, E et D sont paramtrs
par une simple cl K, on a donc
pour passer

DK

et

EK

DK (EK (M )) = M . Typiquement la mthode

partir de K sont publiques, seule K est donc

secret. Avec une telle mthode les proprits de secret et d'authentication


sont assures : si les deux parties partagent le secret

K,

la cl, ils peuvent

s'envoyer des messages qui sont privs (car un espion ne peut pas calculer

ou deviner DK (C )) et authentis, car un imposteur ne peut pas calculer


EK (C ). Cette approche n'assure cependant pas la proprit d'intgrit, il est
gnralement adjoint au message chir une forme compresse de ce dernier
pour assurer cette dernire proprit.
Nous allons voir dans la suite deux systmes classiques de chirement
cl publique : le DES et l'exponentiation.

4.2.1 Le DES
Le systme de chirement traditionel cl prive le plus connu est le
DES (Data Encryption Standard). Il est trs bien document et ne sera
pas prsent en dtails ici, il n'est donn qu' titre de comparaison de son
fonctionnement avec celui des autres systmes prsents.
Ce systme fonctionne par blocs, il travaille sur des blocs de 64 bits
en utilisant une cl de 56 bits. Le mme algorithme est utilis pour chiffrer et dchirer. La transformation employe peut s'crire sous la forme

P 1 (F (P (M ))), o P est une permutation et F une fonction combinant permutation et substitution.


Le gros avantage du DES est qu'il repose, tant pour le codage que pour
le dcodage, sur des oprations facilement implantables au niveau matriel,

52

CHAPITRE 4.

MTHODES DE CHIFFREMENT

il est donc possible d'obtenir des taux de chirement trs levs, de l'ordre
de 40Mo/s il y a une dizaine d'annes, avec du matriel spcique.
La sret du DES est produite de manire classique en alternant subsitutions et permutations. La fonction

est obtenue en cascadant une fonction

f (x; y). o x fait 32 bits et y 48. Chaque tape de la cascade est appele un
tour. Une squence de chanes de 48 bits fKi g est gnre partir de la cl
K . Notons L(x) et R(x) les parties gauche et droite de x, alors si Mi est le
rsultat du tour i, on a :
L(Mi ) = R(Mi 1 )

(4.1)

R(Mi ) = L(Mi 1 ) XOR f (L(Mi ); Ki )

(4.2)

et

Le secret repose sur le fait qu'aprs 16 tours le rsultat sera statistiquement plat, c'est--dire que les caractristiques gnrales du message source
(la frquence des caractres, le nombre d'espaces, . . .) seront indtectables.
De plus il dispose d'une caractristique trs importante pour viter les attaques par analyse direntielle : une lgre modication de la cl ou du
texte chirer provoque des changements importants dans le texte chir.
La plupart des systmes de chirement classiques c'est--dire vieux de
plus de 30 ans, sont bass sur l'utilisation de permutations, substitutions et
d'oprations logiques ou numriques entre la cl et le message ainsi obtenu.
Plus rcemment sont apparues des mthodes mettant en jeu des proprits
sur les nombres par opposition la squence de bits. Nous allons prsenter
la plus connue : l'exponentiation. Elle nous permettra d'introduire certaines
des proprits utilises galement pour la cryptographie cl publique.

4.2.2 L'exponentiation
Pohlig et Hellman en 1978 ont construit un autre type de chireur qui
n'est pas bas sur les mthodes classiques de substitution et transposition.

p > 2 premier et K une cl dans f1; p 1g


P GCD(K; p 1) = 1 c'est--dire K et p 1 premiers entre eux. Si M
est le message chirer dans f1; p
1g une fonction de chirement E peut

Leur technique est simple : on pose


avec

tre :

E (M ) = M K mod p

(4.3)

Il reste trouver la fonction de dcodage. Pour cela, nous allons utiliser


le thorme suivant :

Thorme 16 Notons Zn l'ensemble des nombres premiers avec n. On a :


Zn = fx 2 Zn : x > 0 et P GCD(x; n) = 1g

4.2.

53

SYSTMES CONVENTIONNELS CL PRIVE

et

a  Zn = fa  x (mod n)=x 2 Zn g

Exemple
 = f1; 3; 7; 9g
Z10
2  Z10 = f2; 6; 14; 18g (mod 10) = f2; 6; 4; 8g
3  Z10 = f3; 9; 21; 27g (mod 10) = Z10
On pose n > 1 et a 2 Zn . On a alors :
i Pour tout x et y : a  x  a  y (mod n) ssi x  y (mod n)


ii a  Zn = Zn
iii

a un inverse pour la multiplication modulo


que b  a  1(mod n)

n;

i.e. il existe

b 2 Zn

tel

Preuve
Si x  y (mod n) alors on a trivialement a  x  a  y (mod n). Rciproquement, on a a  x  a  y (mod n) donc a  (x
y)  0 (mod n) et donc n
est un diviseur de a  (x
y). Comme PGCD(a,n)=1 n divise (x-y) et donc
x  y (mod n) d'o la proposition i.

Pour ii. Si x 2 Zn on a PGCD(x,n)=1 et donc PGCD(a*x,n)=1. On



a donc a  x (mod n) 2 Zn . a  Zn est inclus dans Zn . De i. on sait que si

ax  ay (mod n) alors x  y (mod n). Donc aZn contient n 1 lments

distincts et n'est donc pas un sous-ensemble de Zn , d'o la proposition ii.


En particulier, comme 1 2 Zn , il existe un b 2 Zn tel que a  b (mod n) = 1
d'o la proposition iii.

P GCD(K; p 1) = 1 implique, d'aprs le thorme 16,


I  K  1(mod p 1) et que I peut tre calcul. Il
est important de noter que I n'est pas une autre cl : I peut tre driv de
K et vice-versa de manire directe. On peut alors construire la fonction de
La condition

qu'il existe

tel que

dchirement :

D(C ) = C I mod p
On peut alors montrer que la condition

D(E (M )) = M

(4.4)
est satisfaite,

pour cela on doit utiliser le thorme de Fermat prsent un peu plus loin
en section 4.3.2. De plus
fonctions

et

E (D(M )) = M

galement, ce qui signie que les

sont inverses, il est possible de chirer indirement avec

D ou E , ce qui est aussi utile pour l'authentication, comme nous le verrons


dans la suite. Il s'agit cependant d'un systme traditionel cl secrte car,
comme I peut tre facilement calcul partir de K (en utilisant l'algorithme
d'Euclide tendu voir plus bas), le secret rside dans K uniquement. Nous
verrons dans la suite que si
trouver

partir de

p est le produit de deux grands nombres premiers,

est non trivial, ce qui permet de diviser la cl en

deux parties.

Algorithme d'Euclide tendu

54

CHAPITRE 4.

MTHODES DE CHIFFREMENT

L'algorithme d'Euclide permet de calculer le PGCD de deux nombres

b < a et ont
d alors a b,a 2b,. . .sont aussi divisibles par d.

entiers. Le principe est simple : si a et b sont deux entiers avec


un diviseur commun
Si

nb = 0

cela signie que a est divisible par b et le problme est

donc rsolu. Pour itrer l'algorithme on prend n comme quotient entier de


la division de a par b,

a nb en est alors le reste et on itre le procd.

Exemple : Dterminons le PGCD de 522 et 453. On calcule successivement :


(a)

522

(b)

453

(c)

522-453=69

(d)

453-6*69=39

(e)

69-39=30

(f )

39-30=9

(d-e)

(g)

30-27=3

(e-3f )

(h)

9-9=0

(f-3g)

(a-b)
(b-6c)
(c-d)

L'obtention de la valeur 0 arrte l'algorithme et 3 est donc le PGCD de


522 et 453.
L'algorithme d'Euclide tendu consiste utiliser l'algorithme d'Euclide
pour trouver, par divisions successives, d tel que

a  d = 1 (mod n). Il fonc-

tionne exactement sur le mme principe, mais s'arrte lorsque le rsultat


obtenu est 1 et non 0. Les deux valeurs initiales sont

n et a. On conserve en

plus la valeur du coecient obtenu aprs chaque opration, cette valeur est

d cherch lors de l'arrt de l'algorithme. Au dbut, il est gal 0 et 1 pour


les deux premires lignes correspondant n et a. Par exemple, si on prend
n = 2668, a = 17 et que l'on crit la valeur du coecient dans la colonne de
le

droite, on obtient :
(a)

2668

(b)

17

(c)

2668-140.17=16

(d)

17-16=1

0
1
(a-156b)

-156

(b-c)

157

La valeur de d est donc 157.


Malgr la relative simplicit des fonctions D et E, elles ne sont pas aussi
faciles calculer que leurs quivalents pour le DES : l'exponentiation

mod p

est une opration plus coteuse en temps que des permutations ou des recherches dans une table lorsque

est grand. Cela rend plus compliqu la

conception d'un composant lectronique destin chirer et dchirer rapidement en utilisant cette approche.

4.3 Cryptographie cl publique


La notion de cryptographie cl publique a t introduite par Die et
Hellman en 1976. Les systmes cl publique, galement appels double-cl

4.3.

55

CRYPTOGRAPHIE CL PUBLIQUE

ou assymtrique, dirent des prcdents en ce sens qu'il n'y a plus une seule
cl partage par deux utilisateurs. la place chaque utilisateur a sa propre
cl qui est divise en deux parties : une prive et une publique. partir de la
partie publique on peut gnrer une transformation
prive une transformation

D.

E , partir de la partie

Par analogie avec les systmes vus jusqu'

prsent, on peut appeler les fonctions

et

fonction de chirement et de

dchirement mais nous verrons qu'un systme peut satisfaire

ou

E (D(M )) = M , voire les deux.

D(E (M )) =

4.3.1 Secret et authentication


Pour assurer le secret, les transformations d'un systme cl publique

D(E (M )) = M . Supposons que A veuille envoyer un message secret M B . A doit alors avoir accs EB , la fonction de transformation publique de B . A va chirer M , C = EB (M ) et envoyer le rsultat
C B . la rception B va utiliser sa fonction prive de transformation DB
pour dchirer. Si la transmission de A est espionne l'intrus ne pourra dchirer C car la fonction DB est secrte donc le secret est assur. Par contre,
comme EB est publique, B n'a aucun moyen de connatre l'identit de l'envoyeur. De mme le message envoy par A peut tre altr. Les proprits
doivent satisfaire

d'authentication et d'intgrit ne sont donc pas assures.


Pour qu'elles le soient les transformations doivent satisfaire la proprit

E (D(M )) = M . En eet, supposons que A veuille envoyer un message authenti M B . Cela signie que B doit pouvoir vrier que le message
a bien t envoy par A et qu'il n'a pas t altr en chemin. Pour cela A
va utiliser sa transformation prive DA , calculer C = DA (M ) et envoyer
C B . B peut alors utiliser la transformation publique EA pour calculer
EA (C ) = EA (DA (M )) = M . En supposant que M reprsente un texte valide (au sens du protocole utilis), B est sr que le message a t envoy par
A et n'a pas subi d'altrations pendant le transport. Cela vient de la nature
uni-directionnelle de EA : si un attaquant pouvait, partir d'un message M ,
0
0
trouver C tel que EA (C ) = M cela signierait qu'il peut calculer l'inverse
de la fonction EA ce qui est une contradiction. Par contre dans ce cas le
secret n'est pas assur car tout le monde peut accder EA et donc dchier
le message.

Exercice
En utilisant les fonctions

EA , DA , EB

et

DB

trouver un couple de fonc-

tions de chirement et dchirement satisfaisant la fois le secret et l'authentication.

Pour garantir le secret et l'authentication il faut qu'un domaine commun existe entre A et B , ou plus prcisment entre EA , DA , EB
et DB . A envoie alors C = EB (DA (M )) B ; B calcule alors EA (DB (C )) =
EA (DA (M )). Un espion ne peut pas dcoder C car il ne dispose pas de DB
et le secret est donc prserv. Si un espion envoie un message C 0 la place
Solution

56

CHAPITRE 4.

MTHODES DE CHIFFREMENT

de C , C 0 ne pourra pas tre dcod en un message valide


faudrait connatre DA ce qui assure l'authenticit.

car pour cela il

L'algorithme utilis principalement pour la cryptographie cl publique


est RSA. Il satisfait notammenent les proprits

Proprit 9 E (D(M )) = M
et

Proprit 10 D(E (M )) = M

4.3.2 L'algorithme RSA


Dans le systme RSA un utilisateur cre son couple (cl plublique, cl
prive) en utilisant la procdure suivante :

p et q. Il faut que p
q contiennent au moins 100 chires dcimaux chacun.
Calculer n = pq
Choisir un petit entier e qui est premier avec (n) = (p
1)(q 1)
Calculer d, l'inverse par la multiplication de e, modulo (n). Le thorme 16 garantit que e existe et est unique.
Publier la paire P = (e; n) comme sa cl publique RSA.
Garder secrte la paire S = (d; n) qui est sa cl prive RSA.

1. Choisir au hasard deux grands nombres premiers


et

2.
3.
4.

5.
6.

Les oprations de transformation sont alors

Dnition 16 EA (M ) = M e mod n
et

Dnition 17 DA (C ) = C d mod n
Thorme 17 Les transformations E
pour M 2 Z n .
Preuve

et

satisfont les proprits 9 et 10

On commencera par rappeler le thorme de Fermat :

Thorme 18

Si

p est premier alors ap 1  1 (mod p) pour tout a 2 Z n

Ce thorme se dmontre en utilisant le thorme d'Euler qui nous dit

n > 1 et a 2 Z n on a : a(n)
n et donc (p) = p 1 si p premier.

que pour tout entier


cardinal de Z

 1 (mod n) avec (n)

Des deux dnitions 16 et 17, on dduit que pour tout M 2 Z n E (D (M )) =


D(E (M )) = M ed mod n. Comme e et d sont des inverses pour la multiplication modulo (n) = (p
1)(q 1), on a :

4.3.

57

CRYPTOGRAPHIE CL PUBLIQUE

ed = 1 + k(p 1)(q 1) pour un entier k. Mais, si M =


6 0 (mod p) on a
(thorme de Fermat) :

M ed  M (M p 1 )k(q 1)
 M (1)k(q 1)
M

(mod p)
(mod p)
(mod p)

(4.5)
(4.6)
(4.7)

M ed  M (mod p) si M  0 (mod p) donc


M ed  M (mod p) pour tout M . De mme,
M ed  M (mod q) pour tout M . Ce qui donne, en utilisant un corollaire
Comme on a plus,

du thorme Chinois des restes ,

M ed  M (mod n). pour tout M . cqfd.

Exercice

Calculer une cl publique et une cl prive pour


simplier la chose on prendra

e = 17.

p = 47 et q = 59. Pour

Chirer le message

0003 avec la cl

publique et vrier que la cl prive permet bien de retrouver le message


initial.

p = 47 et q = 594 .
on calcule n = p  q = 47  59 = 2773

 Prenons


e = 17.
d tel que d:e = 1

 on choisit e, premier par rapport n. Prenons par exemple


 On calcule alors, par l'algorithme d'Euclide tendu,

(mod (p 1):(q 1)), soit d = 157

On a alors un couple cl publique (17,2773) cl prive (157,2773).

(000317 ) (mod 2773)


157 )
c'est--dire 1553. Pour retrouver le message d'origine on calculera (1553
(mod 2773) qui donne bien 3.
Si on veut chirer la valeur '0003' on calculera

La scurit fournie par RSA repose essentiellement sur la dicult


factoriser de grands entiers. Si un attaquant peut factoriser le modulo n
dans une cl publique, il peut alors dduire directement la cl prive de la
cl publique. Donc si la factorisation de grands entiers devient facile, casser
RSA devient facile aussi. La rciproque, si factoriser de grands entiers est
dur alors casser RSA est dur, n'a pas t prouve. Cependant, aprs une
dcade de recherche, aucun moyen plus ecace que la factorisation de n n'a
t dcouvert pour casser RSA.
3
a

et
x

Si n1 ; n2 ; : : :

pour


4

;n

k sont premiers entre eux et que n = n1 n2 : : : nk alors pour tous entiers

(mod

i)

= 1; 2; : : :
(mod

n)

;k

si et seulement si

Ces valeurs sont faibles et ne correspondent videmment pas des cl relles.

58

CHAPITRE 4.

MTHODES DE CHIFFREMENT

4.3.3 Utilisation de RSA


D'un point de vue performances, un algorithme de type RSA est environ
10,000 fois plus lent qu'un DES. Pour des cls de 512 bits l'ordre de grandeur
de capacit de chirement avec la technologie actuelle est de 64Kbits/s, les
1Mbits/s sont envisageables court ou moyen terme.
La solution pour un chirement ecace rside dans l'utilisation conjointe

de systmes de chirement symtrique et asymtrique. Par exemple PGP


chire un message avec le protocole suivant :
1. Le texte source est chir avec une cl K de type IDEA ou DES

2. La cl K est chire selon le principe RSA avec la cl publique du


destinataire
3. Envoi du message compos de la cl K chire par RSA et d'un texte
chir selon un algorithme IDEA ou DES
Le rcepteur eectuera alors les oprations de dchirement suivantes :
1. Dchirement de la cl grce la cl prive D en utilisant RSA
2. Dchirement du texte en utilisant DES ou IDEA avec la cl K
Pour l'authentication le principe est un peu dirent :
 Gnration d'un code qui identie, par un nombre de taille xe, le
texte
 Chirement de ce code en utilisant RSA avec la cl prive de l'metteur
du message
Cela permet au correspondant de vrier la validit du message en utilisant la cl publique de l'expditeur.

PGP (Pretty Good Privacy) est l'outil le plus utilis pour le chirement de messages
ou l'authentication par courrier lectronique.