You are on page 1of 342

COLLECTION TECHNIQUE ET SCIENTIFIQUE DES TLCOMMUNICATIONS

Codage, cryptologie
et applications
Bruno Martin

PRESSES POLYTECHNIQUES ET UNIVERSITAIRES ROMANDES


Prface

Au cours de nos premiers pas dans le domaine de la cryptologie, nous


sommes tous confronts la subtile nuance entre codage et chiffrement.
Il est vrai que lusage courant de la langue franaise nous induit souvent en er
reur. D un point de vue formel, le codage se rfre une reprsentation, quelle
quelle soit, de linformation. D un point de vue plus technique, on cherche y
reprsenter linformation de manire aussi efficace que possible pour communi
quer, archiver, calculer. Le chiffrement peut tre vu comme un cas particulier
du codage : son objectif est galement la reprsentation de linformation. Il est
aussi la protection contre laccs de personnes non habilites et mal intention
nes. Chiffre est par consquent synonyme de code secret . Il est donc naturel
en apparence denglober la cryptographie dans les sciences des techniques de
codage.
Ce serait pourtant ignorer leurs diffrences fondamentales. La cryptographie
doit faire face un adversaire malicieux. On cherche savoir sil parviendra sans
effort percer le systme. La thorie de la complexit permet de quantifier la
notion d effort et joue donc un rle central. En revanche, ladversaire du codage
(non cryptographique) est un phnomne alatoire : un bruit. On cherche donc
coder ou comprimer mieux sur un support donn. Cest ici la thorie de
linformation qui permet de quantifier le bruit et la capacit le surmonter.
Codage et cryptographie font donc face des adversaires diffrents au moyen
de thories diffrentes.
Pourquoi alors traiter ces deux disciplines dans un mme ouvrage ? Comme
les chapitres suivants le dmontrent, ce sont en fait les applications et leurs ou
tils qui les rassemblent. Tous les systmes de communication (tlphone, cour
rier lectronique, Internet ...) et les systmes de stockage de donnes (disque
compact, DVD, carte puce ...) utilisent le codage. La plupart utilisent aussi
des moyens cryptographiques pour scuriser les donnes ou protger la pro
prit intellectuelle. Les outils fondamentaux proviennent de lalgbre discrte
et combinatoire et de lalgorithmique. On utilisera donc corps finis, polynmes
et espaces vectoriels, mais aussi arbres, graphes et automates.
Codage et cryptographie sont aujourdhui omniprsents. Il est donc impor
tant de matriser ces technologies. Peu de livres les traitent de manire quili
bre. Le prsent ouvrage prsente brillamment les deux techniques. Il occulte
volontairement les aspects trop techniques et offre une prsentation homogne
sous une forme mathmatique. Ce livre est donc recommand aux tudiants
en systmes de communication et en informatique qui cherchent comprendre
leurs mcanismes de base. Nous leur souhaitons bonne lecture.
Serge Vaudenay
Professeur lEPFL
Prambule

Ce livre prsente de faon accessible tous deux disciplines : la cryptolo


gie (ou science du chiffre) dont lorigine remonte aux dbuts de lhistoire de
lhomme et celle des codes correcteurs qui est ne pendant la seconde moiti du
20e sicle, aprs linvention de la thorie de linformation. Toutes deux traitent
de la transmission sre de linformation. La cryptographie (ou lart de conce
voir de bons chiffres) assure la confidentialit des communications en prsence
d ennemis. Les codes correcteurs permettent de retirer d ventuelles erreurs de
transmission.
Nous avons choisi d orienter cet ouvrage plutt vers les applications en tl
communications numriques que vers labstraction thorique. Nous avons vo
lontairement simplifi le contenu mathmatique de ces disciplines dans le but
de mieux comprendre certains aspects du fonctionnement d appareils que nous
utilisons tous les jours comme les tlphones cellulaires, les disques compacts
et les ordinateurs. Par exemple, sans codes correcteurs et sans cryptographie,
le dveloppement des rseaux comme Internet ou bientt des rseaux dits ad
hoc (il sagit des rseaux sans fil qui se construisent la demande et qui com
mencent tre utiliss par les ordinateurs portables, les tlphones cellulaires,
les appareils photos numriques ou les imprimantes) ne pourrait avoir lieu.
Il est dailleurs intressant de noter que les diffrentes notions que nous
prsentons sont la croise dun grand nombre de disciplines comme linforma
tique (tant thorique que pratique), les mathmatiques, mais aussi lconomie
et mme le droit. L conomie cause du dveloppement quasi continu d Inter
net et de son impact social et conomique et le droit qui rgit lutilisation des
systmes de chiffrement. Ce nest que depuis quelques annes que lutilisation
de chiffres est autorise en France. La taille des cls est toujours limite, sauf
pour l utilisation de signatures lectroniques.

Prsentation

Cet ouvrage est dcoup en cinq parties. La premire prsente la thorie de


linformation de Weaver et Shannon dont le but tait de quantifier le contenu en
information. A ce titre, on lui doit la notion de bit (pour binary digit). Il sagit
de la thorie qui permet de relier sous un cadre commun la compression des
donnes, la thorie des codes et la cryptologie; ces diffrentes disciplines sont
toutes prises en compte dans les problmatiques de la thorie de linformation.

La deuxime partie traite de la compression des donnes. Celle-ci devient de


plus en plus prsente dans notre vie quotidienne. C est grce la compression
des donnes que nous pouvons communiquer au moyen de tlphones cellu
laires, regarder des DVD, transmettre des quantits dinformations toujours
plus grandes au moyen d un modem ou mima dInternet. Nous nous limitons
ici aux seuls algorithmes de compression travaillant conjointement avec les m
canismes de chiffrement dans les logiciels qui permettent dassurer la scurit
des communications au travers d Internet.

Pour transmettre un message au travers d un canal de communication qui


peut tre perturb (ou bruit), on lui ajoute de la redondance pour quil soit
possible de dtecter, voire de corriger des erreurs de transmission. C est le but
de la thorie des codes qui fait lobjet de la troisime partie de ce livre. Pour
prsenter cette thorie qui peut devenir assez mathmatique, nous avons pri
vilgi le point de vue de lingnieur en informatique. Notre but est de faire
comprendre les algorithmes de codage et de dcodage ncessaires au bon fonc
tionnement du mcanisme de dtection ou de correction des erreurs de diffrents
media de communication. Nous y prsentons le principe de fonctionnement du
mcanisme de correction des erreurs des disques compacts, celui des tlphones
cellulaires de type GSM et ceux qui rgissent certaines communications par
satellite. Nous nous sommes efforcs de prsenter la thorie des codes de la ma
nire la plus intuitive possible, sans trop entrer dans les dtails mathmatiques.

Dans la quatrime partie, nous rappelons brivement quelques faits de tho


rie de la complexit initie par Rabin, McNaughton, Yamada, Hartmanis et
Stearns dans les annes 1960. Cette thorie est constamment prsente dans la
problmatique de la cryptographie. En effet, lusage d un chiffre est une course
entre les utilisateurs lgitimes du systme de chiffrement et des adversaires qui
cherchent retrouver leurs messages. Il faut donc que le temps de calcul dune
cryptanalyse excde lesprance de vie de la confidentialit du cryptogramme.
La thorie de la complexit permet de ranger des problmes algorithmiques
dans diffrentes classes selon le temps de fonctionnement de leurs algorithmes
de rsolution. Nous y traitons la complexit de certains problmes lis la
thorie des codes (notamment celui du dcodage) et nous prsentons quelques
problmes algorithmiques qui nous serviront dans la partie sur la cryptographie
cl publique, en particulier pour dfinir la notion de fonction sens unique.

Enfin, nous introduisons la cryptologie ou science du chiffre qui permet


de transmettre des messages en prservant leur confidentialit en prsence
dadversaires. Cette discipline regroupe la fois lart de concevoir de bons
chiffres (cryptographie) et celle de les cryptanalyser. Dans cette partie nous
nous sommes efforcs de respecter cette interaction en proposant pour la plu
part des chiffres prsents, soit leur cryptanalyse lorsque celle-ci est connue, soit
des attaques qui prsentent leurs principales faiblesses, tant pour les chiffres
cl secrte que pour les chiffres cl publique. Le choix des mthodes de
chiffrement repose dune part sur leur intrt pdagogique et sur leur intrt
pratique en extrayant un sous-enscmble consistant des mthodes adoptes
par les diffrents standards. En effet, lobjectif principal de cette dernire par
tie est dexpliquer le fonctionnement de quelques protocoles scuriss qui sont
utiliss par Internet. Nous prsentons notamment le fonctionnement dun des
protocoles qui permettent dassurer la scurit des changes du Web en chif
frant les communications. Son bon fonctionnement est gnralement symbolis
par un petit cadenas verrouill sur la fentre de nos navigateurs.

Utilisation

Le contenu de ce livre provient de diffrents enseignements dispenss


lcole Suprieure en Sciences Informatiques de lUniversit de Nice Sophia-
Antipolis et lInstitut Suprieur d informatique et d Automatique de lcole
des Mines de Paris. Il sinspire galement de mon cours du DEA d informatique
et de celui du DEA de Mathmatiques, en collaboration avec S. Julia. C est la
raison pour laquelle il est divis en plusieurs parties qui peuvent tre lues de
faon presque indpendante.
Chaque partie est dcoupe en plusieurs chapitres courts qui prsentent
une notion prcise. De nombreux exemples et quelques exercices permettent
d illustrer les notions introduites et de vrifier leur bonne comprhension.
Cet ouvrage peut servir de support de cours pour des enseignements de
deuxime ou de troisime cycle universitaire ou d introduction pour des ing
nieurs ou des chercheurs qui souhaiteraient se familiariser avec les diffrentes
disciplines qui y sont prsentes.

Remerciements

Tout d abord, je dois beaucoup la Matrise de Mathmatiques Discrtes de


lUniversit de Lyon 1 et ses enseignants-chercheurs. Ce sont eux qui mont
fait connatre, entre autres, la thorie des codes et la cryptographie.
Je voudrais remercier J. Gruska pour mavoir suggr dcrire ce livre
partir de mes notes de cours, C. Peyrat pour men avoir relu des versions
prliminaires et H. Ben Azza pour ses encouragements.
Plusieurs personnes ont contribu cet ouvrage : J. Leroux m a fourni des
explications sur la thorie de linformation ; P. Sol et Ling San ont rpondu aux
nombreuses questions que je leur ai poses sur les codes correcteurs, J. Bond,
M. Bronstein et M. Santha ont clairci des points d algorithmique et de com
plexit. Je remercie galement mes tudiants ; c est grce leurs questions et
leurs ractions que le contenu de mes notes de cours sest peu peu enrichi.
Enfin, un grand merci S. Julia. Son soutien, ses relectures et nos discussions
mont permis de mener bien lcriture de ce livre.
Table des matires

Prface v
P ram bule vii

Thorie de linformation 1

1 T h o r ie de l in fo rm a tio n 3
1.1 Introduction...................................................................................... 3
1.2 Information et mesure de linform ation........................................ 4
1.3 Codage pour un canal non bruit . . . 7
1.4 Codage en prsence de bruit . . . 10
1.5 Thormes de Shannon. . . 14
1.6 O b se rv a tio n s..................... 14

Compression de donnes 15

2 C om p re ssio n d e don n es 17
2.1 Introduction...................................................................................... 17
2.2 Types dalgorithmes de c o m p re s sio n ........................................... 18
2.3 Dfinitions.......................................................................................... 19
2.4 Techniques de b a s e .......................................................................... 19
2.5 Algorithmes statistiques . . . . . 21
2.6 Algorithmes dynamiques . . 24
2.7 Limites de la com p ression ............................................................. 32
2.8 O b se rv a tio n s................................................................................... 33

Codes correcteurs derreurs 35

3 G n ralits sur la th o rie des c o d e s 37


3.1 Distance de Hamming et b o u le s.................................................... 37
3.2 Problme du codage longueur fixe .......................................... 39
3.3 Problme du d c o d a g e ................................................................... 42
xii Codage, cryptologie &: applications

4 C o d e s linaires 45
4.1 Prambule m ath m atiqu e............................................................... 45
4.2 Dfinitions............................................................................................ 46
4.3 Dcodage par les classes latra les............................ 49
4.4 Exemple de dcodage par letableau standard 51
4.5 Codes d u a u x ..................................................................................... 53
4.6 Dcodage par le syn drom e................................................................ 55
4.7 Exemple de dcodage par latable des sy n d rom es........................ 56
4.8 Quelques proprits des codeslinaires........................................... 56
4.9 O b se rv a tio n s..................................................................................... 59

5 C o d e s d e H a m m in g 61
5.1 Dfinition . . . . . . 61
5.2 Proprits des codes de Ham m ing................................................... 62
5.3 D c o d a g e ........................................................................................... 63
5.4 Codes de Hamming te n d u s ............................................................ 63
5.5 O bservation ........................................................................................ 64

6 C o d e de G o la y te n d u 65
6.1 Matrice gnratrice............. ......................... 65
6.2 Proprits du c o d e ............................................................................ 66
6.3 Dcodage ..................................................................................... 67
6.4 E x e m p le s ........................................................................................... 68
6.5 O b se rv a tio n s.................................................................................. 69

7 C o d e s d e R e e d -M u lle r 71
7.1 Dfinition inductive ......................................................................... 71
7.2 Matrices gnratrices......................................................................... 72
7.3 Proprits du c o d e ............................................................................ 73
7.4 D c o d a g e ........................................................................................... 75
7.5 Observations ..................................................................................... 75

8 C o d e s cy cliq u es 77
8.1 D e s c r ip tio n ........................................................................................ 77
8.2 Reprsentation poly n om ia le............................................................ 77
8.3 Les facteurs de xn 1 sur F2 ......................................................... 80
8.4 Implantation du codage par lescodes c y c liq u e s ........................... 82
8.5 Implantation du dcodage descodes cy cliq u es............................. 83
8.6 Exemples de codes cycliques............................................................ 85
Table des matires xiii

9 C o d e s co rre cte u rs d e paqu ets d erreurs 87

9.1 Dfinitions............................................... 87

9.2 Vers un nouveau problme de dcodage ............................... 88

9.3 D c o d a g e ........................................................................................... 89

9.4 Technique dentrelacement..................................................... . 90

9.5 Technique d entrelacement avec r e t a r d ......................................... 91

9-6 Technique d entrelacement crois ............................... 92

10 In tr o d u ctio n au x c o d e s con v olu tifs 95

10.1 lments de base . . . . 95

10.2 Codage .............................................................................................. 96

10.3 Capacit de c o r r e c tio n .................................................. 101

10.4 D c o d a g e ........................................................................................... 104

11 A p p lic a tio n des c o d e s co rre cte u rs dans l in d u strie 107

11.1 Code du disque c o m p a c t.................................................................. 107

11.2 Code des CD-ROM 109

11.3 Code du m initel............................................... 110

11.4 Codes des rseaux in form a tiq u es.................................................. 110

11.5 Codage de la parole du G S M ........................................................ 112

11.6 Codes de transmissions satellitaires............................................... 116

Complexit 119

12 T h o rie d e la c o m p le x it 121

12.1 Problmes de dcision, de calcul et leur codage . . . . . . 121

12.2 Machines de Turing dterministes.................................................. 123

12.3 Classe du temps polynomial pour les machines dterministes . 125

12.4 Machines de Turing non dterm inistes......................................... 126

12.5 Classe du temps polynomial pour les modles non dterministes 127

12.6 Les langages N P -com plets............................................................... 130


X IV Codage, cryptologie & applications

13 C o m p le x it des p ro b l m e s d e th orie des c o d e s 133


13.1 Problme du dcodage des codes lin a ir e s ............................... 133
13.2 La NP-compltude du dcodage lin a ir e ......................... 134
13.3 La NP-compltude du problme de lexistence dun vecteur de
poids d o n n ............................................ 135
13.4 La NP-compltude du problme de la distance minimale sur n<V 136
13.5 La NP-compltude du problme de la distance minimale 138

14 C o m p le x it des p ro b l m e s d e cry p to g ra p h ie 139


14.1 Problme de la somme de sous-ensembles .............................. 139
14.2 Problme de la primalit . . ....................................................... 141
14.3 Une amlioration rcente, Primes G P ................................. 143
14.4 Problme du logarithme discret ................................................. 145

Cryptologie 147

15 In tr o d u ctio n la c r y p to lo g ie h istoriqu e 149


15.1 Introduction .................................................................................... 149
15.2 Chiffres monoalphabtiques . . . . . . 150
15.3 Cryptanalyse des chiffres monoalphabtiques 153
15.4 Chiffres polyalphabtiques............ 156
15.5 Cryptanalyse du chiffre de Vigenre ................ 158
15.6 Chiffres transposition ............................................................... 161

16 C ry p to lo g ie tech n iq u e cl secrte 163


16.1 Chiffre de V e r n a m ........................................................................... 163
16.2 Machines ro to rs.............................................................................. 164
16.3 Chiffres produits et i t r s ........................................................... 168
16.4 D E S ................................................................................................. 169

17 C ryp tan a lyses diffren tielle et linaire des chiffres itrs 177

17.1 Prsentation du chiffre u t ilis ........................................................ 177


17.2 Cryptanalyse diffrentielle........................................................... 179
17.3 Cryptanalyse linaire........................................................................ 184
Table des matires xv

18 D e u x chiffres rob u stes : ID E A e t A E S 193


18.1 IDEA ................................................................................................. 193
18.2 La slection de A E S ............................ 197
18.3 R ijn d a e l.............................................................................................. 198

19 D iffren ts m o d e s de fo n ctio n n e m e n t 205


19.1 Mode ECB ........................................................................................ 205
19.2 Mode C B C ........................................................................................ 206
19.3 Modes OFB et C F B ........................................................................ 207
19.4 Modification Dtection Code et MessageAuthentication Code . 208

20 C ry p to g ra p h ie cl p u b liq u e 209
20.1 Merkle H ellm an................................................................................. 210
20.2 RSA ................................................................................................. 213
20.3 Le problme du logarithme d i s c r e t ................ 221
20.4 El G a m a l ........................................................................................... 221

21 Signatures n u m riques 223


21.1 Mcanisme gnral de signature..................................................... 224
21.2 Signature par R S A ........................................................................... 224
21.3 Signature par El G a m a l .................................................................. 225
21.4 Digital Signature Standard (D S S )................... 227

22 F on ction s d e hachage 231


22.1 Dfinition d une fonction de h a ch a g e ............................................ 231
22.2 Fonctions de hachage collisions difficiles . . 232
22.3 Dimensionnement du nombre de bitsdune fonction de hachage 233
22.4 Hachage par le logarithme discret.................................................. 234
22.5 Hachage com pressif.................. 235
22.6 Fonction M D 5 .................................................................................... 237
22.7 Fonction S H A -1 ................................................................................. 241
22.8 Digital Signature Algorithm (DSA) ..... ............................. 243
22.9 Autres applications des fonctions de h a c h a g e ...................... 244

23 Sret des chiffres cl pu b liq u e 247


23.1 Cryptanalyse du cliiffre de M erkle-H ellm an............................... 247
23.2 Attaques par factorisation de R S A .................................. 255
23.3 Calcul du logarithme discret................................................. 261
xvi Codage, cryptologie & applications

24 G n ra tio n d e suites pseu d o-a la toires 267


24.1 Motivation ....................................................................................... 267
24.2 Gnration de suites alatoires . 268
24.3 Gnration de suites pseudo-alatoires . . . . 268
24.4 Gnrateur RSA 271

25 C ertifica tion 273


25.1 Introduction........................................................................................ 273
25.2 Forme gnrale dun certificat . 274
25.3 Utilisation et ralisation asymtrique 275
25.4 Utilisation et ralisation symtrique ............................ 278

26 G e stio n des cls 281


26.1 Exemple in t r o d u c t if...................... 281
26.2 Gestion des c l s ................................................................................. 281
26.3 Distribution des cls publiques ..283
26.4 Distribution des cls secrtes .. 284
26.5 Mise en accord par Diffie H e llm a n ............. 288
26.6 Mise jour des c l s ...................................... 290

27 A p p lica tio n s de la cry p to g ra p h ie la scu rit des rseaux 291


27.1 Motivation . . . . 291
27.2 Introduction la scurit 291
27.3 Introduction aux protocoles rseaux 293
27.4 Mots de passe jetables 298
27.5 K erberos.............................................................................................. 301
27.6 Scuriser les courriers lectroniques.............. 304
27.7 Scuriser les changes T C P / I P .................................................... 307
27.8 Scuriser la couche de transport........... 314

A U tilisa tion des registres linaires dcalage 319


A .l Arithmtique sur les polyn m es..................................................... 320

B T able d e p o ly n m e s irrd u ctib les p rim itifs sur F2 325

C Tables des frqu en ces relatives des lettres 327

In d e x 329

B ib liog ra p h ie 339
P r e m i r e p a r t ie

Thorie de linformation
C h a p it r e 1

Thorie de linformation

1.1 Introduction

La thorie mathmatique de linformation est issue des travaux de Wea-


ver et Shannon [84] publis en 1964. Ils sintressent en particulier laspect
quantitatif de linformation (notion d'entropie). Le schma de communication
propos par Shannon est dcrit par la figure 1.1 o la source d information
produit un message sous la forme dune suite de bits qui est transforme en un
signal acceptable pour le canal, medium utilis pour la transmission comme,
par exemple, un rseau hertzien, un cble ethernet ou un bus dordinateur. Le
signal est alors reu par le rcepteur qui effectue en gnral lopration inverse
de lmetteur, reconstruisant ainsi le message et le dlivrant au destinataire.
Un tel systme de communication peut tre scind en trois catgories : 1. les
systmes discrets pour lesquels message et signal sont deux suites de symboles
choisis dans un alphabet fini ; 2. les systmes continus pour lesquels message et
signal sont considrs comme deux fonctions continues; 3. les systmes mixtes
o on mlange les deux types de systmes prcdents.

Nous ne nous intresserons quaux systmes discrets pour Lesquels on consi


dre les problmes du canal bruit et du secret.
Dans le problme du canal bruit, le signal peut tre bruit entre lmetteur
et le rcepteur (cest--dire perturb par un signal alatoire). Dans ce cas, pour
recouvrer le message mis partir du signal reu, lmetteur va ajouter des
bits de redondance. Ceux-ci vont permettre au rcepteur soit de dtecter soit
de corriger une ou plusieurs erreurs. Dans le premier cas, il sagit de codes
dtecteurs derreurs et dans le second de codes correcteurs derreurs. Le but
4 Information et mesure de linformation

de la thorie des codes est de transmettre rapidement et correctement des


messages.
Dans la problmatique du secret, on se sert dun bruit pour perturber le
message et en cacher le contenu. Le rle de lmetteur est alors de construire une
perturbation du message dans le but dempcher un ennemi,le cryptanalyste, de
cryptanalyser le message partir du signal mais, en revanche, de permettre au
destinataire lgal de retrouver le message dorigine.

1.2 Information et mesure de linformation

1.2.1 Information et quantit dinformation

Une information dsigne par dfinition un ou plusieurs vnements possibles


parmi un ensemble fini dvnements. L information permet de diminuer lin
certitude. Considrons par exemple une source qui peut produire trois symboles
A, B et C. Quand le destinataire attend un symbole, il est dans lincertitude
quant au symbole que la source va engendrer. Lorsque le symbole apparat et
quil arrive au destinataire, cette incertitude diminue. Le but de la thorie de
linformation est de mesurer cette incertitude avant rception. La manire la
plus simple est de dire que le destinataire a une incertitude de trois symboles.
Prenons un second exemple. On recherche un fichier dans une arborescence.
Si on prcise que le fichier se trouve dans le dossier systme, on fournit une
information qui diminuera le temps de recherche du fait que le nombre de
fichiers dans le dossier systme est plus restreint. Si on ajoute linformation
que le fichier est en sus un fichier de police de caractres, on pourra abrger
dautant plus le temps de la recherche.

La quantit d information est dfinie comme une fonction croissante de ^


o

- N est le nombre dvnements possibles ;

- n est le cardinal du sous-ensemble dnot par linformation.

Pour mesurer cette quantit d information, on pose

qui est exprim en logon.


Si on dispose de deux informations, la quantit dinformation globale
ngale pas forcment la somme des quantits dinformation comme en atteste
lexemple 1.1 :
Thorie de linformation 5

Exemple 1.1 Soit N le nombre total de fichiers, rq le nombre de fichiers sys


tme, n2 le nombre de fichiers de polices de caractres et n le nombre de fichiers
de polices de caractres du dossier systme. Quand on indique que le fichier re
cherch se trouve dans le dossier systme, la quantit d information associe
est de log2 ( ^ 7 ) logons. Sil sagit d une police de caractres, on a log2 ( 77" )
logons et d une police de caractres du dossier systme, log2 { ) logons. Pour
faire intervenir les informations partielles dans linformation globale, on crit :

N Nri N ni N n2 N n2
log2 = log2 = log2 h log2 = log2 . = log2 1- log2
n ri\ n m n n2 n n2 n
-

o log2 ( ^ ) donne lindication police de caractres quand on dispose dj de


linformation dossier systme. Avec N = 5384 fichiers, n i = 1097 fichiers sys
tme, n 2 = 358 fichiers de police de caractres dont n = 58 dans le dossier
systme, l information

un fichier systme vaut log2 (y|) = 2 , 3 logons;

- un fichier police de caractres vaut log2 ( 7H 7 ) = 3, 91 logons;

- un fichier police de caractres du dossier systme vaut log2 (q | p ) = 6,54


logons ;

et non 2 ,3 + 3,91 = 6 ,21, somme des deux premires informations.

1.2.2 Entropie

L 'entropie va nous permettre de mesurer la quantit d information moyenne


contenue dans un ensemble de messages et de mesurer lincertitude a priori. Soit
E un ensemble partitionn en n sous-ensembles E, . \ < i < n (les messages),
i.e. E = U_ xE i. Par dfinition, la quantit d inform ation lie chaque message
Ei est

/(Ei)=10&(f[)=lofeO
et on dfinit Y entropie de la partition comme

H (partition) = hf loS2 ( ~ )
i= 1 ' *2
que lon peut exprimer sous la forme de probabilits avec Pi = j f la probabilit
associe lapparition du message Ei

n n , ^v
H (partition) = - y ^ p , l o g 2 (p; ) = ^ Pi log2 ( )
i= 1 i= 1 ^VrJ
Du fait que les Ei forment une partition de E , 1 Pi = 1 et lentropie
correspond la distribution de probabilit de tous les messages possibles.
6 Information et mesure de linformation

E x em p le 1.2 Soit une urne contenant 2 boules blanches et 6 boules noires. On


considre lexprience qui consiste tirer une boule. La probabilit de tirer une
boule blanche est de 1/4 et celle de tirer une noire est de 3/4.
Il en rsulte que la quantit dinformation lie lapparition dune boule blanche
est de log2(4) = 2 logons et de log2(4/3) = 0,42 logon pour une noire.
Le raisonnement ci-dessus ne permet dvaluer la quantit dinformation fournie
par le tirage quaprs la ralisation de lexprience. Le raisonnement a donc trait
au rsultat de lexprience et non lexprience elle-mme.
Pour valuer lexprience a priori, il faut faire appel aux proprits statistiques
des rsultats de lexprience. Si on rpte un grand nombre de fois lexprience,
la loi des grands nombres nous dit que, en moyenne, on tirera une blanche
une fois sur quatre et une noire trois fois plus souvent. Dans ces conditions, la
quantit dinformation moyenne par exprience sera donne par lentropie

H = \ 1S2(4) + ^ log2 = 0,81 logon

qui reprsente lentropie de la loi de probabilit donne ci-dessus.

Intuitivement, la quantit d information obtenue par lapparition de Ei est


dfinie par I(E i) = log2( l /pi) et reprsente le nombre de bits ncessaires au
codage optimal du message Ei, i.e. qui minimise le nombre moyen de bits du
signal correspondant Ei. Cette quantit est maximale quand il y a quidistri-
bution des n messages o lentropie H vaut alors log2(n) et minimale lorsque
la probabilit dun message E est gale 1, cas pour lequel lentropie H est
nulle. Lentropie dun message mesure son incertitude en ce sens quelle fournit
le nombre de bits dinformation qui doivent tre appris lorsque le message a t
perturb en traversant un canal bruit ou masqu dans un cryptogramme.

E x e m p le 1.3 On sintresse au nombre de bits ncessaires au codage des don


nes homme et femme dans une base de donnes lorsquil y a quiprobabilit
des donnes. L entropie vaut

H = \ lo2(2) + \ log2(2) = 1

Dans ce cas, le champ sexe de la base de donnes ne requiert quun seul bit
dinformation pour dterminer le sexe dun individu. Pour un champ d infor
mation ayant la mme smantique mais cod au moyen dun caractre alpha
numrique, on naura pas plus dinformation mais on aura besoin de plus de
bits.

1.2.3 Taux

On considre, pour une langue naturelle donne, lensemble X des mots de


N lettres et on dfinit alors r, le taux de la langue pour des mots de longueur
N comme le rapport
r H {X )
N
Thorie de linformation 7

ou, en dautres termes, le nombre moyen de bits dinformation fourni par chaque
caractre. Pour une langue naturelle et un N suffisamment grand, le taux de
la langue r est compris entre 1 et 1,5.
Le taux absolu R de la langue est alors dfini comme le nombre maximal de
bits d information qui peuvent tre cods par chaque caractre sous lhypothse
que ceux-ci sont tous quiprobables. Ainsi, pour un alphabet de L lettres, le
taux absolu est la quantit log2(L), qui vaut 4,7 pour un alphabet latin. On
illustre ainsi le fait que les langues sont redondantes et il est possible de mesurer
cette redondance D par
D = R r

La redondance de la langue anglaise est par exemple de 3,7 et le rapport D/R


montre que cette redondance est de lordre de 68%.

E xem ple 1.4 (J e u d e S h an n on ) Lors de ses rceptions, Claude Shannon


prenait un livre de littrature quil ouvrait au hasard. Ensuite, il commen
ait lire un paragraphe puis sarrtait. A ce moment prcis commenait le
jeu quil avait imagin : il pelait lettre aprs lettre les mots du paragraphe
dans lordre o ils taient crits. Mais, chaque lettre nomme, il demandait
lassistance de bien vouloir lui donner la lettre suivante. Il notait alors les r
ponses, bonnes ou mauvaises. Si les invits ne trouvaient pas la lettre suivante,
il la leur fournissait. En oprant un certain nombre de fois, Shannon a cal
cul exprimentalement la proportion de bonnes rponses qui avoisinait 75%.
Il en dduisit que la redondance de la langue anglaise est de 3/4, i.e. que trois
lettres sur quatre en moyenne sont inutiles, puisque ses invits parvenaient
reconstruire le texte avec seulement une lettre sur quatre.

1.3 Codage pour un canal non bruit

Afin de transmettre un message sous la forme de signal, il faut le coder ; c est


ce que lon nomme galement codage de source. Le mode de codage dpend alors
du moyen de transmission (criture, parole, code Morse, code ASCII et Unicode
sont autant de modes de codage diffrents). Le plus souvent, on considre des
codes binaires i.e. sur lalphabet { 0, 1}.
Les codes peuvent tre dfinis laide de la thorie des langages. Soit E
un alphabet et E* lensemble des mots finis sur cet alphabet. Un code C
( c i , . . . , Cfe} est un sous-ensemble de E*. Les lments c, C sont appels les
mots du code. Si tous les mots du code sont de mme longueur, on dit que C
est un code longueur fixe ou code en bloc. Dans le cas contraire, C est un
code longueur variable. Un code C est appel prfixe si aucun mot du code
nest le prfixe dun autre.

E xem ple 1.5 Pour lalphabet binaire E = (0 ,1 }, lensemble de tous les mots
sur E est E* = {e, 0 ,1 ,0 0 ,0 1 ,1 0 ,1 1 ,0 0 0 ,...}.
8 Codage pour un canal non bruit

C = {0 ,1 0 ,1 1 } dcrit un code prfixe longueur variable


C' = {1 ,0 1 ,1 1 } dcrit un code non prfixe longueur variable
C" = {000,101} dcrit un code longueur fixe ou code en bloc

1.3.1 Codes optimaux

En associant des codes courts aux messages les plus frquents et des codes
longs pour les autres, on peut construire un code optimal, au sens o le nombre
moyen de bits par symbole correspond prcisment lentropie de lensemble
des messages possibles.
Un premier exemple dune telle ide est le code morse :
A B C D
E F G H
I J K L
M N O ---- P
Q R S T -
u V ...- W X
Y Z
Huffman a propos un algorithme qui construit un code prfixe optimal pour
une source Sr comprenant r messages sur un alphabet binaire fond :

- sur une procdure de rduction qui permet de transformer Sr en une source


r 1 symboles Sr i pour obtenir finalement une source deux symboles
pour laquelle le code prfixe optimal est { 0, 1},

- et sur une proprit qui permet de construire inductivement un code prfixe


en rajoutant les symboles de source retirs prcdemment.

Le principe de la construction des codes de Huffman sera prsent plus en dtail


dans la suite de cet ouvrage dans la section 2.5 du chapitre 2 sur la compression.

1.3.2 Codes longueur fixe

Dans le cas des codes binaires longueur fixe, on souhaite coder des messages
de longueur k au moyen de mots du code de longueur n. On a ajout n k
symboles de redondance. Si le code comprend w mots, la quantit dinformation
vhicule est log2(w) et le rendement du (n, />:)-code est

lg2(';)
n
1.3.3 Longueur moyenne dun code

Si S = {s i, S2 , - - -, Sfe} est un alphabet de source tel que pl reprsente la


probabilit dapparition du symbole Sj et si h-> X i est un code o X i est un
mot de longueur Z*, on dfinit la longueur moyenne du code comme :
k
L = } ' pfii
i= 1
Thorie de linformation 9

qui correspond la somme pondre des longueurs de tous les mots et qui
concide avec L ', rapport entre le nombre de symboles binaires du message
cod et le nombre de symboles de source quand le message est de longueur
suffisante pour que tous les symboles apparaissent avec une frquence relative
gale leur probabilit.
On est alors amen attribuer aux messages les plus frquents des codes de
courte longueur. C est cette ide qui a t exploite par Morse et par Huffman.

E x em p le 1.6 On calcule la longueur moyenne du code A i> 0, B i> 10 et


C * 11 de probabilits respectives 1 /2 ,1 /4 ,1 /4 .

| - 1 + | - 2 + | - 2 = 1. 5

1.3.4 Efficacit et redondance

Soit lalphabet de source suivant : S = { A , B } tel que p a 0,8 et p b = 0,2


cod par A >* 0 et B i> 1. Lentropie de la source est de 0 ,81og2(0 ,8)
0 ,2 log2(0 ,2) = 0,72 logon et sa longueur moyenne est 0,8 1 + 0,2 1 = 1. On
dfinit l efficacit comme le rapport

_ HW

Dans notre cas, lefficacit r] = 0,72 soit une redondance r = 1 de 28%.


Autrement dit, mme en choisissant le code le plus court possible, on perd 28%
du temps de transmission.
Comment peut-on diminuer cette redondance et amliorer lefficacit ? Une
ide est de coder des couples de symboles au lieu des symboles eux-mmes (cf.
figure 1.2). On obtient ainsi :

symbole probabilit code


AA 0,64 0
AB 0,16 11
BA 0,16 100
BB 0, 04 101

Si on calcule lentropie de la source, on obtient la valeur de 1,45 logon :

641062 { m ) + 2 (
161062 ( + ) ) +0, 041062 ( ^ s ) = M 5

La longueur moyenne de ce code est de 0 ,6 4 + 2 -0 ,1 6 + 3 -(0 ,1 6 + 0 ,0 4 ) = 1,56


do une efficacit r] de = 0,93 et une redondance de 7% au lieu des
28% prcdents. En revanche, le cot payer est une complexification des
oprations de codage et de dcodage. On montre que, en faisant crotre le
nombre de symboles quon code, lefficacit du codage peut devenir aussi proche
que possible de sa limite suprieure (gale 1). C est prcisment la signification
du premier thorme de Shannon que nous nonons dans la section 1.5.
10 Codage en prsence de bruit

B B ( 0,04) B A (0,16)

A B (0,16) B B B A {0,2)

AB B B B A (0 , 36) A A {0,64)

Fig. 1.2 Arbre associ au code de Huffman.

1.4 Codage en prsence de bruit

Lorsquun signal est transmis au travers du canal de transmission, il peut


tre perturb par un bruit. Le but du codage en prsence de bruit, aussi appel
codage de canal, permet au rcepteur de recouvrer le signal d origine mme
si celui-ci a t altr. Bien videmment, le codage dans ce cas dpend forte
ment du canal. Aussi, allons-nous commencer par une modlisation du canal
de transmission.

1.4.1 Canal de transmission


On considre le cas d un canal binaire symtrique dcrit dans la figure 1.3.

0 .1 - P 0

1 1
1-p

Fig. 1.3 Canal binaire symtrique.

Pour celui-ci, p correspond la probabilit de recevoir 1 alors que 0 a t


mis ou, symtriquement, de recevoir 0 alors que 1 a t mis.
Si on appelle distance entre deux mots binaires le nombre de symboles o
ils diffrent, la probabilit de recevoir un mot de longueur k qui diffre sur d
positions du mot envoy est :
Thorie de linformation 11

E x em p le 1.7 Si on a mis le signal 11010 et reu 10011, les mots diffrent en


deux positions. En prenant p = 0,1, la probabilit de recevoir un mot pour
lequel 2 bits ont t altrs est (2) 0, 93 0, l 2 = 10 0,0073 = 0,073 et un
mot avec une seule erreur est de (J)0,94 0,1 = 5 0,06 = 0,3. On voit que,
pour ce canal, il est plus probable de recevoir un mot avec une seule erreur de
transmission quun mot avec deux erreurs de transmission.

On souhaite dterminer la quantit d information transmise par le canal.


Lorsque p > 0 et quun bit dinformation est transmis, si une erreur se pro
duit, la quantit d information perdue est, par dfinition, log2(^)- En moyenne,
p log2( ^ ). Lorsquil ny a pas d erreur, la quantit d information perdue est, en
moyenne, (1 - p ) l o g 2( ^ ) .

La quantit totale d information perdue est p log2( ^) + (1 p) log2( y ^ ) .


La quantit d information qui est effectivement transmise par le canal est
la capacit C(p) qui vaut

l-^ p lo g 2 j + (1 - p ) l o g 2 = 1 +pd og2(p) + (1 - p ) l o g 2(l ~ P )

E xem ple 1.8 Avec une probabilit d erreur de 1%, la capacit du canal binaire
symtrique est 0 (0 ,0 1 ) = 1 (0.07 + 0,01) = 0,92.

1.4.2 quivoque

Soit A = { a i , . . . , an} les symboles de source et I) = { 61, . . . , brn} les sym


boles du code. Les symboles de A ayant une certaine probabilit, on peut cal
culer lentropie de la source H (A ). Cependant, si on considre le code B , on ne
connat pas H (A ) mais on peut sen faire une certaine ide en fonction des bj au
moyen des probabilits conditionnelles P(i/bj) correspondant la probabilit
davoir le message ai sachant que le symbole bj a t reu. On peut donc cal
culer H (A/bj), c est--dire lentropie de la source connaissant bj. Si on calcule
la moyenne des H (A/bj) tendue lensemble des bj, on obtient H (A/B) qui
correspond prcisment la notion A1quivoque.
tant donn b B tel que , P {bj) = 1, soit P(a/b) la probabilit
conditionnelle que a ait t cod lorsquon a reu b et P {a. b) la probabilit
jointe du message a et du symbole b. En rappelant la formule de Bayes P (a, b) =
P{a/b)P(b), on calcule lquivoque comme :

H (A /B ) = - a,fcP M ) l o g 2( P ( a /6))
= E , bp (^)lg2(p(i7fcy)
= E 6 ( P Q > ) E a P ( a / b ) log2 (p(i 7 by))

Un exemple simple de calcul de lquivoque est lexemple 1.9.


50 Dcodage par les classes latrales

P reu ve

(1) Si a G (Z 2)" , alors a + 0 G a + C.

(2) On considre lapplication de C m + C dfinie par x >> n + x pour a G (Z2)".


Pour tout mot x de C, lapplication est bijective, donc \a + C\ = \C\ = 2fc.

(3) Supposons que a+ C D b + C 0 . Alors, il existe v G (Z2) tel que a+C n b+ C


contienne llment v. Pour x et y lments de C, v = a + x = b + y ce qui
implique que b = a + (x y) G a + C et, par le lemme, b + C = a + C.

On partitionne alors (Z 2) " en (0 + C )U (tti+ C ')U .. .U(tts+ C ) o -s = 2"~ fc1


et o les 0, '1, , us sont des lments de poids minimal appels chefs de classe.
On peut alors construire le tableau standard de C qui est une matrice 2 ' k
lignes et 2fc colonnes. Il contient tous les vecteurs de (Z 2) . Sa premire ligne
correspond aux mots de C avec le vecteur 0 gauche ; les autres lignes repr
sentent les classes latrales u ,+ C avec leur chef de classe gauche. Lalgorithme
suivant permet de construire le tableau standard :

(1) on numre les mots de C en commenant par 0 sur la premire ligne ;

(2) on choisit un vecteur iq de poids minimal qui napparat pas dans la pre
mire ligne et on numre sur la deuxime ligne les lments ui + C en
inscrivant au-dessous de 0 le chef de classe u et au-dessous de chaque l
ment x G C llment u\ -1- x ;

(3) on choisit un vecteur U2 de poids minimal qui napparat pas dans les pre
mires lignes et on numre sur la troisime ligne les lments + C en
inscrivant au-dessous de 0 le chef de classe u2 et au-dessous de chaque l
ment x C llment U2 + x ;

(4) on itre ce procd jusqu ce que toutes les classes latrales soient listes
et que tout vecteur de (Z 2)" napparaisse quune seule fois.

Le dcodeur va utiliser le tableau standard de la faon suivante : lorsque le


mot y est reu, on recherche sa position dans le tableau standard. Le dcodeur
dcide alors que le vecteur derreur e correspond au chef de classe qui est situ
dans la premire colonne de la mme ligne et peut dcoder y comme x = y e
en choisissant le mot du code de la premire ligne sur la mme colonne que y.
Les vecteurs d erreurs qui pourront tre corrigs sont prcisment les chefs
de classe, quel que soit le mot du code transmis. En choisissant des vecteurs
derreur de poids minimal en tant que chefs de classe, le tableau standard assure
un dcodage au plus proche voisin.
Observons cependant que ce procd de dcodage est trop lent pour de
grands codes et trop coteux en termes de mmoire. En effet, si le nombre
Thorie de linformation 13

qui nous intressent :

nom P (./0 )= P (.,0 )/P (0 ) P (./1 ) = P (.,1 )/P (1 )


a 0,64/0,7 6 = 0,84 0
b 0= 0 0 ,1 6 /0 ,2 4 = 0,67
c 0 ,1 1 /0 ,7 6 = 0,14 0 ,0 5 /0 ,2 4 = 0,21
d 0,01 /0,7 6 = 0,02 0 ,0 3 /0 ,2 4 = 0,12

Et enfin, on calcule lquivoque : H (A /B ) = (P (b ) p (a/b) lofo ( P(i/h) ))

b a P(a/b) log2( P ( a /6))


0 a 0,21
0 b 0
0 c 0,4
0 d 0,11 0,72 P (0) = 0,55
1 a 0
1 b 0,39
1 c 0,47
1 d 0,37 1 ,2 3 -P (1 ) = 0 ,2 9
0,84

Donc H (A /B ) = 0,84 et H (A ) = 1,45, H (A ) H (A / B ) = 0,61. La connais


sance dun symbole du code permet de rduire lincertitude sur le mot cod
0,61 logon.

1.4.3 Vitesse de transmission dun message

Soit une source qui met des symboles binaires de faon quiprobable au
travers dun canal binaire symtrique de probabilit d erreur p = 1%, on a vu
prcdemment que lentropie de la source est de 1 logon par symbole et que la
capacit du canal est de 0,92. Comme chaque symbole peut tre erron, on ne
peut reconstituer le message transmis.
Pour remdier ce problme, on peut rpter trois fois le symbole mis
(cest le code de rptition) :
1 i 111
0 000

Dans ces conditions, le rcepteur recevra une suite de trois symboles binaires
et pourra, par majorit, dduire quel tait le symbole mis.
Plus gnralement, si pour chaque symbole 1 envoyer, on en transmet
2n + 1, on rduit la probabilit derreur en mme temps que n crot.
Le rapport
nombre de signaux binaires transmis
nombre de signaux binaires utiliss
est appel vitesse de transmission du canal et la probabilit derreur du dco
dage tend vers zro en mme temps que la vitesse de transmission.
14 Thormes de Shannon

1.4.4 Codage optimal

Le codage optimal en prsence de bruit a t rsolu dans le second thorme


de Shannon qui prsente un rsultat inattendu. Il affirme en effet quil existe
des codes conduisant des vitesses de transmission aussi voisines que voulues
de la capacit du canal et qui permettent de rendre la probabilit derreur de
transmission infrieure tout nombre fix.
Hlas, ce thorme est existentiel. Cela signifie quil ne contient aucune
indication sur la manire de construire un tel code. A lheure actuelle, pour
tous les codes connus, la vitesse de transmission tend plus ou moins vite vers
zro en mme temps que la probabilit d erreur de transmission.

1.5 Thormes de Shannon

(1) T h o r m e du co d a g e d e so u rce : Sans perturbation, il est possible,


partir d un alphabet quelconque, de coder les messages mis de telle sorte
que le rendement soit aussi proche que souhait de la valeur maximale, i.e.
la capacit du canal.

(2) T h o r m e fon dam en ta l : avec perturbation, il est possible, grce un


codage adquat, d assurer un rendement aussi proche quon le souhaite de
la valeur maximale, i.e. la capacit du canal bruit, avec une probabilit
derreur arbitrairement petite.

Le thorme fondamental peut tre appliqu au cas du canal binaire sym


trique :

T h o r m e 1.1 Soit C (p) la capacit du canal de transmission et soient deux


valeurs arbitraires 6 > 0 et R < C(p). Il existe un (n.k)-code de longueur
suffisamment grande tel que > R et tel que la probabilit de dcoder incor
rectement un mot reu est strictement infrieure .

Coder est une opration efficace au prix dune certaine redondance. Cela
justifie ltude de la construction de codes.

1.6 Observations

Pour plus de dtails, nous laissons au lecteur le soin de se reporter des


ouvrages sur la thorie de linformation, soit gnralistes comme [7, 43], soit
plus spcialiss comme le livre de Roman [80] qui est beaucoup plus exhaustif.
Nous avons galement dcid de ne pas prsenter plus en dtail la problma
tique du secret et, en particulier, la notion de distance unicit qui permet de
mesurer la quantit de cryptogramme ncessaire pour mener bien certaines
cryptanalyses. Pour cet aspect prcis, le lecteur intress pourra consulter le
livre de Robling-Denning [79].
D e u x i m e p a r t ie

Compression de donnes
C h a p it r e 2

Compression de donnes

2.1 Introduction

La compression de donnes date du 19e sicle avec linvention du Braille


en 1820 et du code Morse en 1838. Elle a t formalise grce la thorie de
linformation. En effet, la compression fonctionne linverse du codage, une
des problmatiques de la thorie de linformation. Si le codage ajoute de la
redondance pour transmettre un signal en toute scurit sur un canal bruit,
la compression va, elle, tenter de retirer le plus de redondance possible dune
donne.

Les principales applications de la compression concernent larchivage des


donnes, que ce soit sur un disque dur, un disque compact ou un DVD. En ef
fet, les supports d archivage de donnes se remplissent aussi rapidement que leur
taille crot. Ainsi, les mises jour de logiciels qui, il y a quelques annes taient
enregistres sur une simple disquette, sont de plus en plus souvent comprimes,
leur taille dpassant le contenu maximal dun CD-ROM. Certains formats de
fichiers intgrent directement de la compression. C est par exemple le cas pour
les fichiers d images (fichiers gif ou jpeg) mais aussi pour certains fichiers texte
comme avec le portable document format d Adobe. Dans le domaine des tl
communications, la compression de donnes est couramment utilise dans le
fonctionnement des modems (protocole V42 par exemple) ainsi que pour les
transmissions par tlcopie [82].
Une nouvelle motivation est ne avec lavnement des rseaux : celle daug
menter la bande passante en diminuant le nombre de bits mis. D autant que la
compression est de plus en plus souvent couple des systmes de chiffrement
qui ont tendance, eux, augmenter la taille des paquets transmis.
La compression de donnes apporte une rponse algorithmique ces pro
blmes. On cherche une reprsentation alternative des donnes qui est plus
efficace en espace, souvent au dtriment du temps d accs. Le plus gnrale
ment, cette reprsentation compacte met en correspondance une donne avec
son code au moyen d'un dictionnaire.

Quand on parle de compression de donnes, on fait implicitement rfrence


deux algorithmes ; lalgorithme de compression qui prend en entre une chane
de caractres B (pour donne brute) et qui calcule une reprsentation C (pour
18 Types dalgorithmes de compression

B R

Fig. 2.1 Compression et dcompression.

donne comprime) plus courte que B et celui de dcompression qui prend en


entre une reprsentation comprime C et qui calcule R, une donne recons
truite partir de C (voir figure 2.1).
Observons quil nest pas spcifi que la chane de caractres reconstruite R
soit identique B, la donne brute fournie en entre. La premire question qui
se pose lorsquon parle dalgorithmes de compression de donnes est celle de
dcider si on veut que R, la donne reconstruite partir de C, soit identique la
donne brute B. Dans le vocabulaire de la compression de donnes, il sagit de
savoir si on utilise un procd de compression avec pertes ou sans perte. Lors
quon travaille sur des donnes textuelles ou numriques, il est indispensable
que la donne reconstruite soit identique celle dorigine. Mais quand on traite
des signaux audio ou vido, on peut tolrer une certaine perte entre la donne
brute et celle reconstruite, pourvu que lutilisateur ne peroive pas la diffrence.
Gnralement, lutilisation d un procd avec pertes amliore la compression.
Dans cet ouvrage, nous ne considrons que les aspects d un signal numrique et
nous nous restreindrons aux seuls algorithmes de compression sans perte. Nous
renvoyons le lecteur intress par les algorithmes de compression avec pertes
des ouvrages spcialiss sur la compression comme [82].

Intuitivement, la compression de donnes est ralise en diminuant la re


dondance de lentre, ce qui a aussi pour effet de rendre la donne moins fiable,
plus sujette aux erreurs. A contrario, le but des codes correcteurs derreurs que
nous aborderons plus tard est de rendre une donne plus fiable, au prix d une
redondance accrue.

2.2 Types dalgorithmes de compression

Bien quil y ait un grand nombre dalgorithmes de compression et, pour cha
cun d entre eux, un grand nombre de variantes, on peut les classer en plusieurs
catgories [85] :
Compression de donnes 19

les algorithmes statistiques, tels les codes de Huffman ; ils construisent un


dictionnaire en effectuant une analyse statistique et globale du document ;

-le s algorithmes dynamiques, comme ceux de Lempel et Ziv; ceux-ci


construisent dynamiquement un dictionnaire et remplacent les donnes r
ptes par des liens vers une entre du dictionnaire ;

les mthodes heuristiques, quant elles, essayent de deviner les lments


du bloc de donnes. Ces dernires sont les plus rcentes.

2.3 Dfinitions

L'algorithme de compression est le programme qui comprime la don


ne brute B fournie en entre et cre en sortie une donne comprime C.
L1algorithme de dcompression effectue lopration inverse, souvent appele re
construction.
Dans certains cas, lalgorithme de compression et celui de dcompression
utilisent le mme programme qui travaille de manire symtrique (et dans la
mme complexit en temps). Dans le cas o ces deux algorithmes nutilisent
pas le mme programme, on parle de mthode asymtrique et lun ou lautre
des deux algorithmes effectue un travail plus consquent. C est en particulier le
cas pour les algorithmes utiliss pour la compression des donnes sur un DVD
o la compression est faite une seule fois la cration et la dcompression est
utilise chaque utilisation.

Pour comparer lefficacit des mthodes de compression, on introduit les


quantits suivantes [82] :

ICI
le rapport de compression, j-g-j- qui est normalement < 1. Une valeur de 0,6
signifie que |?| a t rduit de 40%.

-l e facteur de compression, rapport inverse du rapport de compression, est


normalement > 1. Plus la compression est grande, plus le facteur de com
pression crot.

lexpression 100 x (1 rapport de compression) est souvent utilise. Une


valeur de 40 signifie que \B\ & t rduit de 40%.

Dans la suite de ce chapitre, on prsente quelques techniques de base, les


codes de Huffman et les algorithmes de Lempel-Ziv. On terminera en prsentant
les limites de la compression.

2.4 Techniques de base

Nous allons prsenter succinctement deux techniques intuitives avant de


prsenter la mthode RLE (pour Run Length Encoding).
20 Techniques de base

2.4.1 Mthodes naves

Lorsquun texte comporte un grand nombre despaces qui ne sont pas ad


jacents, il est possible de les retirer en construisant un mot binaire pour lequel
un 1 indique la prsence dun espace et un 0 tout caractre qui nest pas
un espace. Ainsi, le mot binaire associ au texte Pour rduire la longueur est
000010000000100100000000 et le texte comprim devient :
000010000000100100000000| Pourrduirelalongueur

Si le nombre d espaces est faible, le nombre de 1 dans le mot binaire sera petit
face au nombre de 0 et le mot binaire pourra tre comprim, par exemple en
04107102108 pour quatre rptitions de 0 suivi dun 1, de sept 0...

Si on travaille sur une liste de mots tris dans lordre lexicographique (lordre
du dictionnaire), on peut utiliser la technique de compression de tte. Celle-
ci repose sur le principe que deux mots successifs dans notre liste partagent
souvent un mme prfixe p de longueur n. On peut donc remplacer les lettres
de p dans le second mot par n, longueur du prfixe commun.

E x em p le 2.1

Cod a Coda
Cod 3
Code -Barres 3e-Barres
Coder 4r
Cod eur 4ur
Codicille 3icille

2.4.2 Mthode RLE

Le principe de cette technique de compression est le suivant : si une lettre


a apparat n fois successivement dans lentre, on peut remplacer les n occur
rences de a par le couple na. La rptition n fois de a est appele longueur de
rptition ou Run length. Cette approche porte le nom anglais de run length
encoding.
La compression par RLE prend en entre une chane comme
les chaussettes de larchiduchesse
et la transforme en
les chau@2se@2tes de l'archiduche@2se
Remarquons que dans notre exemple, la chane de sortie est plus longue que
celle d entre. En effet, dans lentre, se trouvent des rptitions de longueur
deux quon cherche comprimer avec trois caractres! Il ne faut donc utili
ser cette technique que lorsquun caractre est rpt au moins trois fois. En
adoptant cette convention, on obtient lalgorithme de compression 2.1.
Compression de donnes 21

A lg orith m e 2.1 __________________________________________________________

rpte-* 0 ; compteur < 1 ;


RefCar < entre [compteur] ; CarCour-s RefCar ;
tan tq u e (compteur<longueur(entre)) faire
tan tqu e (RefCar=CarCour) e t (compteur<longueur(entre)) faire
incrmente(compteur) ; incrmente(rpte) ;
CarCour<entrefcompteur] ;
ft q ;
si rpte < 4 alors
p o u r i rie 1 rpte crire(RefCar) fp o u r
sin on crire(@,rpte,RefCar) ;
fsi
rpte<0 ;
RefCar <CarCour ;
ftq

La dcompression est immdiate : ds quon lit @nc, qui indique n rpti


tions du caractre c, on crit n fois c.
Cependant, les rptitions dun mme caractre plus de trois fois dans une
langue naturelle sont assez rares. Aussi cette mthode nest pas utilise directe
ment mais plutt sur une entre binaire en lisant non plus un caractre mais un
mot (ou un octet). Pour viter davoir recours un caractre particulier comme
le @ pour indiquer la rptition, on peut aussi utiliser la mthode suivante : si
lentre comprend n rptitions de c, selon la valeur de n,

- si n < 3 lalgorithme de compression crit cc ;

- s i n > 3, lalgorithme de compression crit ccc(n 3).

Lorsque lalgorithme de dcompression rencontre une suite de trois c conscutifs


suivi de N n 3 > 0, il sait quil sagit de N rptitions de c.
C est la convention qui est utilise au sein de la mthode de compression
MNP5 des modems [82].

2.5 Algorithmes statistiques

Huffman a propos un algorithme qui permet de construire un code prfixe


optimal pour une source Sr comprenant r messages sur un alphabet binaire
fond

-su r une procdure de rduction qui permet de transformer Sr en une source


r 1 symboles Sr- 1 pour obtenir finalement une source deux symboles
pour laquelle le code prfixe optimal est ( 0, 1),

- et sur la proprit 2.1 que nous rappelons ci-dessous.


22 Algorithmes statistiques

P ro p ri t 2.1 Sur un alphabet binaire, si C = { c i , . . . , cy } est un code prfixe


optimal pour une source Sr , alors C' = {c \, . . . , c'r , c'r+x) dfini par

di = Ci \ < i < r 1
c'r = cr.O
dr+x = cr. 1

est un code prfixe optimal pour la source S'r , j.

La procdure de rduction fonctionne comme suit :

( 1) on classe dans une liste les symboles de la source dans lordre des probabilits
dcroissantes ;

(2) on remplace les deux derniers symboles par un seul symbole, affect dune
probabilit qui est la somme des probabilits des deux derniers symboles ;

(3) on rordonne la liste et on rpte le processus ;

(4) on sarrte lorsque le nombre dlments de la liste est gal deux.

et il ne reste plus qu appliquer successivement la proprit 2.1 en remontant


de la source 2 symboles cods par 0 et 1 vers Sr pour avoir le code prfixe
optimal pour Sr .

Cet algorithme est utilis pour la compression de fichiers dans la commande


compact dUNIX. Des variantes modifies et amliores sont toujours utilises
pour la compression de fichiers.

E x em p le 2.2 Soit n = 3 et soient trois messages A, B et C mis par une source


X de probabilits dapparition respectives P (A ) = 1/ 2, P (B ) = P (C ) = 1/4.
Alors,
log2( p ^ ) = l o g 2(2) = 1
1oK2( p 1b )) = lo2(4) = 2
log2(p [c ) ) = log2(4) = 2

et lentropie de la source X est :

H (X ) = ~ log2(2) + 2 Q log2(4 )) = 0,5 + 1 = 1,5

l'issue de ltape (4) de lalgorithme, on obtient :

A 1/2 1/2 - 0
B 1/4 1/2 -* 1
C 1/4

La colonne de droite contient le codage obtenu ltape (4).


Compression de donnes 23

On reconstitue le code pour la source initiale en utilisant la proprit 2.1 :

0 0 A 1/2
1 10 B 1/4
11 C 1/4

Il est possible (cf. [20]) de rsumer ces tapes en utilisant un arbre binaire
o chaque feuille reprsente un message et chaque nud interne la fusion de
deux ensembles de messages. Dans la figure 2.2, les probabilits d apparition
sont dcrites entre parenthses et le code de Huffman associ est en gras.

C ( 1/4)11 H (l/4 )1 0

l\ / 3
C B { 1/2) A { 1/2)0

Fig. 2.2 Arbre associ au code de Huffman.

Le code optimal associe donc 0 A, 10 H et 11 C. On code alors le


message A B A A C A B C par 010001101011.

E xercice 2.1 En utilisant la table C.2 en annexe, calculer le code de Huffman


des caractres latins en anglais. Pourquoi le rsultat est-il diffrent du code
Morse ?

C orrig Le code de Huffman associe l'alphabet latin anglais les codes bi


naires suivants :
E 011 T 001
M 0100 R 0101
S 1001 I 1011
N 1100 o 1110
A 1111 H 00001
F 00010 p 00011
U 10000 c 10001
D 10101 L 11011
V 000000 G 101000
B 101001 Y 110100
W 110101 R 0000010
Q 00000110 X 000001111
Z 0000011100 J 0000011101
La diffrence entre le code de Huffman et le code Morse est que le premier est
un code prfixe alors que le second ne lest pas, mme si tous deux sont des
codes longueur variable.
24 Algorithmes dynamiques

E x e rcice 2.2 On considre lalphabet de lADN E = { A , C, T, G } de probabi


lits d apparition respectives {0.5,0.3,0.15,0.05}. Calculer lentropie de lADN
et donner le code de Huffman de celui-ci.

2.6 Algorithmes dynamiques

Ces algorithmes de compression portent aussi le nom de substitution de


facteurs. En effet, leur principe repose sur le remplacement de facteurs de len
tre par des codes plus courts. Ces codes reprsentent les indices des facteurs
dans un dictionnaire qui est construit dynamiquement, au fur et mesure de
la compression.
La plupart des programmes de compression dynamiques utilisent une des
deux mthodes proposes par Lempel et Ziv en 1977 et 1978. Ces deux algo
rithmes, appels communment LZ77 et LZ78 [100, 101], parcourent lentre
comprimer de la gauche vers la droite. Ils remplacent les facteurs rpts
par des pointeurs vers lendroit o ils sont dj apparus dans le texte. Bien
que ces deux mthodes soient souvent confondues dans la littrature, elles se
distinguent grandement par la construction du dictionnaire. Il existe un grand
nombre de variantes de ces deux algorithmes. LZ77 est employ, par exemple,
dans l utilitaire pk zip sous MS-DOS, g z ip sous UNIX ; la commande compress
dUNIX, et le format dimages g i f utilisent quant eux diffrentes implmen
tations de LZ78.

2.6.1 LZ77

Lide essentielle de cet algorithme est d utiliser une partie de la donne


dentre comme dictionnaire [100]. L algorithme de compression fait glisser une
fentre de N caractres sur la chane dentre de la gauche vers la droite. Cette
fentre est compose de deux parties :

- gauche, le tampon de recherche de N F caractres qui constitue le


dictionnaire courant des lettres qui ont t lues et comprimes rcemment :

- droite, le tampon de lecture de F caractres dans lequel se trouvent les


lettres en attente de compression.

oo

x
o;
aiiab, babi abab, ,ababb a b a ijb b b L jb a b u b b a b b
V- - 1 v
tampon de recherche tampon de lecture
Compression de donnes 25

A la lecture du a gauche du tampon de lecture, lalgorithme de compression


parcourt le tampon de recherche de la droite vers la gauche pour trouver un a. Il
en trouve un distance 3 (dcalage de 3). Il cherche ensuite faire correspondre
le plus de symboles possibles entre le prfixe du tampon de lecture et le facteur
du tampon de recherche dbutant au a trouv prcdemment. Il peut mettre
en correspondance le facteur ab, de longueur 2 avec un dcalage de 3.

CD
'0> a
6
*H K
CD B
B o
oo cd

X
CD
X
CD
auabubabuababuababb abaubbbubabubbabb

tampon de recherche tampon de lecture

Il continue ensuite sa recherche pour essayer de faire correspondre le plus


de symboles possibles entre le prfixe du tampon de lecture et un facteur du
tampon de recherche.

CD
B
O
CD
o
CD

X x
(D
CD
auabubabuababuajbabb aba, tbbb, bab, ,bbabb

tampon de recherche tampon de lecture

La meilleure correspondance est faite entre le facteur aba et le prfixe aba7


avec un dcalage de 5, dune longueur de 3 caractres.

CD
B
*H
CD
CD B
B o
O u
CD

y
o; auabubabuababuababb abaubbbubabubbabb

tampon de recherche tampon de lecture

Une correspondance quivalente est trouve avec un dcalage de 10 et une


longueur de 3.
26 Algorithmes dynamiques

L algorithme choisit la plus longue correspondance et, sil y en a plusieurs


quivalentes, celle qui est le plus gauche (la dernire trouve) dans le tampon
de recherche. Dans notre cas, il slectionne celle correspondant un dcalage
de 10 et une longueur de 3 et il crit le lexme correspondant (10, 3, u). La
dernire composante du triplet de sortie indique le premier caractre qui nest
pas en correspondance dans le prfixe du tampon de lecture.

A lg o rith m e d e co m p re ssio n L Z 77

A lg o rith m e 2.2 ___________________________________ ______________________

1. mettre le pointeur de codage au dbut de lentre


tan tqu e n on vide(tampon de lecture) faire
2. trouver la plus longue correspondance entre
le tampon de lecture et celui de recherche
3. crire (p ,l ,c ) o :
- p mesure la distance de dcalage ;
- I : longueur de la correspondance ;
- c : 1er caractre de lentre qui nest pas dans le dictionnaire.
4. dplacer le pointeur de codage de l + 1 positions vers la droite ;
ftq

A chaque instant, lalgorithme va rechercher dans les N F premiers ca


ractres du tampon de recherche le plus long facteur qui se rpte au dbut
du tampon de lecture. Il doit tre de taille maximale F . Cette rptition sera
code (p , l, c) o :

- p est la distance entre le dbut du tampon de lecture et la position de


rptition dans le dictionnaire ;

- 1 est la longueur de la rptition ;

- c est le premier caractre du tampon de lecture diffrent du caractre cor


respondant dans le tampon de recherche.

La rptition peut chevaucher le dictionnaire et le tampon de lecture, comme


on le verra plus loin. Aprs avoir cod la rptition, la fentre glisse de l +
1 caractres vers la droite. Le codage du caractre c ayant provoqu cette
diffrence est indispensable dans le cas o aucune rptition nest trouve dans
le dictionnaire. On crira alors sur la sortie (0,0, c).

E x e m p le 2.3 On dispose de lentre l e mage d i t abracadabra et dune fe


ntre de taille N = 11 dont le tampon de lecture est de F = 5 caractres. On
a alors la suite de triplets suivante engendre par ltape 3 de lalgorithme :
Compression de donnes 27

Iuuuuuu |l e uma |geud i t uabracadabra (0, 0, 1)


1u u u u L j l I eumag |eud i t uabracadabra (0, 0, e)
un uuuule I u^age |udi t uabracadabra (3,l,m )
uuul u u leum|ageud |it uabracadabra (0, 0 , a)
UULfULI Ule. jma geud i t uabracadabra (0, 0, g)
u u u u u u il e u m a g eud i t abracadabra (5,2,d)
u u u u u u l ^ u mageud i t uab]racadabra (0 , 0 , 1)
u u u u u u l e u m ageud i t uabr acadabra (0, 0, t)
uuuuuuleuma geudit ,abra cadabra (4,1, a)
u u u u u u l e u m a g e |u d i t u a b raca dabra (0, 0, b)
jleumage J d i t uab racad abra (0, 0, r)
uuuuu u l e u m a g e ud ituabr (3 ,l ,c )
u u u u u u l e u niageudit jabrac adabr (5 ,l,d )
u u u u u u l e un>ageudit b r a c a d |abra j| (4 ,l,b )
u u u u u u l e u m a g e u d i t u abr| a c a d a b |r a L m u | (0, 0, r)
u u u u u u ileumageuditu abra cadabr aUUuu (5 ,1 ," " )

Chacun des triplets est cod en binaire en associant un nombre fixe de bits
pour chacune des valeurs. Choisir la dernire correspondance trouve au lieu
de la premire simplifie le programme. Il nest pas ncessaire de mmoriser la
correspondance prcdente. Cependant, le fait de choisir la premire correspon
dance, au prix dun accroissement de la complexit du programme, prsente un
avantage. Dans ce cas, le dcalage est plus petit. Cela peut sembler inutile car
le codage des lexmes est fait de telle sorte que la longueur de (10,3, u) et de
(5,3, u) est identique (les valeurs numriques sont crites avec une taille fixe
paramtre par la taille du tampon de recherche). Mais si on ajoute un codage
de Huffman lissue de LZ77, on attribuera aux dcalages les plus courts des
codes plus courts. Cette mthode propose par B. Herd porte le nom de LZH
et repose sur le principe suivant : si on dispose dun grand nombre de petits
dcalages, on amliore la compression en utilisant LZH.
En pratique, pour obtenir un codage efficace, N F = 2ei et F = 2ez. On a
donc besoin de e\ bits pour coder p, la position dans le dictionnaire et de e,2
bits pour coder l, la longueur de la rptition.

Exercice 2.3 Sur lexemple prcdent, que se passe-t-il avec N = 12 et F = 5 ?

Plus le mot rpt sera long, plus le codage sera efficace. Pour avoir des chances
dobtenir de longues rptitions, il est ncessaire que le dictionnaire soit de taille
suffisante (quelques milliers de caractres).
Lalgorithme effectue sa compression au fur et mesure du dplacement de la
fentre. Il nutilise que le dictionnaire compris dans le tampon de recherche et
certains facteurs vus prcdemment sont de ce fait oublis. Si la fentre est trop
grande, il faudra trop de bits pour coder le triplet de sortie et lalgorithme nef
fectuera pas une bonne compression. De plus, la recherche de motifs deviendra
de plus en plus coteuse en temps (de lordre de (N F ) x F oprations). Il faut
28 Algorithmes dynamiques

donc trouver un compromis pour obtenir une bonne compression en fonction


de tous ces paramtres. En pratique, cette mthode fonctionne assez bien pour
une taille de fentre de lordre de N < 8192 pour les raisons suivantes :

- Beaucoup de mots et de fragments de mots sont suffisamment courants pour


apparatre souvent dans une fentre. C est le cas pour : . . . sion, ... que,
de, le, la, ...m e n t, c e ...

-L e s mots rares ou techniques ont tendance tre rpts des positions


trs proches. C est par exemple le cas pour le mot compression qui figure
plus de 50 fois dans ce chapitre.

Si un caractre ou une suite de caractres sont rpts un certain nombre de


fois conscutivement, le codage peut tre trs conome parce quil autorise
la rptition chevaucher les deux tampons. Par exemple, considrons la
suite (ab)16. Les deux premiers triplets seront (0,0, a) et (0.0, b) car ces
deux caractres sont encore inconnus. Ensuite, le dbut de la rptition est
positionn sur le ab suivant. La plus longue correspondance est alors de
14 rptitions de ab, 2 caractres avant. La compression se termine par le
triplet (2 ,2 8 , ).

,ab abababababababababababababab

La d co m p re ssio n

Celle-ci est simple et rapide. A partir de la suite de triplets, le dcodage se


fait en faisant coulisser la fentre de manire analogue au codage. Le diction
naire est ainsi reconstruit de gauche droite, ce qui permet la reconstruction
de la donne de dpart.

A lg o rith m e 2.3 ___________________

1. lire un lexme
2. chercher la correspondance dans le tampon de recherche
3. crire le facteur trouv au dbut du tampon de lecture
4. crire la 3ecomposante du lexme la suite
5. dcaler le contenu des tampons de / + 1 cases vers la gauche

E x e m p le 2.4 On prsente le dcodage de la suite des triplets de lexemple


prcdent la fin des tapes 4 de lalgorithme de dcompression Lentre est :

(0,0, l ) ( 0 , 0, e)(3, l,rn)(0,0, a )(0 ,0, g )(5,2, d )(0 ,0, i ) ( 0 ,0, t ) .. .


. . . (4,1, a )(0 ,0, b )(0 ,0, r ) ( 3 ,1, c ) ( 5 ,1, d )(4 ,1, b )(0 ,0, r ) ( 5 ,1, "")
Compression de donnes 29

uuuuuu luuuu (0, 0 , 1)


uuuuul euuuu (0, 0, e)
uuuul L jI U U U (3,l,m )
uuleum ^ u u u u (0, 0, a)
I_ il6 i_ iin a guuuu (0, 0, g)
l e umag u d u u (5,2, d)
l 6fj mageud luuuu (0, 0, i)
l e um ageud i tuuuu (0, 0, t)
l e uma geud i t U & U U U (4,1, a)
l e umage u d it ua buuuu (0, 0, b)
l e umageu d i t uab ruuuu (0, 0, r)
l e umageud i t uabr 3 - C ljuu (3-1, c)
l e umageud i t uabrac 3-duuu (5 ,l,d )
1eumageud itu a bracad abuuu (4 ,l,b )
1eumageud i t uabr acadab Tuuuu (0, 0, r)
l e umageud i t uabra cadabr auuuu (5 ,1 ," " )

Faiblesses d e L Z 77

La principale faiblesse de LZ77 rside dans lhypothse que les motifs rpts
sont proches dans les donnes dentre. Les donnes qui ne satisfont pas cette
hypothse seront mal comprimes.
Un autre inconvnient est que la taille F du tampon de lecture est limite.
De ce fait, la taille de la plus longue correspondance ne peut excder F l. F ne
peut crotre beaucoup, car le temps de compression crot proportionnellement
F. Il en est de mme avec la taille du tampon de recherche.

2.6.2 LZ78

LZ78 remdie partiellement aux faiblesses de LZ77. Le dictionnaire nest


plus compos d une fentre coulissante mais est constitu de lintgralit du
texte dj trait.
De manire analogue LZ77, le texte est comprim de la gauche vers la
droite. Au dpart, lalgorithme ne connat aucun facteur (i.e. le dictionnaire est
vide ) et va mmoriser au cours du temps la totalit des facteurs rencontrs dans
le dictionnaire et leur attribuer un numro. Comme pour LZ77, cette mthode
va rechercher le plus long facteur / inscrit dans le dictionnaire qui concide avec
le prfixe p du texte restant traiter. Deux cas peuvent se produire :

- On ne trouve pas dentre au dictionnaire ; le texte restant traiter scrit


alors comme c.m avec c le caractre inconnu au dictionnaire et m le reste
du texte. L algorithme renvoie le couple (0, c) et ajoute lentre c au dic
tionnaire.

On trouve une entre / dans le dictionnaire la position i > 0 ; le texte


restant traiter scrit alors comme f.c.m avec / , le facteur trouv dans
30 Algorithmes dynamiques

le dictionnaire, c le premier caractre qui diffre et m le reste du texte.


Lalgorithme renvoie le couple (i, c) et ajoute lentre ( /c ) au dictionnaire.

A lg o rith m e d e co m p re ssio n L Z 78

A lg o rith m e 2.4 __________________________________________________________

mot* e
dictionnaire [0]< e
indice<1
rp ter
lire S, le premier caractre du texte T restant comprimer
{on retire galement S de T }
si m ot.S G dictionnaire alors
mot < mot.S
mis < faux
sin on
m e ttre (indice de mot dans le dictionnaire, S)
affecte(mot.S') lentre indice du dictionnaire
indice* indice+1
mot* e
mis* vrai
fsi
ju s q u fin des donnes comprimer
si mis = faux alors
m e ttre (indice de mot dans le dictionnaire, S)
fsi

Une implantation rapide de cet algorithme donne lieu une complexit


quadratique sur la longueur du texte comprimer. Cependant, en utilisant
des structures de donnes adquates, ce temps de calcul peut devenir linaire.
C est sur ce point prcis que de nombreuses variantes de cet algorithme ont t
proposes [64],

E x e m p le 2.5 Soit la chane aabbabababbbbabbbabb comprimer.

Dictionnaire lexme
0 n u ll
1 a (0,o )
2 ab (1 ,b)
3 b (0, 6)
4 aba (2, o)
5 ba (3 ,a)
6 bb (3,6)
7 bba (6, a)
8 bbb (6, 6)
9 abb (2, 6)
Compression de donnes 31

Au dpart, le dictionnaire ne comporte aucune entre. Le premier caractre


a est un facteur. On le code en (0, a), ce qui signifie le facteur vide suivi du mot
a et on lajoute au dictionnaire en position 1. On lit ensuite ab dont la premire
lettre correspond lentre 1 du dictionnaire suivi de la lettre b. On code donc
le facteur ab par ( 1, 6) et on ajoute ab en position 2 du dictionnaire...

A lg orith m e d e d co m p re ssio n

La dcompression est simple ; il suffit de reconstruire le dictionnaire au fur


et mesure du dcodage. Les numros de facteur seront les mmes que pour le
codage et les facteurs pourront tre interprts sans problme.

A lgorith m e 2.5 -----------------------------------------------------------------------------------------

mot* e
dictionnaire [0]< e
indice-*1
rp ter
lire suivant(ind,S') dans le texte comprim
si ind = 0 alors
m ettre(S')
dictionnaire [indice]* S
indice < indice+1
sin on
facteur* concatne(dictionnaire[ind] ,S)
m ettre(facteur)
dictionnaire [indice]* facteur
indice < indice+1
fsi
ju s q u fin du texte dcomprimer

Une proprit remarquable de cette mthode est que lalgorithme de com


pression et celui de dcompression utilisent le mme dictionnaire sans que celui-
ci ne soit transmis. U est entirement reconstruit au cours de la dcompression.

Exem ple 2.6 Soit la donne (0, a )(l, 6)(0, b)(2, a)(3, a)(3, b)(6, a) (6,b)(2,b)
dcomprimer. Elle donne lieu la suite d missions suivante :

a ab b aba ba bb bba bbb abb


32 Limites de la compression

et. reconstruit le dictionnaire obtenu prcdemment

Dictionnaire lexme
0 n u ll
1 a (0,a)
2 ab ( 1. 6)
3 b (0, 6)
4 aba (2 ,a)
5 ba (3, a)
6 bb (3,6)
7 bba (6, a)
8 bbb (6, 6)
9 abb (2, 6)

L Z 78 en pra tiq u e

En pratique, LZ78 ne travaille pas, comme ci-dessus, sur un dictionnaire de


taille arbitraire. Celle-ci est borne et lorsque le dictionnaire est compltement
rempli, celui-ci est effac et la compression continue avec un nouveau diction
naire. La compression sera moins bonne mais cette mthode peut tre employe,
mme si le dictionnaire nest pas de taille suffisante pour contenir lensemble
des facteurs du texte. LZ78 a donn lieu un grand nombre de variantes. Deux
des plus utilises sont LZW propose par T. Welch [94] pour les contrleurs de
disque dur ainsi que LZC qui est utilise dans lutilitaire compress d'UNIX.

2.7 Limites de la compression

Il existe des donnes qui ne peuvent tre comprimes. Pour nous en


convaincre, il suffit de faire un peu de combinatoire sur les mots binaires. Pour
tout entier n, il existe 2n mots binaires diffrents de longueur n mais seulement
E7=o 2* = 2" 1 descriptions plus courtes (mots comprims de longueur stric
tement infrieure n). Pour tout n, il existe donc au moins un mot binaire de
longueur n qui ne peut tre comprim. C est le cas des suites finies (vraiment)
alatoires [66]. En effet, intuitivement, on ne peut trouver de rgularit dans
une suite alatoire. C est ce quatteste la complexit de Kolmogorov [57].
Pour terminer, nous allons voir comment construire lalgorithme de com
pression le plus performant du march [26]. On suppose disposer de mille algo
rithmes de compression : C i, C2 , - , C \000 et des algorithmes de dcompression
correspondants D x, D ? , . . . , D 1000 On peut alors construire un algorithme de
compression capable de comprimer toute suite de symbole aussi bien, f bits
prs, que le meilleur des mille algorithmes de compression.
En effet, pour comprimer la donne B , on commence par en effectuer la
compression avec chacun des 1000 algorithmes de compression que nous avons
notre disposition. On mmorise k , le numro de lalgorithme de compression
qui nous a fourni le meilleur rsultat. Il suffit alors de proposer comme donne
Compression de donnes 33

comprime la suite C' compose du codage en binaire de k suivi du rsultat de


lalgorithme de compression Ck appliqu B. Le codage binaire de k ncessite
10 bits = |k>g2(1000)J + 1.
L algorithme de dcompression effectue le travail inverse. Il commence par
dcoder k, le nombre binaire port sur les 10 premiers bits de C' puis applique
Dk sur la donne de C' priv de ses 10 premiers bits.
On peut gnraliser cette remarque un nombre N quelconque. Dans ce
cas, lalgorithme de compression quon construit sera aussi efficace que les N
algorithmes de compression [log2(lV)J + 1 bits prs. Il faut cependant remar
quer que le temps de fonctionnement de notre algorithme correspond aux temps
cumuls des N algorithmes de compression que nous avons notre disposition.

2.8 Observations

Pour une introduction aux techniques de la compression et ses utilisations


pour le chiffrement, le lecteur pourra se reporter louvrage [69] et pour plus
de dtails un livre de rfrence comme celui de Salomon [82] qui prsente la
plupart des algorithmes de compression, tant avec pertes que sans perte.
T r o is i m e p a r t ie

Codes correcteurs derreurs


C h a p it r e 3

Gnralits sur la thorie des


codes

La thorie des codes, qui date du milieu du X X e sicle, permet de trans


mettre un message au travers d un canal bruit, comme un rseau hertzien, un
cble tlphonique ou ethernet, voire une liaison satellite.
A lorigine, il sagit dun rsultat existentiel. En effet, le second thorme
de Shannon (nonc dans le chapitre 1) dit qu*/ existe de bons codes. Il a fallu
attendre quelques annes aprs ce rsultat avant de voir apparatre les premiers
codes.

Dans cette partie, nous commencerons par noncer quelques gnralits sur
la thorie des codes puis nous prsenterons les codes linaires (chapitre 4) et
quelques exemples de tels codes : les codes de Hamming (chapitre 5), le code
de Golay (chapitre 6) et les codes de Reed-Muller (chapitre 7).

Nous prsenterons ensuite les principes des codes cycliques (chapitre 8)


avant de modifier le problme du dcodage pour prsenter les codes correcteurs
de paquets derreurs qui sont trs utiliss dans le mcanisme de correction des
disques compacts (chapitre 9).

Dans le chapitre 10, nous introduirons les codes convolutifs sans lesquels il
aurait t trs difficile de concevoir les tlphones cellulaires.

Nous terminerons cette partie par la prsentation de quelques applications


des codes pour la correction des erreurs des disques compacts, la dtection
derreurs de transmission dans les rseaux ethernet, la correction des signaux
GSM et de certaines transmissions satellites.

3.1 Distance de Hamming et boules

Rappelons tout d abord les caractristiques dune distance d entre x et y :

d ( x ,y ) > 0; d(x, y) = 0 x = y;
d(x, y) = d(y, x); d(x, y) < d(x, z) + d(z, y)
38 Distance de Hamming et boules

Soit B 0 , un ensemble fini de lettres appel alphabet. On dfinit la distance


de Hamming d sur les lettres de B par :

pour x ,y G B. Soit n G N et B n = { x = ( a q , X2 , -, x n) : 1 < i < n, aq G B },


lensemble des mots n lettres. On dfinit d # la distance de Hamming sur les
mots n lettres comme :
n

i= 1
pour x, y G B n.

E x e rcice 3.1 Montrer que la distance de Hamming est bien une distance.

C o rrig Le seul point dlicat est de vrifier lingalit triangulaire. Sans perte
de gnralit, on vrifie que d h (0 , x ) < d n (0 ,y) + d,jj(x, y) avec 0 le mot 0n,
x = l e0n-e et y = 0al 60cl d avec a + b = e ,c + d n e. Alors d # (0, x) = e,
d i( 0, y) = b + d et d n (x, y) = a + d. On a donc e = a + b < b + d + a + d.

Si d.rr(x, y) = e, les mots x et y de; B n diffrent en exactement e positions.


On dfinit ensuite le poids d un mot x G B r\ not w(.x) comme la distance
de x au mot 0 = ( 0 , 0 , . .. , 0), i.e. w(.x) = d # (0, x). A partir de la distance de
Hamming sur les mots, il est possible de dfinir la boule de centre x et de rayon
e note B e (x) par :
B e(x) = { z : z G B n, d n (x , z) < e }
pour e G N, a; G B n. Le lemme 3.1 compte le nombre d lments des boules.

L em m e 3.1 Soit \B\ = q et x G B n, alors pour 0 < e < n, \Be(x)\ =

P re u v e Les mots de la boule ne diffrent que sur e positions ; on compte le


nombre de possibilits quon a si :

on fixe 0 position, on a un seul mot possible, x lui-mme ;

- o n fixe 1 position, on a n positions possibles, (q 1) choix par position;


n.(q 1) mots ;

on fixe 2 positions, on a Q ) positions possibles, (q l )2 choix par position;


( 2) -te - b 2 m ots;

- o n fixe e positions, on a (") positions possibles, (q l ) e choix par position;


( e ) - ( d - l ) e mots;

Soit, en sommant, X^i=o (i)( -*-)* ^


Gnralits sur la thorie des codes 39

3.2 Problme du codage longueur fixe

Coder un caractre x dun alphabet fini A revient le transformer en un


mot de n lettres y sur lalphabet fini B. En d autres termes, on lui ajoute de
la redondance afin de pouvoir le transmettre au travers d un canal de commu
nication bruit. Ainsi, une application injective c : A > B n est appele A B
code et les images des lettres de A par c sont appeles les mots du code. On
peut aussi considrer lensemble de toutes les images pour construire le code
C = {y E B n : y = c (x ),x E A } et lensemble des mots du code est alors
un sous-ensemble de tous les mots possibles sur B " : C B n. On tend alors
inductivement lapplication c aux mots sur A par : c* : A* B * -o X * dnote
lensemble de tous les mots quon peut former sur lalphabet X -. c* est dfinie
comme suit :
c*(e) = e c*(xm ) = c(x)c*(m )

o e dnote le mot vide, x une lettre sur A et m un mot sur lalphabet A.


Afin de pouvoir corriger le mot reu si celui-ci a eu e caractres altrs, on
requiert que les mots du code soient deux deux loigns. On traduit cela en
termes de proprit sur la distance sparant deux mots du code.

D finition 3.2 Un code C de longueur n sur lalphabet B vrifie la condition


de dcodage d ordre e si Va;7 E B n, il existe au plus un mot x E C tel que
dtf(x, x') < e. Cette condition est quivalente ce que les boules fermes (pour
la distance de Hamming) de rayon e et centres sur les mots du code C soient
deux deux disjointes.

On peut alors dfinir quelle condition un code peut dtecter ou corriger e


erreurs :

(1) on dit quun code C B n dtecte jusqu e erreurs si V.r, y E C, x ^ y =>


d n (x ,y ) > 2e ;(1)

(2) on dit quun code C B n corrige jusqu e erreurs si Va:, y E C, x ^ y =>


dH (x,y) > 2e + 1.

Exem ple 3.1 Soient A = {a:,y } et B = {0 ,1 }, n = 3 et e = 1. On dfinit le


code C comme :
f x h-y 000
( y i> 101

Les boules centres sur x et y sont alors :

B\ (x) = {000,100,010,001}
B i(y )= {101,001,111,100}

^ O n pourrait galement considrer y ) > e f 1 mais, en ce cas, on ne saurait dire


combien derreurs il y a eu.
40 Problme du codage longueur fixe

Les deux boules ne sont pas disjointes car B\(x) n By (y) = {100,001}. Si on
reoit les messages 100 ou 001, on ne peut savoir si le message mis tait x ou
bien y. En revanche, on peut affirmer quil y a eu une erreur de transmission.
C est un code dtectant une erreur.

On peut interprter graphiquement le point (ii) de la dfinition (fig. 3.1) : en


effet, si le point (ii) est vrifi, les boules de rayon e centres sur les mots de
C sont disjointes : soient x et x' deux mots d un code C vrifiant le point (ii).

Fig. 3.1 Illustration de la proprit (ii).

Supposons quun lment y G B n soit la fois dans Be(x) et dans B e(x'). Alors,
par lingalit triangulaire, on aurait dH {x,x') < d n (x ,y ) + d jj{y ,x ') < 2e
contradictoire avec lhypothse Mx,x' G C, x: 7^ x: => d ji(x ,x ') > 2e + 1 du
point (ii).

E x e m p le 3.2 Soient A = {x , y , z } et B (0 ,1 }, n = 5 et e = 1. On dfinit le


code C comme :

{
x 1 * 01110
y 1>10101
zh * 11011

Les boules centres sur x, y et z sont alors :

B 1(x ) = {01110,11110,00110,01010,01100,01111}
Bi (y) = { 10101, 00101, 11101, 10001, 10111, 10100}
B i{z) = {11011,01011,10011,11111,11001,11010}

et sont deux deux disjointes.


C vrifie la condition de dcodage d ordre 1. Un mot reu dans lequel sest
introduit une seule erreur ne peut provenir que d un unique mot du code. Par
exemple, si on reoit 11101 en supposant quil ny ait quune seule erreur, ce
mot reu peut tre dcod en y = 10101. C est un code corrigeant une erreur.

On dfinit ensuite quelques notions utiles sur les codes. On appelle distance
minimale dun code C la quantit :
dH(C) = mm {dH(x, y) : x ,y e C ,x ^ y }
Gnralits sur la thorie des codes 41

et poids minimal d un code la quantit :

w(C) = min{w(a;) : i C, i / 0 }

E x em p le 3.3 Pour le code de lexemple prcdent, on a :

dH(x ,y ) = dn (01110,10101) = 4
dH(x, z) = dH(01110,11011) = 3
dH(y, z) = (10101,11011) = 3

La distance minimale de C est du (C ) = 3 et son poids minimal est w (C ) = 3.

La proposition suivante due Hamming nous donne une borne sur le nombre
de mots du code.

P ro p o s itio n 3.3 Soit |B\ = 2, n. e G N et C Q B n un code qui corrige jusqu


e erreurs. Alors,
on
ic i -
0 \i)

Preuve D aprs la preuve du lemme 3.1 applique au cas binaire, le nombre


dlments de chaque boule \Be{c)\ = Xa=o (?) On a donc autant de mots z
qui diffrent de c sur au plus e bits. Comme C corrige jusqu e erreurs, les
boules sont deux deux disjointes et on obtient :

< \Bn\= 2n
ceC

Do le rsultat. 0
La notion de rayon de recouvrement permet de mesurer quel point un mot
reu z peut diffrer d un mot du code c 6 C . Le rayon de recouvrement p(C)
est dfini par :

p(C ) = m ax{m in{dff(z, c) : c G C }, z G B 7'}

Le rayon de recouvrement est le plus petit p pour lequel les boules B p(c) pour
c C recouvrent lensemble B n en entier. Soit t le plus grand entier tel que
les boules Bt(c) pour c G C* soient disjointes. Si p = t, on dit que le code
est parfait. En dautres termes, on dit aussi quun code C Q B n de distance
minimale h(C) = 2e + 1 est parfait si tout mot x de B n est distance < e
dexactement un mot c du code.
On obtient alors la condition dite dJempilement de sphres : si C B 71 est
un code parfait corrigeant e erreurs, alors pour |/i| = q,

i0 ' '

qui est obtenue immdiatement partir du lemme et de la proposition avec,


dans ce cas, galit.
42 Problme du dcodage

3.3 Problme du dcodage

On cherche maintenant dtecter et corriger des erreurs.

3.3.1 Dtection

On suppose avoir reu un message qui nest pas un mot du code. Il est clair
quil y a eu une erreur au cours de la transmission et nous avons dtect la
prsence dune (ou de plusieurs) erreur. Si aucune erreur n a t dtecte, on
a soit reu un mot du code, soit reu un mot qui comportait trop d erreurs et,
dans ce dernier cas, le code ntait pas adapt la capacit du canal.

3.3.2 Correction

Le concept de correction est plus subtil. Quand on corrige un manuscrit,


on est tent de corriger cae en car plutt quen val. On a suppos que le mot
corriger doit tre le plus proche possible d un mot correct (ici, un mot du
code). Nous illustrons ceci sur quelques exemples.

E x em p le 3.4 Soit Ci = {00,01 ,10 ,1 1). Chaque mot reu est un mot du code.
Ci ne peut donc servir dtecter des erreurs. Ci ne corrige pas derreurs non
plus.

E x e m p le 3.5 On modifie Ci en rptant trois fois chaque mot du code :

C2 = { 000000,010101,101010,111111}

Ce code sappelle code rptition. Supposons avoir reu 110101. Il ne sagit


pas dun mot du code et on peut affirmer quau moins une erreur est apparue.
En ne changeant quun seul bit, on peut former le mot du code 010101 mais on
peut galement obtenir dautres mots du code en changeant plus dun bit. On
suppose donc que le mot du code correct est 010101 et on corrige donc 110101
en 010101.

E x e m p le 3.6 On modifie C i, le code de lexemple prcdent, en ajoutant un


troisime bit chaque mot de faon ce que le nombre de 1 des mots soit pair :

C3 = { 000, 011, 101, 110}

Le bit ajout sappelle bit de parit. Supposons avoir reu le message 010.
Comme 010 nest pas un mot du code, on est certain quil y a eu une erreur de
transmission. Le message peut tre dcod en 110, 000 ou 011 en ne changeant
quun seul bit du message. Dans les chapitres suivants, nous allons distinguer
la manire de traiter les mots reus les plus proches d un seul mot du code.

E x e rcice 3.2 Quelle est la valeur minimale de n pour avoir deux boules dis
jointes de rayon 2 et des mots de { 0, 1} " ?
Gnralits sur la thorie des codes 43

C orrig On cherche un code C B n tel que \C\ = 2 et pour x , y C,


B2{ x ) r B 2{y) = 0 -
Par la proposition de Hamming, on obtient :

2< t ( ) S 2" '

Le plus petit entier n qui vrifie cette ingalit est 5 et le code C =


{ 00000, 11111} convient.
C h a p it r e 4

Codes linaires

Dans la suite, on supposera connus quelques rsultats dalgbre et dalgbre


linaire de premier cycle universitaire dont on peut trouver un rappel succinct
dans la section 4.1 ou une prsentation plus approfondie dans [61, 62, 63].

4.1 Prambule mathmatique

On dit que E est un espace vectoriel sur un corps K si et seulement si, pour
des lments u, v et w de E, on a :

1. (u + v) + w = u + (v + w) 5. Vc K , c{u + v) = c u + c - v
2. 30 : u + 0 = 0 + u= u 6. Va, b G K , (a + b)u = a - u + b - v
3. Vm 3 (u) : u u= 0 7. Va, b G TV, (a b)u = a (b u)
4. u+ v = v + u 8. 1 u = u

Soit E un espace vectoriel sur un corps K . F ^ 0 est un sous-espace vectoriel


de E si et seulement si :

f x + y& F \/x,y G F
\ XxGF VA G TV, Va; G F

Si A est un sous-ensemble de E, alors le sous-espace engendr par A est


lensemble de toutes les combinaisons linaires d lments de A.

Une famille gnratrice de E est un sous-ensemble G tel que le sous-


espace engendr par G est E. Ou, de manire quivalente, que tout vecteur de
E est une combinaison linaire dlments de G. E est dit de dimension finie
sil contient une famille gnratrice finie.

Une famille libre de E est un sous-ensemble L . E tel quaucun lment


v G L nest une combinaison linaire d autres lments de L. Ou, de manire
quivalente, la seule combinaison linaire d lments de L qui est nulle est celle
dont tous les coefficients sont nuls.

Une base de E est une famille d lments de E qui est libre et gnratrice.
Si (bi)ie i est une base de E, alors : Va; G F 3!(A)*/ G K : x =
46 Dfinitions

Si la dimension de E est finie alors chaque base de E est finie (son ensemble
sous-jacent est de cardinal fini) et toutes les bases ont le mme nombre d l
ments. Ce nombre est la dimension de lespace. Si la dimension de E est n,
alors :

- S i (ffi) est une famille gnratrice de E alors |/| > n. Sil y a galit, alors
est une base.

Si (h)isi est une famille libre de E alors |/| < n. Sil y a galit, alors (h)ii
est une base.

- S i E = K n, alors la famille (ei)ie/ avec I = {1 ,2 , . . . , n } et =


( 0 , 0 , . . ., 1 , 0 , . .. , 0) avec 1 la ie position est la base canonique de K n.

Soient E et V deux espaces vectoriels sur un corps K . Une application


linaire f de E dans V vrifie :

Vx G E, My G E f ( x + y) = f ( x ) + f ( y )
VA e K, V G E / ( X.x) = A f { x )

4.2 Dfinitions

Un code linaire C de longueur n sur un alphabet 2 lettres quon identifie


Z 2 = {0 ,1 } est un sous-espace linaire de lespace vectoriel (Z-j) . Autrement
dit, C vrifie' ' :

Vu, v e C, u + vGC (4.1)


V u e C , \ / a e Z 2, a u GC (4.2)

Si C a pour dimension k (au sens des espaces vectoriels), C est appel (n, k)-
code linaire et, si sa distance minimale est d. C sera appel un (n. k, d)-code
linaire.

D fin itio n 4.1 On dfinit le taux d information du code C de longueur n


comme le rapport R = A log(|C|) = h/n.

Le code C peut tre dfini au moyen dune matrice G k k lignes et n co


lonnes appele matrice gnratrice dont les lignes forment une base de C. Soient
{ v i , v 2, , Vk} les vecteurs lignes de G. Tout lment x de C peut tre exprim
comme une unique combinaison linaire de ces lignes, i.e. x = Yli= 1 ai ' vi Pour
des ai GZ2. G estune application linaire de >(Z^) quiassocie
tout mot delongueur k sur lalphabet Z2, i.e. un vecteur de(Zf ) k, un mot de

^ La condition (2) nest en fait utile que pour des codes sur un alphabet autre que lalphabet
binaire.
Codes linaires 47

longueur n sur Z 2, i.e. un vecteur de (Z2)" . On ajoute de cette manire n k


symboles de redondance aux mots binaires k lettres.
A partir des vecteurs de (Za)^ et de la matrice G, on peut numrer les
lments de G :
G = {a G : a G (Z2) fe}

E xem ple 4.1 Soit G = ( ? o o ) 'a matrice gnratrice d un code C. Les mots
du code sont :
'011'
10 0 ;
00 000
01 100
10 0 11
11 111

Le code de dimension 2, possde 4 mots {000,100,011,111}. Il est de distance


minimale 1 et son taux dinformation est | log2(4) = |

On dira que la matrice gnratrice G est sous forme normale si G est de la


forme (Idk P ) :

/I 0 0 0 Pl, 1 Pl,2 Pl.n-k^


0 1 0 ... 0 P2 1 P2,2 P2ink
G =

lo 0 0 ... 1 Pk, 1 Pk,2 Pk,nkJ

o Idk reprsente la matrice identit d ordre k. Dans ce cas, les k premiers


symboles d un mot de G sont appels les symboles dinformation et les n k
autres les symboles de redondance.
On dit que deux (n, /;:)-codes G et G' sont quivalents si G' peut tre obtenu
partir de G en appliquant une permutation donne aux lettres de tous les mots
de G.
Le thorme suivant, dmontr dans [46], nous donne les rgles permettant
de mettre sous forme normale une matrice gnratrice.

Thorm e 4.2 Deux k x n matrices G et G' engendrent des (n, k)-codes li


naires quivalents si on peut obtenir G partir G' par une suite d oprations
choisir parmi :

- -permutation des lignes ;

addition de deux lignes ;

- permutation des colonnes .

Exemple 4.2 Le code de lexemple prcdent admet comme matrice gnra


trice sous forme normale G = ( 0 1 0 ) obtenu en changeant les deux premires
colonnes.
48 Dfinitions

Une caractristique importante des codes est leur distance minimale. Elle
est particulirement facile calculer pour les codes linaires.

T h o r m e 4.3 La distance minimale d un code linaire est gale son poids


minimal.

En effet, d n ( x , y ) = du( x - y, 0) = w(a; - y). Si x, y G C, alors par linarit


du code (quation 4.1) x y G C.

^ . m / l OOOl l v
E x e rcice 4.1 Soit G ( o i o i o i )
'0 0 1 1 1 0 ''

(1) Quels sont les mots du code?

(2) Quelle est la dimension du code ?

(3) Quelle est sa distance minimale ?

(4) Quels sont les paramtres de ce code ?

(5) Quel est son taux dinformation ?

(6) Combien corrige-t-il derreurs ?

(7) Vrifier la proposition de Hamming pour ce code.

C orrig

(1)

(2) C est de dimension 3.

(3) dH(C) = 3.

(4) C est un (6, 3 , 3)-code linaire.

(5) son taux dinformation est | = i .

(6 ) il corrige jusqu une erreur.


Codes linaires 49

4.3 Dcodage par les classes latrales

Dans la suite, C dsignera toujours un (n, fc)-code linaire sur Z 2, i.e. un


sous-espace de (Z 2 ) .
Supposons que le mot du code x = x 1.7;2 . . . x n est mis au travers d un
canal bruit et que le mot reu est y = y\y2 yn- On dfinit alors le vecteur
derreur e comme e = y x = e \ e i. . en.
Etant donn y , le dcodeur doit dcider quel mot du code x a t transmis,
ou de manire quivalente, quel est le vecteur d erreur. Les codes linaires four
nissent une solution lgante au problme du dcodage au plus proche voisin -
i.e. de manire minimiser le poids de lerreur- , au moyen des classes latrales.

Pour un code C et un vecteur u G (Z 2)1', on appelle classe latrale de C


lensemble u + C dfini par :

u + C = {u + x : x G C }

Le lemme 4.4 nous donne une premire proprit des classes latrales :

Lemme 4.4 Soit u + C une classe latrale de C . Si v G u + C, alors v + C =


u + C.

Preuve Comme v G u + C on a, pour un certain x G C , v = u + x. Soit


v + y G v + C pour y G C. v + y scrit :

v + y = ( u + x ) + y = u + (x + y) G u +C =>v + C u + C

Soit u + z G u + C pour z G C, alors

u + z = (y x) + z = v + {z x) G v + C => u+ C Ci v + C

Donc, u + C = v + C.

Le thorme 4.5 affirme que les classes latrales permettent de partitionner


lensemble de tous les mots possibles sans qu'il y ait de recouvrement entre les
classes.

Thorm e 4.5 Soit C un (n.k)-code linaire sur Z 2, alors

(1)tout vecteur de (Z 2)" est dans une classe latrale de C ;

(2) chaque classe latrale contient exactement 2k vecteurs;

(S) tant donn deux classes latrales, elles sont soit disjointes soit identiques.
50 Dcodage par les classes latrales

P reu v e

(1) Si a G (^ 2)" , alors a + 0 G a + C.

(2) On considre lapplication de C >a + C dfinie par x >


a + x pour a G (Z 2) .
Pour tout mot x de C, lapplication est bijective, donc \a + C\ = \C\ = 2k.

(3) Supposons que a+C(~\b+C ^ 0 . Alors, il existe v G (Z 2) tel que a+CTlfe+C


contienne llment v. Pour x et y lments de C, v = a + x = b + y ce qui
implique que b = a + (x y) G a + C et, par le lemme, b + C = a + C.

On partitionne alors (Z 2) en (0 + C )U (u i+ C )U .. .U(us+ C ) o s = 2 "_fe 1


et o les 0, U\, . . . , us sont des lments de poids minimal appels chefs de classe.
O11peut alors construire le tableau standard de C qui est une matrice 2n~k
lignes et 2k colonnes. Il contient tous les vecteurs de (Z 2)". Sa premire ligne
correspond aux mots de C avec le vecteur 0 gauche ; les autres lignes repr
sentent les classes latrales U i+C avec leur chef de classe gauche. Lalgorithme
suivant permet de construire le tableau standard :

(1) on numre les mots de C en commenant par 0 sur la premire ligne ;

(2) on choisit un vecteur ui de poids minimal qui napparat pas dans la pre
mire ligne et on numre sur la deuxime ligne les lments U\ + C en
inscrivant au-dessous de 0 le chef de classe U\ et au-dessous de chaque l
ment x C llment U\ + x ;

(3) on choisit un vecteur U2 de poids minimal qui napparat pas dans les pre
mires lignes et on numre sur la troisime ligne les lments U2 + C en
inscrivant au-dessous de 0 le chef de classe U2 et au-dessous de chaque l
ment x C llment U2 + x ;

(4) on itre ce procd jusqu ce que toutes les classes latrales soient listes
et que tout vecteur de (Z 2)" napparaisse quune seule fois.

Le dcodeur va utiliser le tableau standard de la faon suivante : lorsque le


mot y est reu, on recherche sa position dans le tableau standard. Le dcodeur
dcide alors que le vecteur derreur e correspond au chef de classe qui est situ
dans la premire colonne de la mme ligne et peut dcoder y comme x = y e
en choisissant le mot du code de la premire ligne sur la mme colonne que y.
Les vecteurs derreurs qui pourront tre corrigs sont prcisment les chefs
de classe, quel que soit le mot du code transmis. En choisissant des vecteurs
derreur de poids minimal en tant que chefs de classe, le tableau standard assure
un dcodage au plus proche voisin.
Observons cependant que ce procd de dcodage est trop lent pour de
grands codes et trop coteux en termes de mmoire. En effet, si le nombre
Codes linaires 51

dlments du tableau est 2 n~k,2 k = 2 et comme la recherche dun lment


dans un tableau de taille N est O (N ), la complexit de cet algorithme est
0 (2 ). Lalgorithme est exponentiel, ce qui est impropre au dcodage. Il faut
de surcrot mmoriser la totalit de la table, ce qui implique un cot mmoire
galement exponentiel.
Nous montrerons ci-dessous quil existe un autre moyen moins inefficace
de dcoder mais nous illustrons tout d abord les diffrentes notions prsentes
ci-dessus au moyen dun exemple simple.

4.4 Exemple de dcodage par le tableau standard

On cherche transmettre des messages a de longueur 2 sur lalphabet {0 ,1 }


au moyen du (4, 2)-code linaire dfini par la matrice gnratrice G suivante :

- ( i )

On observe que G nest pas sous forme standard. On transforme alors G en


ajoutant la ligne 1 la ligne 2 et on obtient la matrice gnratrice G' dun code
quivalent qui est sous forme standard :

r , _ ( l 0 1 A
^0 I 0 )

Lensemble des messages non cods correspond aux diffrents couples pos
sibles sur {0, 1} qui sont :

A = { ( 0 ,0 ) . (0.1), (1,0), (1 ,1 )}

On peut alors numrer les diffrents mots du code C en effectuant le produit


gauche des lments a G A par la matrice G' :

(1 0 1 A
mots de A poids
^0 1 0 l j
(0, 0) (0 0 0 o)
(0, 1) (0 1 0 1) 2
( 1, 0) (i 0 1 i) 3
(1, 1) (1 1 1 o y 3
mots du code

Le code C est donc compos des mots :

C = { 0000, 0101, 1011, 1110}

Le poids minimal des mots de C nous donne la distance minimale du code


qui est 2. Le code C est donc un (4,2, 2)-code linaire.
52 Exemple de dcodage par le tableau standard

Si on veut transmettre le message (1,0), il suffit d effectuer le produit

( (l 'o 0 = AS AJJ
symboles bits de
dinformation redondance

Afin de corriger une erreur, le dcodeur construit le tableau standard sui


vant :
0000 0101 1011 1110 < mots de C
1000 1101 0011 0110
0100 0001 1111 1010
0010 0111 1001 1100
r
chef de
classe
obtenu laide des classes latrales :

0000 + C = C lui-mme
1000+ C = {1000,1101,0011,0110}
0100 I- C = { 0100, 0001. 1111, 1010}
0010 + C = { 0010, 0111, 1001, 1100}

Observons que la classe latrale 0001 + C est identique la classe latrale


0100 + C puisque 0001 G 0100 + C.
Si on suppose avoir reu le message 1111. on vrifie facilement que ce nest
pas un mot du code. Pour trouver de quel mot du code il provient, on cherche
sa position dans le tableau standard et on lit le mot du code qui est dans la
mme colonne sur la premire ligne. Le vecteur derreur se lit sur la mme
ligne dans la premire colonne. Ainsi, le message transmis tait 1011 avec 0100
comme vecteur derreur.

R e m a rq u e 4.6 Le code de cet exemple peut corriger une erreur si celle-ci se


rencontre sur une des trois premires positions du mot mais pas dans la qua
trime. Par exemple, le message 01 est cod en 0101 et altr en 0001. On le
dcode convenablement. En revanche, le mme message altr sur sa dernire
position donne 0100 qui est dcod improprement en 00 On retrouve ainsi le
fait que, comme d u [C ) = 2, C nest pas un code correcteur, mais seulement
dtecteur dune erreur.

E x e rcice 4.2 Soit G la matrice gnratrice du (6,3) code linaire dfinie par :

/ 0 1
G = Id3 1 0 1
\ 1 1 0

(1) Donner les classes latrales.


Codes linaires 53

(2) Dcoder 110011.

(3) Quel est le poids minimum du code ?

(4) Combien corrige-t-il d erreurs ?

C orrig Les mots du code sont

{ 000000, 001110, 010101, 011011, 100011, 101101, 110110, 111000}

(1)
000000 001110 010101 011011 100011 101101 110110 111000
100000
010000 110011
001000
000100
000010
000001
100100

Le chef de classe de poids 2 ne peut tre pris au hasard. On ne peut prendre


110000 car il contient 001000. On ne peut prendre 001100 car 001100 est dans
000010 + C et on ne peut prendre 000011 car 000011 est dans 100000 + C.

(2) 110011=100011 -f 010000 d aprs le tableau qui correspond au message 110.

(3)w (C ) = djq{C) = 3.

(4) C corrige une erreur.

4.5 Codes duaux

Les codes duaux vont jouer un rle important dans le dcodage d un mes
sage. On dfinit le code dual de C not C par

C = { y e ( Z 2 )n : V x e C , ( x , y ) = 0 }

o {x, y) = r L , Xiyi est le produit scalaire de x par y.


Le code dual C est un (n, n k)-code linaire. Si C et C 1 sont quivalents,
le code C sera dit autodual.
Si G = (Idk P ) est une matrice gnratrice sous forme normale de C, on
en dduit une matrice gnratrice H du code dual C L appele aussi matrice de
contrle par :
H = (*P

o tP dnote la transpose de la matrice P.


54 Codes duaux

E x e rcice 4.3 Montrer que la matrice de contrle du code engendr par la ma


trice gnratrice G = ( o ) est lf( matrice gnratrice du code de rptition
de longueur 3.

C o rrig Par application de la mthode prcdente, on trouve H = ( n i )


qui est prcisment la matrice gnratrice du code de rptition de longueur 3.

E x e m p le 4.3 Soit C le (5,2)-code linaire dfini par la matrice gnratrice


G = ( o i o ] i ) Celui-ci peut corriger une erreur et, dans certains cas, dtecter
la prsence de deux erreurs. On observe aisment ce phnomne sur le tableau
standard :

' 00000 10110 01011 11101


10000
01000 11110
w (chefs) < e <
00100
00010
00001
11000 01110 10011
w (chefs) > e <
10001

Ainsi, le mot 11110 peut tre dcod avec succs mais le mot 10011, qui a subi
deux erreurs, ne peut tre dcod convenablement et on demande la rediffusion
du message.

La matrice gnratrice du code dual est H ( i o i o ) . L e code dual est


'0 10 0 1''
un (5 ,3)-code linaire.

Tout motde C a unproduitscalaire nul avec chaque colonne de H puisque


G 1 H = [0],o [0] dnote la k x (n k) matrice nulle. En dautrestermes,

x e C t t x tH = 0

En effet, les lignes de G sont les mots du code. Rciproquement, notons


rx, . . . ,r n- k les lignes de II ; pour tout i, (x ,n ) = 0. Pour y 6 C , on a
y = E =ife^ => (x >v) = M x ,g ) = o.
On exprime ainsi que tout mot du code doit satisfaire n k quations
linaires. Si y est un mot du code C L, lquation (x, y) = 0 est vrifie pour
tout mot x C. Elle est appele quation du test de parit.

On vrifie quun mot reu y na pas t altr au cours de la transmission au


moyen de son syndrome not S (y) = y 1 H. En effet, puisque x C <t=> x l H = 0,
le syndrome de x est nul.

E x e rcice 4.4 Calculer les syndromes du code de lexercice 4.2.


Codes linaires 55

C orrig La matrice de contrle de G est H = ( 1 0 1 0 1 0 )


V1 1 0 0 0 1 '

(000000) = (0 0 0 )
(100000) = (011)
(010000) = (101)
( 001000) = ( 110)
(000100) = (100)
(000010) = (010)
( 000001 ) = (001 )
( 100100) = (111)

Observons que le calcul du syndrome (110000) = (110) est le mme que pour
(001000) = ( 110).
On constate galement que la matrice de contrle engendre un code qui est
quivalent au code C. C est donc un code autodual.

On vrifie alors que deux vecteurs x et y de (Z 2) " sont dans la mme classe
latrale si et seulement si ils possdent le mme syndrome :

x lH = y1 H x y e C

On en dduit alors un algorithme de dcodage que nous dcrivons ci-dessous.

4.6 Dcodage par le syndrome

Soit H la matrice de contrle d un (n, fc)-code linaire C. Puisque deux


vecteurs u et u sont dans une mme classe latrale si et seulement si ils possdent
le mme syndrome, on peut affirmer quil y a une bijection entre les syndromes
et les classes latrales.
En utilisant ce fait, on obtient un procd de dcodage plus simple. Au pra
lable, 011 calcule le syndrome (e) pour chaque chef de classe e et on construit
une table des syndromes en associant chaque syndrome 2 le chef de classe
dont il est issu f ( z ) .
On obtient alors l'algorithme de dcodage suivant : lorsquun vecteur y est
reu, on effectue les oprations suivantes :

(1) on calcule 2 = S (y) ;

(2) on dcode y comme y f ( z ) au moyen de la table des syndromes.

On obtient alors le mot du code x tel que y = x + f ( z ) .


La complexit du dcodage par la table des syndromes est celle du produit
matrice vecteur qui est en 0 (nk) plus la recherche dans une table comportant
2n~fc lments, i.e. en 0 ( 2 n~k).
56 Exemple de dcodage par la table des syndromes

4.7 Exemple de dcodage par la table des syndromes

On reprend la matrice gnratrice G' = ( o ? o i ) c'n (4,2)-code linaire


prsent dans la section 4.4 et on calcule la matrice de contrle H = ( i i o i )
On calcule ensuite les syndromes 5(e) des chefs de classe e par e 1 H = H le :

5(0000) = 00 5(1000) = 11 5(0100) = 01 5(0010) = 10

On construit la table des syndromes :

syndrome z chef de classe f ( z )


00 0000
11 1000
01 0100
10 0010

Si on suppose avoir reu le message y = 1111, on calcule le syndrome

/1 \
1 0 1 0 1
S(y) = (o i)
L 1 0 1 1
W
On en dduit que le mot du code est y /(0 1 ) 1111 0100 = 1011 et que le
vecteur d erreur tait, (0 1 0 0).

E x e rcice 4.5 Construire la table des syndromes du code engendr par la ma


trice gnratrice
( 1 1 1\
Ida 1 1 0
G =
1 0 1
\ 0 1 1)
Utiliser la table des syndromes pour dcoder et corriger les messages
0000011,1111111,1100110.1010101.

4.8 Quelques proprits des codes linaires

Dans ce paragraphe, nous prsentons quelques proprits qui permettent


soit de calculer la distance minimale soit de lapprocher.

4.8.1 Proprit des poids et des distances

Si C est un code linaire, lensemble des distances entre les mots de C


correspond lensemble des poids des mots de C.
En effet, si x, y G C , alors d n (x, y) = w ( x y). Toute distance entre les mots
de C est galement le poids d un mot de C car x y 6 C. Rciproquement,
Codes linaires 57

si a; G C, alors w(:r) = cl// (0, x) et donc tout poids correspond une distance
entre les mots de C.
Nous avons dj utilis cette proprit sans la nommer et nous la rappelons
pour noncer le rsultat suivant qui permet de donner une borne sur la distance
minimale d un code linaire.

4.8.2 Borne de Singleton

La proposition suivante, de Singleton. donne un majorant de la distance


minimale.

P rop ositio n 4 .7 Si d est la distance minimale d'un (n,k)-code linaire, alors


d < n k + 1.

Preuve On sait que tout code linaire C peut tre mis sous la forme d un
code linaire quivalent C" qui est sous forme normale. On considrera donc
le code C" de matrice gnratrice G. Rappelons que tout mot de C" sexprime
comme combinaison linaire des lignes de G. Le poids minimal du code est donc
ncessairement infrieur au poids minimal des vectems lignes de G et, a fortiori
au poids maximal de ces mmes vecteurs. Comme les k premires colonnes de
G sont la matrice identit, le poids maximal d une ligne est donc < 1 + (n k).
La proprit des poids et des distances nous permet de conclure que la
distance minimale est dau plus 1 + n k.

4.8.3 Borne de Plotkin

La borne suivante est obtenue en calculant la valeur maximale de la distance


moyenne entre deux mots d un (n, k, d)-code siu un alphabet q lettres. On fait
une liste des mots de C. On considre une colonne de cette liste. Le f symbole
de Q, 0 < j < <i 1 apparat m y fois dans cette colonne. La contribution de
cette colonne la somme des distances entre toutes les paires ordonnes de
deux mots distincts est Y^j=o m ? (|C-j r n j ) Comme X^=o m J = K'Ii on a>Par
lingalit de Cauchy-Schwartz :

e \cf

Comme notre liste comprend n colonnes et comme il y a |C|(|C| 1) paires


ordonnes de mots du code, on trouve que :

|C|(|C|-l)<n0|C|2

qui constitue la borne de Plotkin.


58 Quelques proprits des codes linaires

T h o r m e 4.8 Pour q, n, d G N, q > 2, 0 = 1 on a :

ICI < si d > 6 n


d On

o n est la longueur du code, d sa distance minimale et q la taille de son


alphabet.

4.8.4 Relation entre distance minimale et matrice de contrle

T h o r m e 4.9 Soit C un (n, k) -code linaire de matrice de contrle H.


du (C ) = d si et seulement si d 1 colonnes de H sont linairement ind
pendantes et d colonnes sont linairement dpendantes.

P reu v e Soit x = X \ . .. x n. Alors, x C o x lH = 0 x^ .Hi + . . .+ x n.Hn = 0


o H ] , . . . Hn dnotent les colonnes de H.
Ainsi, chaque mot du code x de poids d, correspondent d colonnes de H qui
sont linairement dpendantes. Dautre part, sil existait d 1 colonnes de H
linairement dpendantes, par exemple H ,,, . . . H ld l , il existerait des scalaires
Xi, , .. x ,tl , non tous nuls tels que :

d-1
T"" H*, = 0
3=1

Dans ce cas, le vecteur x = e^ + et2 + . . . + devrait satisfaire x/H = 0 et


il devrait y avoir un mot du code de poids infrieur h d.

Le thorme prcdent nous procure un moyen de trouver la distance mini


male lorsquon dispose de la matrice de contrle et nous permet de construire
une matrice de contrle pour un code avec une distance minimale garantie.

E x e rcice 4.6 On suppose quun canal binaire accepte des mots de longueur 7 et
que les seules erreurs qui peuvent apparatre sont 0000000. 0000001, 0000011,
0000111, 0001111, 0011111, 0111111, 1111111. Construire un (n ,k )-code li
naire qui corrige toutes ces erreurs avec un taux aussi grand que possible.

C o rrig On a 8 erreurs et donc 8 classes latrales qui contiennent chacune 2k


vecteurs. Le code est de longueur 7 et a donc 27 mots possibles. Do lgalit
fc + 3 = 7=>A; = 4. La matrice gnratrice d un code possible est

( 1 1 X\
Id4 1 1 0
1 0 1
V 0 1 1 /
Codes linaires 59

E xercice 4 .7 Soit C un code binaire de matrice de contrle H. Montrer que


le code tendu C obtenu partir de C en ajoutant un test de parit a pour
matrice de contrle
0

H
0
1 ... 1 1

C orrig A chaque mot c de C , on ajoute un lment cn+j = JZ=1 c*.


On obtient ainsi un vecteur de dimension n + 1, dont chaque lment vri-
fie X S i 1 ci = 0 = (1, c). Ce qui est prcisment obtenu en ajoutant H la
ligne (1 . . . 1) et la colonne (0, . . . , 0)

4.9 Observations

Pour plus de formalisme, le lecteur intress pourra se reporter aux ou


vrages [88, 96] et pour une autre prsentation enrichie de quelques exemples
[18]. Le lecteur intress par les rapports entre la thorie de la complexit et
les problmes de codage pourront se reporter louvrage [5] qui introduit la
thorie de la complexit et numre la complexit de diffrents problmes lis
la thorie des codes.
C h a p it r e 5

Codes de Hamming
Les codes de Hamming sont des codes correcteurs dune seule erreur par
ticulirement simples du point de vue du codage et du dcodage. Nous les
prsenterons comme des codes linaires sur Z 2.

5.1 Dfinition

On dfinit les codes de Hamming au moyen de leur matrice de contrle. On


choisit un entier r, la redondance, et on construit H, une r x 2r 1 matrice
dont les colonnes correspondent lensemble de tous les vecteurs non nuls de
(Z2)r . Le code dont H est une matrice de contrle est appel code de Hamming
que lon note Ham(r).
Ham(r) a pour longueur n = 2r 1 et pour dimension k = n r. Il comprend
donc r = n k bits de redondance.
Puisque les colonnes de H peuvent tre changes, Ham(r) est, pour une
redondance r fixe, lensemble des codes quivalents.
La difficult est alors de trouver la matrice gnratrice qui correspond pr
cisment cette matrice de contrle.

E xercice 5.1 Construire une matrice gnratrice qui correspond la matrice


de contrle de Ham(3) pour laquelle les colonnes sont ordonnes selon lordre
naturel.

Corrig La matrice de contrle de Ham(3) est H = ( 0 1 1 0 0 1 1 ). O11 cherche


0 w V.1 0 1 0 1 0 1 /
/ X i x 2 X 3 z 4 t 5 X e X 7\
une matrice gnratrice G = I vz\ % H % yz%l j . On exprime alors que
\ tl t2 t3 t4 ts te t j J
G }H = 0 et on en tire les conditions sur les lignes x , y, z et t de G.
Par exemple pour x :

{
X4 + X5 + x 6 + x 7 = 0
x2 + x3 + x6 + x7 = 0

Xi + X3 + Xs + X7 = 0
(il en est de mme pour y, z et t) et on attribue des valeurs x , y , z et t ,
/ 1011010X
ce qui donne la matrice gnratrice G = ( 1 1 0 1 0 0 1 ) On peut vrifier que
\o 0 1 0 1 1 0/
G.1H = 0. Notons au passage que la matrice gnratrice G nest pas unique.
62 Proprits des codes de Hamming

5.2 Proprits des codes de Hamming

Une proprit remarquable des codes de Hamming est donne par le tho
rme suivant.

T h o r m e 5.1 Le code Ham(r), pour une redondance r > 2 fixe,

(1) est un (2r 1, 2r r 1)-code linaire;

(2) a une distance minimale de 3 et corrige donc une seule erreur ;

(3) est un code parfait.

P reu v e
(1) Par dfinition, Ham(r) L est un (2T1, r)-code, donc lam (r) un (2r 1, 2r
r l)-cod e linaire.
(2) On montre que Ham(r) ne contient aucun lment de poids 1 ou 2 sinon on
aurait respectivement quune colonne de H serait nulle ou que deux colonnes de
H seraient identiques. Ham(') contient des lments de poids 3 par dfinition
de H :

- Il nexiste pas de x G C tel que w (x ) = 1. Supposons que x = 0 . . . 010 . .. 0


avec 1 la position i (x = ef). Comme e, est orthogonal toute ligne de H .
on aurait que la ie colonne de H devrait tre nulle, ce qui est contradictoire
avec lhypothse que ses colonnes sont les vecteurs non nuls de (Z2)r.

- I l nexiste pas d e x e C tel que w (x ) = 2. Supposons donc que x = e^ + ej.


Comme prcdemment, x est orthogonal toute colonne de H alors en
notant (hs l . . . hsn) la ,se ligne de H , on aurait hsi + hsj = 0(2) ce qui est
quivalent dire que hsl = hSj pour 1 < s < r. On aurait donc deux
colonnes identiques la ie et la j e dans H , une contradiction.

- Il existe x G C tel que w(.-r) = 3. Par dfinition de la matrice de contrle


H . les trois premires colonnes sont :

/ 0 0 0 \

0 0 0
0 1 1
V 1 0 1 -

Alors, le vecteur 11100 . . . 0 est orthogonal chaque ligne de H et appartient


donc Ham(r).

(3) Par la condition dempilement de sphres, on a 2n -r (, ) ) =


2n~r ( ( ) + 1) = 2n - r (2r - 1 + 1) = 2n ca r n = 2r - 1.
Codes de Hamming 63

5.3 Dcodage

Comme Ham(r) est un code parfait corrigeant une seule erreur, ses classes
latrales sont prcisment les 2r (= n + 1) vecteurs de (X2)'' de poids infrieur
ou gal 1. Le syndrome du vecteur x dont seule la j e composante est non
nulle nest autre que la transpose de la j e colonne de H. Si les colonnes de
la matrice H sont ordonnes dans lordre croissant des nombres binaires, la
j e colonne correspond lcriture binaire de j . On en dduit lalgorithme de
dcodage suivant :

(1) pour un message reu y , on calcule S (y) = y tH ;

(2) si S(y) = 0, y correspond au message transmis ;

(3) si S(y) / 0 et en supposant quil n y ait eu quune seule erreur au cours


de la transmission, S (y) donne directement la position de lerreur crite en
binaire sous la forme . . . 63626160 ! un peut alors corriger y = yi yn comme
x + Cj pour j = " 6,2 et e7 le n-vecteur dont seul la j e coordonne est
non nulle.

E xem ple 5.1 Soit H la matrice de contrle de Ham(3) : H = ( 0 1 1 0 0 1 ) .


1 w \ 101 010 ] J
Si y = 1101011, S (y) = 110 qui indique une erreur la 6-me position, et on
dcode y en 1101001.

, 1101000V
E xercice 5.2 Montrer que le code engendr par G = ( 0011010 ) es^ un cde de
' 0001101'
Hamming.

Corrig En effet, si 011 remplace la ligne 4 par la somme de la ligne 2 et de


la ligne 4, quon change ensuite la ligne 1 et la ligne 4, une permutation
, 1000111v
des colonnes prs, on retombe sur la matrice G = I 0010101 )- ^ es^ b tenue
' 0001011^
, , r, / 1110100 \ ,
par dualisation de la matrice H = I 1oioi I, qui est, a une permutation des
colonnes prs, la matrice Ham(3).

5.4 Codes de Hamming tendus

Le code de Hamming tendu not Ham(r) est obtenu partir du code de


Hamming Ham(r) en lui ajoutant un test de parit. La distance minimale de
ce code linaire passe alors de 3 4. Ainsi, les paramtres de Ha.m(r) sont
(2r + 1 ,2r r, 4).
En fait, ce code nest pas plus efficace que Ham(r) pour le dcodage. En effet,
on a ajout un bit de plus transmettre chaque mot du code. Cependant,
puisque ce code a une distance minimale de 4, il permet de corriger une erreur
et den dtecter deux.
64 Observation

Soit H la matrice de contrle de Harn(r). On construit la matrice de contrle


H de Ham(r) partir de H par :

( \
0

0
\1 1 ... 1 l)

La dernire ligne de la matrice de contrle nous donne lquation de test de


parit pour les mots du code : aq + x? . . . + x n+\ = 0 .
Si les colonnes de H sont ordonnes dans lordre croissant des nombres
binaires, on peut donner un algorithme de dcodage incomplet qui permet de
corriger une seule erreur et d en dtecter deux.

E x em p le 5.2 Le code de Hamming tendu Ham(3) a la matrice de contrle


/o o o i i i i o\
suivante : H - I 1 0 1 8 1 0 1 8 ) Le syndrome du vecteur derreur 0 . . . 10.. . 0
V1 1 1 1 1 1 1 1 /
(avec un 1 en position j ) est la transpose de la colonne j de H . L algorithme
de dcodage incomplet est le suivant. On suppose que le message reu est y.
On calcule le syndrome S (y) = y 1H = (si, S2, s3, S4). Alors

( 1) si S4 = 0 et ( s i , S2, S3) = 0 . on suppose quil n y a pas eu d erreur ;

(2) si S4 = 0 et( s i , S2, S3) / 0, on suppose cjuil y a eu deux erreurs ;

( 3) si S4 = 1 et(s i,S 2 , s 3) = 0 , on suppose qu il y a eu une erreur en dernire


position ;

(4) si S4 = 1 et (.si, 2, .S3) / , 011 suppose qu il y a eu une erreur la je


position, o j est le nombre de reprsentation binaire ( s i , .S2, S3).

5.5 Observation

Pour plus de dtails et une gnralisation aux codes de Hamming sur Z 9


(alphabet q lettres), on conseille la lecture de [46] ou de [88].
C h a p it r e 6

Code de Golay tendu


Nous prsentons le code de Golay qui a t utilis dans le programme spatial
pour la communication entre la sonde Voyager et la Terre dans les annes
1980 pour la retransmission de photographies de Jupiter et de Saturne. La
prsentation de ce chapitre est inspire de [47]. On notera dans la suite y le
mot reu, e le vecteur derreur et x un mot du code.

6.1 Matrice gnratrice

Soit Z? la 12 x 12 matrice :
( 1 1 0 1 1 1 0 0 0 1 0 1 >
1 0 1 1 1 0 0 0 1 0 1 1
0 1 1 1 0 0 0 1 0 1 1 1
1 1 1 0 0 0 1 0 1 1 0 1
1 1 0 0 0 1 0 1 1 0 1 1
1 0 0 0 1 0 1 1 0 1 1 1
0 0 0 1 0 1 1 0 1 1 1 1
0 0 1 0 1 1 0 1 1 1 0 1
0 1 0 1 1 0 1 1 1 0 0 1
1 0 1 1 0 1 1 f 0 0 0 1
0 1 1 0 1 1 1 0 0 0 1 1
^ 1 1 1 1 1 1 1 1 1 1 1 0 J

La 12 x 24 matrice gnratrice du code de Golay tendu est obtenue partir


de B par G = (Idi2, B). Le code C de matrice gnratrice G est le code de Golay
tendu not C24-
Comment est construite la matrice B ? Notons Z?i la 11 x 11 matrice obtenue
partir de B en retirant la dernire ligne et la dernire colonne. B t a une
structure cyclique. La seconde ligne est la permutation circulaire de la premire
ligne (11011100010) qui met la premire composante en dernire position et
ainsi de suite. On peut alors dfinir B laide de B\ comme :

o j est le mot compos uniquement de 1 de longueur 11.


Observons que *B = B, ce qui signifie que B est une matrice symtrique.
66 Proprits du code

6.2 Proprits du code

Nous dcrivons ci-dessous les proprits essentielles de ce code.

(1) C'24 est de longueur n = 24, de dimension k = 1 2 et comprend 212 = 4096


mots de code ;

(2) Une matrice de contrle de C'24 est la 24 x 12 matrice *

(3) Une autre matrice de contrle de C'24 est la 24 x 12 matrice lH =


Chacune de ces deux matrices permet de dcoder C'24.

(4) Une autre matrice gnratrice de C'24 est la 12 x 24 matrice (B , Idj2)-

(5) C'24 est auto-dual.

(6) Sa distance minimale est 8.

(7) C'24 est un code correcteur de 3 erreurs.

P reu v e

(1) Immdiat par inspection de la matrice gnratrice.

(2) Par dfinition de la matrice de contrle obtenue partir de la matrice g


nratrice sous forme normale.

(3) Comme le poids de chaque ligne de B est impair (7 ou 11), le produit scalaire
de chaque ligne avec elle-mme donne toujours 1. De plus, le produit scalaire
de la premire ligne de B avec nimporte quelle autre ligne est toujours
nul. Du fait de la structure cyclique de B 1, le produit scalaire de lignes
quelconques de B i est toujours nul. D o B'B = Id. Mais comme 'B = B,
B 2 = B*B = Id. On a,

(4) Est une consquence immdiate de (3), par la dualit.

(5) G = (M 12, -B), donc 'H = B , M 12) et comme 'B = B , on retombe bien sur

(6) La dmonstration de ce point est plus complique. Elle est scinde en trois
tapes :
Code de Golay tendu 67

- On montre tout d abord que tout mot de C'24 a un poids divisible par 4.
Observons que les lignes de G ont toutes un poids de 8 ou de 12.
Soit v G C'24 qui est la somme de deux lignes de G : v = r i + r j. Les lignes
de B tant toutes orthogonales, il sensuit que les lignes de G aussi. Donc
ri et Tj ont un nombre pair de 1 en commun, e.g. 2x. Donc,

w (v) = w(r^) + w ( j j ) 2(2x)

est un multiple de 4.
Soit v G C24 tel que v = ri + rj + trois lignes de G. Soit vi = r,- + r:l.
Comme C est autodual, (ci ,r^) = 0 et ont un nombre pair de 1 en
commun, e.g. 2y. Donc,

w ( ) = w(r?i) + w (rk) - 2(2y)

est un multiple de 4.
En continuant inductivement, on montrerait que Vu G C24, w(u) = 0(4).
- Les 11 premires lignes de G sont les mots du code C24 de poids 8. Ainsi,
la distance de C24 est soit 4 soit 8.
Il nexiste pas de mot de C24 de poids 4. En effet, supposons v G C'24 non
nul tel que w(u) = 4. Alors, il existe u t et u? tels que, v = U\ (id, L)
et. v = w.2 ( B, Id) puisque ces matrices engendrent toutes deux C24. On
a w(w.j) < 2 ou w (it2) 2 puisquune moiti de v doit contenir au plus
deux 1. Cependant, il 11existe pas de somme d une ou de deux colonnes
de B de poids au plus 3. Donc, w(u) = w (iq) + w (ui.B) > 4. Par
consquent, il nexiste pas de v de poids 4.

(7) Il sensuit, par dfinition, que C24 corrige au plus trois erreurs.

6.3 Dcodage

On cherche corriger des erreurs de poids dau plus 3, donc w (e) < 3.
On sparera les vecteurs en deux moitis par une virgule. Ainsi, par exemple,
e = (ei, 62) chacun de longueur 12.
On cherche dterminer le chef de classe de la classe latrale contenant y
sans avoir se reporter au tableau standard de C24.
Puisque w (e) < 3, on a soit w (e i) < 1 soit w (e2) < 1. Soit Si le syndrome
de y - x + e obtenu en utilisant la matrice de contrle

Alors si = y lH ( t i , e ^ 'H = ei + e-jB. Si w (e2) < 1, alors .s( consiste soit en


un mot de poids dau plus 3 (si w (e2) = 0) soit en une ligne de B dont au plus
68 Exemples

deux bits ont t changs (si w (e2) = 1). De manire similaire, si w (ei) < 1
alors le syndrome
B
S2 = y ^ I d J = e i B + e 2

consiste soit en un mot de poids dau plus 3 soit en une ligne de B dont au
plus 2 bits ont t changs.
Dans tous les cas, si e est de poids dau plus 3, il est aisment identifi,
puisque au plus trois lignes des deux matrices de contrle peuvent tre trou
ves pour ajouter de linformation au syndrome. En utilisant cette dernire
observation, on obtient un algorithme de dcodage. On utilisera le fait que
B 2 = Id et
Si = ei 4- e2B = y lH
s2 = e i-B + e 2
= (e i + e2B )B = siB

Pour viter d utiliser conjointement les deux matrices de contrle dans le


mme algorithme, on nutilise que tH Bien sr, lorsque e a t dter
min, y est dcod en x = y + e. e,- correspond au mot du code de longueur 12
avec un 1 la ie position et des 0 ailleurs et bi est la ie ligne de B.
Lalgorithme de dcodage fonctionne alors selon le schma suivant :

(1) calculer le syndrome s = y*H ;

(2) si w (s) < 3, alors e = (s, 0) ;

(3) si w (s + bi) < 2 pour une ligne bi de B , alors e = (s + bi , c.;) ;

(4) calculer le second syndrome sB ;

(5) si w (sB ) < 3, alors u = (0, s B ) ;

(6) si w (sB + bi) < 2 pour une ligne bi de B, alors u = (i, sB + bi) ;
pour j, le vecteur dont seule la coordonne est non nulle;

(7) si e nest toujours pas dtermin, demander une rediffusion.

Cet algorithme requiert au plus 26 calculs de poids pour dcoder.

6.4 Exemples

6.4.1 Premier exemple

Dcoder y = 101111101111,010010010010. Son syndrome est

s = ytH = 101111101111 + 001111101110 = 100000000001


Code de Golay tendu 69

qui est de poids 2. Comme w (s) < 3, on trouve que

e = (,s, 0) = 100000000001,000000000000

et on en conclut que

x = y + e = 001111101110,010010010010

est le mot du code mis.


Comme G = (Id, B ) est sous forme normale, et que tout mot de longueur
12 peut tre cod, le message apparat dans les 12 premires positions du mot
x. Ainsi, le message mis tait : 001111101110.

6.4.2 Second exemple

Dcoder y = 000111000111, 011011010000. Le syndrome est

s = ytH = e i + e2B = 000111000111 + 101010101101 = 101101101010

qui est de poids 7. En appliquant ltape (3) de ralgorithme, on trouve que


w (s 4 6,) > 3 pour toute ligne b-, de B. On continue ltape (4) et on calcule
le second syndrome :
sB = 111001111101

qui est de poids 9. En continuant ltape (5), on calcule :

sB + b != 001110111000
sB + b2 = 010111110110
sB 4- b3 = 100101101010
sB 4- W = 000001010000

comme w (sB + 64) < 2, on trouve que

u = (ee, sB + bi) = 000100000000,000001010000

et on conclut que

x = y + e = 000011000111,011010000000

tait le mot mis.

6.5 Observations

Le code de Golay est un code parfait dont les proprits algbriques et com-
binatoires sont exceptionnelles. Il est par exemple unique. Cela signifie que tout
code binaire de longueur 24 ayant 212 mots du code et une distance minimale
de 8 lui est quivalent. On peut aussi le retrouver de bien des faons diffrentes.
C h a p it r e 7

Codes de Reed-Muller

Nous nous intressons ici une classe de codes qui contient les codes de
Hamming tendus dont nous avons parl prcdemment. L intrt de ces codes
est quils sont dfinis de faon inductive.
Les codes de Reed-Muller sont trs utiles pour la transmission sur des canaux
trs brouills. En particulier, le code R M ( l ,m ) a une distance minimale gale
la moiti de la longueur des mots du code. Le cas particulier de R M (1,5)
a t utilis pour la transmission d images de la plante Mars, via le satellite
Mariner-9. Chaque pixel tait cod par un niveau de gris (sur 64 possibles) et
transmis au moyen d un mot du code de longueur 32. Ce code pouvait corriger
jusqu 7 erreurs par mot du code.

7.1 Dfinition inductive

On notera R M (r, m) le code de Reed-Muller d ordre r et de longueur 2m


avec 0 < r < m.
On dfinit ces codes ainsi :

RM (0, m) = { 0 0 . . . 0 , 1 1 . . . 1), chaque mot est de longueur 2m


R M (m ,m )= {0, l } 2
R M (r, m) = { ( x , x + y ): x e R M (r, m 1), y E R M (r l , m - l ) }
pour 0 < r < m.

RM (m , m) comprend tous les mots de longueur 2m et R M (0, m) est consti


tu des seuls mots 0 et 1.

Exem ple 7.1

R M (0,0) = (0 ,1 }
R M (0,1) = {0 0,1 1}
R M { 1,1) = {0, l } 2 = {0 0,01,10 ,11}
R M (0,2) = {0000,1111}
R M (2,2) = { 0 ,1 } 4
R M ( 1,2) = {(x , x + y ) : x E {0 0,01,10 ,11}, y G {0 0 ,1 1 }}
72 Matris gnratrices

E x ercice 7.1 Donner les mots du code R M (1,3).

C o rrig On a par dfinition, R M (1,3) = { ( x , x + y) : x G R M (l,2 ),y G


R M (0 ,2 )}. D aprs lexemple,

' 0000, 0 110 , '

R M ( 1,2) == i<
0 10 1, 10 0 1, ,
10 10 , 110 0 ,
0 0 11, 1111
et donc,
00000000, 0 0 0 0 1111,
0 10 10 10 1, 0 10 110 10 ,
10 10 10 10 , 10 10 0 10 1,
0 0 110 0 11, 0 0 11110 0 ,
0 110 0 110 , 0 110 10 0 1,
10 0 110 0 1, 10 0 10 110 ,
110 0 110 0 , 110 0 0 0 11,
11111111, 11110 0 0 0

7.2 Matrices gnratrices

Les matrices gnratrices de ces codes admettent galement une dfinition


inductive. On note G(r, m) la matrice gnratrice de R M (r, m) :

_ / G(r, m 1) G(r, m 1)
G(r, m) =
0 G(i l,m 1)

En posant pour r = 0,

G (0.m ) = ( 11 . .. 1)

et pour r = m,

G ( m . m ) = ( o (mo i 1 m)

E x em p le 7.2

(1 1 1 1 1 1 1 l\
0 (1 ,3 ) = ( G M 0 ( 1 ,2 ) U 0 1 0 1 0 1 0 1
G( 0,2) 0 0 1 1 0 0 1 1
yo o o o i i i i/
avec
G (0 ,2) = (l 1 1 1)
et
1 1
\ (l
1 0 1
) = 0
\0 0 1 1/
Codes de Reed-Muller 73

G (0,1) = ( 1 1 ) , G ( 1 , 1 ) = ( J

E xercice 7.2 Retrouver les mots de (7(1, 3) par sa matrice gnratrice.

E xercice 7.3 Montrer que (7( 1,3) est un code quivalent au dual d un code de
Hamming tendu de redondance 3.

C orrig II suffit dchanger la premire et la dernire colonne puis d changer


la premire et la dernire ligne et on retrouve la matrice de contrle du code
de Hamming tendu de redondance 3.

7.3 Proprits du code

T horm e 7.1 Le code de Reed-Muller R M (r,m ) dfini comme ci-dessus a les


proprits suivantes :

(1) longueur n - 2m ;

(2) distance d = 2m~r ;

(3) dimension k = 5 ^ =0 ("') !

(4) R M (r 1, m) est contenu dans R M (r, m ) pour r > 0 ;

(5) comme code dual, R M (m 1 r, m) pour r < m.

Preuve Les proprits se prouvent par rcurrence. Le thorme est vrai pour
m = 1,2,3,4 ainsi que pour r = 0 et r = m.
On prouve que R M (i 1, m) R M {r,m ). On commence par

Q G(0,m-l)J

Comme le vecteur 1 constitue la premire ligne de G( 1, m 1), le vecteur


compos des deux blocs (1,1) est la premire ligne de ((7(1, m 1), G(l, m - 1)).
R M {0, m) = { 0 , 1 } est bien inclus dans R M ( 1, m ).
En rgle gnrale, comme G (r 1, ni1) est une sous-matrice de G (r, m 1)
et que G (r 2, m 1) une sous-matrice de G (r 1, m 1), on en dduit que

, . (~G {r - 1,-m ifiG f i r - l ,m - 1)\


G (r-l,m ) = ^ Q G (7 2, m) J

est une sous-matrice de G(r, m) et donc que R M (r 1, m) est un sous-code de


RM (r,m ).
74 Proprits du code

On montre par rcurrence sur r que la distance d = 2m r pour R M (r, m) .

Comme R M (r,m ) = {(x , x + y) : x G R M (r ,m 1 ),y G R M (r 1, m 1)}


et que R M (r 1,m 1) R M (r ,m 1), alors x + y G R M (r ,m 1) et
donc, par hypothse de rcurrence, pour x ^ y, w (x + y) > 2m 1 r. De plus,
w (x ) > 2m~1~r. D o w (x, x + y) = w (x + y) + w (x ) > 2.2rn_1_r = 2m~r. Si
x = y, alors (x ,x + y) = (y, 0) mais y G R M (r 1,m 1). Ainsi, w (y, 0) =
M y) > = 2m~r -

Par dfinition de G(r, m), on a :

dim R M (r, m) = dim R M (r, m 1) + dim R M (i 1, m 1)


r /m1\ ,
E =0 y^?1 /m1\
l i i + 2 ^ i =0 l j J

o dim est la dimension du code.

Comme () = ( *) + ( " _ / ) et que (mQX) = ( ') = 1, on obtient :

Enfin, soit

R M (r, m) = { ( x , a? + /) : x G R M (r , m 1). y G R M (i l ,m 1)} et


R M (m r l,m ) =
{ { x 1, x' + y') : a/ G R M (m r l . m 1), / G R M (m r 2, m 1)}

Par rcurrence, le dual de R M (r,m 1) est R M (m r 2 ,m 1) et le dual


de R M (r l,m 1) est R M (m i l,m 1) do (x, /) = 0 et {x1, y) = 0.
De plus, comme R M (r 1, m 1) R M (r, m 1), {y, y') = 0. Donc,

((x , x + y ), (x ', x' + y')) = ((x + y), (x ' + y')) + (x , x ')


= 2(x, x') + (x, y') + (y, x') + (y, y ) = 0

On constate que tout vsfceur de R M (r, m) est orthogonal tout vecteur de


R M (m r l,m ). Comme

dim R M (r, m) + dim R M (m r 1, m) =


E r ra\ , y^mr1 U /m\ _
)
E 20 \m2/ ^>.7=0 1 V/m
r / m \ , y^m \_
j/
E7=o ( ? ) = 2 m

R M (m i 1, m) est le dual de R M (r , m).


Codes de Reed-Muller 75

7.4 Dcodage

On ne sintresse quaux codes de Reed-Muller d ordre 1, R M (1, m). Notons


que R M (m 2, m) est de dimension 2m m 1, a pour distance minimale
4 et est de longueur 2m. On peut prouver quil sagit dun code de Hamming
tendu. Par le thorme, R M (1, m) est le dual de ce code de Hamming tendu.
Nous dcrivons un algorithme de dcodage efficace pour ce code. Le dcodage
des codes de Reed-Muller dordre suprieur 1 est beaucoup plus complexe et
ne sera pas trait ici.
Observons que R M (1, ni) est un code petit pourvu dune grande distance
minimale, aussi un bon algorithme de dcodage estle suivant : pour tout mot
reu w, trouver le mot de R M { l ,m ) qui lui est leplusproche. Cela peut tre
ralis de faon efficace.

E xem ple 7.3 Soit m = 3. On considre le R M ( 1,3) qui est de longueur 8 et


qui possde 16 mots du code. Sa distance minimale est 4. Sa matrice gnratrice
est
(1 1 1 1 1 1 1 1\
0 1 0 1 0 1 0 1
G(l,3) =
0 0 1 1 0 0 1 1
VO 0 0 0 1 1 1 1
Observons que si w est reu et ci// {w, c) < 2 pour c R M (1,3), on dcode w en
c mais si c) > 6, dri(w, 1) < 2 et on dcode w en 1 + c (en effet 1 est un
mot du code). Par exemple, si w = 10001111 est reu, alors c = 00001111 est le
mot du code le plus proche. Si w = 10101011 est reu, on trouve c = 01010101
tel que cLh ( w , c ) > 6 alors c + 1 = 10101010 est le plus proche mot du code.
On a donc examiner au plus la moiti des mots du code de R M ( 1, m).

Exercice 7 .4 Pour G( l ,3 ) , dcoder les mots :

( 1)0101 1110

(2 ) 0110 0111

(3) 0001 0100

(4)1100 1110

7.5 Observations

Il existe un autre algorithme de dcodage des codes de R M ( 1, m) qui utilise


la transforme de Hadamard-Walsh [47]. Celui-ci est trs efficace. L ide est de
travailler dans le domaine spectral. En effet, les mots du code ont un spectre
qui est trs particulier. Il est donc facile de constater sil y a eu des erreurs de
transmission puis de corriger ces ventuelles erreurs.
C h a p it r e 8

Codes cycliques

La prsentation des codes cycliques de ce chapitre sappuie sur les ouvrages


de Mac Williams et Sloane [68] qui est la rfrence de la thorie des codes et de
Papini et Wolfmann pour les rappels dalgbre [96]. Un autre livre intressant
bien que assez mathmatique est celui de van Lint [88] et, pour la prsentation
de la thorie des corps finis, celui de Demazure [27].

8.1 Description

Ce sont les codes les plus utiliss ; ils simplantent assez simplement et pour
beaucoup dentre eux, on connat de bonnes techniques de dcodage. Nous nous
limitons ici au cas des codes binaires (dfinis sur F2, le corps fini 2 lments).

D finition 8.1 Un code linaire C de longueur n est cyclique sil vrifie la


proprit suivante :

si x\ . . . x n C, alors x nx\ . . . Tn_ i C

Exem ple 8.1 Le code C = (000,110,011,101} est un code cyclique.

Exem ple 8.2 Le code de Hamming est cyclique. Soit par exemple G
/ 1101000 V
( 0011010) 11116 matrice gnratrice du code Ham(3) (cf. exercice 5.2). Par
'0001101 '
exemple, 0110100 est un mot du code et le mot 1101000 obtenu par dcalage
galement.

Remarquons quun code est cyclique sil est invariant par dcalages (ou
shifts).

8.2 Reprsentation polynomiale

On notera IF2[-'c] lanneau des polynmes de variable x coefficients dans


F2.
78 Reprsentation polynomiale

D fin ition 8.2 (A n n e a u ) Un anneau A est un ensemble muni de deux op


rations internes ( + , . ) tel que (A, + ) est un groupe commutatif muni d une
opration . qui satisfait : a.b = b.a, a.(b + c) = a.b -I- a.c, (a.b).c = a.(b.c) et qui
contient un lment not 1 tel que l.a = a .l = a.

D fin ition 8.3 On appelle reprsentation polynomiale lapplication 6 :


(F2)n >F2[a;]/(xn 1) dfinie par

8 : c o c i. . . cn-1 i-c co + C\x + .. . + cn-\ x n~ x

La reprsentation polynomiale de c = CoCi . . . cTl_ i est le polynme c(x) =


Co + C i X + . . . + Cn - 1X n ~ 1 .

E x em p le 8-3 La reprsentation polynomiale de 01101U est x + x 2 + x 4 et celle


de 1101000 est 1 + x + x 3. Observons que x + x 2 + x 4 = x(\ + x + x 3).

La reprsentation polynomiale d un code C est lensemble des reprsenta


tions polynomiales de ses mots.
Effectuer un dcalage sur un mot revient multiplier par x sa reprsentation
polynomiale, modulo x n 1. Donc C est cyclique si et seulement si pour tout
mot c de C, xc(x) calcul modulo x n l est la reprsentation polynomiale d un
mot de C. En pratique, on confond les mots du code et leur reprsentation
polynomiale.

E x em p le 8.4 Le code C = {000,110,011,101} correspond aux polynmes


0,1 + x, x + x 2, 1 + x 2 pris modulo x 3 1. Sa reprsentation polynomiale est
donc C = (0.1 + x, x + x 2, 1 + x 2}.

D fin ition 8.4 (Id a l) Un sous-ensemble / d un anneau commutatif A est un


idal si, pour a, b 6 I, a b 1 et si, pour a e I et x e A, a.x G I.

Si c(x) est dans le code, alors x c(x ) lest aussi, tout comme p (x)c{x) pour
tout p {x) G F2[.x]. Ainsi, un code cyclique binaire de longueur n est un idal de
Fa[a:]/(an - 1).

T h o r m e 8.5 I est un idal de F2[a;] si et seulement si il existe a(x) G F2[x]


tel que I est l ensemble des multiples de a(x) dans F2[.t|.

D fin ition 8.6 Un idal I est principal sil consiste en tous les multiples d un
polynme fix, g (x), appel polynme gnrateur de / .

Posons Rn = F2[a;J/ (x n 1). Lanneau R n = F2[.r]/(x n 1) est compos des


classes rsiduelles de F2[.t] modulo x n 1.

T h orm e 8.7 Un code cyclique C de longueur n est un idal principal de R n.


Il admet un unique gnrateur de degr minimal dans C.
Codes cycliques 79

E xem ple 8.5 Le code C = { 0 . \+x, x + x 2,1 + x 2} est engendr par g(x) = 1+ x
dans i ?3 = F2 [.r]/x3 1.

E xem ple 8.6 Le code de Hamming de paramtres (7,4,3) admet comme g


nrateur g(x) x 3 + x + 1. Ses mots sont forms de tous les multiples de
g(x) modulo x 7 1. Considrons par exemple le mot <i{:r) = (a;8 + l)g (x). On a
(x8 + l)ff(a:) = (x + 1 )g(x) mod (x 7 1) = a;4+ x 3+a:2-l-l. Ainsi, a = 1011100.

T h orm e 8.8 La dimension dun code cyclique de longueur n et de gnrateur


g(x) est
k n deg g(x)

o deg donne le degr du polynme.

Thorm e 8.9 Soit g (x) = g o+ giX + . .. -LgtX* le gnrateur dun code cyclique
C de longueur n. Une matrice gnratrice de C est donne par :

(go fil 52 5t 0 ... 0^


0 go 5i 52 5t 0 ... 0

0 0 50 5i 52 5t 0
^0 0 50 5i 52 9t)

Pour construire tous les mots m (x) de C, il faut multiplier le gnrateur par tous
les polynmes binaires p (x ) de degr infrieur ou gal k 1. Matriciellement,
les mots m peuvent scrire m = p G.

Exem ple 8.7 Le code de Hamming Ham(3) de paramtres (7,4,3) et de gn


rateur g (x) = 1 + x + x 3 admet pour matrice gnratrice :

/l 10 1 0 0 o\
0 1 1 0 1 0 0
0 01 1 0 1 0
\0 00 1 1 0 1/

Les mots du code sont les combinaisons linaires des lignes de la matrice.

Dfinition 8.10 Soit C un code cyclique de gnrateur g {x). Le polynme de


contrle de C est dfini par

h {x) = (xn - 1)/g{x)

Le degr de h(x) est donc n deg g (x ) =- k. Si c est un mot de C, alors


c(x)h(x) = 0.

Le code engendr par h(x) est quivalent au code dual de C (il sagit en
fait des mme mots mais crits en sens inverse). Le dual de C est donc un code
80 Les facteurs de x n 1 sur F2

cyclique qui a pour dimension n dim C =deg g(x). Pour h(x) = ho + h tx +


.. . + hkXk, on peut construire la matrice H comme :

/O 0 hk h\ ho\
0 hk ht ho 0
H =
0
\hk h-\ ho 0 0/

E x e m p le 8.8 Dans lexemple prcdent, le polynme de contrle est h(x) =


(x 7 1) / (x3 + x + 1) x 4 + x 2 + x + 1.La matrice de contrle du code est :

/O 0 1 0 1 1 1>
# = ( 0 1 0 1 1 1 0
\ l 0 1 1 1 0 0)

Quels sont lesparamtresdu dual de Ham(3) ?

Le polynme gnrateur d un code cyclique binaire de longueur n (impaire


telle que n, soit premier avec 2) doit tre un facteur de x n 1. Il nous faut donc
tudier le corps de dcomposition de x n 1.

8.3 Les facteurs de x n - 1 sur F2

h'ordre multiplicatif de 2 modulo n est le plus petit entier m tel que n divise
2m 1. Les racines de = x n 1, ne polynme cyclotomique, sont appeles
racines ne de l unit. Elles appartiennent Yextension de corps F2m. F2m est
aussi appel le corps de dcomposition de x n 1.

E x em p le 8.9 Prenons n = 7. Lordre multiplicatif de 2 mod 7 est le plus petit


entier m tel que 7r|2m 1 (lire n divise 2m 1). Ici, on a 7|2m 1 et donc m = 3.
Les racines de x 7 1 appartiennent donc lextension de corps F23.

F2<n est le plus petit corps contenant toutes les racines de xn 1 (elles sont
distinctes puisque x n 1 na pas de racines multiples dans F2). Dans F2m, on
a donc pour les j racines ne de lunit :
n 3

xn ~ i = Qi )
z=0

F2m possde galement une racine primitive ne de l'unit, a est dite primitive
lorsque les puissances de a permettent de retrouver toutes les autres o , ; si a
est primitive alors,

n 1
x n - l = Y [ { x - a 1)
i=0
Codes cycliques 81

F2m est obtenu par adjonction F2 d une racine primitive ne de lunit


dordre m. Le polynme minimal qui annule la racine primitive est un facteur
irrductible dans F2[ai] du polynme cyclotomique x n 1. Rappelons quun
polynme sur F2[x] est irrductible sur F2 sil ne peut pas tre factoris en un
produit de deux polynmes de F2 [ai] de degr moindre.

Exem ple 8.10 Construisons par exemple F23, extension de degr 3 de F2. Pour
ce faire, on ajoute la racine d un polynme qui na normalement pas de ra
cine sur F2[ai]. Comme lextension est de degr 3, on cherche un polynme
irrductible de degr 3. Par exemple x 3 + x + 1 ou ai3 + x 2 + 1. Choisissons
f(x ) = x 3+ x + l obtenu, par exemple dans la table des polynmes irrductibles
de lannexe B. On a donc f ( a ) = 0 et on pose a 3 + a + 1 = 0 a 3 = a + 1.
On a une racine dans le corps 23 lments engendr par a, racine primitive,
/(ai) est le polynme minimal et on a ainsi le plus petit corps contenant a,
F2[a] = F2[x]//(ai)F 2[a:]. De plus, (1 , a , a 2) est une base de F23 au sens des
espaces vectoriels.

Considrons la dcomposition de x n 1 en t produits de polynmes irr


ductibles sur F2,

x n - 1 = f o ( x ) f i ( x ) . .. f t- i ( x )

Si la racine primitive a est la racine de /,(ai), f ,(x ) est appel polynme


minimal de a sur F2. Les autres racines de fi(x ) sont les conjugues de a : soit
a, a2, a 4, . . . , a 2"1 , (o s, est le degr de /,(.x)).

Supposons que
Si 1
fi(x) = n 0e - a 2' )
.70

alois, les autres facteurs sont

fi(x ) = \ \ { x - a l23)
3=0

Dfinition 8.11 Le cycle (i, 2i, 4i, . . . , 2H , . . . ) sappelle la classe cyclotomique


de i (relative 2 modulo ri). Plus prcisment, pour t E la classe cycloto
mique de i relative 2 modulo n est :

Ci = {i2i mod n : j N)

Le nombre dlments dans la classe cyclotomique est gal au degr du facteur


irrductible. On en dduit une factorisation de x n 1 sur F2[x],
82 Implantation du codage par les codes cycliques

E x em p le 8.11 Factorisation de x 7 1 sur F2.


On a m = 3 car 7 = 23 1. Lextension de corps est IF23 qui est isomorphe
Fg. Calculons les classes cyclotomiques modulo 7 :

Cb = {0 } = { 0 - 2 * } ,
Cl = {1, 2, 4} = { 2 0 = C2
C3 = { 3. 6, 5 } = {3 - 2 0

Le calcul des classes cyclotomiques montre quil existe ici un facteur de degr
1 et deux facteurs de degr 3. Remarquons que les degrs des facteurs (ici 1 et
3) divisent n 1 (ici 6). Les trois polynmes minimaux sont :

fo (x ) = x - l ,
f i ( x ) = (x a )(x a 2)(x a 4),
f 3 {x) = (x a3)(x a 6)(x a 5)

On sait (cf. annexe B) que dans cet exemple, x 3 + x + 1 est un polynme


irrductible de degr 3, lautre se trouve facilement par division. La factorisation
est alors la suivante :

x 7 1 = (x l ) ( x 3 + x + l ) ( x 3 + x 2 + 1)

Plus gnralement, pour dterminer les coefficients binaires de f i ( x ) etf 3(x),


il convient de faire des calculs dans Fg. Puisque 8 = 23, nous considrons un
polynme binaire de degr 3 irrductible, par exemple / ( x ) = x 3 + x + 1. Si a
est une racine primitive de f ( x ) , alors f ( a ) = 0. On a donc

a3 = a + 1
a4 = a2 + a
a5 = c? + a + 1
a6 = a2 + 1
a7 = 1.

Alors
fi(x ) = (x a )(x a 2)(x a 4)
= x 3 + (a + a 2 + n4)x 2 + (q 3 + a 5 + a 6)x + a 7
= x 3 + x + 1,
et on trouve de manire analogue que

f 3(x) = x 3 + x 2 + l.

et la factorisation du 7e cyclotomique est :

x 7 - 1 = (x - l ) / i ( x ) f 3(x)

8.4 Implantation du codage par les codes cycliques

Considrons le (7,4,3) code de Hamming de redondance 3, Ham(3), engendr


par g(x) = x 3 + x + 1.
Codes cycliques 83

Supposons que lon doive coder le message a = oui . . . 03 en c


^0 * C3C4 . . . Cg.

Pour trouver c, il suffit deffectuer le produit a (x )-g (x ) mod x 7 1 qui peut


tre implant efficacemeni au moyen du registre dcalage de la figure 8.1 dont
la construction sera dtaille dans lannexe A.

do - &k

Fig. 8.1 Produit par x 3 + x + 1.

Ainsi, codons le message a{x) = x + x 2. Le tableau ci-dessous montre le


fonctionnement du registre :

entre registre sortie


0110 000
011 000 0
01 100 10
0 110 110
011 1110
001 01110
000 101110
000 0101110
co C6

Le signal envoyer est donc : c(x) x + x 3 + x 4 + x 5.

8.5 Implantation du dcodage des codes cycliques

Soit C un (n, k, d) code cyclique binaire de polynme gnrateur g(x), avec


deg<?(a;) = n k. Soit e sa capacit de correction. Un mot reu y est corrig en
un mot c & C si y = c + r] avec w(?j)_ < e.

Dfinition 8.12 Le syndrome d un mot y{x) 6 Rn est le reste de la division


de y(x) par g(x) dans F2 [x]. On le note S (y(x)).

Remarque 8.13 y (x ) est un mot de C si et seulement si g{x) divise y (x) dans


F2[a;].

Dans la pratique, les divisions se font au moyen de registres dcalages.


84 Implantation du dcodage des codes cycliques

E x em p le 8.12 Considrons le (7,4,3) code de Hamming engendr par (/(x) =


x'3 + x + 1. Supposons que le mot reu soit y = (1100010). Alors y(x) = x 5+ x + l
et le syndrome du mot reu est (001) soit S (y(x)) = x 2. Il est obtenu par un
registre dcalages aprs 7 itrations.

Le dcodage seffectue de la manire suivante :

- calcul du syndrome avec un registre dcalages ;

- association du syndrome lerreur correspondante grce une table ; la


consultation de la table se fait laide d un circuit de logique combinatoire ;

ajout de lerreur au mot reu, par une opration de ou exclusif .

E x e rcice 8.1 Considrons le (15,11,3) code de Hamming Ham(4). C est un


code cyclique engendr par g(x) = x 4 + x + 1. Trouver le syndrome correspon
dant au message x 8 + x .

C orrig Ralisons la division par- le polynme g {x) = x4 + x + 1. Elle est


implante par le registre de la figure 8.2.

- - bn r0 r3

Fig. 8.2 D ivision par x4+ x + 1.

la division du polynme b(x) = x1

entre registre sortie


000001001 0000
00000100 1000 0
0000010 0100 00
000001 0010 000
00000 1001 0000
0000 1000 10000
000 0100 010000
00 0010 0010000
0 0001 00010000
1100 100010000

On trouve que le syndrome du message reu est x + 1, le contenu des cellules


du registre dcalages.
Codes cycliques 85

8.6 Exemples de codes cycliques

8.6.1 Les codes BCH binaires

Les codes BCH (Bose, Chaudhuri, Hocquenghem) sont des codes cycliques
qui permettent de prvoir (en la minorant) la distance minimale du code avant
la construction.

Soit F2"> le corps des racines ne de lunit.

Un code BCH binaire de longueur n et de distance construite 6 est le code


de plus grande cardinalit possible admettant comme racines :

o a E F2n est une racine primitive ne de lunit et b est un entier positif.

Dfinition 8.1 4 Un code BCH binaire de longueur n et distance construite


S est un code cyclique dont le gnrateur est le produit (sans rptition de
facteurs) des polynmes minimaux de a b, a b+1, . . . , a b+s~2, o b est un entier
positif. Si b = 1, le code est BCH au sens strict.

Thorm e 8.15 Le code BCH binaire de longueur n et distance construite =


2t + 1 a pour dimension k > n mt et distance minimale d > .

Exemple 8.13 Le code de Hamming Ham(3) est un code BCH avec 6 = 3 et


b = 1 En fait, les codes BCH ont t construits comme une gnralisation des
codes de Hamming.

8.6.2 Les codes de Reed-Solomon

Les codes BCH peuvent aussi tre construits sur Fg, le corps q lments, q
premier. Lorsque leur longueur n est telle que n = q1, ils sont appels codes de
Reed-Solomon. Ce sont des codes MDS (Maximum Distance Separable). Cela
signifie que d = n k + 1, o d et k reprsentent respectivement la distance
minimale et la dimension du code.
Ils sont utiliss

pour construire dautres codes ;

- lorsque lon dsire un code de longueur plus petite que la cardinalit du


corps.

Cest le code qui est la base du mcanisme de correction pour la lecture


des disques compacts comme nous allons le dcouvrir plus loin.
86 Exemples de codes cycliques

8.6.3 Les codes de Reed-Muller

Les codes de Reed-Muller dfinis inductivement dans le chapitre 7 vrifient


lquivalence suivante.

T h o r m e 8.16 Les codes R M (r, m) sont quivalents aux codes cycliques ten
dus.

La preuve de ce thorme est trop technique pour figurer ici. Elle fait appel a
la dfinition des codes de Reed-Muller au moyen de gomtries finies que nous
nutiliserons pas ici. Elle peut tre trouve dans [89].
C h a p it r e 9

Codes correcteurs de paquets


derreurs

Jusqu prsent nous navons considr que des codes qui corrigent des er
reurs distribues alatoirement. Cependant, dans le cas des disques compacts
ainsi que pour certains autres canaux (GSM, satellite), les erreurs peuvent se
succder (prsence de poussires ou de rayures sur le disque... ) Ainsi, toutes les
informations inscrites ces endroits risquent dtre altres par paquets entiers.
Nous prsentons plusieurs dfinitions des paquets ainsi que quelques mca
nismes qui en permettent la correction.

9.1 Dfinitions

On appelle paquet d tendue L un vecteur dont les seules composantes non


nulles sont parmi L composantes successives dont la premire et la dernire
sont non nulles, comme illustr dans lexemple ci-dessous.

Exemple 9.1 Le paquet suivant est un paquet d tendue 6 :

6
0000011000

Dfinition 9.1 Soit x = aq . . x n G F. On dit que x est un paquet d tendue


L sil existe un entier , l < i < n L + l t e l que :

( Xj = 0 , si j < i ou j > i + L 1
\ Xj 7^ 0, si j = i ou j = i -(- L 1

Cette dfinition peut galement tre formule en terme de polynmes. Si e


reprsente une telle suite d erreurs, notons e(x) sa reprsentation polynomiale.
Si e(x) peut tre factoris en e(x) = x ke'(x) avec e'0 = 1, on dit que e est un
paquet dtendue L si deg e' = L 1.

Exemple 9.2 Soit n = 12 et e = 0000010101100. e(x ) = x 5 + x 7 + x 9 + x 10 et


peut tre factoris en 5( l + x 2 + x 4 + x 1) = x 5e'(x). Comme dege'(x) = 5, le
paquet est dtendue 6.
88 Vers un nouveau problme de dcodage

Le motif d erreur peut galement se reproduire de manire cyclique. En ce


cas, on dira que le paquet cyclique est dtendue l pour e si le degr
minimum de x ke(x) mod x n 1 est l 1 pour 0 < k < n :

l = 1 + min {deg x ke(x ) mod x n 1 : 0 < k < n)

E x e m p le 9.3 Soit n = 7, e = 0101100 et e(x) x + a:3 + x 4 = x ( l + x 2 + x 3)


est un paquet d tendue 4. Si on considre les dcalages

k 0, dege(a;)=4

k = 6, dega;6e(a;) mod x 7 1 = 3

est le plus petit degr et ltendue du paquet cyclique est 4


En revanche, pour e = 1000100 <-> 1 4- x 4, e(x ) est un paquet dtendue 5
mais ltendue du paquet cyclique est 4. En effet, x 3( l + x 4:) mod x 7l = 1-Dr3.

9.2 Vers un nouveau problme de dcodage

Pour linstant, on a toujours suppos que le vecteur d erreur le plus probable


est celui de poids minimal. Cette supposition repose sur lhypothse fondamen
tale que les erreurs apparaissent indpendamment les unes des autres. Dans
le cas des paquets d erreurs, cette supposition nest plus valide et il nous faut
changer de stratgie de correction.
Lors du dcodage classique, on a choisi comme chefs de classes les mots de
poids minimal de chacune des classes latrales. Ainsi, pour un code t-correcteur,
tous les mots de poids au plus t sont dans des classes latrales distinctes.
Pour la correction de paquets derreurs, on choisira comme chefs de classes
les motifs d erreurs dont ltendue des paquets est minimale.
De cette manire, un code linaire corrige des paquets d tendue L si tous
les paquets dtendue au plus L sont dans des classes latrales distinctes. En
rgle gnrale, si C est t-correcteur et corrige des paquets d tendue au plus L,
on a t < L, lingalit pouvant tre stricte.

E x em p le 9.4 On considre tous les motifs d erreurs de paquets cycliques


d tendue au plus 3 sur F^5 non nuls. Chaque motif derreur de ce type est :

e(x) = x ke'(x), pour 0 < k < 15


avec e'{x) G {1 .1 + x , l + x 2, 1 + x + x 2} <-> {100,110,101,111}

Comme \e'(x)\ = 4 et que 0 < k < 15, on a 4 15 = 60 motifs derreurs de ce


type.
Soit g(x) = 1 + x + x 2 + x 3 + x 6 le polynme gnrateur dun (15,9)-code
linaire cyclique. Ce code ne peut corriger que 3 erreurs. En effet, le nombre
Codes correcteurs de paquets d erreurs 89

de motifs derreur de poids au plus 3 est 576 ce quon obtient en utilisant le


lemme 3.1 :

tandis que le nombre de ses classes latrales est de 215-9 = 64. Comme il ny
a que 60 motifs d'erreurs ou 61 en comptant les mots du code eux-mmes -
de paquets cycliques dtendue au plus 3, ce code est un code qui corrige des
paquets cycliques d tendue au plus 3.
En effet, si on calcule tous les syndromes x ke'(x) mod g (x) pour 1) < k < 15
avec e'{x) G {1,1 + x, 1 + x 2, 1 4- x + x 2}, on observe que les syndromes sont
tous distincts en effectuant le calcul avec Maple par exemple.

9.2.1 Un premier rsultat

T horm e 9.2 Soit C un (n , k)-code linaire correcteur de paquets d tendue


dau plus L, alors
L < (ii k)

Preuve La preuve de ce thorme se fait par dnombrement des motifs d er


reurs dtendue dau plus L et en les comparant au nombre de classes latrales.
Il ne peut y avoir 2 motifs derreurs de paquets dtendue d au plus L dans
la mme classe latrale. Donc, il ne peut y avoir deux mots pour lesquels tous
les 1 apparaissent aux L premires positions dans la mme classe latrale. Le
nombre de tels mots est 2L. Il doit donc y avoir 2/j classes latrales distinctes
do le rsultat.

9.3 Dcodage

On peut concevoir un algorithme de dcodage pour rsoudre ce problme.


Soit y le mot reu cod au moyen d un code linaire cyclique correcteur de
paquets cycliques d tendue d au plus l engendr par g.

(1) calculer le syndrome S (x) = y(x) mod g(x) ;

(2) V* > 0, calculer Si(x) = x S (x) mod g(x) jusqu trouver j tel que
deg Sj (x) < l 1 ;

(3) le paquet cyclique d erreurs le plus probable est :

e{x) = x n~iS'j(x) mod x n 1

Exemple 9.5 Pour le code de lexemple prcdent, dcoder 1111001000010100.

S (x) = 1 + i + 2 + i 3 + i 6 + x 11 + x 13 mod g{x)


= 1 + X 3+ X 4+ X 5
90 Technique d entrelacement

51 (x ) = x S (x ) mod g{x) = 1 + x 2+ x 3 + x 4 + x 5
5 2 {x) = x 2S (x) mod g(x) = 1 + x 2+ x 4 + x 5
S',3(x) = x 3S (x) mod g(x) = 1 + x 2+ a;5
^(x) = x AS {x) mod g(x) = 1 + x2
avec deg S4 (x) = 2 < l 1. Le paquet cyclique derreur le plus probable est :

e(x) = x 15~lS/i(x) mod a:15 1 = x l l S/i(x) mod x 15 1 = x 11 + x 13

et le mot du code correspondant c(x) = w (x) + e(x) = 1 + x + x2 + x 3 + x6 <->


111100100000000.

9.4 Technique dentrelacement

Une technique pour corriger des paquets derreurs est celle de l entre
lacement.
Habituellement, la transmission sopre par lenvoi successif de mots du
code. La technique dentrelacement quant elle, considre la transmission de
faon diffrente. Soit la matrice dont les lignes rassemblent les t mots suivants :

x 11 X21 - * x ni
X l2 % 22 % n2

X | / X 21 Xni

Le plus souvent, les mots sont mis les uns la suite des autres, i.e. ligne par
ligne. La technique dentrelacement utilise un autre type d mission qui consiste
mettre les mots colonne par colonne, tous les premiers symboles des t mots,
puis tous les seconds symboles, etc. Cette technique permet la construction
dun nouveau code partir dun code C.

D fin ition 9.3 Soit C un (n, fc)-code linaire binaire. Le code obtenu par en
trelacement de t mots de C est le code entrelac de C de profondeur t.

L intrt de cette technique rside dans le fait que les erreurs affectant des
symboles conscutifs du code entrelac des mots de C vont entacher des mots
diffrents du code, condition que t soit choisi convenablement en fonction des
statistiques d erreurs observes sur le canal.

P r o p o s itio n 9.4 Soit C un (n,k)-code linaire binaire et t un entier. Le code


entrelac de profondeur t de C est un (n t, kt)-code.

On relie la technique dentrelacement la correction des paquets dtendue


d au plus L par la proposition suivante.

P r o p o s itio n 9.5 Soit C un (n , k)-code linaire sur F . Si C corrige lensemble


des paquets dtendue gale L, alors le code entrelac de profondeur t du code
C corrige lensemble des paquets dtendue gale Lt.
Codes correcteurs de paquets d erreurs 91

9.5 Technique dentrelacement avec retard

La transmission peut galement soprer avec une technique, dentrelacement


avec retard comme suit : soit C un (n, k)-code linaire sur F2. A partir de t mots
de C, on construit une matrice telle que la premire ligne est constitue de tous
les premiers symboles des t mots de C, la seconde ligne est constitue de tous
les seconds symboles des t mots de C dcals de r positions vers la droite par
rapport la ligne prcdente, la ie ligne est constitue de tous les ie symboles
des t mots de C dcals de r positions par rapport la ligne prcdente.

9.6 Si r = 1, on a la matrice

xn X12 ... x lt
Ar 21 22 x 2t- i X2t
A: Ar X 31 x 3t-

Ar Ar Ar - * %nl Xn2 x n3 ........ x nt

Avec la technique d entrelacement avec retard les colonnes de la matrice


prcdente sont mises successivement, les toiles sont remplaces par des zros
linitialisation du processus et les points sont remplacs par les t nouveaux
mots transmettre.

Exemple 9.7 Soit C le code de matrice gnratrice ^ id3 1 0 V^ . On met les


mots
ci = 100110 c4 = 010101
c2 = 010101 c5 = 100110
c3 = 111000 c6 = 111000
comme : ci; c2; c3; c4; C5; Cq. Avec un entrelacement de profondeur 3, on met

101,011,001,110,100,010

011,101,001,110,010,100
Avec un retard de 1 :
101011...
*011101...
* * 00 10 0 1. ..
* ** 1 1 01 1 0. . .
* * * * 100010 . . .
* * * * *010100...
on met

1 * * * * * , 00 * * * *, 110 * * *, 0101 * *, 11111*, 100000,...

Lintrt de cette technique est que jamais plus d un symbole dun mot du
code C ne se trouve dans un paquet d tendue gale n i + 1 , d o la proposition
suivante.
92 Technique d entrelacement crois

P r o p o s itio n 9.6 Soit C un code linaire sur F2 de longueur n. Si C corrige


Vensemble des paquets d tendue gale L ulors le code entrelac avec un retard
de r corrige l ensemble des paquets dtendue au plus gale L(rn + 1).

9.6 Technique dentrelacement crois

En pratique, le codage d un message fait souvent appel deux codes diff


rents. Par exemple, pour les disques compacts, on utilise deux codes construits
partir de codes de Reed-Solomon.
L entrelacement de profondeur t est trs utile dans ce cas.
Soit C\ un (ni, k\, t/jJ-code linaire et C2 un (ri2, k2 , d2)-code linaire. L en
trelacement crois de Ci et de C2 est ralis comme suit :

- on code les messages grce Ci ;

- on entrelace les mots du code avec une profondeur k>2 ; les colonnes
construites par cet entrelacement sont alors considres comme des mes
sages pour C 2 ;

- on code les nouveaux messages grce C2 ;

-les mots du code peuvent ensuite tre entrelacs avec une profondeur de t.

Le gros avantage de ce codage en deux tapes est le suivant : C'2 peut tre
utilis pour dtecter d? 1 erreurs plutt que pour corriger. Si des erreurs sont
dceles dans un mot de C2, alors tous les symboles de ce mot sont marqus
et traits comme des symboles potentiellement incorrects. On sintresse alors
aux mots de Ci- Observons que si lon sait que n d] -f 1 symboles d un mot
c Ci sont corrects, on peut toujours retrouver les di 1 symboles restants.
En effet, car pour tout autre mot c' G C i, d ne peut tre gal c sur les
n di + 1 symboles corrects car lensemble des mots de Ci doivent diffrer sur
au moins di positions. En consquence, si chaque mot de Ci contient au plus
di 1 symboles marqus et si on suppose que tous les symboles incorrects sont
marqus, alors les mots du code seront dcods correctement.
Quelle est ltendue des paquets qui peuvent tre corrigs par ce moyen?
On suppose C2 entrelac de profondeur s. On suppose de plus que chaque mot
de Ci et chaque mot de C2 est affect par au plus un paquet derreurs. Si un
paquet dtendue d au plus s(d2 1) apparat, alors il sera altr sur au plus
d2 I positions de chaque mot de C2. Toutes ces erreurs sont dtectes et tous
les symboles des mots du code affects seront marqus.
Si s < d] 1, alors chaque mot de Ci contient au plus di 1 symboles
marqus. Selon lhypothse que chaque mot du code nest affect que par un
seul paquet d erreurs (au plus), les symboles restants sont donc corrects. Par ce
qui prcde, on peut corriger les symboles marqus et on obtient le thorme
suivant
Codes correcteurs de paquets derreurs 93

T h orm e 9.7 Supposons que Von code par entrelacement crois de C i, un


(ni, ki, di)-code linaire, et de C'2, un ('2, Va, drfj-code linaire avec une pro
fondeur s < d\ 1. Si chaque mot du code rsultant est affect par au plus un
paquet derreurs, alors tous les paquets derreurs dtendue d au plus s(d 2 1)
seront dcods convenablement.

E xem ple 9.8 Soit C\ un (8,4,4)-code linaire de matrice gnratrice G y et C'2


un (6,3,3)-code linaire de matrice gnratrice G2

l 1110\
/ uo\
Id4 1101
G, = g2 = Id3 101
1011
\ 011/
V OUI/

On code les mots


mi = 1000
TO2 = 1100
777,3 = 1010

par entrelacement crois de Ci et de C2 de profondeur 6 = 3 = di 1.

ci = m x.Gi = 10001110
c2 = m2.G2 = 11000011
c3 = m3.G3 = 10100101

Lentrelacement de profondeur d2 = 3 nous donne :

111,010,001,000,100, 101,110,011

quon code ensuite par C2 :

ci = 111000 c'A= 000000 ci = 110011


4 = 010101 ci = 100110 ci = 011110
ci = 001011 ci = 101101

Le nouvel entrelacement de profondeur 3 donne lieu lmission des mots :

100,110,101,010.001,011,
011,000,001,011,010,001,...

ci et Cg seront entrelacs avec c'g provenant des messages m^nnrjne-


Daprs le thorme, en utilisant C 2 pour dtecter d2 1 erreurs et G] pour
corriger les symboles marqus, tous les paquets dtendue d au plus s(d 2 1) =
(d\ l)(d -2 1) = 6 peuvent tre corrigs.
Par exemple, supposons que les 6 premiers symboles transmis soient tous
incorrects :
011,001,101,010,001,011,
OU, 000,001, OU, 010,001,...
94 Technique d entrelacement crois

En retirant leffet du dernier entrelacement, on obtient les mots :

wx = 001000
w2 = 100101
w3 = 111011

Observons que, par rapport c[, c'2 et c'3 respectivement, chacun de ces mots
na des erreurs que sur les 2 premires positions. C2 dtecte les erreurs dans
chacun de ces trois mots en calculant leur syndrome w\H pour 1 < * < 3 qui
est non nul. On marque donc lensemble des 18 symboles en les remplaant par
des *.
En supposant quil ny ait pas dautre erreur et que nous navons pas d autre
symbole marqu, on retire finalement leffet du premier entrelacement :

C\ = ***01110
c2 = * * -*00011
C3 = ***00101

Il ny a quune seule faon de remplacer chaque symbole marqu par un 1


ou un 0 pour obtenir un mot du code et on retrouve ci, c2 et C3. Observons que
chacun des mots ci-dessus na que di 1 = 3 symboles marqus.
Pour retrouver le mot de longueur 3 au dbut de Ci, par exemple, on calcule
le syndrome pour tous les mots possibles de longueur 3 :

(1 1 1 0^
1 1 0 1
1 0 1 1
0 1 1 1

id4
V )
00001110 1 1 1
!
10001110 0 0 0 0)
01001110
11001110
00101110
10101110
01101110
11101110

Et on retrouve bien c\ qui tait le mot mis.


C h a p it r e 10

Introduction aux codes


convolutifs

Dans ce chapitre, nous proposons une brve introduction aux codes convo
lutifs. Ils diffrent des codes que nous avons vus prcdemment : ce ne sont
pas des codes en bloc. Il sagit en fait de codes longueur variable que nous
avions voqus dans le chapitre 1. fis sont intressants de deux points de vue.
Dune part, ils sont grandement utiliss pour sur-coder des messages cods
par blocs au pralable. C est notamment le cas pour certaines communications
satellitaires et surtout pour la norme GSM des tlphones cellulaires. D autre
part, ils sont la base des turbo-codes qui sont une gnralisation des codes
convolutifs et qui doivent tre utiliss dans la prochaine norme UMTS de tl
phones cellulaires. La grande particularit des turbo-codes est quils atteignent
la borne de Shannon sans que lon sache encore expliquer pourquoi. Un grand
effort de recherche est actuellement men pour tenter de dmontrer la raison
pour laquelle les turbo-codes sont des codes correcteurs d erreurs optimaux au
sens de Shannon.
Notre ambition dans cet ouvrage ne va certainement pas aussi loin. Nous
nous contentons de dcrire les codes convolutifs au moyen d un exemple simple
pour faire comprendre leur mcanisme de codage ainsi que lalgorithme de
dcodage conu par Viterbi [92]. Pour en savoir plus sur les codes convolutifs,
nous renvoyons le lecteur un ouvrage exhaustif rcent [51].

*
10.1 Elments de base

Soit F2 lalphabet binaire muni d une structure d anneau. Etant donn un


mot fini binaire m (ou une suite), on note m, sa ( * + l ) c lettre et |m| sa longueur.
On rappelle qu tout mot binaire m, on peut associer un polynme m (x) d une
indtermine sur lanneau des polynmes F2[x] par la bijection 6 :
0 O U
mtfm\m2 ...m k i> m,o + m\.x + m2.x + .. . + m*.x

Il sagit de la reprsentation polynomiale introduite dans le chapitre 8.

Exemple 10.1 Au mot m = 1011, on associe le polynme 1 + x 2 + x 3 et on


notera cette correspondance 1011 <-> 1 + x 2 + x 3.
96 Codage

Oprations sur les suites


L addition de deux suites binaires est la suite dfinie par laddition terme
terme modulo deux.
On sintresse lopration de convolution entre deux suites binaires a et
m note a * m :

0=

La suite <?- 1( l) est llment neutre du produit de convolution. En effet, la


convolution (a * l) j nest dfinie que lorsque i = j , i.e. (a * 1), = (o).t. Comme
la commutativit de lopration * na pas t dmontre, il faudrait vrifier de
manire analogue que (1 * a)i = (a )i.

L opration de convolution correspond au produit de polynmes. A la suite


binaire a de longueur k + 1, on associe par 6 le polynme a(x) = an + i x + . . . +
akx k et la suite binaire mn de longueur n + 1, le polynme m (x) = rtin -\-m\x-\-
. . . mnx n. Le polynme p {x) = a(x)m (x) aomo + . . . + E j = o aj m i - j ) x +
. . . + (Ylj=o aj m k+n~j)xk+n est de degr k + n et, par 6 1, est identique
la suite binaire (finie) a * m . Rciproquement; la suite a * m , on associe le
polynme p (x ).

E x e rcice 10.1 Montrer que lopration de convolution est associative, commu-


tative et quelle est distributive par rapport laddition.

C orrig

7=0 ajbi-3 ) * (c)fc = ( a o W aoboci + (ao6i + ai6o)on


J / i>0
flo^oc2 + (ao6i + ai>o)ci + (aob2 + fli 6i + fl2^o)co,. . . } = (ao^oCo,
ao(poCi + 61C0) + aioCo,
ao(6oC2 + bic + 62C0) + a i(6oC] + 61co) + (2260C0, - . . }
= (a)fc * (^Zjo ^ Ci~^)i>0

- a * 6 = (a 060,a 06] + a i60, . . . } = ( 60a0, 60ai + 61a0, . . . } = 6 * a

a* (6 + c) = {ao(6 o + co), 0 ( 6 1 + c) + a i (6 0 + co),. . . } =


( a060, a06i + a i 60, . . . } + ( a0c0, a0Ci + i c 0, . . . } = (a * 6) + (a * c)

10.2 Codage

On dfinit un code convolutif C au moyen de ses deux polynmes gnrateurs


p {x) et q{x) G F2[x] qui seront supposs premiers entre eux . Autrement dit,
il existe deux polynmes u (x) et v(x) tels que p (x).u (x) + q{x).v{x) = 1.

Le fait que les polynmes soient premiers entre eux assure que le dcodage se passe bien.
Introduction aux codes convolutifs 97

10.2.1 Codage dun message

Au moyen des deux polynmes gnrateurs p(x) et q(x), on peut coder le


message m (x) G F2[:r] en c(m (x)) G F2[x] x F2[x-] ; c (m (x)) sappelle le message
cod. L opration de codage est :

c (m (x)) = (p(x)m (x), q(x)m (x))

E xem ple 10.2 Avec p(x) = 1 + x 2 et q(x) = 1 + x + x 2 comme polynmes


gnrateurs, le message m (x ) = 1 + x 2 + x 3 sera cod en c(rn(x) ) = (1 + x 3 +
x4 + x5, 1 + x + x 5). Ou, exprim en mots, le message m = 1011 sera cod en
c = (100111,110001).

De cette manire, chaque bit du message, on associe un couple de bits


dans le message cod.

Dans la suite de ce chapitre, on illustre les diffrentes notions au moyen


du code convolutif engendr par les deux polynmes gnrateurs prcdents :
p(x) = 1 + x 2 et q(x) = 1 + x + x 2.

Exercice 10.2 Coder les messages :

m (x) = 1 + x 2

- m'(x) = l + x + x 2 + x 3 + . . . + x k = J2i=o

Corrig

- ((1 + X 2 ) ( l + x 2), (1 + x + x 2) ( l + x 2)) = (1 + x 4, 1 + x + x 3 + x 4)

((1+ x 2)m '{x), (1 + x + x 2)m '{x)) = (l+ x + .T fc K + x fc+2, l + (!Ci=2 x'l) + x k+2)

10.2.2 Ensemble des messages cods

Lensemble des messages cods C est donn par :

C = (c(m (x)) = (p (x )m (x ),q (x )m (x )) ,m (x ) G F2[]}

Un lment de C sera appel un mot du code.

Thorm e 10.1 C est un code linaire. En d'autres termes, la somme (com


posante par composante) de deux mots distincts du code est un mot du code.

Preuve c(m .(x))+ c(m '(x)) = (p (x )m (x ),q (x )m (x ))+ (jp (x)m '(x),q (x)m !(x)) =
(jp{x)(m(x) + m '(x)), q(x)(rn(x) + m '(x ) )) qui est le mot du code correspondant
au message m (x) + m '(x).
98 Codage

Pour transmettre un mot du code c (m (x)) F2\x\ x F2[x] au travers dun


canal (satellitaire, tlphonique), on convertit les polynmes obtenus en mots
binaires. Au lieu d mettre les deux mots binaires correspondant c(m (x)), on
transforme c(m (x)) = (cp(x ),c 9(x)) (avec cp(x) = J2i=oc%xZ ('Q(X) obtenu
de manire analogue et k le maximum des degrs de p(x) et de q(x)) en un
unique mot binaire c par entrelacement. Autrement dit, on envoie successive
ment les premiers termes CqC%, puis les deuximes termes CjC, les troisimes
clc q
2, .. . comme nous lavons vu dans le chapitre 9.
De cette manire, chacun des bits m o, m i, m2, . . . correspondant au mes
sage m, on peut associer les deux bits entrelacs correspondants au mot du
code c(m (x)). Ainsi, chaque bit rn, du message, on associe un couple de bits
entrelacs c2iC2i+i dans le message cod. Coder devient une opration sur les
mots binaires dont nous allons dcouvrir quelques proprits.

Exemple 10.3 Le message m (x) = 1 + x 2 + x 3 est cod en c(m (x)) =


(1 + x 3 + x 4 + x 5, l + x + x 5). Ou, exprim en termes de mots, le message
m = 1011 sera cod en c = (100111,110001). Aprs entrelacement, on aura :
11 01 00 10 10 11.

Exercice 10.3 Quels sont les mots binaires entrelacs mis pour :

m i(x ) 1 4- x 2 <-> 101

- m2{x) l x + x2 + x3 + ... + x k = 11... 1

Corrig

-1 1 01 00 01 11

-11 10 (01)fc- ] 10 11

Il est possible de calculer c 2; c 2i + i en fonction de m,i, m , - i , . . . , pour k


le maximum des degrs des polynmes gnrateurs.

mo c0 = p 0 m 0 Ci = qouio
mi c2 = pom i + P \ m 0 C3 = omi + rno
m2 c4 = pom 2 + p im 1 + p2m 0 c5 = q0 m 2 + i m i + q2 m 0

mk C2k = Pomk + .. + pkm 0 C2k+i qomk + . . . -1- qkm 0


1Tlk+ 1 C2 k+ 2 = Ponik+i + + Pkin 1 C 2fc+3 = q0m k + l + - - + qkT U i
(car P j = 0 pour j > k + 1) (car qj = 0 pour j > k + 1)

On en dduit que le codage peut se faire bit bit avec une mmoire borne
dau plus k + 1 bits.
Introduction aux codes convolutifs 99

10.2.3 Arbre de codage

Comme chaque bit du message (lentre) on peut associer les deux bits
correspondants du mot du code (la sortie), on peut construire un arbre binaire
potentiellement infini appel arbre de codage. Ses aretes sont tiquetes par
les mots binaires de la sortie (des lments de (F2)2). Dans cet arbre, lentre
permet de slectionner une branche et la sortie est dtermine par les tiquettes
des artes. Une entre nii = 0 prolonge le chemin sur larte de gauche et une
entre m, = 1 sur celle de droite. La figure 10.1 illustre le parcours de larbre
pour le mot d entre 1011.

Fig. 10.1 Parcours de larbre de codage pour lentre 1011.

Larbre de codage correspondant au code engendr par p (x ) = 1 + x 2 et


q{x) = 1 4- x 4 x 2 jusqu la profondeur 4 est prsent sur la figure 10.2.

Fig. 10.2 Premiers niveaux de larbre de codage ('p(x) = H i 2


et q(x) = 1 + x + x 2).

Comme le codage se fait bit bit avec une mmoire borne, il est possible
dengendrer larbre de codage potentiellement infini par un mcanisme fini.
100 Codage

Autrement dit, dans larbre de codage, la connaissance de N niveaux permet


de construire le niveau N + 1.

Remarquons que le nombre de sous-arbres possibles de hauteur N est born.


On dispose en effet de quatre tiquettes distinctes et ltiquette du fils gauche
doit tre distincte de celle du fils droit. Pour la profondeur 1, on a 4 3 = 12
sous-arbres possibles. Lorsquon fait crotre la profondeur p , on obtient que le
nombre de sous-arbres est major par 122' ~ 1. Une reprsentation finie possible
est la suivante : on construit un tableau indic par le numro des sous-arbres
et on indique pour chacun quel est le numro de son sous-arbre gauche et de
son sous-arbre droit. On en dduit alors une reprsentation finie de larbre.
Pour le dcrire, il suffit alors de donner le numro du sous-arbre gauche et du
sous-arbre droit de la racine. En pratique, si on fait un parcours en largeur de
larbre, on constate que le nombre de numros peut tre trs infrieur celui
donn par la borne.

10.2.4 Diagramme de transition dtats

Du fait que larbre de codage admet une reprsentation finie, il est, possible
de construire un diagramme de transition dtats ou codeur qui va fonctionner
(2 )
la manire dune machine de Mealy et permettre le codage dun message
fourni en entre . Ce diagramme nest autre quun graphe orient dont les arcs
sont tiquets par un couple valeurs dans F2 x (F2) 2. La premire composante
de ce couple reprsente le symbole lu sur le mot d entre (le message) et la
seconde composante le codage de ce symbole, c est--dire la sortie. De cette
manire, le codage dun message m pourra tre effectu la vole.
Chaque tat (ou sommet du graphe) du codeur va mmoriser les k derniers
bits lus sur lentre, k tant le plus grand degr des polynmes gnrateurs. En
fonction du nouveau bit lu sur lentre (de la gauche vers la droite), le codeur :

- change dtat ;

- renvoie la sort ie de deux bits correspondant la suite binaire entrelace du


mot du code pour le bit. lu sur lentre.

E x e m p le 10.4 Le diagramme de transition d tats pour le code engendr par


p(x) = 1 + x 2 et q{x) = 1 + x + x 2 est celui de la figure 10.3.

En faisant abstraction des tiquettes (bit lu et bits de sortie), le diagramme


de transition d tats est un graphe de De Bruijn 13(2, k). Il sagit du graphe
orient dont les sommets sont les mots binaires de longueur k. Ses arcs sont
dfinis par la relation dadjacence suivante : les voisins du sommet tiquet
sqSi . . . .s*, 1 sont les sommets dtiquettes S j . . . Sk_ 1a pour a 6 {0,1}.

(2)
Une machine de Mealy est un automate fini muni dune fonction de sortie sur les transi
tions [48].
Introduction aux codes convolutifs 101

10

Fig. 10.3 Diagramme de transition dtats.

En effet, si k reprsente le maximum des degr de p (x) et q(x), chaque tat


du diagramme de transition dtats est un mot de (F2)fc. Il comporte bien 2/,:
sommets. Le sommet *oSi s/t-i est reli S i . . . Sk j 0 et S i . . . 1.
En faisant abstraction des tiquettes, le diagramme de transition dtats est
bien isomorphe 13(2, k), une renumrotation des tats prs.

Coder revient prendre en entre le message bit aprs bit et retourner


la sortie tiquete sur les arcs du graphe. Cependant, pour que la sortie cor
responde la dfinition donne par les polynmes, il faut ajouter la fin de
lentre autant de zros que le degr du plus grand des polynmes gnrateurs.
Sur le diagramme de transition dtats, cela revient retourner ltat qui
nest compos que de zros (ou tat de dpart).

Exercice 10.4 Au moyen du diagramme de transition dtats prcdent, coder


le message m i(x ) = 1 + x 2 <-> 101.

Corrig Le mot du code correspondant est 11 01 00 01 11. Le cycle


dans le diagramme de transition d tats commence ltat 00 puis passe suc
cessivement dans les tats 10.01.10,01 et 00.

10.3 Capacit de correction

Le but du codage convolutif (ainsi que celui des autres codes correcteurs
derreurs) est de permettre la correction des messages cods lorsque ceux-ci
traversent un canal (satellitaire, tlphonique) qui peut ajouter des erreurs.
Le destinataire reoit un mot binaire r qui est la somme de la suite binaire
correspondant au mot du code mis c et de la suite binaire correspondant
lerreur e :
r = c+ e
Il doit alors dcoder r pour tenter de retrouver c.
Pour ce faire, le destinataire rsout le problme d optimisation suivant :
tant donn r, trouver le mot binaire c qui appartient au code telle que la
distance entre r et c soit aussi petite que possible. Si cette distance est nulle,
102 Capacit de correction

cela signifie que le message cod na pas t modifi. Ce procd se nomme


dcodage distance minimale.
La distance qui est utilise est la distance de Hamming. Rappelons que la
distance de Hamming entre deux mots binaires x et y de longueur n est dfinie
comme le nombre de positions o x et y diffrent.
On dfinit galement le poids dun mot binaire x comme sa distance de
Hamming au mot binaire 0 . . . 0 : w(.t) = d// (0 . . . 0, x).
Nous allons maintenant nous intresser au poids maximal de la suite der
reurs quun code convolutif peut corriger.

10.3.1 Distance libre du code

On considre tout d abord la distance libre du code convolutif C , note


d(C). Celle-ci, par dfinition, mesure la plus petite distance entre deux mots
distincts du code :
d (C )= min {dH(c,c ) }
c,c'^Cfc^cf

La distance libre peut galement tre dfinie au moyen du poids :

d(C) = min ( w ( c ) }
cC,ct&0

On utilise la linarit du code : si c, c' E C, c + c' G C et d#(c, c') =


dH{0 . . . 0, c + c') = w ( c + d).

La distance libre est le principal paramtre pour dterminer la capacit de


correction du code.

T h o r m e 10.2 Si on note t l ensemble de toutes les suites derreur de poids


infrieur ou gal t, un code convolutif C peut corriger tous les lments de t
si et seulement si d(C) > 21, o d(C) dnote la distance libre.

P reu v e Supposons d(C) > 21. On reoit le mot r alors que le mot du code c a
t mis. On dcode r en c G C, le plus proche mot du code de r pour la distance
de Hamming. Si r = c + e pour e G t , alors d//(r, c) < /.. Le mot du code c
satisfait aussi dn{r, c) < t. D o d#(c, c) < djj(r, c) + djj (c, r) < 2 1 < d(C), et
c = c.
Rciproquement, supposons que d(C) < 2t. Soient c et c' deux lments de
C tels que du(c, d ) = d(C). On dfinit r comme suit :

Ci pour tous les i tels que cL= di


c[ sur les t premires positions t.q. c* / c' si t < d(C)
toutes les positions pour lesquelles cL/ c' sinon
Ci sur les d(C) t positions restantes

On a d n (c,r) = t et d n {c',r) = d(C) t si t < d{C) ou d n {c,r) = d(C) et


d i/(c', r) = 0 sinon. On relve deux erreurs e et e' de t qui satisfont r = c + e =
d + d mais on ne sait pas comment dcoder r : une contradiction.
Introduction aux codes convolutifs 103

10.3.2 Calcul de la distance libre

Pour calculer la distance libre d un code convolutif partir du diagramme


de transition d tats, on utilise lalgorithme de Warshall [20], Celui-ci calcule
les distances minimales entre toute paire de sommets, ce qui va nous permettre
de dduire la distance libre du code. En effet, celle-ci peut tre dfinie au moyen
du poids des mots du code. Il nous suffit de calculer le minimum des poids des
cycles qui passent par ltat 0 . . . 0. La matrice dadjacence d du graphe est
initialise comme suit : lorsquil y a un arc entre i et j , la valeur d (i,j) est le
poids de ltiquette de la fonction de sortie ; quand il ny a pas d arc entre i et
j , d (i,j) = oc. et d(0,0) = oo. La fonction de mise jour de lalgorithme de
Warshall devient d {i,j) = min{d(z, j ) , d(i, l) + d(l, j ) } .
Algorithme 10.1 _________________________________________________________
fonction Carr (d) ; o d est la matrice dadjacence du graphe
pour i de 1 2fc 1
pour j de 1 2fc 1
si arc( i , j ) alors d ( i , j ) = poids de la fonction de sortie
sinon d(i,j) = oo
fsi ;
d{ 0,0) = oo
pour i de 0 2k 1 faire
pour j de 0 2fc 1 faire
pour l de 0 2k 1 faire
d (i,j) = min{ d( i, j) , d( i ,l ) + d ( l ,j )} ;
renvoie d

fonction Dist-LibreG = (V, E )


pour i de 1 [ogflV] 1)] faire
Carr (d) ;
renvoie d(0,0)

Exercice 10.5 Calculer la distance libre du code engendr par p(x) = 1 + x 2


et q(x) = 1 + x + x 2 ; en dduire le poids maximal des erreurs.

Corrig Une application rapide de lalgorithme donne la valeur de 5. Ce code


peut donc corriger des erreurs de poids au plus 2.

10.3.3 Calcul de la taille dune fentre de dcodage

H reste maintenant dterminer le nombre de bits conserver en mmoire


afin de mener bien le dcodage distance minimale. En d autres termes,
quelle va tre la taille (en bits) de la fentre qui va contenir une sous-suite de
la suite correspondant au message r et qui peut contenir une erreur ?
Pour assurer le dcodage, il suffit de considrer sur le diagramme de tran
sition dtats la longueur des cycles ayant pour origine le sommet 0 . . . 0 -et
104 Dcodage

autres que le cycle de longueur unit (qui correspond la boucle sur ltat
0 . . . 0). On pourra dcoder convenablement ds lors que le poids des tiquettes
de la fonction de sortie de lun des cycles sera strictement suprieur 2t (o t
correspond au poids de lerreur). On prend la longueur p du plus court cycle (en
termes de nombre d arcs) qui vrifie cette proprit et la taille l = 2p puisque
la fonction de sortie renvoie deux bits par arc.

Pour calculer p, on peut modifier lalgorithme de calcul de la distance libre


en calculant les produits successifs de la matrice mais pas par la mthode des
carrs successifs. Il suffit de prendre la valeur de lindice de boucle k ds que
<1(0,0) > 2t.

Exercice 10.6 Calculer la valeur de p et de t pour le code engendr par p(x) =


1 + x 2 et q (x) = 1 + x + x 2.

Corrig Appliqu au cas particulier, la premire affectation de d(0.0) est


convenable, aussi p = 2 et t. 2p = 4.

10.4 Dcodage

Afin de dcoder plus facilement quen cherchant parmi tous les mots du code
celui qui est le plus proche du mot reu, on construit un treillis. Pour ce faire,
on reprend larbre de codage dfini prcdemment puis :

- o n tiquette les sommets de larbre par les tats correspondants du dia


gramme de transition d tats ;

-on identifie les sommets de larbre qui portent la mme tiquette lorsquils
sont la mme profondeur en conservant les artes et les tiquettes.

De cette manire, la suite des tiquettes des artes d un chemin dans le


treillis correspond un mot du code.

Exemple 10.5 Le treillis correspondant larbre de codage de la figure 10.2


est illustr par la figure 10.4.

Il est possible dutiliser le treillis pour faire le dcodage distance minimale


dun message reu. C est lide de lalgorithme de Viterbi.
Celui-ci construit un mot du code c qui minimise la distance de Hamming
entre r et c. On se dplace dans le treillis de haut en bas en effaant tous les
sous-chemins qui ne peuvent tre prfixes du meilleur chemin dans le treillis.
Pour ce faire, on calcule la distance de Hamming entre r et le c correspondant
au chemin que lon est en train de construire. Quand on atteint le niveau 2,
on dispose de 4 sous-chemins (un par tat du diagramme de transition). Au
niveau suivant, on dispose de 8 sous-chemins (deux par tat du diagramme de
transition). Pour chacun des tats du diagramme de transition de ce niveau, on
Introduction aux codes convolutifs 105

F ig . 1 0 .4 Treillis du cod e ( p ( x ) = 1 + x 2 et q ( x ) = l + x + x 2).

ne conserve quun seul chemin : celui qui est le plus proche de r en calculant la
distance de Hamming entre chaque sous-chemin et r. On efface les autres car
ils ne peuvent mener un mot du code. On continue de cette manire jusqu
arriver la fin du mot reu r ltat 00, pour lequel on ne dispose que dun
chemin entrant. H suffit alors de remonter les niveaux pour obtenir le mot du
code le plus proche du mot reu.

Exercice 10.7 Appliquer lalgorithme de Viterbi au dcodage du message cod


10 11 11 au moyen du treillis de la figure 10.4.

Corrig Dans la figure 10.5 ne sont ports que les sous-chemins slectionns
par lalgorithme de Viterbi. Les distances de Hamming entre les sous-chemins et
le message reu sont indiques par les chiffres entours. Le chemin qui minimise
la distance et qui correspond au dcodage est indiqu en gras. En lisant le mot
qui tiquette le chemin en gras, on corrige le message reu en 11 01 11.

10

1
11 0o0
3
o
c

11

F ig . 1 0 .5 D codage par V iterbi du message 10 11 11.


C h a p it r e 11

Application des codes


correcteurs dans lindustrie

Ce chapitre dcrit quelques-unes des plus belles applications de la thorie


des codes pour les moyens de communications modernes. Nous y prsentons en
particulier le principe de fonctionnement des codes utiliss pour la correction
des erreurs dans les disques compacts ou mme des mini-disques, les codes
dtecteurs d erreurs utiliss dans les couches basses des rseaux informatiques
(CRC) et le principe de fonctionnement des diffrents codes correcteurs qui sont
mis en uvre pour les communications GSM. Nous terminerons le chapitre par
une prsentation des codes utiliss par les sondes Voyager qui nous ont transmis
des photos de plantes loignes, comme Jupiter et Saturne.

11.1 Code du disque compact

Les premiers enregistrements sonores datent du milieu du X IX e sicle avec


linvention du phonographe par T. Edison. Mais il faut cependant attendre les
annes 1940 pour que les enregistrements atteignent une qualit satisfaisante.
De rapides progrs sont accomplis grce linvention du microsillon en 1948,
puis la strophonie et enfin au stockage des informations audio sur bandes
magntiques. Au dbut des annes 1970 les premiers enregistrements num
riques sont raliss. L ide de numriser un signal audio ntait pourtant pas
rcente ; A.H. Reeves lavait invente en 1937.

Ds 1974, Philips et Sony tudient paralllement les possibilits de m


moriser des informations numriques sur un support lecture optique. Leurs
recherches aboutissent peu prs en mme temps au dbut des annes 1980.
Pour viter les problmes de standard, ces deux socits sallient pour crer un
unique standard, dsormais bien connu sous le nom de disque compact ou CD.

11.1.1 Numrisation de linformation

Le signal sonore se prsente sous la forme d une courbe amplitude/temps ;


la conversion analogique numrique de ce signal seffectue par deux oprations :
Ychantillonnage et la quantification.
108 Code du disque compact

L chantillonnage dun signal sonore consiste ne retenir que certains points


de la courbe amplitude/temps pour minimiser la quantit dinformation sto
cker. Il est ralis au moyen d un filtrage, en loccurrence grce un filtre
passe-bas qui limine les frquences suprieures une frquence de coupure de
44100 Hz. Les chantillons sont prlevs intervalles rguliers dans le temps et
ont une valeur sur un intervalle rel.

La quantification consiste discrtiser lintervalle rel en 2n points qui-


distribus, grce au Puise Modulation de A.H. Reeves, puis associer
chaque chantillon lindex du point le plus proche. On dit alors que lon quan
tifie chaque chantillon rel en un mot binaire de longueur n. Contrairement
lchantillonnage, la quantification entrane une perte d information, lerreur
commise sappelle le bruit de quantification. Il est possible de calculer partir
du bruit de quantification, le rapport signal/bruit selon la formule :

S/B = 6 ,2.n + 1, 76(dB)

o n est la longueur d un mot binaire. La quantification a t fixe un mot


binaire de longueur 16 pour le disque compact afin que le rapport signal/bruit
atteigne celui d une salle de concert avec une bonne acoustique, i.e. 98 dB selon
la formule ci-dessus.
Avec une frquence d chantillonnage du CD de 44100 Hz sur 16 bits pour
chaque canal strophonique, il faut 44100 16 2 = 1411200 bits pour reprsen
ter une seconde de signal audio. Le flot binaire engendr par la quantification
est segment en paquets de 6 chantillons appels trames. Une trame contient
6.16.2 = 192 bits, donc 24 octets. Afin de corriger d ventuelles erreurs au mo
ment de la reconstitution du signal sonore, chaque trame est code par un code
CIRC (pour code de Reed-Solomon entrelacement crois).

11.1.2 Prliminaires la prsentation du CIRC

On prsente tout dabord le notion de code t-raccourci. Le code raccourci


d un code C est obtenu en supprimant, pour chaque mot de C, les composantes
dont les indices appartiennent un ensemble fix. On considre seulement le
cas particulier de la dfinition suivante :

Dfinition 11.1 Le code t-raccourci d un code C est le code not C' qui est
lensemble des mots x t+\ . . . x n tels que 0 . . . 0xt+ i . . . x n G C.

Proposition 11.2 Le code C ', t raccourci dun (n ,k ,d ) code linaire C a pour


paramtres (n k ' , d') avec n = n t, k > k t et d ' > d.

E x e m p le 11.1 Considrons le (5 ,2)-code binaire dfini par la matrice gnra


trice :
A 1 0 1 l\
(l 0 1 0 0/
d ensemble de mots : {00000,11011,10100,01111}. Le code 1-raccourci associ
C ' de paramtres (4,1) est compos des deux mots : {0000,1111}.
Application des codes correcteurs dans lindustrie 109

P ro p o sitio n 11.3 Soit C' le code t-raccourci dun code de Reed-Solomon de


paramtres (n , k, d), C' a pour distance minimale d.

P reuve C ' est un code t-raccourci, n' = n t. k colonnes d une matrice g


nratrice dun Reed-Solomon sont linairement indpendantes. Si t < k, k t
colonnes d une matrice gnratrice dun Reed-Solomon sont linairement in
dpendantes donc k' = k t. Par la borne de Plotkin, d' < n' k' + 1, or
n' k' + 1 = n k + 1, do d' < d. C' est un code t-raccourci, d aprs la
dfinition, d < d' , donc d = d'.

E xem ple 11.2 Considrons le code de Reed-Solomon de paramtres n =


255, k = 251 et d = 5. Son polynme gnrateur est g (x) = (x a )(x
a2)(x a 3)(x a4) pour a un lment primitif de F2s. Il est possible, partir
de ce code, de construire deux codes raccourcis. Le premier, not Ci a pour
paramtres rix = 28, k i = 24, le second C2 a pour paramtres n2 32, fc2 = 28.
La distance minimale de chacun de ces deux codes est de 5.

11.1.3 Code de Reed-Solomon entrelacement crois (CIRC)

Le CD comme tout autre support qui manipule de linformation est soumis


diverses perturbations. Les sources d erreurs sont multiples, rayures, pous
sires, voile du disque, interfrences, etc. Il est donc ncessaire pour restituer
un son de qualit d utiliser un mcanisme de correction derreurs adquat, en
loccurrence un code de Reed-Solomon entrelacement crois. Aprs la conver
sion analogique-numrique, linformation est reprsente par un flot binaire
segment en trames de 24 octets. Chaque trame est code par un code sur F2s
not Ci de paramtres (28,24,5), code raccourci du Reed-Solomon (255,251,5).
Les mots de longueur 28 ainsi obtenus sont entrelacs avec un retard de 4. Aprs
entrelacement, les mots sont cods par un code sur F2s not C2 de paramtres
(32,28,5), code raccourci du Reed-Solomon (255,251,5). La trame code par le
CIRC comporte donc 32 octets. Lintrt de lutilisation de ce code rside dans
sa capacit de correction. Pour plus de dtails, le lecteur intress pourra se
reporter [99].

11.2 Code des CD-ROM

On pourrait penser que les CD-ROM disposent de la mme technique de


codage que les CD audio. Il nen est rien. Bien que reposant sur les mmes
principes, le code correcteur d erreur des CD-ROM est beaucoup plus labor.
La raison est assez vidente : une erreur sur un CD audio peut tre seulement un
claquement inaudible. Cependant, une erreur sur un CD-ROM peut engendrer
des consquences beaucoup plus graves, comme la perte de ses donnes. Un
deuxime mcanisme de dtection et de correction derreurs est employ. Nous
ne le dtaillerons pas ici.
110 Code du minitel

11.3 Code du minitel

Le minitel manipule des informations transmises par le rseau tlphonique.


Celles-ci sont soumises des perturbations, en particulier sous leffet des intem
pries, par exemple de la foudre. Cependant, les statistiques effectues montrent
quil sagit d un faible taux derreur. Ainsi, plus de la moiti des pages mal
transmises ne comportent quun seul caractre erron. Le faible taux derreurs
de transmission permet lutilisation dun code de Hamming. Aprs la conver
sion analogique numrique, linformation se prsente sous la forme dune suite
de paquets de 15 octets soit 120 bits. Chaque paquet est cod par un code de
Hamming binaire de longueur 127, de dimension 120 et de distance minimale 3.
Un 16e octet est construit en ajoutant aux 7 bits de contrle un bit de parit.
Enfin, un 17e octet est rajout. Ce dernier octet ne comportant que des zros
est appel octet de validation. Il est utilis pour dtecter des perturbations
importantes sur la ligne. Aprs lutilisation du codage, on dispose donc de 17
octets (voir [76] pour plus de dtails sur le code du minitel).

11.4 Codes des rseaux informatiques

Dans un rseau informatique, tels les rseaux locaux ou mme le rseau


Internet, les donnes sont morceles et transmises sous la forme de paquets.
Ceux-ci peuvent subir des altrations. Cela peut se produire cause dinterf
rences lectriques ou thermiques. De telles altrations au niveau du canal sont
rares, mais ncessitent cependant un mcanisme de dtection des erreurs. Ce
mcanisme est connu sous le nom de CRC ( Cyclic Redundancy Check)

11.4.1 C y c lic R ed u n d a n cy C heck

On note m {x) le polynme associ au message que lon souhaite transmettre


au moyen de sa reprsentation polynomiale. Par exemple, le polynme associ
au message 10011010 est m (x) = x 7 + x 4 + x 3 + x. Le but du CRC est dajouter
de la redondance m(x) de telle sorte que c(x), le message envoy (ou mot du
code) soit un multiple de g{x), polynme gnrateur du CRC.

Le codage se fait de la faon suivante : soit k le degr de g { x ) , polynme


gnrateur du CRC. On multiplie m ( x ) par x k puis on calcule r(x), le reste
de la division euclidienne de x k r n ( x ) par g (x ). Le message cod est alors
c ( x ) = x k r n ( x ) + r ( x ) . En effet, puisque x k m ( x ) = r ( x ) mod g ( x ) , on a bien
x k m ( x ) + r ( x ) comme multiple de g ( x ) . On a ajout k + 1 bits de redondance
au message.

E x e m p le 11.3 Avec m (x) = x 7 + x 4 + x 3 + x et g(x) = x 3 + x 1 + 1, on a


x k m (x) = x 10 + x 7 + x 6 + x 4 et r(x) = x 2 + 1 ce qui correspond 101 et
c(x) = x k m (x) + r(x) = x 10 + x 7 + x6 + x 4 + x 2 + 1. Le message cod qui est
transmis est alors 10011010101.
Application des codes correcteurs dans l industrie 111

La dtection d erreurs est alors trs simple. Il suffit de calculer le syndrome.


Comme pour le dcodage des codes cycliques, celui-ci est le reste de la division
euclidienne entre m (x), le signal reu, et g(x), le polynme gnrateur. Sil ny a
pas eu derreur de transmission, c est--dire lorsque le syndrome est nul, lerreur
e(x) est elle aussi nulle. Autrement, si le syndrome est non nul, le destinataire
en dduit quil y a eu une erreur de transmission et demande la rediffusion du
paquet erron.

11.4.2 Choix du polynme gnrateur

Comme pour les codes cycliques, le choix du polynme gnrateur est cru
cial. Il faut en effet que e(x), le polynme de lerreur, ne soit pas un multiple
de g(x), le polynme gnrateur. Par exemple, si une seule erreur est apparue,
e(x) = x 1. En choisissant g(x) de telle sorte de les coefficients x k et a:0 soient
non nuls, e(x) ne peut tre multiple de g(x). On a alors les proprits suivantes
pour la dtection des erreurs.

P roprit 11.4

-O n peut dtecter les erreurs de poids un si les coefficients x k et x de g{x)


sont non nuls.

-O n peut dtecter les erreurs de poids deux si g(x) admet un facteur ayant
au moins trois termes.

-O n peut dtecter un nombre impair derreurs si g(x) contient le facteur


(x + 1) .

-O n peut dtecter un paquet d erreur dtendue au plus k.

Pour les rseaux informatiques, on utilise six polynmes gnrateurs qui


sont lists dans le tableau suivant :

CRC-8 x8 + x2 + X + 1
CRC-10 x 10 + x9 + x 5 + x4 + x + 1
CRC-12 x 12 + x 11 + x 3 + x2 + 1
C RC-16 x 16 + x 15 + x 2 + 1
CRC-CCITT x 16 + x 12 + x 5 + 1
CRC-32 x32 + x 26 + x 23 + x 22 + x 16 + x 12 + x n +
x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1

Lalgorithme du CRC peut tre implant trs facilement au moyen de re


gistres linaires comme dcrit dans la section 8.5 du chapitre 8. Pour plus de
dtails, le lecteur intress pourra se reporter [25].
112 Codage de la parole du GSM

11.5 Codage de la parole du GSM

Aprs lanarchie du dbut des annes 1980 o chaque pays d Europe expri
mentait son propre systme de tlphonie mobile, une tude franco-allemande
a t initie en 1981 pour le dveloppement d une approche commune. Celle-ci
a dbouch sur la cration d un groupe d tude appel Groupe Spcial Mobile
dont le but tait le dveloppement d un systme europen de communication
mobile. Les objectifs taient multiples et incluaient une bonne qualit subjec
tive de la parole, un cot de service et de terminaux minimal et une possibi
lit dextension des services. La premire phase de spcification de ce groupe
d tude a t publie en 1990 et la commercialisation a suivi rapidement. Les
quelque 8000 pages de recommandations pour amliorer la flexibilit et linno
vation et proposer des standards sont disponibles auprs de lETSI (European
Tlcommunication Standards Institute).

Signal de parole
_____________ T______________

Code
(codage de source :
numrisation du signal)

________ Y________
codage de canal
(protection contre
les erreurs)

; _____________ T_____________

entrelacement

_____________ T______________

multiplexage et
construction de burst

chiffrement

T
modulation

Fig. 11.1 Chane de transm ission du G SM .

Les concepteurs du GSM ont choisi un systme numrique indit lpoque


en faisant le pari de la compression de donnes. Dans cet ouvrage, nous nous
restreindrons aux codes correcteurs d erreurs qui suivent la numrisation de la
parole dans la chane de transmission. Nous prsentons dans la figure 11.1 la
chane de transmission du GSM dont nous allons prsenter plus prcisment les
composants encadrs.
La figure 11.1 illustre la plupart des traitements quil faut placer dans un
systme de communication optimis.
Application des codes correcteurs dans l industrie 113

D aprs la thorie de linformation, la transmission d une information sur un


canal bruit doit mettre en uvre un codage de source (le code) et de canal
qui assure la protection contre les erreurs. Des techniques cryptographiques
adquates permettent d assurer un service de confidentialit.

11.5.1 Prsentation gnrale du codage de la parole

La figure 11.2 prsente les diffrents traitements subis par une trane de
parole de 20 ms.

signal de parole

^ code de parole ^

260 bits

^ codage de canal ^

456 bits

^ entrelacement

affectation des
C ntervalles de temps.

F ig . 1 1 .2 Traitem ents subis par une tram e de parole.

Le signal analogique de la parole est considr comme une fonction du temps


dont le spectre est limit la bande passante de [300-3400] Hz qui est suffisante
pour la voix. Ce signal doit tre numris pour former des blocs de 260 bits qui
sont ensuite ordonns pour former une partie critique de 182 bits et une partie
complmentaire de 78 bits. Un codage convolutif est appliqu sur la premire
de ces deux parties qui sont ensuite recombines pour former des blocs de 456
bits ou paquet. Cette transformation en paquets introduit, un dlai de 20
ms. En effet, pour traiter un paquet de parole de 20 ms, il faut quil ait t
entirement reu.
Pour en assurer la transmission, la solution la plus simple serait de diviser
chaque paquet en quatre lots (ou burst dans la terminologie du GSM) de 114
bits et de les transmettre dans quatre trames conscutives. Cette solution na
pas t retenue. On a cherch taler au maximum la transmission d un paquet
de parole dans le temps. La transmission seffectue donc dans huit trames.
Chaque demi-lot du paquet de parole numro i est combin avec un demi-lot
114 Codage de la parole du GSM

de la trame de parole numro i 1 ou avec un demi-lot de la trame numro


i + 1 (fig. 11.3). De cette manire, on arrive transmettre un lot complet dans
un intervalle de temps.

260 bits

182 78

50 132
i i
i i
53 132 4

convolutif i
3 7 8 bits 78

paquet i- 1 8 demi-lots paquet i + 1


T O I ^ I tIIstIItIItI lil|^|^|^|^|57l|57l|57l | ^ | ^ | ^ | l|
\ \ N

C entrelacement

Fig. 11.3 C orrection des erreurs.

11.5.2 Code de la parole


Une trame analogique de 20 ms est chantillonne 8 kHz, chacun des 160
chantillons tant quantifi uniformment sur 13 bits. Aprs un prtraitement,
le signal est analys pour extraire les coefficients dun filtre LPC (short terni
Linear Predicitve Coder). Le signal rsiduel est ensuite spar en quatre sous-
trames de 40 chantillons pour subir une analyse LTP (Long Term Predicion)
qui sert reproduire les frquences fondamentales de la voix. Enfin, il reste
dterminer le signal dexcitation qui, fourni en entre du filtre linaire global
(LPC+LTP), reproduira au mieux la parole.

11.5.3 Codage du canal


Le contrle des erreurs fait appel deux mcanismes dcrits dans des cha
pitres prcdents :

- les codes en bloc cycliques utiliss en dtection ;

- les codes convolutifs qui assurent une bonne correction des erreurs.

Rappelons que le code de la parole fournit un bloc de 260 bits pour chaque
tranche de 20 ms du signal. On a dtermin exprimentalement trois catgories
o les bits de ces blocs ont une importance plus ou moins grande :
Application des codes correcteurs dans lindustrie 115

- 50 bits de classe la qui sont les plus sensibles aux erreurs ;

132 bits de classe Ib qui sont modrment sensibles aux erreurs ;

- 78 bit de classe II qui sont peu sensibles aux erreurs.

On ajoute aux bits de la classe la un code cyclique de redondance (CRC,


Cyclic Redundancy Check) qui sert la dtection des erreurs. Celui-ci est un
code de dimension 3 engendr par le polynme x 3 + x + 1. De cette manire, si
une erreur est dtecte, la trame est considre comme trop altre pour tre
comprhensible et elle est efface. Elle est remplace par une version lgrement
modifie de la trame prcdente. Ces 53 bits, ajouts aux 132 bits de la classe
Ib et 4 bits de queue (soit 189 bits au total), sont fournis en entre d un code
convolutif engendr par les polynmes Go = x 4 + x 3 + l et G\ = x 4 + x 3 + x + l.
A la sortie de ce codage convolutif, on obtient 378 bits (la longueur a doubl)
de classe I auxquels on ajoute les 78 bits de classe II qui nont pas subi de
codage. Notre bloc de 260 bits de dpart a t cod en 456 bits.

Pour protger ces 456 bits des erreurs par paquets, on effectue ensuite un
entrelacement. Les 456 bits sont diviss en 8 blocs de 57 bits qui sont transmis
dans 8 sous-blocs (ou demi-lots) successifs, A q, . . . , A 7 (fig. 11.4).

1 b 0 bl b 2 b 3 b 4 b 5 b 6 b 7

2 b 8 b 9 b 10 b ll b 12 b 13 b 14 b 15

3 b 16 b 17

56 b 440 b 441 b 442 b 443 b 444 b 445 b 446 b 447

57 b 448 b 449 b 450 b 451 b 452 b 453 b 454 b 455

Aq Al a2 a3 a4 a5 a6 A7

8 demi-blocs

F ig . 1 1 .4 Schm a d entrelacem ent.

Chaque sous-bloc est ensuite associ avec un sous bloc de la trame de parole
prcdente (pour les sous-blocs 0,1,2 et 3) ou de la trame suivante (pour les
sous-blocs 4,5,6 et 7). Cet entrelacement cheval est appel diaqonal.
La dernire tape de l'entrelacement consiste mlanger lintrieur dun
lot, les deux sous-blocs. Au lieu dassocier un des deux champs dinformation
chaque sous-bloc, on prfre intercaler finement les deux parties. Ainsi les bits
116 Codes de transmissions satellitaires

pairs d un lot vont correspondre une trame de parole (la plus rcente) et les
bits impairs la trame de parole prcdente.
Il s'agit du schma gnral et certains dtails ont t laisss de ct. Le
lecteur intress pourra se reporter [59] pour plus d'informations.

11.6 Codes de transmissions satellitaires

Nous prsentons dans cette section les codes utiliss par les sondes Voyager.
En 1977, ces sondes sont alles prendre des photos de Jupiter et de Saturne,
des distances de plusieurs millions de kilomtres. Pour cela, nous nous sommes
inspirs de [95].
Les signaux mis taient de deux types :

-d e s images construites comme des tableaux de 800 x 800 pixels avec des
couleurs sur 8 bits ;

des donnes GSE ( General Science and Engineering).

Du fait de la forte perturbation du canal, les codages mis en uvre pour


ces donnes taient diffrents. Les donnes GSE, plus sensibles, ont requis un
codage par blocs en utilisant le code de Golay suivi d un codage convolutif.
Le codage des images a t ralis seulement par codage convolutif. Le schma
gnral de codage est prsent figure 11.5.

Fig. 11.5 Codages de Voyager.

11.6.1 Codage de Golay

Le code utilis ici est celui de Golay de paramtres (24,12). Il a t prsent


dans le chapitre 6. Nous en rappelons brivement les proprits.
Application des codes correcteurs dans lindustrie 117

(1) C'24 est de paramtres (24,12,8) ; il comprend 212 = 4096 mots du code ;

(2) Une matrice de contrle de C'24 est la 24 x 12 matrice

t(B)
v i< w

o B est la 12 x 12 matrice dfinie dans le chapitre 6.

(3) Une autre matrice de contrle de C'24 est la 24 x 12 matrice

Chacune de ces deux matrices permet de dcoder C24-

(4) Une autre matrice gnratrice de C'24 est la 12 x 24 matrice ( B Tdj 2) ;

(5) C'24 est autodual ;

(6) C'24 est un code correcteur de 3 erreurs.

11.6.2 Codage convolutif

Le codage des donnes GSE prcodes au moyen du code de Golay tendu


ainsi que les images se fait au moyen d un code convolutif appel Planetary
Standard. Ce dernier est engendr par les polynmes

r g\ (x) = 1 + x + x 3 + x 4, + x e
\ 9 2 {x) = 1 + x s 4- x 4 + X 5 + X-6

Il a une distance libre de 10 et une taille de fentre de dcodage de 3 bits.

Le choix des paramtres a t dict par le canal et de manire minimiser le


temps de dcodage par lalgorithme de Viterbi. En effet, lalgorithme de Viterbi
a une complexit qui crot exponentiellement selon le degr des polynmes.
Cest la raison pour laquelle les polynmes gnrateurs sont de faible degr.
Q u a t r i m e p a r t ie

Complexit
C h a p it r e 12

Thorie de la complexit

Ce chapitre est une brve introduction la thorie de la complexit. Cette


thorie a pour but de ranger les problmes algorithmiques dans des classes
de complexit selon lefficacit des meilleurs algorithmes qui permettent de les
rsoudre. Nous dcrivons ici deux classes principales relatives aux machines de
Turing : celle du temps polynomial pour des modles dterministes et celle du
temps polynomial pour des modles non dterministes.

La thorie de la complexit est une discipline rcente. Les premiers pas ont
t faits avec Rabin, McNaughton et Yamada dans les annes 1960 puis en 1965
nat le terme complexit dfini par Hartmanis et Stearns [42]. Ils introduisent
le cadre formel de la complexit en utilisant des modles abstraits de machines
et proposent les premiers rsultats sur la structure des classes de complexit.
Edmonds dfinit en mme temps la notion de bon algorithme comme celle
dun algorithme dont le temps de calcul est born suprieurement par un po
lynme fonction de la taille du codage de lentre.
En 1971, Cook introduit les termes P et NP; il montre la NP-compltude
du problme de la satisfiabilit des formules boolennes et que tous les pro
blmes NP-complets se rduisent au problme de la satisfiabilit des formules
boolennes.
En 1972, Karp utilise la notion de rduction en temps polynomial pour
montrer que 21 problmes sont NP-complets.
Depuis, une des grandes conjectures de linformatique thorique est de d
terminer si P = NP. C est dailleurs un des problmes du millnaire dont
la rsolution est mise prix un million de dollars par la fondation Clay
(www.claymath.org). Cette conjecture pose que tout langage accept par un
algorithme non dterministe en temps polynomial lest galement par un algo
rithme dterministe en temps polynomial.

Pour mieux comprendre le sens de cette conjecture, il est temps dintroduire


quelques dfinitions.

12.1 Problmes de dcision, de calcul et leur codage

Dans la suite, on appellera problme la description gnrale d une tche et


donne dun problme une entre particulire.
122 Problmes de dcision, de calcul et leur codage

E x e m p le 12.1 Le problme de la factorisation d entiers est soit de trouver


un facteur m (non trivial) dun entier n soit de dterminer quil nen existe
pas, auquel cas n est premier. Une fois la valeur de n fixe, si on cherche sa
factorisation, n constitue la donne du problme de la factorisation.

Le terme de donne est employ pour dcrire lensemble des informations qui
doivent tre spcifies pour dcrire le problme. Dans le cas de la factorisation,
il sagit tout simplement de lentier n. Pour le problme de la satisfiabilit
des formules boolennes qui est voqu la fin de ce chapitre, il sagira dun
ensemble de variables boolennes et d un ensemble de clauses.
Observons que dans le cas du problme de la factorisation, pour une donne
fixe, on attend un rsultat : m, facteur de n, ou bien une garantie de sa
primalit. D sagit d un problme de calcul.
Cependant, pour dfinir les classes de complexit, on ne sintresse pas au
rsultat dun calcul mais sa dcidabilit. En d autres termes, une fois pose
la donne d un problme, on se pose une question dont les seules rponses
possibles sont oui et non.

E x em p le 12.2 Le problme de la parit revient dcider si un entier donn n


est pair ou non. Une fois quon a fix une valeur particulire pour n et quon
demande si cette valeur particulire est un entier pair, on a dfini le problme
de la parit. Ce problme peut snoncer comme suit :

Donne n un entier ;
Question n est-il pair ?

Une fois quun problme est formul de cette manire, il sagit d un problme
de dcision. Reste le coder sous la forme dun langage.

Codage dun problme de dcision

Le but de ce codage est de transformer un problme de dcision en un lan


gage. On ramne ainsi un problme de dcision un problme dappartenance.
Prenons par exemple le problme II de la parit. Ses donnes positives (les
entiers pairs pour lesquels la rponse la question est oui) sont codes sur
lalphabet {0 ,1 } par le langage :

L(U) = {m E {0 ,1 }* , m = 0 ou m = lm'O avec m! E {0 ,1 }* }

De cette manire, il est plus ais de parler des donnes positives du problme
qui concident avec lensemble des mots qui appartiennent (II).
On parlera donc indiffremment d un problme de dcision ou du langage
correspondant [35]. Pour dcider un problme, on va modliser le fonctionne
ment de lalgorithme qui le rsout au moyen des machines de Turing.
Thorie de la complexit 123

12.2 Machines de Turing dterministes

Afin de formaliser la notion d algorithme, on se donne un modle prcis,


celui des machines de Turing dterministes un ruban bi-infini (fig. 12.1).

- 3 - 2 - 1 0 1 2 3
^ ruban
>
tte de lecture/criture

machine d tats finis unit de contrle

Fig. 12.1 Une machine de Turing.

Un programme d une machine de Turing dterministe regroupe les informa


tions suivantes

- un ensemble fini T de symboles de ruban ;

-un ensemble fini E de symboles dentre tel que E C T ;

- un symbole particulier B, le symbole blanc, B G T \E ;

- un ensemble fini Q d tats contenant un tat initial distingu o et deux tats


de reconnaissance distingus, qy et <pv ; le premier est ltat d acceptation
et le second ltat de rejet ;

-une fonction de transition 5 : Q\{qy, (/k } x (E U {B }) (Q x T x {<,

Lexcution d un tel programme se droule alors selon des intervalles de


temps discrets de la manire suivante : au dpart, lentre de la machine est
compose dun mot i E * inscrit dans les cases du ruban raison d une lettre
par case. Le programme commence son excution dans ltat initial go avec la
tte de lecture/criture positionne sur la premire lettre de E. Si ltat courant
devient qy, ltat dacceptation, ou c/jv, ltat de rejet, le calcul sarrte. Si ltat
courant est q G Q \ {q y ,q N } et que la tte de lecture/criture est positionne
sur le symbole s G E, et que 6(q, s) = (q', s', A ), la machine de Turing remplace
la lettre s par la lettre s1, passe dans ltat ' et dplace sa tte d une case
droite si A dune case gauche si A =< et reste stationnaire si A = .
Le modle des machines de Turing que nous proposons peut tre enrichi de
diverses manires. En particulier, on peut augmenter le nombre de rubans. Dans
ce cas, on associe une tte de lecture/criture chacun des rubans. Chaque tte
peut se dplacer indpendamment des autres en accord avec la fonction de tran
sition. Nous allons utiliser des machines deux rubans dans les exemples de ce
chapitre. On admettra quil est toujours possible de simuler le fonctionnement
dune machine de Turing plusieurs rubans par une machine un seul ruban.
Pour plus de dtails, la lecture de [48] ou de [97] est conseille.
124 Machines de Turing dterministes

t= 0 t = l

|E \BaaaaB |E \BBaaaB [~\BBaaaB |R \BBaaaB R BBaaaB


B1B B1B B11B B lllB B111B

R BBaaaB |E ^BBaaaB \E \BBBaaB E BBBBaB E BBBBBB


B lllB B lllB B lllB B lllB B lllB
t=10

Fig. 12.2 Fonctionnement de la machine sur lentre aaaa.

E x e m p le 12.3 On construit une machine de Turing dterministe deux ru


bans qui accepte le langage des mots sur lalphabet { a} dont la longueur est
un carr parfait strictement positif.
Initialement, le ruban 1 contient le mot x G { }* et le ruban 2 est initialis
avec le mot 1.
Dans le fonctionnement de la machine, on distingue diffrentes tapes ; chaque
tape regroupe plusieurs transitions. Le contenu initial des rubans marque le
dbut de ltape 1.
A ltape i, la valeur 2i 1 est inscrite en base un sur le ruban 2. L ide est
deffacer autant de a sur le ruban 1 quil y a de 1 sur le ruban 2. Si ltape i
on efface tous les a restants, cest que la longueur du mot dentre est un carr
parfait (|| = i2). En effet, la fin de ltape 1 on a effac un a, la fin de
ltape 2 on a effac trois a de plus et, la fin de ltape i, on efface 2i 1
a supplmentaires. Si on compte le nombre total de a effacs au cours des i
tapes, on obtient X q= x(2i 1) = 2-
Pour passer de ltape i ltape i + 1, on concatne 11 au mot inscrit sur le
ruban 2. On numre ainsi les premiers nombres impairs (1,3,5,... ) qui donnent
le nombre de a quon doit effacer sur le ruban 1.
La fonction de ti'ansition est dcrite ci-dessous; la colonne tat dcrit ltat
courant de lunit de contrle, Lr est le symbole lu sur le ruban r par la tte
de lecture/criture, nouv. tat est ltat suivant de lunit de contrle, E r le
symbole crit par la tte sur le ruban r et A r le sens du dplacement de la tte
sur le ruban r.

tat L1 L2 nouv. tat El E2 Al A2


E a 1 E B 1 > ->
E B 1 Qn B 1
E B B Qy B B - -
E a B A a 1 >
A a B R a 1 - <-
B a 1 R a 1 <
R a B E a B - -

E est ltat initial, qy celui dacceptation, c/v celui de rejet. Les autres tats
sinterprtent comme suit : E o 011 efface autant de a que de 1, A avant et aprs
Thorie de la complexit 125

lequel on ajoute 1 au ruban 2 pour mettre jour le nombre de a effacer et


R pour retourner au dbut du ruban 2. La figure 12.2 dcrit le fonctionnement
de la machine sur le mot aaaa.

D finition 12.1 Le langage des mots accepts par une machine de Turing M
est dfini par :

L( M) = (G E* : le calcul de M sur lentre x mne ltat d acceptation}

Observons que dans la dfinition 12.1, M ne sarrte pas forcment pour


toutes les entres x mais coup sr pour les x de L( M) . Si x G E* \L(Af ), alors
le calcul de M sur lentre x soit termine dans ltat de rejet, soit continue sans
jamais sarrter, soit nest pas dfini. Cependant, pour que le programme dune
machine de Turing corresponde notre notion dalgorithme, il doit sarrter
sur toutes les entres x dans lun des deux tats finals qy ou c/a' On dit que de
telles machines de Turing dcident lappartenance de x L( M) .

Dfinition de la complexit en temps

Pour mesurer le temps d un calcul en fonction de la longueur du mot dentre


x, note |aj, on compte le nombre dtapes de calcul de la machine de Turing
qui ont t ncessaires pour que celle-ci entre dans un tat final. Ainsi, pour
une machine de Turing M qui sarrte sur toutes ses entres, la fonction de
complexit en temps Tm est dfinie par :

TM : N >N
n i max { t : 3x E E* tel que |x |= n et pour lequel
le calcul de M sur lentre x sarrte aprs t transitions}

On dit quune machine M travaille en temps polynomial sil existe un polynme


p tel que, pour tout entier n qui reprsente la taille de lentre x , T m (n) < p(n).

12.3 Classe du temps polynomial pour les machines


dterministes

La classe P du temps polynomial est dfinie dans [38] comme lensemble des
langages L e P, tels quil existe une machine de Turing dterministe M et un
polynme p vrifiant les deux conditions suivantes :

(1)sur lentre x, x G E*, la machine sarrte aprs au plus p ( | x |) tapes;

(2) sur lentre x la machine sarrte dans ltat dacceptation si et seulement


si x E L (sinon elle sarrte dans ltat de rejet).

On associe traditionnellement la classe dterministe du temps polynomial


aux calculs efficaces. Plus le degr du polynme est faible, plus lalgorithme
sera rapide.
126 Machines de Turing non dterministes

12.4 Machines de Turing non dterministes

La diffrence entre les machines de Turing dterministes et les machines de


Turing non dterministes porte sur la dfinition des transitions. Dans le cas
dune machine de Turing dterministe, 011 associe chaque couple (tat, lettre)
au plus une image par la fonction de transition tandis que pour les machines
de Turing non dterministes, les transitions sont rgies par une relation dans
( x (E U { B } ) ) x (Q x T x {*, Ainsi, des couples (tat, lettre) sont
mis en relation avec plusieurs triplets (pour plus de dtails voir [3]). Dans ce
cas, plusieurs calculs sexcutent de faon concurrente, dfinissant ainsi un
arbre de calculs pour lequel on cre de nouvelles branches chaque fois quon
utilise une transition non dterministe.
C est dans la dfinition du langage accept par la machine de Turing que
cette modification change le plus de choses. O 11 dit quun mot a; G E* est
accept par une machine de Turing non dterministe M si et seulement si il
existe un calcul (ou un chemin dans larbre des calculs depuis la racine jusqu
ltat d acceptation) de M sur lentre x qui termine dans ltat d acceptation.
On note L ( M ) le langage des mots accepts par M.

E x e m p le 12.4 On construit une machine de Turing non dterministe pour


dcider le problme suivant :

Donne E un alphabet fini, m un mot sur {a, 6}* appel le motif et t un mot
sur (a, 6}* appel le texte.
Question m est-il un facteur de t ?

La machine de Turing non dterministe principale M possde deux rubans,


Ri et i ?2 o sont inscrits respectivement t et m. Pour construire M , on dcrit
tout dabord une sous-machine de Turing dterministe qui rpond oui si m G
Pref(u), o Pref('u) reprsente lensemble des prfixes de u :

L1 L2 Q El E2 Al A2
i a a i a a
i b b i b b
i a B f a B
i b B b B - -

L tat initial de cette machine est i et son tat d acceptation / .


La machine de Turing non dterministe va parcourir R\ et lancer de manire
non dterministe la machine de Turing dterministe qui dcide les prfixes
partir de la position de la tte de lecture du ruban R\. Cette machine de Turing
non dterministe est dfinie par la relation de transition suivante :
Ll L2 Q El E2 Al A2
90 a * go a * -> -
9o b * 9o b * ->
a * i a *
9o b * i b *
Thorie de la complexit 127

o </o est ltat initial de la machine principale, i ltat initial de la machine


prcdente et * reprsente nimporte quel caractre. La figure 12.3 illustre le
fonctionnement de cette machine avec m = ba et t = abab.

B ba
t ab

_L

abab
baB

On accepte

F ig . 1 2 .3 Fonctionnem ent d une m achine non dterm iniste.

12.5 Classe du temps polynomial pour les modles non


dterministes

Contrairement la classe P, la classe des langages reconnus en temps po


lynomial par des modles de calcul non dterministes comprend deux classes
distinctes NP et co-NP. Cela provient du fait que la classe NP nest pas close
par complmentation, contrairement la classe P (fig. 12.4).
Nous prsentons ces deux classes de complexit dans les paragraphes sui
vants.

12.5.1 Langages NP

On dit quun langage L est dans la classe du temps polynomial non dtermi
niste (note NP pour nondeterministic polynomial time) sil existe une machine
de Turing non dterministe M et un polynme p satisfaisant la condition : sur
lentre x G E*, il existe un calcul de M qui sarrte dans un tat d acceptation
aprs au plus p(||) tapes si et seulement si x E L.
Il est clair que, puisque les machines de Turing dterministes sont un cas
particulier des machines de Turing non dterministes, on a linclusion P C NP.
128 Classe du temps polynomial pour les modles non dterministes

F ig . 12 .4 Les classes P, NP et co-N P .

Cependant, on ne sait pas si P ^ NP ou non. U sagit dnn problme ouvert


fondamental en informatique.
La classe NP peut tre dfinie alternativement comme lensemble des lan
gages L vrifiables en temps polynomial. Cela signifie quil existe deux poly
nmes p et q et une machine de Turing dterministe V vrifiant :

(1)pour tout x G L. il existe une indication y G E* telle que \y\ < (/(|:r|) ;

(2) sur lentre ( x , y), x , y G T,*, la machine V sarrte dans un tat daccepta
tion aprs au plus p{\x\) tapes si et seulement si x G L.

Cette dfinition alternative de NP nous sert dans la preuve du thorme 12.2.

T h o r m e 12.2 Si L G NP, il existe un polynme p tel que L peut tre dcid


par une machine de Turing dterministe en temps 0 ( 2p( )).

P reu v e Puisque L G NP, par dfinition de la classe NP. il existe une machine
de Turing non dterministe A et un polynme q tels que A dcide L en un
temps born par q.
Pour toute entre x accepte telle que || = n , il existe une indication y G T,*
telle que \y\ < q ( n ) qui amne ltape de vrification de la machine de Turing
rpondre oui en au plus q ( n ) pas de calculs. Le nombre de telles chanes possibles
reprsentant lindication est On construit alors lalgorithme 12.1.
Cet algorithme ne sarrte avec la rponse oui que sil existe une indication
qui mne un calcul acceptant dans la limite du temps imparti, sinon il rpond
non. Il est bien dterministe et de complexit en temps q(n)\T,\q^ = 0 ( 2 P^ )
pour un polynme p.

Rappelons en outre que la classe NP, contrairement la classe P, n est pas


close par complmentation. C est ce qui donne lieu la classe co-NP.
Thorie de la complexit 129

A lg orith m e 12.1 ___________________________________________________


rponse < non
fini < faux
tan tq u e non(fini)faire
temps < 0 ;
y < chane_suivante(s) ;
si dernire alors
tan tqu e (rponse^oui) et (temps< q(n)) faire
simuler algorithme de vrification
ftq
si rponse=oui alors fini< vrai fsi
sin on fini< vrai
fsi
ftq
re tou rn e (rponse) ;

12.5.2 Les langages co-NP

Le problme obtenu par lajout dune ngation dans la question dun pro
blme de dcision est appel son complmentaire.
La classe des problmes de dcision complmentaires de ceux d une classe C
est dnomme co-C. Par exemple, la classe complmentaire de NP est la classe
co-NP. Les dfinitions relatives la classe co-NP sont calques sur celles de NP.
On illustre cette dfinition avec le problme de la primalit.

Le p rob lm e d e la prim alit

Un des meilleurs exemples de problme obtenu par la ngation de la question


est le problme de dcision de la primalit :

Donne un entier n.
Question n est-il premier?
En faisant la ngation de la question, on obtient le problme de dcider si
un entier est un nombre compos :

Donne un entier n.
Question n est-il compos?

Il sagit dun problme algorithmique par excellence qui a beaucoup t


tudi (et qui lest encore!).
Il existe un grand nombre dalgorithmes permettant de vrifier si un entier
est premier, dont la plupart sont probabilistes. Cependant, en 2002, il a t
montr que le problme de la primalit (et son complmentaire, le problme de
dcider si un entier est un nombre compos) est dcidable en temps polynomial.
Nous prsenterons cet algorithme dans le chapitre 14.
130 Les langages NP-complets

Mais, avant de nous intresser ce problme, on dfinit une classe de pro


blmes considre comme un bon support la conjecture P = l\IP. Il sagit des
problmes l\IP-complets pour lesquels personne na pu exhiber dalgorithme de
dcision en temps polynomial pour des machines de Turing dterministes.

12.6 tes langages NP-complets

Dfinition 1 2 .3 T est NP-complet si (1) L gNP et (2) si tout langage de NP


peut tre rduit L au moyen dune transformation polynomiale [65]).

Il faut introduire la dfinition de la transformation polynomiale.

Dfinition 12.4 (Transformation polynomiale) Soient L\ C j et L 2


, deux langages. Une transformation polynomiale de L\ vers L 2 (note L\ oc
L2) est une fonction / : j > telle que :

(1) / est calculable en temps polynomial par un algorithme dterministe ;

(2) f ( x ) e L 2 ^ x e Li.

Une proprit particulirement utile pour montrer la NP-compltude de cer


tains langages est la transitivit de la relation de transformation polynomiale.

Lemme 12.5 Si Li oc L 2 et L 2 oc L 3 , alors L\ oc L3 .

Preuve Soient J, 2; ^ 3 'eR alphabets respectifs de L\,L 2 et L A :

E* ^ v** ^ v**
1 * 2-i2 ^3

o g, h sont deux transformations polynomiales. Alors, il existe une transfor


mation polynomiale / : j > 3 dfinie par f ( x ) = g{h{x)) Vx G j. De
plus, f ( x ) G Ls ssi x G bi et / est calculable en temps polynomial.

En utilisant la proprit de transitivit et en utilisant un langage NP-complet


connu, on peut simplifier lassertion (2) si tout langage de NP est polyno-
mialement rductible L de la dfinition 12.3 en un langage NP-complet se
rduit polynomialement T . C est une consquence du lemme 12.6.

Lemme 12.6 Si Li oc L 2 alors,

(1) si L 2 g P, alors L i G P ;

(2) si Li $ P, alors L 2 0 P.
Thorie de la complexit 131

Preuve

(1) Sil existe un algorithme dterministe polynomial A dcidant L 2, la transfor


mation polynomiale Lj ex L 2 permet de construire B , un algorithme dter
ministe polynomial dcidant L \ comme suit : soient X \ G L\ et x 2 G L 2 tels
que x 2 = f ( x i ) . B ( x i) = A ( f ( x i ) ) ; comme / est une transformation poly
nomiale et A est un algorithme dterministe polynomial, B est galement
un algorithme dterministe polynomial.

(2) Par contraposition de (1).

Pour utiliser les lemmes prcdents et montrer la NP-compltude d un lan


gage tudi, il faut dj connatre des langages NP-complets. Historiquement, le
premier exemple de langage NP-complet est celui de la satisfiabilit des formules
boolennes (SAT) dont lnonc est le suivant :

Donne U un ensemble de variables et C une collection de clauses sur U.


Question Existe-t-il une valuation des variables satisfaisant C ?

Exem ple 12.5 Soit U = { i , u2, . . . , un} un ensemble de variables boolennes


et t : U { 0 ,1 } une fonction de valuation des variables de U ; t(u) = 1 si et
seulement si u est vraie.

Un littral est une variable ou sa ngation et une clause est un ensemble de


littraux de U qui est dfini comme la disjonction de ces littraux.

Exem ple 12.6 Par exemple, la clause {mi,3, s } <=* u V -<U3 V ug est vraie
pour t{v,\) = 1 ou t(ug) 0 ou t(ug) = 1.

Un ensemble C de clauses sur U est satisfiable si et seulement si il existe


une fonction de valuation pour U qui satisfait simultanment toutes les clauses
de C. En dautres termes, sil existe une valuation qui satisfait la conjonction
des clauses.

Exemple 1 2 .7 Soit lensemble de variables U = { ' i ,'2) et les clauses C =


({w,],!U}, {'U '2}). La formule boolenne quivalente est ( u iV ^ u2)A(~ iUi \/u2).
La rponse au problme de la satisfiabilit est positive dans ce cas. En effet, la
table de vrit ci-dessous nous donne deux valuations qui satisfont C :

Ui u2 (ui V -t 2 ) A ( u2 V ~ 'M i)
0 0 1
1 1 1
0 1 0
1 0 0

Thorm e 12.7 (C o o k [35]) Le problme de la satisfiabilit des formules boo


lennes est NP-complet.
132 Les langages NP-complets

Pour dmontrer le thorme de Cook, il faut utdiser un autre type de r


duction, la rduction gnrique que nous ne dcrirons pas ici.

En rsum, afin de montrer quun langage L est NP-complet, il faut :

montrer que L 6 NP ;

-prouver quun langage NP-complet bien choisi se rduit L.

De nombreux exemples de rductions et de preuves de la NP-compltude de


certains langages peuvent tre trouvs dans [35, 65].
Habituellement, la preuve quun langage est NP-complet est considre
comme un gage de sa difficult calculatoire (ou de linefficacit des algorithmes
pour le dcider) puisque lappartenance dun mot au langage ne peut vraisem
blablement pas tre dcide en temps polynomial par une machine de Turing
dterministe.
C h a p it r e 13

Complexit des problmes de


thorie des codes

Ce chapitre est consacr ltude de la complexit de problmes issus du


dcodage des codes linaires et du calcul de la dimension minimale d un code.
Nous rappelons tout d abord le rsultat de 1978 de Berlekamp, McEliece et
van Tilborg [8] qui stipule que le problme du dcodage linaire est l\IP-complet.
Dans le mme article, les auteurs ont galement mis la conjecture que le
calcul du poids minimal d un code est un problme NP-complet. Ce problme
est quivalent celui du calcul de la distance minimale pour les codes linaires
et permet donc de mesurer la capacit de correction dun code donn.
Cette conjecture a t finalement prouve en 1996 - soit prs de vingt ans
aprs - par A. Vardy dans larticle [91].

13.1 Problme du dcodage des codes linaires

Nous rappelons dans ce paragraphe le problme du dcodage ainsi que


quelques notations utiles.
On note C un {n, k)-code linaire, i.e. C = { x : x lH 0 } o H est la
(n k) x n matrice binaire appele matrice de contrle. Si le mot reu y a
subi des altrations, le syndrome s = y1H de y est non nul et le mot du code
x lui correspondant vrifie x = y + zq o zq est la solution de poids minimal
de lquation s = ztH. Pour trouver cette solution de poids minimal, il semble
ncessaire de rechercher les solutions parmi les 2k solutions possibles. C est un
problme de minimisation.
On sintresse tout d abord au problme de dcision suivant.
Poids des classes latrales
Donne A une matrice binaire, y un vecteur binaire, w G N
Question Existe-t-il un vecteur binaire x tel que le poids de x, w(.r) < w et
xA = y ?
La relation entre le problme de minimisation et le problme de dcision ci-
dessus doit tre un peu claircie. En effet, sil existe un algorithme dterministe
134 La NP-compltude du dcodage linaire

en temps polynomial pour rsoudre le problme de minimisation, il existe aussi


un algorithme dterministe en temps polynomial pour le problme de dcision.
Donc, il existe une solution de poids au plus w si et seulement si la solution
de poids minimal est de poids au plus w. Rciproquement, on fait fontionner
lalgorithme pour w = 0 ,1 ,2 ,... jusqu obtenir la premire rponse positive
et on obtient la solution de poids minimal.

13.2 La l\lP-compltude du dcodage linaire

Grce lobservation prcdente, nous allons montrer la l\lP-compltude du


problme du poids des classes latrales qui entrane automatiquement celle du
problme du dcodage linaire.
Lappartenance de ce problme la classe NP est claire. Une solution x tant
indique, il est alors facile de vrifier en temps polynomial quelle rpond
la question du problme par un algorithme dterministe. Celui-ci vrifie que
le poids de x est infrieur au poids maximal w et effectue ensuite le produit
matrice/vecteur pour vrifier lgalit avec la donne y.
La NP-difficult de ce problme est obtenue par rduction de 3DM (pour
3-Dimensional Matching) dont on rappelle lnonc ci-dessous.
Couplage trois (3D M )
Donne Un ensemble fini T et un sous-ensemble U Q T x T x T.
Question Existe-t-il W U tel que \W\ = |T| et dont toutes les coordonnes
sont deux deux distinctes ?
(3DM) est une gnralisation du problme de couplage classique dans
les graphes : tant donn n hommes et n femmes et une liste de couples
hommes/femmes qui souhaitent se marier, peut-on trouver n mariages en vi
tant la polygamie et la polyandrie?
De manire analogue, (3DM) est la donne de trois catgories distinctes
et chaque triplet correspond un mariage trois possible. On cherche
satisfaire lensemble des individus en vitant les alliances multiples.
Remarquons que si le problme du mariage pour les couples est polynomial,
celui pour les triplets est NP-complet (par rduction de (3-SAT), le problme
de la satisfiabilit des formules boolennes composes de clauses d exactement
trois littraux [35]).

13.2.1 Un exemple de couplage trois

Soit T = {1 ,2 ,3 , 4} et |U| = 6 dfini comme suit :

1) (1, 2, 1) ( 1, 2, 1)
2) (1,3,2) (1.3.2)
3) (2,1,4) (2,1,4)
4) (2,2,3) (2.2.3)
5) (3,1,1) (3,2,1)
6) (4,4,4) (4.4.4)
Complexit des problmes de thorie des codes 135

Le premier ensemble de triplets (colonne de gauche) vrifie la proprit du


couplage trois pour les lignes 2), 4), 5) et 6) mais pas le second.

13.2.2 Codage du couplage trois

Nous nous proposons de coder lensemble U de triplets sous la forme d une


\U\ x 3|T'| matrice binaire :

1 2 3 4 1 2 3 4 1 2 3 4
121 1 0 0 0 0 1 0 0 1 0 0 0
132 1 0 0 0 0 0 1 0 0 1 0 0
214 0 1 0 0 1 0 0 0 0 0 0 1
223 0 1 0 0 0 1 0 0 0 0 1 0
311 0 0 1 0 1 0 0 0 1 0 0 0
444 0 0 0 1 0 0 0 1 0 0 0 1

Avec ce codage, une donne positive de 3DM demande lexistence de |T|


lignes dont la somme est 1 1 1 ... 111.

13.2.3 La rduction du problme du couplage trois vers le problme du


poids des classes latrales

On suppose quil existe un algorithme dterministe P qui travaille en temps


polynomial pour dcider le problme du poids des classes latrales. Soit U
T x T x T une entre de 3DM et A la matrice de son codage comme ci-dessus.
Alors, le rsultat de lexcution de P sur les entres A, y = ( 1 ,1 ,..., 1), w =
|T| permettrait de dcider sil existe un couplage trois.
Donc, lexistence d un algorithme dterministe en temps polynomial pour
dcider le problme du poids des classes latrales entrane lexistence d un algo
rithme dterministe en temps polynomial pour dcider le problme du couplage
trois. Ceci implique quil existe un algorithme dterministe en temps polyno
mial pour dcider tout problme NP-complet, une contradiction.
Do la NP-compltude du problme du poids des classes latrales.

Thorm e 13.1 Le problme du poids des classes latrales est NP-complet.

Daprs la remarque de la section 13.1. on en dduit le corollaire.

Corollaire 13.2 Le problme du dcodage des codes linaires est NP-complet.

13.3 La NP-compltude du problme de lexistence dun


vecteur de poids donn

Dans le mme article [8], Berlekamp, McEliece et van Tilborg ont galement
prouv que le problme de dcider sil existe un vecteur de poids donn est aussi
un problme NP-complet. L nonc exact de ce problme est le suivant.
136 La NP-compltude du problme de la distance minimale sur F 2? "

Distribution des poids


Donne H une m x n matrice binaire et w 6 N.
Question Existe-t-il x G (Z 2)n tel que xv(x) = w et x lH = 0 ?
En fait, Berlekamp, McEliece et van Tilborg auraient prfr remplacer
dans la question du problme lgalit w(x) = w par lingalit w( x) < w sans
pour autant y arriver. En effet, avec w( x) < w, on prouverait que le calcul
du poids minimal d un code est un problme NP-complet. Cette conjecture a
t dmontre en 1996 par A. Vardy. L nonc de ce nouveau problme est le
suivant.
Distance minimale
Donne H une m x n matrice binaire et w G N.
Question Existe-t-il x G (F2) tel que w (x) < w et x 1II = 0 ?

13.4 La NP-compltude du problme de la distance minimale


sur F2

Nous dcrivons dans ce paragraphe les lignes directrices de la preuve de


la NP-compltude du problme de la distance minimale donne par A. Vardy
dans [91] sans entrer dans les dtails, un peu trop techniques.
Lide principale est de faire une rduction du problme du dcodage des
codes linaires en passant par le problme intermdiaire de la somme de sous-
ensembles dans un corps fini.
A. Vardy transforme tout d abord le problme du dcodage linaire en celui
de la somme de sous-ensembles dans un corps fini. Il montre ensuite que le
problme de la distance minimale sur F2m est NP-complet. Il transforme enfin
ce dernier problme pour obtenir le rsultat escompt.

13.4.1 Observations sur le dcodage des codes linaires

On sintresse quelques modifications mineures du problme du dcodage


des codes linaires qui permettent den donner un nonc quivalent :

-D a n s la question, on demande que x*H = s ^ 0. En effet, dans la preuve,


on na besoin que du cas o s = ( 1 , 1 , .. . , 1,1). En consquence, la variante
non nulle est galement NP-complte avec la mme dmonstration.

- O n suppose que la matrice H est de rang plein i.e. que les colonnes de
H contiennent une base de F2 et que w < m 1. En effet, si H est de
rang plein et que w > m, la rponse la question du dcodage linaire est
trivialement vraie.

O11 suppose aussi sans perte de gnralit que les colonnes de H sont dif
frentes. Sinon, il est toujours possible de former en temps polynomial une
Complexit des problmes de thorie des codes 137

m x n' matrice H ' en ne retenant quun des reprsentants de la mme co


lonne de H. On remarque que x lH = s a une solution de poids < w si et
seulement si x tH ' = s aussi. Lhypothse que les colonnes de H sont toutes
diffrentes implique que n < 2m.

Lide de base de la transformation du dcodage des codes linaires vers la


distance minimale est de considrer les colonnes de la m x n matrice de contrle
H comme des lments a i , a 2, .. -, a n du corps fini F2 construit laide de
g(x), un polynme irrductible de degr m sur F2. Le syndrome s peut aussi
tre vu comme un lment (3 de F2m. Avec ces notations et en tenant compte
des observations ci-dessus, on peut reformuler le problme du dcodage des
codes linaires en tant que version corps fini du problme de la somme de
sous-ensembles.
Somme de sous-ensembles dans un corps fini
Donne { a i , . . . , a n], n < 2m lments distincts de 2 , /3,6,w G N.

Question Existe-t-il un sous-ensemble { o q , .. . , a ^ } { a i , a } tel que


X ^=1 aij = p et 6 < w
La NP-compltude de ce problme est une consquence directe de celle du
problme du dcodage des codes linaires.

13.4.2 La NP-compltude du problme de la distance minimale sur F2

tant donn a i, a 2, . . . , a n, fi et w de F2m, les entres du problme de la


Somme de sous-ensembles dans un corps fini, on construit une suite de ma
trices A \, A 2, .. , A w qui correspondent aux matrices de contrle des codes
Ci, C'2, ... ,C W sur F2m.
Ces matrices de contrle sont construites de telle sorte que la distance mi
nimale de C$, ds soit gale :
j + 1 si o.,, + a i2 + . . . + a l6 = /3 pour certains ii, i2, . . . ,
{ 6 + 2 sinon avec ( f un code Maximum Distance Separable

Rappelons quun (??., fc)-code linaire est dit Maximum Distance Separable si
sa distance minimale d atteint la borne de Singleton d = 11 k + 1 (voir [96]).
On dduit immdiatement de cette condition sur la distance minimale que si
on savait trouver en temps polynomial la distance minimale dun code linaire
binaire, on saurait rsoudre le problme de la somme de sous-ensembles dans
un corps fini en temps polynomial. Plus prcisment, on considre le problme
suivant.
Distance minimale sur F2 (M D 2)
Donne Un entier m > 0, une r x n matrice H sur F2, un entier m > 0.
Question Existe-t-il x G (F2) tel que .-r4/ / = 0 et w(:c) < uj ?

Proposition 1 3 .3 L existence d'un algorithme dterministe en temps polyno


mial pour M D 2 m implique lexistence d un algorithme polynomial pour le pro
blme de la somme de sous-ensembles dans un corps fini.
138 La NP-compltude du problme de la distance minimale

P reu v e Soit $ un algorithme dterministe en temps polynomial pour M D 2 .


Alors, tant donnes les entres du problme de la somme de sous-ensembles
dans un corps fini, on construit la suite de matrices A i, A 2 , , A w voques
dans le 13.4.2. On utilise ensuite 4> sur lentre H = As et o; = <5+ 1 pour
1 < < w. Si <fi rpond oui au moins une fois, alors la rponse la question
du problme de la somme de sous-ensembles dans un corps fini est oui, sinon
la rponse est non.
On observe aussi que pour chaque utilisation de <f>, la longueur de lentre
de M D 2m est polynomiale en la longueur de lentre du problme de la somme
de sous-ensembles.
La technique de preuve ci-dessus est celle d une rduction de Turing qui
utilise w fois une procdure (j> de rsolution de M D 2 . La diffrence avec une
rduction classique est que nous navons le droit d utiliser la procdure <j)
quun nombre polynomial de fois.
Cependant, dans larticle [91], il est galement donn une preuve o lalgo
rithme <j) nest sollicit quune seule fois en construisant un code C sur F2
qui rsume les codes correspondant aux matrices A i, A 2 , . . . , A w de la preuve
ci-dessus. On obtient donc le thorme 13.4.

T h o r m e 13.4 M D ^ est NP-complet.

La NP-compltude de M D 2 est un rsultat plus faible que celui de la NP-


compltude de la distance minimale puisque lensemble des entres du problme
de la distance minimale est un cas particulier de lensemble des entres pour
M D 2">. Cependant, ce rsultat est utile dans la preuve de la NP-compltude
de la distance minimale comme nous allons le voir dans la section suivante.

13.5 La NP-compltude du problme de la distance minimale

Connaissant la transformation polynomiale du problme de la somme de


sous-ensembles en M D 2, on peut en dduire la NP-compltude du problme
de la distance minimale si on sait projeter en temps polynomial le code
C*1 voqu prcdemment vers un code linaire C sur F2 de telle sorte que
la distance minimale cfi de puisse tre dtermine partir de la distance
minimale d de C. Cela est ralis en passant par un code intermdiaire C*
interne la construction obtenue par la construction dite d Alon qui permet
de construire un code au moyen dun autre code.
Finalement, par rduction depuis le problme de la somme de sous-ensembles
dans un corps fini on obtient le thorme 13.5.

T h o r m e 13.5 Distance Minimale est NP-complet.

La preuve de ce thorme est trop technique pour tre expose dans cet
ouvrage.
C h a p it r e 14

Complexit des problmes de


cryptographie

Dans ce chapitre, nous dcrivons quelques problmes ISIP-complets suppl


mentaires qui nous seront utiles dans la suite de ce livre, en particulier pour
dfinir la notion de fonction sens unique qui joue un rle crucial dans la
cryptographie cl publique.

14.1 Problme de la somme de sous-ensembles

Le problme de la somme de sous-ensembles (SSP ') est un problme de


type sac dos dont on rappelle lnonc ci-dessous.

Donne Un ensemble fini A, une taille s (a) N pour chaque a A et une


capacit c e N.
Question Existe-t-il un sous-ensemble A1 C A tel que : ]a(- 4, s(a) = c.

Thorm e 14.1 Te problme de la somme de sous-ensembles (SSP) est NP-


complet.

Preuve (SSP) appartient bien la classe NP. En effet, il suffit de choisir de


manire non dterministe un sous-ensemble A! et de vrifier en temps polyno
mial que la somme des lments de A' est bien gale la capacit c.
On montre ensuite quon peut rduire (3-SAT) (SSP). Soit donc x une don
ne de (3-SAT) Ci A C*2A . . . A Cn sur lensemble de variables U { ' j , . . . , ura}
(n clauses et m variables). On va associer une taille (et donc un lment)
chaque littral de la donne x de (3-SAT), i.e. une taille pour chaque variable
et une taille pour la ngation de chaque variable. Pour ce faire, on rserve les
m digits de poids faible des tailles et on met le digit i de la taille tj h 1 si
tj correspond i ou u, et les autres digits de tj 0. De cette manire, il

(1) (SSP) est lacronyme anglais de Subset Svrn Problem.


140 Problme de la somme de sous-ensembles

est possible dexprimer la proprit quon ne peut pas choisir la fois Uj et M;


en choisissant convenablement la valeur de la capacit, autrement dit si les m
digits de poids faible de la capacit sont tous gaux 1.

E x e m p le 14.1 Pour U = {a, b, c, d} et Ci A C'2 A C3 avec Ci = {a, b, c}, C2 =


{a, b, d} et C3 = { 6, c, d }, on construit les tailles suivantes :

d c b a
a 0 0 0 1
0 0 0 1
b <3 0 0 1 0
b U 0 0 1 0
c <5 0 1 0 0
c te 0 1 0 0
d *7 1 0 0 0
d te 1 0 0 0

De cette manire, tout choix de iq ou de Ui mais pas des deux simultanment


apparatra dans c.
Ensuite, on ajoute n digits supplmentaires chacune des tailles qui vont
nous permettre d exprimer que le littral tq apparat dans la clause Cfc. On
marque le digit m + k de la taille tj qui correspond au littral q si u-t apparat
dans Cfc.

E x em p le 14.2 En poursuivant lexemple :

c3 c2 Cl d c b a
a h 0 1 1 0 0 0 1
a ti 0 0 0 0 0 0 1
b <3 0 1 0 0 0 1 0
b u 1 0 1 0 0 1 0
c tb 1 0 1 0 1 0 0
c te 0 0 0 0 1 0 0
d tr 1 1 0 1 0 0 0
d *8 0 0 0 1 0 0 0

Par cette construction, si le littral rq est vrai, la ou les clause(s) Cfc o q


apparat sont galement vraies et le m + ke digit de la taille correspondant q
est un. Ainsi, les valuations satisfaisant (3-SAT) correspondent aux ensembles
de tailles dont la somme est un entier k m + n digits dont les m digits de poids
faible sont tous gaux 1 et dont les n digits de poids fort sont compris entre
1 et 3. Il faut donc trouver une manire de modifier le problme pour que leur
somme sur les n digits de poids fort soit constante.
Pour ce faire, on ajoute 2n tailles supplmentaires appeles compensatrices
dont le m + fce digit est 1 si la taille tj correspond la clause Cfc et 0 sinon.
Complexit des problmes de cryptographie 141

E xem ple 14.3 En poursuivant notre exemple :

C3 c2 Cl d c b a
a tl 0 1 1 0 0 0 1
a t2 0 0 0 0 0 0 1
b t3 0 1 0 0 0 1 0
b u 1 0 1 0 0 1 0
c ts 1 0 1 0 1 0 0
c <6 0 0 0 0 1 0 0
d f7 1 1 0 1 0 0 0
d h 0 0 0 1 0 0 0
Ci tg 0 0 1 0 0 0 0
Ci 11 0 0 1 0 0 0 0
c2 tu 0 1 0 0 0 0 0
c2 f 12 0 1 0 0 0 0 0
c3 tl3 1 0 0 0 0 0 0
c3 tl4 1 0 0 0 0 0 0

Si on a une valuation qui satisfait x , on choisit les littraux mis vrai


par la valuation et on prend respectivement une ou deux des tailles compen
satrices correspondant C j pour que la somme des tailles soit la capacit
3 . . . 3 1 .. . 1

Exem ple 14.4 Une valuation qui satisfait x est abcd. On choisit donc les tailles
t i, t i, t e, t s , t g, t n , t i 2 , t i 3 et 114 pour que leur somme soit 3331111.

Rciproquement, soit un sous-ensemble dont la somme des tailles gale c. Les


m digits de droite assurent que cet ensemble contient une taille correspondant
chaque variable ou sa ngation mais pas les deux simultanment. On prend
comme valuation de la donne de (3-SAT) correspondante celle qui met chaque
littral vrai. De plus, comme pour chaque clause Ck, la somme des m + k '[ digits
des tailles vaut 3 et quau plus deux peuvent provenir des tailles compensatrices,
il existe au moins une taille qui correspond un littral avec un 1 au m + ke
digit. Comme le littral correspondant est vrai, la clause Ck est aussi vraie et
nous avons donc bien une valuation qui satisfait x.

Exemple 14.5 Si on choisit lensemble de tailles (O , t3, ts, t7, tg, fio, tu , tm}
dont la somme est 3331111, une valuation qui satisfait x est bcd.

Comme la transformation peut tre effectue facilement en temps polyno


mial, nous avons montr que (3-SAT)oc(SSP).

14.2 Problme de la primalit

Nous terminons ce chapitre par le problme de la primalit. Celui-ci nest pas


un problme NP-complet mais il possde un statut particulier trs intressant.
142 Problme de la primalit

Primalit
Donne un entier n.
Question n est-il premier ?
Il sagit d un problme algorithmique par excellence. Il a t tudi par un
grand nombre de chercheurs et il est encore loin dtre rsolu.
Beaucoup de critres permettent de vrifier si un entier est premier. Par
exemple, le test de Lucas.
n 1
Test de Lucas n est premier ssi 3g G Z * tel que gn~ = 1 mod n et g p ^ 1
mod n pour tout p facteur premier de n 1.

Preuve [102] pour n premier, un lment primitif g modulo n remplit la condi


tion. Rciproquement, si un tel lment g existe, alors lordre de g dans Z * est
forcment n 1. Or, tout lment de Z * est d ordre un diviseur de <p(n) ; comme
tp(n) < n 1 , on en dduit <p(n) = n 1 , ce qui est quivalent dire que n est
premier.

En reformulant le test de Lucas, il est possible de construire un algorithme


non dterministe en temps polynomial pour reconnatre les nombres premiers,
ce qui nous permet d affirmer que Primalit est dans NP [40].
Algorithme 14.1 ________________________________________________________

si n = 1 alors accepte ;
si n > 2 est pair alors rejette ;
si n > 2 est impair alors choisir x, 1 < x < n ;
vrifier si x n 1 = 1( mod n) ;
deviner une factorisation de n 1, n Pi\
vrifier si n 1 = pi ;
pour 1 < i < k faire
n 1
vrifier si pi est premier et x ^ ^ 1( mod n) ;
fpour
accepte si aucun test nest faux.

Si n est un entier de m bits ( [log(n)] = m ), alors le calcul de n " 1 et celui


n 1 . , .
de x pi se font en temps 0 ( m ). Comme pk < n /2 , il est possible de vrifier
en rsolvant une quation de rcurrence sur le temps de calcul de lalgorithme
que celui-ci a une complexit en 0 (lo g 5(n)).
Jusqu la publication d un algorithme polynomial pour dcider la
primalit en 2002, lalgorithme le plus rapide avait pour complexit
0 ((lo g (n ))clogloglog(")).

Mais quen est-il pour le complmentaire de Primalit ?

Proposition 14.2 La reconnaissance des nombres composs est dans NP.


Complexit des problmes de cryptographie 143

Plus prcisment, on considre le problme FACTM des facteurs majors :

Donne Un entier n et un nombre M < n .


Question Existe-t-il un diviseur de n infrieur k M l

La difficult de factoriser un nombre quivaut la difficult de rsoudre


FACTM. En effet, si FACTM G P, on sait factoriser n en temps polynomial
par dichotomie. On cherche sil y a un facteur de n dans lintervalle [1, y/n] en
rsolvant FACTM avec M = [y/n] ; sil ny en a pas, n est premier. Sil y en a,
on cherche si n a un facteur dans [1, y/n/2], sinon on cherche sil a un facteur
dans lintervalle [y/n/2, y/n] etc.
En consquence, on a le thorme 14.3

T horm e 14.3 (P r a tt) P rim a lit G NP Cl co-NP.

Une autre preuve de ce thorme dmontr lorigine par Pratt est donne
dans [75] o est galement discute limportance de ce rsultat.

14.3 Une amlioration rcente, Primes g P

En sappuyant sur lidentit suivante (un driv du petit thorme de Fer


mt) qui permet de dcider la primalit de p,

si pgcd (a,p ) = 1, [(.r a)p = (xp a) mod p <=4>p premier]

Agrawal, Kayal et Saxena ont pu construire un algorithme dterministe de test


de primalit.

Preuve (de lidentit) Si p premier, p divise les coefficients binomiaux ([[) =


pour 1 < r < p 1 et (a: a)p = ( xp ap) mod p = xp a mod p
par le thorme de Fermat-Euler.
Rciproquement, supposons p compos. Alors il existe q premier diviseur de p
et soit qk la plus grande puissance de q qui divise p. qk ne divise pas () =
qt^Lqy = ^ relativement premier avec d q. Le coefficient
de xq dans le dveloppement de {x a)p nest pas nul alors quil lest dans le
membre droit de lidentit, une contradiction.

Une fois tablie lidentit prcdente et tant donn un nombre premier p, il


suffit de choisir P { x ) x a et de vrifier si lquation de congruence ci-dessus
est vrifie. Cependant, cette technique est coteuse en temps dans le pire des
cas. Lide qui permet d amliorer cette complexit est dvaluer la congruence
modulo un polynme x r 1 pour un premier r bien choisi. Une itration de
lalgorithme sera alors

(a; a)p = (x p a) mod (x r 1,p)


144 Une amlioration rcente, Primes G P

Et de vrifier cette nouvelle congruence pour un petit nombre de valeurs de a


(de lordre de 0(y/r log(p))).
Algorithme 14.2 ________________________________________________________

Entre : un entier n > 1


Si n est de la forme ab, b > 1 alors n est COMPOSE fsi
Trouver le plus petit r tel que lordre de n dans Z * o, (n) > 4[log2(n)]
(ior (n) est le plus petit k t.q. n k = 1 mod r)
pour a < 1 jusqu 2y/r log(n) faire
Si (x a)rl ^ (x n a) mod (xT 1, n) alors n est COMPOSE fsi
fpour
n est PREMIER

Remarque 14.411 nest cependant pas vident de dcider si n est de la forme


ab pour b > 1. Voici une mthode pour y parvenir :

- Si a et b sont donns, le cot du calcul de ab par la mthode des carrs [93] est
de log(6) multiplications, chacune dentiers d au plus log(n) bits. En utilisant
une multiplication par transforme de Fourier rapide, chaque multiplication
cote log(n) log(log(n)) oprations. Comme b < n, on a log(6) < log(log(n))
donc le cot du calcul de ab est log(n) log(log(n))2. Il est classique de ngliger
les termes log(log) pour la complexit asymptotique, donc on obtient un cot
de 0 (lo g (n )) pour vrifier avec a et b donns.

- Si seulement b est donn et pas a, alors en utilisant une recherche par dicho
tomie binaire sur lintervalle [l, n] pour a, il ny a que log(n) valeurs de a
essayer, chacune cote 0 (lo g (n )), donc on obtient un cot de 0 (lo g (n )2)
pour chercher avec seulement h donn.

- Comme b < log(n), il ny a que log(n) valeurs de b essayer, on obtient bien


un cot de 0 (lo g (n )3) pour vrifier que n nest pas une puissance pure.

Le rsultat qui permet de montrer le bon fonctionnement de cet algorithme


est le thorme 14.5.

Thorme 14.5 Soit n N. Soient q et r deux 'premiers. Soit S un ensemble


fini dentiers. On suppose que :

-q\r - 1
mod r $ (0 ,1 }
-pgcd. (n, b b') = 1 V6, b' e S; b^b
- (9+{ | f > n2^
- ( x + b)n = x n + b dans l anneau 7jn [x]/{xr 1)

Alors n est la puissance d un premier.


Complexit des problmes de cryptographie 145

La preuve est un peu trop technique pour tre prsente ici.


Les auteurs utilisent le thorme prcdent pour dcider en temps polyno
mial si un entier n > 1 est premier.
Lide est de trouver une valeur de r qui vrifie n^r~1^ q mod r {0 ,1 } et
(+s_i) n2Lv^J o q est le plus grand diviseur premier de r 1 et s un entier
modrment grand. Un thorme de Fouvry implique quil existe un tel r de
lordre de 0 (lo g (n ))6 pour un .s de lordre de 0 (lo g (n ))4.

Thorm e 14.6 Soit P (n ) le plus grand diviseur premier de n. Alors, il existe


c et no, deux constantes telles que \/x > U q,
2 X
t}{p : p est premier ,p < x et P (p 1) > x ^ } > c -
logV'O

Etant donn (q ,r , s ), on peut facilement vrifier que n na pas de diviseur


premier plus petit que s et tester si (x +b ) n = x n+b dans lanneau Z [.r]/ (xT -1)
pour tout b G S o S = { 0 , 1 , , . . . , s 1}. Lalgorithme AKS fonctionne en
temps 0 ((lo g (n ))12/(lo g lo g (n ))) pour un polynme / mais ce temps peut tre
ramen 0 ((lo g (n ))6), ce qui rend cette mthode presque efficace compare
certaines mthodes probabilistes actuellement utilises.
En consquence de quoi, on peut noncer le thorme 14.7.

Thorm e 14.7 [2] P rim a lit G P.

Pour plus de dtails, le lecteur intress peut aller visiter le site Web
ladresse : h ttp : / / www.u tm .edu /research /p rim es.

14.4 Problme du logarithme discret

Comme pour le problme de la factorisation, on peut ramener le problme


du calcul du logarithme discret en base g modulo un premier p un problme
de dcision [13]. On dfinit la fonction : (p , g , n ) i> log(p,g,n) o

{
m si p premier et g primitif mod p et m
lunique entier tq 0 < m < p et g "1 = n
0 sinon

et on lui associe un problme de dcision PLOG.

Donne Un quadruplet p, g, n, t dentiers.


Question A-t-on log(p, g, n) > t ?

Avec un raisonnement par dichotomie analogue celui des nombres compo


ss, on montre lquivalence entre la difficult du calcul du logarithme discret
modulo p et celle de la rsolution du problme de dcision PLOG.
En utilisant lexistence d indices polynomiaux on prouve que PLO G 6
NP fi co-NP.
C in q u i m e p a r t ie

Cryptologie
C h a p itr e 15

Introduction la cryptologie
historique

15.1 Introduction

La cryptologie est la science qui traite de la communication en prsence d ad


versaires. Le but d un systme cryptographique est de chiffrer un texte clair P
en un cryptogramme C au moyen d une cl K ( >. Ce cryptogramme est ensuite
transmis son destinataire sur le canal Le destinataire lgitime doit pouvoir
dchiffrer le cryptogramme C laide de la cl K pour obtenir le texte clair.
La figure 15.1 illustre le fonctionnement dun tel systme cryptographique. On
remarque que cette figure rappelle le schma de communication de Shannon. Il
sagit en effet dune des problmatiques traites par la thorie de linformation,
celle du secret.

Fig. 15.1 Modle de Shannon pour le secret.

Cependant, un ennemi (le cryptanalyste) (qui ne connat videmment pas


la cl K ) ne doit pas tre en mesure de dcrypter le cryptogramme, en d autres
termes de raliser une opration de cryptanalyse qui lui permette de retrouver
le clair sans connatre la cl. Ce dernier peut tenter de cryptanalyser selon
diffrentes techniques dattaques, classes par ordre de difficults dcroissant :

^*P pour plaint ext, C pour ciph ertetxt et K pour k ey en anglais.


150 Chiffres monoalphabtiques

- cryptogramme connu : le cryptanalyste connat une longue portion de


cryptogramme ;

- couples clairs/cryptogrammes connus : le cryptanalyste connat un petit


nombre de couples clairs/cryptogrammes;

- clair choisi : le cryptanalyste dispose du mcanisme de chiffrement et


chiffre des clairs de son choix pour obtenir des informations sur la cl.

Il est possible de rsumer la philosophie de la cryptographie moderne par le


principe de Kerchoff (1883) :
La scurit dun systme de chiffre ne doit pas dpendre du secret de l algo
rithme mais seulement du secret de la cl.
Une solution classique du problme de la cryptographie repose sur les sys
tmes de chiffrement cl secrte composs de :

- un espace de messages A 4 : ensemble des mots sur lalphabet des messages


clairs ;

un espace de cryptogrammes C : ensemble des cryptogrammes sur lalphabet


des cryptogrammes ;

- un espace de cls KL : ensemble des cls sur un alphabet ;

- un algorithme de chiffrement qui est une application E : K x A 4 >C ;

-u n algorithme de dchiffrement qui est une application D : KL x C * A4.

Les deux algorithmes E et D doivent vrifier que D (K , E ( K , M ) ) = M , MK e


V M e A 4.
K L,

Pour utiliser un tel systme de chiffrement, les deux parties doivent sen
tendre sur une cl particulire K quils conservent secrte. Lmetteur envoie
un cryptogramme C = E ( K , M ) qui est reu par le destinataire qui effectue
lopration D ( K. C) = M pour retrouver le clair M.
Les premiers systmes de chiffrement cl secrte que nous tudierons sont
monoalphabtiques, ce qui signifie quune mme lettre donne du clair est tou
jours chiffre en la mme lettre du cryptogramme.

15.2 Chiffres monoalphabtiques

Formellement, un chiffre monoalphabtique est une application bijective des


lettres de lalphabet des messages clairs sur les lettres de lalphabet des cryp
togrammes. Si ces deux alphabets sont identiques, cette application est une
permutation.
Introduction la cryptologie historique 151

15.2.1 Chiffres additifs

Le premier exemple de chiffre monoalphabtique est le chiffre de Csar qui


est dfini par lapplication suivante :
a b c d e f g h i j k l m n o p q r s t u v x z y z
DEFGHI J K L M N O P Q R S T U V W X Y Z A B C
On dcale lalphabet de trois lettres. Nous utiliserons par convention les
minuscules pour lalphabet des messages clairs et les majuscules pour lalphabet
des cryptogrammes. Ainsi, pour chiffrer le mot message, on remplace chaque
lettre du message clair par la lettre correspondante dans lalphabet du message
chiffr, obtenant ainsi PHVVDJH. Un tel chiffre est appel chiffre additif.
En utilisant un ordinateur pour chiffrer un message clair, on identifie gn
ralement les alphabets { a ,... ,z} et ( A ,... ,Z } { 0 , . . . , 25} Z 26 des entiers
modulo 26. Avec cette rgle de transcription, un chiffre additif qui traduit un
dcalage de s lettres vers la droite correspond une addition par s modulo 26.
Avec la transcription ci-dessus, le chiffre de Csar correspond lapplication
x 1>x + s mod 26 pour toute lettre x G Z 26. L opration de dchiffrement est
y 1>y s mod 26 pour toute lettre y G ^ 26- Lentier s correspond dans ce cas
la cl et les fonctions E et D sont respectivement laddition par s modulo
26 et la soustraction par s modulo 26. Voil pourquoi ces chiffres sont appels
additifs.
Si on se restreint Z 26 comme alphabet, on ne dispose que de 26 chiffres
additifs en comptant le chiffre trivial s = 0. Or nous avons vu que dans ce cas
les transformations monoalphabtiques correspondent aux permutations et que
nous devons disposer de 26! w 4.1026 chiffres monoalphabtiques diffrents!
Les diffrentes manires de dfinir une cl ou un algorithme pour chif
frer nous fournissent d autres chiffres monoalphabtiques. Nous en donnons
quelques-uns ci-dessous.

15.2.2 Chiffres multiplicatifs


Dans le paragraphe 15.2.1, nous avons vu quil est possible de dfinir lal
gorithme pour chiffrer comme une somme modlo 26. Que se produit-il si on
modifie lalgorithme pour que celui-ci effectue une multiplication au lieu dune
addition ? En dautres termes, on tudie la fonction suivante : x 1t.x mod 26
pour un entier t. En essayant quelques valeurs, on observe que les seules va
leurs de t acceptables vrifient pgcd(t, 26) = 1. Les autres ne permettent pas
de dchiffrer un mme cryptogramme de manire unique, comme par exemple
pour 2.

Exemple 15.1 Pour la valeur 2, on obtient ;


a b c d e f g h i j k 1 m
0 1 2 3 4 5 6 7 8 9 10 11 12
0 2 4 6 8 10 12 14 16 18 20 22 24
n 0 P q r s t u v w x y z
13 14 15 16 17 18 19 20 21 22 23 24 25
0 2 4 6 8 10 12 14 16 18 20 22 24
152 Chiffres monoalphabtiques

En dautres termes les valeurs de t acceptables sont telles que t \ 26 (lire t ne


divise pas 26). Ces chiffres sont appels multiplicatifs. Il existe donc 12 chiffres
multiplicatifs, en comptant le chiffre trivial.

Les valeurs convenables de t sont {1 ,3 ,5 , 7,9,11,15,17,19,21,23,25}.

Pour dchiffrer, on a besoin de linverse de t modulo 26. Pour le trouver, on


utilise lalgorithme d Euclide tendu [20]. Celui-ci va nous fournir les coefficients
de Bezout,c est--dire deux entiers x et y tels que d = pgcd (a, b) = ax + by.
A partir descoefficients de Bezout, il est facile de dduire linverse de t (not
t- 1 ) modulo 26. En effet, puisque

pgcd (t, 26) = 1 3x, y E N : t x + 26 y = 1 x = t-1 mod 26

A lg o r ith m e 15.1 -----------------------------------------------------------------------------------


Euclide tendu(a, b)
si b > a alors ch an ge (a, b) fsi
si b = 0 alors re to u rn e (a, 1,0)
sin on
(d', x ', y') < Euclide tendu(6, a mod b)
\d,x,y) <- (d ',y \ x ' - [a/b\)
re to u rn e (d , x , y )
fsi
fin

la main, il est plus commode dutiliser une version itrative.

A lg o r ith m e 15.2 ---------------------------------------------------------------------


Euclide tendu(, r) avec q < r
Q< (1 ,0 );
R - (0,1) ;
tan tq u e r ^ O faire
t < q mod r ;
T ^Q -[q/r\R -
(q, r ) <- (r, t) ;
(Q ,R )-(R ,T );
ftq
re to u rn e (, Q) ;
fin

o la valeur q retourne donne la valeur du pgcd de et de r et Q les coefficients


de Bezout.
Introduction la cryptologie historique 153

E xem ple 15.2 Calculons les coefficients de Bezout pour (11,26) :

Q r t Q L/rJ R T
11 26 11 (1.0) 0 (0,1) (1,0)
26 11 4 (0,1) 2 (1,0) ( - 2 ,1 )
11 4 3 (1,0) 2 ( - 2 ,1 ) ( 5 ,- 2 )
4 3 1 ( - 2 ,1 ) 1 ( 5 ,- 2 ) ( - 7 ,3 )
3 1 0 ( 5 ,- 2 ) 3 ( - 7 ,3 ) (2 6 ,-1 1 )
1 0 ( - 7 ,3 ) (2 6 ,-1 1 )

La valeur de leur pgcd est 1 et celle des coefficients de Bezout (7,3). On en


dduit la valeur de linverse de 11 mod 26 qui est 7 = 19.

15.2.3 Chiffres affines

En combinant les chiffres additifs et les chiffres multiplicatifs, on obtient


les chiffres appels affines. Pour ceux-ci, tant donn deux entiers s et t. lal
gorithme pour chiffrer une lettre x correspond lapplication x i> {x + s).t
mod 26. La cl du chiffre est compose du couple (s , t) et on dchiffre en ap
pliquant successivement la mthode dcrite dans le 15.2.2 et dans le 15.2.1.
Il y a 26 12 = 312 chiffres affines possibles. Nous sommes donc encore loin
du compte !

15.2.4 Chiffres dfinis par mot-cl

Pour dfinir tous les chiffres monoalphabtiques possibles, on a besoin des


deux ingrdients suivants pour dfinir la cl :

-u n mot-cl, par exemple CRYPTANALYSE;

-une lettre-cl, par exemple e.

On commence par liminer toutes les occurrences multiples de lettres dans


le mot-cl CRYPTANLSE dans notre exemple et on crit ensuite cette suite de
lettres en dessous de lalphabet du message clair en commenant au dessous de
la lettre cl e puis on crit les lettres restantes dans lordre alphabtique aprs
la dernire lettre du mot-cl. On obtient pour notre exemple :
a b c d e f g h i j k l m n o p q r s t u v w x y z
V W X Z C R Y P T A N L S E B D F G H I J K M O Q U
On obtient ainsi tous les chiffres monoalphabtiques possibles si on considre
lensemble de tous les mots-cls possibles.

15.3 Cryptanalyse des chiffres monoalphabtiques

15.3.1 Principe de cryptanalyse

Nous prsentons dans le tableau 15.1 une mthode gnrique pour tous les
chiffres monoalphabtiques, mme sils peuvent toujours tre cryptanalyss par
154 Cryptanalyse des chiffres monoalphabtiques

lexploration de lespace de toutes les cls possibles. Cette dernire opration


sappelle la cryptanalyse exhaustive.
Cette mthode sapplique aux chiffres additifs, multiplicatifs et affines ; elle
repose sur le fait quune petite proportion de lettres fournit plus d informations
que les deux tiers du texte. 11 sagit dune application immdiate des travaux
de Shannon sur la thorie de linformation.

lettre frquence lettre frquence


a 6,16 n 6,02
b 0,40 o 5,12
c 5,35 P 2,92
d 3,86 q 0,62
e 18,61 r 5,35
f 2,24 s 6,96
g 1,79 t 7,41
h 1,48 u 5,03
i 6,35 V 1,03
j 0,04 w 0,35
k 0,13 X 0,36
1 5,26 y 1,39
m 1,97 z 0,04

Tab. 15.1 Table des frquences relatives des lettres en franais.

Supposons quun cryptanalyste (Mr X dans la suite) intercepte un crypto


gramme denviron 500 lettres. Il sait que ce cryptogramme a t obtenu au
moyen dun chiffre monoalphabtique. Il suit alors la mthode suivante dcrite
dans [9] :

(1) Il compte la frquence d apparition de chaque lettre dans le cryptogramme.


Il peut ainsi identifier la lettre la plus frquente de la langue (le e en fran
ais) ainsi que le groupe de lettres restantes apparaissant le plus frquem
ment (a in st). Il ne peut cependant pas trouver la correspondance lettre
lettre entre a in s t et le groupe de lettres qui leur correspondent dans le
cryptogramme. Ltape suivante va lui permettre den identifier certaines.

(2) Il compte les frquences dapparition des couples de lettres (ou bigrammes).
Le bigramme le plus frquent en franais est et. Il en dduit ainsi la lettre

groupe de lettres frquence cumule seuil relatif


e 18,61 >12%
ainst 32,90 6-9%
cdloru 29,97 3-6%
fghmpvy 12,82 1-3%
jkqwxzb 1,94 <1%

Tab. 15.2 Groupement des lettres.


Introduction la cryptologie historique 155

t. Il passe ensuite aux trigrammes, ce qui lui permet didentifier la lettre


n puisque ent est le trigramme le plus frquent. Il dispose maintenant de
32% des lettres du texte. Avec un peu de soin, il est capable de dcouvrir
certaines autres lettres.

(3) U fait traduire par lordinateur la partie du texte correspondant aux lettres
dj identifies laissant des blancs pour les lettres chercher. Le texte est
toujours inintelligible mais Mr X peut deviner quelques lettres supplmen
taires. Aprs quelques itrations de ce procd, il est capable de dcrypter
le texte.

15.3.2 Exemple de cryptanalyse

On cherche cryptanalyser le message RAWFEJBANAREQSSQBDAWKRSKWK qui


a t chiffr au moyen d un chiffre multiplicatif. On effectue une analyse statis
tique des lettres de ce message :
A K R S W B E Q D F J N
4 3 3 3 3 2 2 2 1 1 1 1
Notre premire hypothse est que e a t transform en A, i.e. que 4t = 0
mod 26 qui est impossible pour t =/= 0 car pgcd (4, 26) = 2.
Notre seconde hypothse est que e a t transform en K, i.e. 4t = 10
mod 26 quil faut rsoudre. Cette quation se transforme en 2t = 5 mod 13,
donc t = 2- 1 .5 mod 13. L inverse de 2 est -6, donn par lalgorithme d Euclide
tendu. On en dduit que la valeur de t est 9. Avec cette valeur, on obtient
le message clair : z a o f ejdanazeqccqddaoezceoe. La troisime hypothse, e a
t transform en S ne nous permet pas non plus de retrouver un message clair
intelligible.
Enfin, pour lhypothse e donne S, on rsout 41 = 18 mod 16 ou 2t = 9
mod 13 et on trouve t = 11 qui est la solution.

Rsolution d e ax = b mod n

Ci-dessus, on a fortement utilis la mthode de rsolution de lquation


a x = b mod n. Pour la rsoudre, on distingue deux cas :

-pgcd (o ,n) = 1 : ax = b mod n x = a 1b mod n avec a-1 donn par


lalgorithme d Euclide tendu.

- pgcd (a,n) = d 1 et on a de nouveau deux cas :

d | b, lquation na pas de solution,


d\b; ax = b mod n => da'x = db' mod dn'. On divise tout par d et
on rsout a'x = b' mod n . On a alors lensemble de solutions : {x =
a' 1b/+ kn' : 0 < k < d}.
156 Chiffres polyalphabtiques

E x e rcice 15.1 Rsoudre le systme dquations suivant :

{4a + b = 23 mod 26
19a + 6 = 20 mod 26

C orrig

{ 4a + b = 23 mod 26
19a + b = 20 mod 26 ^ { 15a = 23 mod 26
156 19 mod 26

{a = 7.23
b = 7.19
mod 26 = 5
mod 26 = 3

car pgcd (15,26) = 1 et linverse de 15 mod 26 est 7.

15.4 Chiffres polyalphabtiques

Nous avons vu prcdemment que les systmes monoalphabtiques ne sont


pas trs robustes mie cryptanalyse statistique du fait de la distribution des
frquences des caractres. Il semble donc ncessaire de construire des chiffres
pour lesquels la distribution des frquences tend vers une loi uniforme. In
tuitivement, pour rsoudre ce problme, il suffit dutiliser une transformation
cryptographique qui associe chaque lettre du clair un ensemble de lettres de
lalphabet du cryptogramme en suivant les deux rgles ci-dessous :

- pour que le dchiffrement soit unique, les ensembles images des lettres du
message clair doivent tre disjoints ;

- le nombre de symboles de chaque ensemble est dtermin par la frquence


dapparition de la lettre du message clair.

Ainsi, comme la lettre du cryptogramme est choisie au hasard, chaque sym


bole apparat avec la mme frquence. Un cryptanalyste potentiel se trouve
confront une tche beaucoup plus difficile quauparavant.

Nous prsentons tout d abord le chiffre de Vigenre qui a servi de prototype


pour plusieurs chiffres actuels et qui nous permet de prsenter sur un systme
simple deux mthodes de cryptanalyse importantes.

Chiffre de Vigenre

Invent en 1586 par le diplomate franais Biaise de Vigenre, lide de ce


systme repose sur lutilisation de plusieurs systmes monoalphabtiques.
Introduction la cryptologie historique 157

Chiffrement

Pour utiliser ce systme, on a besoin du carr de Vigenre et d une cl.


Celle-ci consiste en une suite de lettres, par exemple VENUS. On crit la cl
plusieurs fois en dessous du clair jusqu la fin du message :
p oly a lp h a betiq u e
VENUSVENUSVENUSV

abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ NOPQRSTUVWXYZABCDEFGHIJKLM
BCDEFGHIJKLMNOPQRSTUVWXYZA OPQRSTUVWXYZABCDEFGHIJKLMN
CDEFGHIJKLMNOPQRSTUVWXYZAB PQRSTUVWXYZABCDEFGHIJKLMNO
DEFGHIJKLMNOPQRSTUVWXYZABC QRSTUVWXYZABCDEFGHIJKLMNOP
EFGHIJKLMNOPQRSTUVWXYZABCD RSTUVWXYZABCDEFGHIJKLMNOPQ
FGHIJKLMNOPQRSTUVWXYZABCDE STUVWXYZABCDEFGHIJKLMNOPQR
GHIJKLMNOPQRSTUVWXYZABCDEF TUVWXYZABCDEFGHIJKLMNOPQRS
HIJKLMNOPQRSTUVWXYZABCDEFG UVWXYZABCDEFGHIJKLMNOPQRST
IJKLMNOPQRSTUVWXYZABCDEFGH VWXYZABCDEFGHIJKLMNOPQRSTU
JKLMNOPQRSTUVWXYZABCDEFGHI WXYZABCDEFGHIJKLMNOPQRSTUV
KLMNOPQRSTUVWXYZABCDEFGHIJ XYZABCDEFGHIJKLMNOPQRSTUVW
LMNOPQRSTUVWXYZABCDEFGHIJK YZABCDEFGHIJKLMNOPQRSTUVWX
MNOPQRSTUVWXYZABCDEFGHIJKL ZABCDEFGHIJKLMNOPQRSTUVWXY
Carr de Vigenre
On chiffre ensuite de la manire suivante : la lettre du mot-cl dfinit la ligne
du carr utiliser et la lettre du message clair la colonne. Ainsi, limage de la
premire lettre -p- se trouve sur la ligne commenant par V dans la colonne du
p, soit K. On chiffre donc polyalphabetique en KSYSSGTUUTZXVKMZ.

D chiffrem ent

Lquivalent numrique de VENUS dans les entiers modulo 26 est


(21,4,13,20,18). Le dchiffrement est ralis en soustrayant ce moi-cl au cryp
togramme. Cela revient ajouter (26 21,26 4,26 13,26 20,26 18) =
(5,22,13,6,8) au cryptogramme. Lquivalent alphabtique de cette cl de d
chiffrement, est FWNGI. On dchiffre alors en utilisant le mme algorithme que
pour chiffrer mais avec la cl de dchiffrement.

Exercice 15.2 Dchiffrer le message VHOSDAVH obtenu par un chiffre de Vige


nre avec la cl CAKE pour trouver un prnom masculin peu usit.

Corrig Lquivalent numrique de CAKE est (2,0,10,4). On en dduit la cl


de dchiffrement (24, 0,16,22) dont lquivalent alphabtique est YAQW. Il faut
donc chiffrer VHOSDAVH avec YAQW pour obtenir theobald.
Il est clair que la cryptanalyse est rendue plus difficile pour notre Mr X. En
effet, avec un tel systme, les lettres tendent tre uniformment distribues.
158 Cryptanalyse du chiffre de Vigenre

15.5 Cryptanalyse du chiffre de Vigenre

Deux tests permettant la cryptanalyse du chiffre de Vigenre sont proposs


dans [9, 87].

15.5.1 Test de Kasiski

Lide de ce test repose sur le principe suivant : si on rpte une mme suite
de lettres dans le clair une distance qui est un multiple de la longueur de la
cl, le cryptogramme correspondant rptera aussi la mme suite de symboles
(ou squence). Par exemple, dans le message le s s a n g lo ts lo n g s d e s v io lo n s -
s o n t le s chiffr avec la cl CLE, on chiffre les deux l e s du message clair de la
mme manire.
On en dduit donc une mthode de cryptanalyse. Si Mr X trouve dans le
cryptogramme des apparitions multiples de la mme suite de symboles, il peut
en dduire que la distance qui spare ces squences est probablement multiple
de la longueur de la cl. Nous savons en outre que lapparition de deux mmes
symboles dans le cryptogramme ne nous fournit aucune information sur la
longueur de la cl. De mme, des squences identiques de longueur 2 peuvent
apparatre accidentellement. Par contre, des squences identiques de longueur
3 nous fournissent un moyen effectif pour dcouvrir la longueur de la cl.
Considrons le cryptogramme NPWUARIWSVDPDYKUOIUGMQWSPDWQYXNPWo la
mme squence NPW de longueur 3 apparat 2 fois. La distance entre ces 2
squences est de 30. Mr X peut en dduire que la longueur de la cl divise 30.
Elle peut donc tre de longueur 2, 3 ou 5 (ou un multiple de ces valeurs).
Pour un cryptogramme plus long, il y aurait eu plus de squences de lon
gueur 3 et il aurait construit le tableau 15.3.

squence distance dcomp. de la


distance
OPVF 155 5.31
LVV 20 2.2.5
MGY 20 2.2.5
DVLQ 50 2.5.5

Tab. 15.3 valuation des distances entre squences identiques.

Dans le tableau 15.3, le plus grand commun diviseur des distances est 5.
Un cryptanalyste optimiste dclarerait que la longueur de la cl est 5. Un
cryptanalyste prudent dirait seulement que la longueur de la cl la plus probable
est 5. U justifierait sa prudence de la manire suivante :

-D e u x squences identiques auraient pu apparatre avec une distance qui


nest pas un multiple de 5. U aurait fallu lliminer.
Introduction la cryptologie historique 159

- Il est possible que la longueur de la cl ne soit pas 5 mais que ce soit 10 ou


15 .. . Autrement dit, le test de Kasiski ne dorme qu un facteur multiplicatif
prs la longueur de la cl.

Pour ces raisons, nous dcrivons une autre mthode qui, combine au test
de Kasiski, nous fournira une meilleure indication sur la longueur de la cl.

15.5.2 Test de Friedman

Ce test repose sur Vindice de concidence, not I. Celui-ci tente de rpondre


la question : en tirant un couple de lettres dun texte, quelle est la probabilit
pour que les deux lettres soient identiques ?

Considrons une squence de n lettres. Soit ni le nombre de a, n? le nombre


de b ... et 26 le nombre de z. Le nombre de paires non ordonnes constitues
de lettres identiques est E i= i ^*2 ny a Pas d ordre dans la paire) et la
probabilit de tirer une paire de lettres identiques est alors lindice de conci
dence :

/ = E i = i ni ( m ~ 1)
i(n 1)

Pour une langue naturelle, il est possible dapprocher la valeur de I


E=i Pi pour pi la probabilit dapparition de a, . . . La valeur de I pour
langlais est voisine de 0,065 et de 0,074 pour le franais.

Si on calcule cet indice pour un texte qui a t chiffr avec un chiffre mono-
alphabtique, la valeur ne changera pas puisque la distribution des frquences
dapparition des lettres est inchange. Par contre, si on le calcule pour le mme
texte chiffr par un chiffre polyalphabtique, on remarque que cette valeur d
crot en fonction de la longueur l de la cl. Pour ce faire, on arrange le texte
en colonnes de la manire suivante :
lettre ki ki k2 h
du mot-cl
1 2 l
indice de la l 1 1+ 2 .. 21
position du 2/ + 1 21 + 2 3/
texte
Dans chaque colonne, tout se passe comme si on avait chiffr au moyen dun
chiffre additif. On peut alors calculer la probabilit pour quune paire de lettres
tires au hasard soient identiques :

- '- . 0 , 0 7 4 + 7 7 "7 7 -0,038


l(n 1) l(n 1)

dans une mme dans des colonnes


colonne diffrentes
160 Cryptanalyse du chiffre de Vigenre

Justification

Dans une mme colonne, la probabilit qui nous intresse est Xw=i P =
0,074 (ou 0,065 pour langlais) car un chiffre additif ne change pas la distri
bution des lettres. Il suffit de calculer la somme des carrs des probabilits
associes aux frquences du tableau 15.1.
Dans des colonnes diffrentes, il sagit de deux chiffres monoafphabtiques
qui ont t choisis arbitrairement et deux fettres ne peuvent tre gaies que par
accident. La probabiiit de tirer deux fois fa mme iettre est X ii=i Pi = HZ =
26 2^2 () = 0,038 si on suppose tes lettres uniformment distribues sur
lintervalle 1...26.
Reste compter le nombre de paires de lettres dans une mme colonne puis
dans des colonnes diffrentes

Dans une mme coionne : fa coionne est choisie par fa premire lettre pour
laquelle on dispose de n choix possibles. Une fois slectionne la colonne, il
nous reste faire un choix parmi (n/l) 1 lettres, d o le nombre de paires
dans une mme colonne :

i(n l)
C i - ) / - ~2l

Dans des colonnes diffrentes : on a n choix possibles pour la premire


lettre et seulement n j pour la seconde (on exclut la colonne dfinie par
ie premier choix), d o

n2(l 1)
(-> 2

En combinant ce qui prcde, on calcuie ie nombre moyen de paires de fettres


identiques comme :

n(n l) n2(l 1)
2l J -0 ,0 7 4 + - ->2/ 0 ,U38

Cette probabiiit doit correspondre 7, iindice de concidence calcul sur


le cryptogramme et aprs quelques calculs, on obtient pour langlais :

_________ 0.027n____________ 1X '' ni(ni ~ -1)


(n 1)1 0.038n + 0.065 n(n 1)

et pour le franais :

^ 0.036/1 rii(rii 1)
(/i 1)7 0.038/t + 0.074 n(n 1)

Il ne reste plus qu rechercher la cl.


Introduction la cryptologie historique 161

Dtermination de La cl

Une fois connue la longueur l de la cl, Mr X sait que les symboles aux
positions 1, l + l , 21+ 1... ou 2 , 1+2, 21+2 . . . ont t obtenus au moyen du mme
chiffre additif. Il ne reste plus qu appliquer les mthodes vues prcdemment
pour cryptanalyser un chiffre monoalphabtique additif.

E xercice 15.3 On souhaite cryptanalyser le message suivant obtenu par un


chiffre de Vigenre : DSARWMRIHATXUWGRBXNDYRHXUSKGI. Appliquer le test de
Friedman ce message. Est-il possible dappliquer le test de Kasiski? Si oui,
lappliquer et si non dire pourquoi. Faire si possible la cryptanalyse du message
obtenu.

15.6 Chiffres transposition

Une autre grande catgorie de chiffres historiques est celle des chiffres
transposition. Dans ces derniers, au lieu de faire des substitutions de lettres
comme prcdemment, on va modifier la position relative des diffrentes lettres
du clair pour obtenir le cryptogramme, un peu la manire d un anagramme.
Ainsi, une transposition ralise une permutation des caractres clairs. Dans
ce cas, il doit obligatoirement y avoir correspondance entre lalphabet des clairs
et lalphabet des cryptogrammes : A c = A m -

D finition 15.1 Un chiffre transposition est dfini par lapplication / qui,


pour une cl r\ donne (une permutation), modifie la position i du clair m en
la position rj{i) dans le cryptogramme c :

/ : Am A m
r] : -> Z
Ci = f(rrii) = m v(i) Mi, 0 < i < \m\

15.6.1 Exemple de transposition simple tableau


A partir d une phrase-cl, on dfinit une cl numrique comme suit :
T F A N S P O S I T I O N
12 9 ] 4 10 8 6 11 2 13 3 7 5

On chiffre le clair : le chiffrement est lopration qui consiste transformer


un texte clair en un texte inintelligible appel texte chiffr [54].
Pour cela, on range les lettres du clair dans un tableau qui a autant de
colonnes que la longueur de la cl numrique obtenue partir de la phrase-cl :
12 9 1 4 10 8 6 11 2 13 3 7 S
1 e c h i f f r e m e n t
e s t l o p r a t i o n
q u i c o n s i s t e t
r a n s f o r m e r u n t
e x t e c l a i r e n u n
t e x t e i n i n t e l l
i g i b l e a p p e l t
e x t e c h i f f r
162 Chiffres transposition

On inscrit ensuite les colonnes prises dans lordre dfini par la cl pour
obtenir le cryptogramme rang par groupe de cinq lettres :
CTINT XITEA SERNP FEIEU NF.LF.H LCSET
BETNT TNLTF ESRAN AINOA NULEF PNOLI
EHESU AXEGX IOOFC ELCRR IMIIP FLEQR
ETIEM TTRET ER

15.6.2 Cryptanalyse

Les chiffres transposition peuvent tre cryptanalyss par lanalyse de la


distribution des frquences des bigrammes et iV-grammes, pour retrouver dans
quel ordre il faut rarranger les colonnes.
On trouve plusieurs exemples de telles cryptanalyss dans le livre de
Bauer [6].

De tels chiffres ont eu leur heure de gloire la fin du 18e sicle et au dbut
du 19e dans diverses armes europennes.

Ce dernier chiffre marque la fin de ce que Stern qualifie d ge artisanal de


la cryptologie dans son livre [86].
C h a p itr e 16

Cryptologie technique cl
secrte

16.1 Chiffre de Vernam

Le chiffre de Vernam ou one-time pad ( masque jetable) reprsente une


solution presque parfaite au problme du chiffrement. Il sagit d un systme de
chiffrement cl secrte o la taille de la cl est identique celle du message
clair. Une fois utilise, la cl est efface et nest pas rutilise.

Deux parties A et B veulent communiquer secrtement en utilisant le chiffre


de Vernam. Ils se sont mis d accord au pralable sur une cl secrte K qui est
une suite alatoire de n bits. Quand A souhaite expdier B un message M
de n bits, il envoie le cryptogramme C = M K o reprsente lopration
du ou exclusif entre les bits du message et ceux de la cl.

Exemple 16.1 M = 0011, K = 0101 C = 0011 0101 = 0110.

Le cryptogramme reu peut tre dchiffr par B pour recouvrer M en utili


sant M K C. Quand on envoie un nouveau message, il faut engendrer une
nouvelle cl.

Pourquoi ce chiffre est-il considr comme sr ? Dans la thorie de linforma


tion, il assure la condition dite du secret parfait qui garantit que linterception
du cryptogramme ne fournit aucune information au cryptanalyste. Pour cela,
on dfinit trois classes dinformations :

-les clairs M de distribution de probabilits P r { M ) telle que v { M) = 1;

-les cryptogrammes C de distribution Pr ( C) telle que Y lc v { ) = 1 !

-les cls de distribution de probabilits P r ( K ) telle que Y^k P r { K ) = 1-

Soit P r ( M |C ) la probabilit que le clair M ait t envoy sachant que le


cryptogramme C a t reu (C est le rsultat du chiffrement de M ) ou encore
la somme des probabilits P r ( K ) qui permettent de chiffrer M en C.
La condition du secret parfait est dfinie comme :
164 Machines rotors

P r ( M |C) = P r ( M ) = ^ Pr(K)
K Ek (M)=C

Habituellement il ny a quune seule cl K telle que E x ( M ) = C.


Cela signifie que si un cryptanalyste intercepte le cryptogramme C, il a
autant de chance de le dcrypter en M quen M ' ou quen tout autre clair de
lensemble des clairs.
Le secret parfait exige que le nombre de cls soit au moins aussi grand que
le nombre de messages possibles, comme illustr dans la figure 16.1 o il y a
autant de clairs que de cls que de cryptogrammes.

cls

Fig. 16.1 Illustration de la condition du secret parfait.

Une autre application de la condition du secret parfait est prsente dans [77]
o il est crit que des espions russes auraient t capturs en possession de blocs
de papier o taient inscrits des cls jetables. Aprs avoir chiffr un message,
lespion est suppos dtruire la page du bloc aprs avoir utilis la cl inscrite.
Ensuite, mme si le cryptogramme est intercept, il est formellement impossible
de cryptanalyser le texte pour incriminer lespion. Lide de la preuve est simple.
Le cryptogramme intercept C ne fournit au cryptanalyste aucune information
sur M puisque C peut provenir de nimporte quel message M (pourvu que K
soit gal C M ).
Le chiffre de Vernam est donc formellement sr au sens de la thorie de lin
formation car un cryptanalyste ne peut avoir suffisamment d information pour
dcrypter le cryptogramme mme en ayant une puissance de calcul illimite
sa disposition.
Si la sret de ce chiffre est absolue, elle est nanmoins difficile mettre en
uvre puisquil est ncessaire dengendrer des cls parfaitement alatoires de
grandes tailles, de les stocker et de les partager avec le destinataire du message.
En consquence, le chiffre de Vernam est rarement utilis. Le plus bel exemple
de son utilisation est le tlphone rouge qui relie Washington Moscou.

16.2 Machines rotors

Les systmes de chiffrement que nous avons considrs jusqu'alors peuvent


tre complexifis et scuriss en utilisant des machines de chiffrement. De telles
Cryptologie technique cl secrte 165

machines permettent daccrotre la vitesse de chiffrement et de dchiffrement


et augmentent le nombre de cls de manire importante.
L histoire des machines chiffrer est vieille de plusieurs sicles. Les premires
taient mcaniques, comme la machine de Jefferson, et demandaient plusieurs
secondes pour le chiffr ement d un caractre et les machines lectroniques les
plus rcentes peuvent chiffrer des millions de caractres par seconde.
Nous prsenterons deux types de telles machines : la roue de Jefferson
(fig. 16.2) et les machines de type ENIGMA comme celles utilises au cours
de la Seconde Guerre mondiale.

16.2.1 Machine de Jefferson

Cette machine se prsente sous la forme de dix disques indpendants sur


lesquels sont inscrits une permutation diffrente des lettres de lalphabet. En
fait, la vritable machine de Jefferson tait constitue de 36 disques mais nous
en avons restreint le nombre pour simplifier en nous inspirant de [81].

lA RlA plA lA lA r r
A A
rI
V SJ p E I
r
i O s I O O u S R H

\\E u
W\ u\ L \
S Y M T R H E
E
Y P V \P S \T W

Fig. 16.2 Roue de Jefferson.

Lmetteur et le destinataire possdent des disques identiques rangs dans


le mme ordre.

Chiffrem ent

Pour chiffrer un clair, lmetteur dcoupe le message en bloc de dix lettres,


inscrit ce bloc en faisant tourner les disques et envoie nimporte laquelle des 25
lignes restantes comme cryptogramme.

Dchiffrem ent

Pour dchiffrer le cryptogramme, le destinataire inscrit par blocs de 10


lettres le cryptogramme sur la machine et le clair apparat sur lune des 25
lignes restantes.
Cela marche bien si le texte est dans une langue naturelle intelligible. Ce
pendant, si le clair est h ey sbirtd h et est chiffr en lisant 3 lignes en dessous, on
obtient le cryptogramme AWKDGGBEYO et il est fort improbable de retrouver le
166 Machines rotors

clair correspondant si les parties ne se mettent pas daccord pour une distance
bloc par bloc.
disque 1 2 3 4 5 6 7 8 9 10
colonne
1 A A A A A A A A A A
2 R R P N V S P E I I
3 I O S I O O U S R H
4 E S Y M T R H U E E
5 K U L O Y P I p S T
6 O V U C L M S B L 0
7 B I K u E U E L B M
8 C J B L B B N C C U
9 U L R T C D R D D C
10 D B C Y D Y Y H F D
11 J F D B G E D I N F
12 T C T F F C B J Y G
13 L G F G K V F F T J
14 N K G S N H G O G P
15 P N O H H F V G H Q
16 W P N J U K J K J B
17 Q Q E D P L K M K N
18 M T H E Q Q M N M V
19 S H M K R i T Q P W
20 V E Q P S J O R Q X
21 X D v Q w N L V v L
22 z Y w V X G W W w Y
23 G W X X M T Q Y K
24 H X z R I W X X u R
25 Y Z I Z J X Z T X S
26 F M J W Z Z c Z z Z

E x e rcice 16.1 Chiffrer le clair (sans espaces) what i s the b e st tempe-


ra tu re in sauna? How many tim es must one go i n ? How lon g must I
sta y ? et dcouvrez un cryptogramme intelligible pour les distances par bloc
suivantes :
8 ,5 .6 .2 ,1 3 ,4 ,3

C orrig Le cryptogramme correspondant, emprunt [81] est HARDLY ANY


RULES. FEEL CONFORTABLE, KID, ENJOY. THE KIND OF SAUNA IS CRUCIAL
FOR DEGREES. Ce chiffre a t conu spcialement pour obtenir cette phrase !

Le chiffre de Jefferson nest autre quune substitution polyalphabtique.


Si on considre la version o on fixe lavance la distance de chiffrement,
1 < i < 25, i.e. on lit le cryptogramme i lignes en dessous du clair, la roue de
Jefferson peut tre vue comme une substitution polyalphabtique de priode
10 .
Cryptologie technique cl secrte 167

La situation est compltement diffrente si la distance de chiffrement est


choisie arbitrairement pour chaque bloc de 10 lettres, comme nous lavons fait
ci-dessus. Ainsi aprs un bloc de 10 lettres du clair, on peut modifier les sub
stitutions pour les 10 lettres suivantes.
De toute faon, il ny a que 25 combinaisons de substitutions possibles dis
ponibles pour les blocs de longueur 10.

16.2.2 Machines rotors

Les machines rotors sont une gnralisation de la mthode prcdente qui


est apparue avec les machines crire lectriques. Une substitution P donne
est alors ralise par un permuteur laide de contacts lectriques qui relient N
entres pour lalphabet du clair N sorties pour lalphabet du cryptogramme
par N fils (fig. 16.3 (a)).

(a) (b) (c)

Fig. 16.3 Substitution fixe, dcalage et rotation ralise par


des contacts lectriques.

Pour obtenir une ralisation par des contacts lectriques d alphabets de


substitutions { Ppl} (o p1 reprsente une rotation de i positions), le permuteur
est dispos derrire les sorties de la planche de contacts comme indiqu dans
la figure 16.3 (b). Il faut alors ajouter des cbles extensibles qui risquent de se
casser.
Le problme des cbles extensibles peut tre rsolu si on ajoute une seconde
planche de contacts la sortie du permuteur. Dans ce cas, on peut effectuer
une translation sur le permuteur sans risquer de briser les cbles extensibles,
comme dcrit dans la figure 16.3 (c). En utilisant un rotor (fig. 16.4), on peut
galement se passer de la seconde planche de contacts. De cette faon, il est
possible de raliser une famille dalphabets de substitutions.
168 Chiffres produits et itrs

Fig. 16.4 D em i-rotor de A D am m (1919).

16.3 Chiffres produits et itrs

Pour amliorer la qualit du chiffrement et viter les techniques de cryp


tanalyse statistiques que nous avons dcrites prcdemment, il a t imagin
de combiner des substitutions dalphabet et des transpositions [55] et dit
rer ce procd plusieurs fois. De cette manire, on peut rendre le travail du
cryptanalyste beaucoup plus difficile.
Un chiffre produit est appel chiffre itr si le cryptogramme est obtenu par
applications itres dune fonction de tour ou de ronde au mme clair.
A chaque tour, une cl de tour est combine avec le texte d entre.

D fin ition 16.1 Dans un chiffre itr r tours, le cryptogramme est calcul
par application itre au clair dune fonction de tour g telle que :

Ct = g ( C i _ i , K i ) i = 1 r

o Co est le clair, Ki une cl de tour et Cr le cryptogramme final.


Le dchiffrement est obtenu en renversant lquation prcdente. Ainsi, pour
une cl fixe K i , g doit tre inversible.

C est peu de chose prs le fonctionnement de DES que nous prsentons


dans la section suivante. Ce chiffre illustre une classe de chiffres produits par
ticulire, celle des chiffres de Feistel qui sont dfinis de la manire suivante.

D fin ition 16.2 Un chiffre de Feistel de taille de bloc 2n r tours est :

g : {0, l } n x {0, l } n x {0, 1}'" > {0, l } n x {0, l } n

X , Y ,K ^ (y, F(Y, K ) X )

o g dnote toute fonction de 2n + m bits dans 2n bits, laddition bit bit


modulo 2 sur les blocs de n bits.
Cryptologie technique cl secrte 169

Le fonctionnement d un chiffre de Feistel est le suivant : tant donn un clair


P dcoup en deux blocs de mme taille ( P L, P R) et r cls de tour K t , . . . , K r,
le cryptogramme final ( CL, C R) est calcul itrativement en r tours.
On pose C q = P L et C R P R et, pour i = 1 , . . . , r, on calcule :

( C f , G f ) = ( CR_ , , F { Cf Li . 4 C ti)

avec Ci = (C/% C R). C R = C L et C R = C R est une inversion finale qui facilite


le dchiffrement.
Les cls de tour K i , . . . , K r sont calcules par un algorithme de squence-
ment de la, cl sur une cl principale K .
Le dchiffrement est obtenu en inversant lordre de squencement de la cl,
ce qui est une proprit particulire des chiffres de Feistel.

16.4 DES

Nous dcrivons brivement le Data Encryption Standard qui a t lun des


systmes de chiffrement les plus utiliss. C est notamment celui qui est encore
en vigueur pour chiffrer les mots de passe sur les systmes Unix. Le DES a t
conu dans les annes 1970 par IBM pour tre un systme de chiffrement cl
secrte calculatoirement, sr.

16.4.1 Fonctionnement

DES a t construit pour fonctionner aussi bien de faon logicielle que ma


trielle. L algorithme reoit en entre :

- un message M de 64 bits ;

- une cl K de 56 bits ;

et fournit un cryptogramme C de 64 bits en sortie.


Lalgorithme fait subir M une permutation initiale I P donnant le message
permut M '. Cette permutation na aucune signification cryptographique
particulire. M ' est ensuite divis en deux mots de 32 bits : L 0 qui reprsente
la partie gauche de M ' et Ro pour la partie droite. DES excute ensuite 16
itrations de la fonction / comme indiqu par la figure 16.5. Elles combinent
substitutions et transpositions.
Les parties gauches et droites sont modifies comme suit :

E i R i 1
Ri = L i-i f ( R i - i , K i)

pour 1 < i < 16 et / une fonction qui prend en entre les 32 bits de la
partie droite et les 48 bits de la cl de tour et fournit une sortie de 32 bits
La fonction / est dfinie en utilisant huit permutations appeles S-boxes - S
170 DES

sortie

Fig. 16.5 Chiffrement par le DES.


Cryptologie technique cl secrte 171

pour substitution en anglais - qui associent 6 bits d entre 4 bits de sortie.


Chaque cl de tour K i contient un sous-ensemble diffrent des 56 bits de la cl.
Enfin, le pr-cryptogmmme C' = (Rie, Lie) subit la permutation inverse de la
permutation initiale I P ~ 1 et donne le cryptogramme final [77].

F onction / et .S-boxes

La figure 16.6 illustre le fonctionnement de la fonction K,). Dans


un premier temps, R i-i est tendu en un bloc de 48 bits en utilisant E , la table
de slection des bits. f?,_i = ?qr -2 . . . ry2 est transform en r32r i . . . ?3i r32?q en
rptant certains bits comme dans la table de slection des bits ci-dessous.

32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1

R-1

----------K

Fig. 16.6 Calcul de f( Ri - i, Ki).

Ensuite, on effectue une opration de ou exclusif entre le rsultat de E ( R i - i )


et Ki, une cl de tour de 48 bits. On scinde ensuite le rsultat de cette opration
en huit blocs de 6 bits B \,B 2 , - . . , Bg.
172 DES

E ( R i-i) Ki B 1 B 2 Bg

Chaque B j pour I < j < 8 est ensuite utilis comme lentre d une fonction
de substitution (.S'-box) Sj qui renvoie un bloc de 4 bits en sortie Sj(Bj).
Voici par exemple la S'-box Si :

C olonne
ligne

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 12 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

Chaque S-box associe un bloc de 6 bits B j = bib2bzbibgbg un bloc de 4


bits de la manire suivante : lentier reprsent par bbe slectionne une ligne
de Sj et lentier reprsent par 62^36465 une colonne. La val< ur de S:( ( B j) est
la reprsentation de lentier inscrit dans la S-box cette position.

E x em p le 16.2 Si B\ = 010011 alors ligne = 01 ou 1 en dcimal et colonne


= 1001 ou 9 en dcimal, la valeur de Si [1,9] = 6 ou 0110 en binaire et
S i (010011) = 0110.

Les huit blocs de 4 bits correspondant S] (B\)S2{B 2) . . . Sg(Bg) sont en


suite concatns en un bloc de 32 bits qui subit une permutation P donne
par le tableau ci-dessous :

16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25

Le bloc de 32 bits retourn par /( i ? i _ i ,/v j) est donc :

/ ( R i - u K i ) = P(S 1 (B1 )S2 (B2) . . . S 8( S 8))

C alcu l d e la d iv ersification de la cl

A chacune des 16 itrations de lalgorithme, on utilise une cl diffrente K,


(1 < i < 16) de 48 bits obtenue partir de la cl initiale K de 64 bits. La
figure 16.7 illustre le fonctionnement du processus de diversification de la cl.
Cryptologie technique cl secrte 173

Fig. 16.7 C alcul de diversification de la cl d e D ES.


174 DES

La cl initiale K est compose de 64 bits comprenant huit bits de parit en


position 8 ,1 6 ,2 4 ,..., 64. Ceux-ci sont supprims et les 56 bits restants subissent
une permutation laide de la fonction PC-1 (pour permuted choice 1) dcrite
dans le tableau ci-dessous :

57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

Le rsultat de P C -l(/ ) est ensuite spar en deux moitis de 28 bits C et


D. Les blocs C et D subissent ensuite une permutation circulaire vers la gauche
permettant de construire chaque cl de tour A -
En notant respectivement Ci et D; les valeurs respectives de C et D utilises
pour engendrer la cl de tour Ki, on a :

Ci = L S i(C ^ i), A = L S * (A -i)

pour Co et Do les valeurs initiales de C et de D et L.S, une permutation


circulaire de j positions vers la gauche avec j une fonction de i, le numro de
litration

itration 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
dcalage 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

La valeur de la cl de tour A est enfin donne par A = P C - 2 ( A A ) o


PC-2 est la permutation suivante :

14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32

16.4.2 Dchiffrement

Le dchiffrement est effectu par le mme algorithme en inversant lordre


d utilisation des cls de tour i.e. en utilisant A la premire itration, A s
Cryptologie technique cl secrte 175

la seconde . . . et K\ la seizime. Cela est d au fait que la permutation finale


est linverse de la permutation initiale et

R i-l f'i
L i-i = Ri f{L i, K i)

Observons que si lordre des cls de tour est invers, lalgorithme, quant
lui, reste identique.

16.4.3 Remarques historiques et observations

Le DES est une volution des machines rotor (dcrites dans [6]) utilises
par larme allemande lors de la Seconde Guerre mondiale et cryptanalyses
avec un succs relatif notamment grce au mathmaticien anglais A. Turing.
Deux faiblesses principales ont t observes dans la conception du DES :

(1) des cls de 56 bits peuvent tre trop courtes pour assurer une robustesse
suffisante ;

(2) la conception des .S'-boxes autoriserait la NSA effectuer plus rapidement


une cryptanalyse.

Cependant, aucun critre qui affaiblirait la sret ,S'-boxes nest publique


ment reconnu. La critique sur la taille de la cl devient plus pertinente avec
laccroissement de la capacit de calcul des machines. En construisant des ma
chines spcialises, il est thoriquement possible de faire une cryptanalyse
clair connu. On effectue afors une recherche exhaustive de fa ci. tant donn
un clair x de 64 bits et son cryptogramme y, toutes les cls sont testes jusqu'
obtenir D E Sk(*) = U (d est, possible davoir plusieurs solutions). Les machines
ddies voques ci-dessus utilisent massivement le paralllisme et leur cot
dcrot chaque anne.
C h a p it r e 17

Cryptanalyss diffrentielle et
linaire des chiffres itrs
On se propose d tudier deux techniques rcentes de cryptanalyse des chiffres
itrs : la cryptanalyse diffrentielle et la cryptanalyse linaire. Historiquement,
cest la cryptanalyse diffrentielle qui a t introduite en premier par Biham
et Shamir [10] pour tenter de cryptanalyser le DES. Cette mthode a t am
liore ensuite au moyen de la cryptanalyse linaire introduite par Matsui [70],
notamment en ce qui concerne la complexit de lattaque.

17.1 Prsentation du chiffre utilis

On utilise le chiffre propos dans [44, 45] pour prsenter ces techniques de
cryptanalyse.
On considre un rseau de substitutions/permutations simplifi dcrit par la
figure 17.1 qui prend en entre un bloc de 16 bits et qui fonctionne itrativement
en 4 tours. Chaque tour consiste en :

- Un mlange avec la cl de tour ralis par une opration de ou exclusif entre


la cl de tour et le bloc lentre d un tour. Cette opration est rpte
lissue du dernier tour.

-U ne substitution; le bloc de 16 bits est scind en 4 sous-blocs qui entrent


dans 4 botes-S identiques 4 bits d entre et 4 de sorties (avec le bit de
poids fort gauche). Cette bote-S implante une fonction boolenne qui est
dcrite ci-dessous en codant les entres et les sorties en hexadcimal.

entre 0 1 2 3 4 5 6 7 8 9 A B C D E F
sortie E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7

-U ne transposition des bits (ou permutation des positions des bits) dfinie
par : la i e sortie de la j e bote-S est relie la j e entre de la ie bote-S.

Le dchiffrement est obtenu en faisant remonter le cryptogramme ou, en


dautres termes, en inversant lordre des cls de tour, de manire analogue au
dchiffrement dun chiffre de Feistel.
Ce chiffre na pas dalgorithme de squencement de la cl ; on supposera que
les bits de la cl sont engendrs indpendamment et sont donc non corrls.
178 Prsentation du chiffre utilis

... clair Pl6

tour 4

crypto - C\6

F ig . 1 7 .1 Chiffre itr simple.


Cryptanalyss diffrentielle et linaire des chiffres itrs 179

17.2 Cryptanalyse diffrentielle

17.2.1 Principe de lattaque

Dans la cryptanalyse diffrentielle, invente par Biham et Shamir [10], on


exploite le fait suivant : certaines occurrences de diffrences entre des clairs et
certaines occurrences de diffrences ont une forte probabilit dapparition.

En notant X = [ X i...X . ] les entres et Y = [Y j. . . Yn] les sorties, on


sintresse des quantits A X = X ' X " pour X ' et X " deux entres et
AY = Y' Y " pour Y ' et Y " deux sorties o dnote le ou exclusif bit bit.

Dans un chiffre idal, la probabilit pour quune diffrence de sortie par


ticulire A Y apparaisse, tant donne une diffrence d entre A X , doit valoir
1/ 2 .

Cette cryptanalyse exploite les cas o un A Y particulier apparat pour un


certain AX" avec une forte probabilit pp. Le, couple (A X , A Y ) est appel un
diffrentiel.

Cest une attaque clair choisi. Le cryptanalyste choisit des paires dentres
X ' et X " qui satisfont un A X prcis sachant que le A X considr conduit avec
une forte probabilit un A Y particulier.

Il sagit donc de construire les diffrentiels (A X , A Y ) les plus probables.

Pour cela, il faut examiner les proprits des boites-S et utiliser ces pro
prits pour dterminer les caractristiques diffrentielles. Plus prcisment, on
considre les diffrences des entres et des sorties des botes-S pour dterminer
celles qui apparaissent le plus frquemment. Ensuite, on va combiner linforma
tion recueillie sur les botes-S pour en dduire une caractristique diffrentielle
du chiffre.

17.2.2 Analyse dune bote-S

On examine tous les diffrentiels (A X . A Y ) et on dtermine la probabilit


dapparition de A Y tant donn A X . Dans notre cas. cela revient numrer
16 valeurs pour X ', celle de X " tant fixe par la valeur de A X recherche.

Exemple 17.1 On cherche les valeurs de A Y pour chaque paire (X , X A X )


pour les valeurs A X = 1011,1000,0100 (resp. en hexadcimal B, 8 et 4).

Les valeurs qui apparaissent avec le plus dcart sont A Y = 0010 pour A X =
1011 (8/16), A Y = 1011 pour A X = 1000 (4/16) et A Y = 1010 pour A X =
mon ffi/ifi
180 Cryptanalyse diffrentielle

X Y AV

t>
T 1 A a = 0100

II
c
0000 ir U .J 1101 1100
0001 0100 0010 1110 1011
0010 1101 0111 0101 0110
0011 0001 0010 1011 1001
0100 0010 0101 0111 1100
0101 1111 1111 0110 1011
0110 1011 0010 1011 0110
0111 1000 1101 1111 1001
1000 0011 0010 1101 0110
1001 1010 0111 1110 0011
1010 0110 0010 0101 0110
1011 1100 0010 1011 1011
1100 0101 1101 0111 0110
1101 1001 0010 0110 0011
1110 0000 1111 1011 0110
1111 0111 0101 1111 1011

Si la bote-S tait parfaite, toutes ces probabilits devraient tre de 1/16.


On peut alors construire une table des diffrentiels qui rsume toutes les
possibilits. Chaque case reprsente le nombre doccurrences de la diffrence
de sortie A Y tant donne la diffrence d entre A X . Son maximum est pour
A A = B et A Y =2. Autrement dit, la probabilit pour que A Y = 2 pour une paire
dentres dont la diffrence vaut A A = B est de 1/2. Le minimum est 0 atteint
pour un grand nombre de paires.
En numrant les diffrentes possibilits des diffrentiels, on peut construire
une table des diffrentiels qui synthtise toutes les valeurs possibles.

AL > 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 16 0 0 0 0 U 0 0 0 0 U 0 0 0 0 0
1 0 0 0 2 0 0 0 2 0 2 4 0 4 2 0 0
2 0 0 0 2 0 6 2 2 0 2 0 0 0 0 2 0
3 0 0 2 0 2 0 0 0 0 4 2 0 2 0 0 4
4 0 0 0 2 0 0 6 0 0 2 0 4 2 0 0 0
5 0 4 0 0 0 2 2 0 0 0 4 0 2 0 0 2
6 0 0 0 4 0 4 0 0 0 0 0 0 2 2 2 2
7 0 0 2 2 2 0 2 0 0 2 2 0 0 0 0 4
8 0 0 0 0 0 0 2 2 0 0 0 4 0 4 2 2
9 0 2 0 0 2 0 0 4 2 0 2 2 2 0 0 0
A 0 2 2 0 0 0 0 0 6 0 0 2 0 0 4 0
B 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2
c 0 2 0 0 2 2 2 0 0 0 0 2 0 6 0 0
D 0 4 0 0 0 0 0 4 2 0 2 0 2 0 2 0
E 0 0 2 4 2 0 0 0 6 0 0 0 0 0 2 0
F 0 2 0 0 6 0 0 0 0 4 0 2 0 0 2 0

Proprits de la table des diffrentiels

La somme de tous les lments d une ligne ou d une colonne vaut 2n = 16.
Tous les lments sont pairs (la diffrence est symtrique).
Cryptanalyss diffrentielle et linaire des chiffres itrs 181

Si A X = 0 , il doit en tre de mme pour A Y.


Si la bote-S tait parfaite, tous les lments du tableau devraient tre gaux
1, ce qui nest pas possible.

17.2.3 Influence de la cl sur un diffrentiel

Lentre de la bote-S en faisant fi de linfluence de la cl est X et sa sortie


Y. Dans la structure du chiffre, il faut prendre en compte linfluence de la cl
lentre. Il faut considrer W comme tant lentre de la bote-S de cl K .
Pour un diffrentiel AWi = W ' W " on a W [ W '1 = (X- K,) ( X "
IQ = X ' X = A X car K t K t = 0 (fig. 17.2).

Fig. 17.2 Influence de la cl sur une bote-S.

Les bits de la cl nont pas dinfluence sur les diffrentiels. C est l tout
lintrt de la cryptanalyse diffrentielle et la grande ide de Biham et Shamir
qui ont russi faire disparatre linfluence de la cl dans les paramtres de la
cryptanalyse.

Il faut ensuite russir combiner les informations que lon a obtenues sur
lensemble du chiffre en une caractristique diffrentielle du chiffre.

17.2.4 Construire la caractristique diffrentielle du chiffre


Une fois obtenue la table des diffrentiels des botes-S, il faut construire la
caractristique diffrentielle du chiffre par concatnation des paires de diff
rences adquates entre les botes-S.
En construisant la caractristique diffrentielle de certains diffrentiels avec
les botes-S de chaque tour, on met en relation certains des bits du clair et
certains bits lentre du dernier tour. On pourra ensuite attaquer le chiffre
puisquon connat un grand nombre de couples clairs/cryptogrammes en faisant
remonter le cryptogramme dans le dernier tour et en le comparant avec les
bits lentre du dernier tour. On illustre cette construction au moyen de
lexemple 17.2.

Exemple 17.2 On utilise les paires de diffrences suivantes :


S12 : A X = B >A Y = 2 proba 8/16
S23 A X = 4 > A Y = 6 proba 6/16
5 32 : A X = 2 A Y = 5 proba 6/16
5 33 : A X = 2 A Y = 5 proba 6/16
182 Cryptanalyse diffrentielle

La diffrence sur lentre du chiffre est A P = [0000 1011 0000 0000] et.
lentre du dernier tour, A U 4 = [0000 0110 0000 0110] avec comme probabilit
(6 /16)2 puisquon a fait intervenir S32 et S 3 3 . Cette probabilit est obtenue
connaissant A U 3 qui a comme probabilit 6/16 tant donn A f/ 2 de probabilit
8/16 ainsi que A P . La probabilit d avoir

A UA = [0000 0110 0000 0110] (17.1)

sachant quon a entr A P est le produit des probabilits prcdentes, soit


(6 /16)2(6/16)(8/16) = 27/1024 (on a suppos quil y a indpendance).

17.2.5 Retrouver des bits de la cl

Une fois quon a trouv une caractristique diffrentielle de R 1 tours dun


chiffre R tours avec une probabilit suffisante, on peut tenter de retrouver
des bits de la dernire cl de tour (ici K 5 ). Ceux-ci sont dtermins en prenant
en compte les 2 dernires botes-S du dernier tour et les bits obtenus par la
caractristique diffrentielle (fig. 17.3).
La mthode pour retrouver des bits de la cl est la suivante :

(1) Choisir un diffrentiel d entre appropri.

(2) Construire un nombre adquat de couples de clairs qui mnent ce diff


rentiel d entre, les chiffrer et ne conserver que les paires de cryptogrammes
correspondantes.

(3) Pour chaque diffrentiel d entre, construire le diffrentiel de sortie corres


pondant la sortie de la caractristique diffrentielle comme indiqu ci-
dessus.

(4) Pour chaque valeur possible des bits correspondants de la dernire cl de


tour, on compte le nombre de fois o lquation (17.1) est satisfaite. Plus
prcisment, pour toutes les valeurs possibles des bits cherchs de la dernire
cl de tour, on ralise une opration de ou exclusif avec les bits correspon
dants du cryptogramme et on les fait passer lenvers dans les deux botes-S
concernes pour obtenir les entres des botes-S du dernier tour.

(5) La valeur maximale du compteur indique normalement la cl la plus pro


bable.

On effectue cette opration pour un grand nombre de couples


clairs/cryptogrammes et on compte le nombre de fois o lexpression construite
par la caractristique diffrentielle est vrifie.
Les autres bits de la cl sont dtermins par une recherche exhaustive.

Exemple 17.3 La caractristique diffrentielle affecte les entres des boites-


S S 4 2 et S44 du dernier tour. Pour tous les couples clair/cryptogramme,
Cryptanalyss diffrentielle et linaire des chiffres itrs

AP=[0000 10110000 0000]

Fig. 17.3 Caractristique diffrentielle du chiffre.


184 Cryptanalyse linaire

on cherche les 256 valeurs possibles des bits de qui sont concerns :
[-^5,5 ^5,8, K s,13 - - - ^5,16]-
Pour chaque valeur, on compte le nombre de fois o (17.1) est satisfaite en
calculant les valeurs de [A 1/4,5 . . . A f/4,8, At/4,13 . . . A L q jf,].
On compte, pour chaque cl, le nombre de fois o (17 1) est satisfaite et on
choisit la cl qui a maximis cette valeur.

Exprimentation avec 5000 couples, en appliquant la technique, la cl la plus


vraisemblable est (en hexadcimal) 24.

17.2.6 Complexit de lattaque

En guise de mesure de complexit, on mesure la quantit de donnes requise


pour mener bien cette attaque, soit N o clairs.
Il est gnralement compliqu de dterminer le nombre de clairs choisis
ncessaires. Cependant, exprimentalement, on a valu que

N o c/pD

o p o est la probabilit de la caractristique diffrentielle des R 1 tours et c


une petite constante.
Dans [10], il est mentionn quun DES limit 6 tours peut tre attaqu
avec succs en 0,3 s avec 240 clairs. Dans [87], on peut trouver un exemple
complet de cryptanalyse diffrentielle sur un DES 6 tours.
Le DES 16 tours ncessite 258 tapes de calcul (ce qui est suprieur la
recherche exhaustive qui parcourt les 256 valeurs possibles de la cl).

17.3 Cryptanalyse linaire

17.3.1 Principe de lattaque

On cherche des expressions linaires fonctions de u bits du clair, de v bits du


cryptogramme partiel et de bits de la cl de tour qui ont une forte probabilit
doccurrence.
Il sagit d une attaque clair/cryptogramme connus dans laquelle on ap
proche le fonctionnement dun morceau du chiffre par une expression linaire
de la forme :

X i2 . . . X iu Yh . . . Yu = 0
' v "------>------- v------- ' (17.2)
u bits dentre v bits de sortie

Le but de cette cryptanalyse est de trouver de telles expressions qui ont mie
forte (ou faible) probabilit. Si un chiffre a tendance vrifier lquation (17.2)
avec une forte (ou faible) probabilit, les cryptogrammes scartent d une dis
tribution uniforme. En effet, si on choisissait alatoirement u + v bits et quon
Cryptanalyss diffrentielle et linaire des chiffres itrs 185

vrifiait la probabilit associe lquation (17.2), celle-ci devrait tre exacte


ment de 1/ 2.
Cest lcart par rapport cette valeur de rfrence, ou le biais qui est
exploit par la cryptanalyse linaire. Plus la probabilit pl associe lexpres
sion est loin de 1/2 (en valeur absolue), meilleure sera la cryptanalyse. En
effet, si pl = 1, lquation (17.2) est une approximation linaire parfaite du
fonctionnement du chiffre, tandis que si pl = 0, lquation (17.2) devient une
approximation affine parfaite du chiffre :

x h X i2 . . . X ; Yh . . . Yjv.= 1
^_i----------------------------------------------- (1 ?3 )
u bits d entre v bits de sortie

Dans un cas comme dans lautre, le chiffre prsente une faiblesse extrme.
On se base sur lalgorithme 2 prsent dans larticle de Matsui [70] qui
construit une approximation linaire fonction de bits dentre et de bits en
sortie de lavant dernier tour.
Les bits du clair sont supposs alatoires ainsi que ceux en entre du dernier
tour.

17.3.2 Construire une approximation linaire du chiffre

On considre le seul composant non linaire du chiffre, les botes-S. En nu


mrant les proprits non linaires des botes-S, on peut mettre en exergue
certaines approximations linaires ou affines entre certains bits d entre et cer
tains bits de sortie.
Ensuite, on va concatner ces approximations des botes-S de telle sorte
que les bits intermdiaires des cls de tours puissent tre limins, laissant une
expression qui prsente un fort biais et qui ne soit fonction que du clair et des
bits dentre du dernier tour.
Nous allons tout d'abord construire les expressions pour les botes-S.

Construction des expressions pour les botes-S

Xi x 2 x 3 x4

4x4 bote-S

Yj Y2 Y3 Y4

Fig. 17.4 Une bote-S.

On cherche les vulnrabilits d une bote-S, i.e. toutes les approximations


linaires entre X = [X iX 2X 3X 4] et Y = [F1F2I 3E4] (fig. 17.4).
186 Cryptanalyse linaire

E x em p le 17.4 On sintresse lexpression linaire X 2 X 3 Y CL1Y:i CL1V4 = 0.

Ai a 2 A3 A4 n y2 V3 a 2. a3 El L3 FT
0 0 0 0 1 1 1 0 u
0 0 0 1 0 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0
0 0 1 1 0 0 0 1 1 1
0 1 0 0 0 0 1 0 1 1
0 1 0 1 1 1 1 1 1 1
0 1 1 0 1 0 1 1 0 1
0 1 1 1 1 0 0 0 0 1
1 0 0 0 0 0 1 1 0 0
1 0 0 1 1 0 1 0 0 0
1 0 1 0 0 1 1 0 1 1
1 0 1 1 1 1 0 0 1 1
1 1 0 0 0 1 0 1 1 1
1 1 0 1 1 0 0 1 1 0
1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 1 1 1 0 0

En numrant les 16 valeurs possibles pour X et en observant les valeurs cor


respondantes de Y donnes par la bote-S, on remarque que pour 12 valeurs
sur 16 lexpression X 2 X 3 Yx Y3 Y4 = 0 est vrifie. Le biais est donc
de 12 /16-1/2 =1/4.

E x e rcice 17.1 Calculer le biais associ lexpression linaire X 3 X 4 Y\


Y4 = 0.

C o rrig En numrant les 16 valeurs possibles pour X et en observant les


valeurs correspondantes de E , on remarque que le biais est de 2 /1 6 -l/2 = -3 /8 .
Dans ce cas, la meilleure approximation est affine et reprsente par X 3 X 4
= 1.

En numrant les diffrentes possibilits de combiner les bits de X et ceux


de Y , on peut ainsi construire une table d'approximations linaires qui numre
le nombre de fois o une expression linaire (resp. affine) est vrifie pour toutes
les valeurs de X et de Y .
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 -2 -2 0 0 -2 6 2 2 0 0 2 2 0 0
2 0 0 -2 -2 0 0 -2 -2 0 0 2 2 0 0 -6 2
3 0 0 0 0 0 0 0 0 2 -6 -2 -2 2 2 -2 -2
4 0 2 0 -2 -2 -4 -2 0 0 -2 0 2 2 -4 2 0
5 0 -2 -2 0 -2 0 4 2 -2 0 -4 2 0 -2 -2 0
6 0 2 -2 4 2 0 0 2 0 -2 2 4 -2 0 0 -2
7 0 -2 0 2 2 -4 2 0 -2 0 2 0 4 2 0 2
8 0 0 0 0 0 0 0 0 -2 2 2 -2 2 -2 -2 -6
9 0 0 -2 -2 0 0 -2 -2 -4 0 -2 2 0 4 2 -2
A 0 4 -2 2 -4 0 2 -2 2 2 0 0 2 2 0 0
B 0 4 0 -4 4 0 4 0 0 0 0 0 0 0 0 0
c 0 -2 4 -2 -2 0 2 0 2 0 2 4 0 2 0 -2
D 0 2 2 0 -2 4 0 2 -4 -2 2 0 2 0 0 2
E 0 2 2 0 -2 -4 0 2 -2 0 0 -2 -4 2 -2 0
F 0 -2 -4 -2 -2 0 2 0 0 -2 4 -2 -2 0 2 0

A chaque valeur de la table on a retranch 8. Le biais est donc la valeur de


la table divise par 16. T [3 ,9] = P r (X 3 X 4 = V) CL1I 4) = 1/2 6/16 = 1/8.
Cryptanalyss diffrentielle et linaire des chiffres itrs 187

De cette manire, on peut trouver quelle approximation linaire a le plus


de chance dtre satisfaite. U reste maintenant construire petit petit une
approximation linaire (resp. affine) du chiffre dans sa totalit.

Combiner les diffrentes expressions linaires

On doit concatner les approximations prcdentes des botes-S les plus


probables de telle sorte que les bits intermdiaires puissent tre limins, lais
sant une expression linaire qui prsente un fort biais et qui ne soit fonction
que du clair et des bits lentre du dernier tour.
Le principe suivant permet de raliser cette concatnation. Il sagit de loutil
de base pour concatner les approximations linaires des botes-S.
Soient X i et X 2 deux variables alatoires (v.a.) binaires, lexpression linaire
X i X 2 = 0 peut tre rcrite en X\ = X 2 et lexpression affine X \ X 2 = Y
peut tre rcrite en A'] ^ X 2.

Les distributions de probabilit sont :


1) = 1 - Pi
Les deux VA sont supposes indpendantes et

P 1P2 i= j = 0
i = 0 ,j = 1
i = l,j = 0
, (1 - P i ) ( l - P 2 ) i= j = 1

P r (X i X 2 = 0) = P r (X j = X 2) = Plp 2 + (1 - p i ) ( l - p2) =
1/2 + 2i 2 = 1/2 + i i2
si Pi 1/2+,-, ; reprsente le biais de chaque X i et ji2 le biais de X i Q X 2 = 0.
Matsui a gnralis la proprit prcdente pour plusieurs variables.

Lemme 17.1 [70] Soient X \, . . . , X n n VA binaires indpendantes.


r i , 2n~1 Ff" -
P r (X i . . . X n = 0) = < l , H ;= i e*
( 2 ' l,2,...,r

Observons que si pi = 0 (resp. 1) pour tout i, alors P r (X 1 .. .Q)Xn 0) = 0


(resp. 1) et si un seul des pi = 1/2, P r ( X 1 . . . X n = 0) = 1/2.

Exercice 17.2 Dmontrer le lemme.

Corrig La probabilit cherche est un polynme de degr n quon cherche


interpoler. Le polynme P (Pi, ., pn) vaut 1/2 ds quun des p, = 1/2 (en
effet, la probabilit davoir un nombre pair de 1 est gale la probabilit d avoir
un nombre impair de 1). Donc, P (p i, ,p n) = K(p\ 1/2) (pn 1/2) + 1/2
pour une constante K . De plus, si tous les p, valent 1, il en est de mme pour
la probabilit, donc K = 2n~1.
En dveloppant les approximations linaires du chiffre, les valeurs des VA
Xi reprsenteront des approximations linaires des botes-S.
188 Cryptanalyse linaire

Exemple 17.5 On cherche combiner les probabilits associes quatre va


riables alatoires. On connat P r ( X y X 2 0) = 1/2 + e1>2 et P r (X 2 CDX'A=
0) = 1/2 + 2,3- On cherche valuer la probabilit associe lexpression
X ] (D X-.i partir de Xy X 2 et X 2 (B X 3 :

P r (X j X 3 - 0) = P r{[X y X 2] [X 2 X 3] = 0)

On combine des expressions linaires pour en former une nouvelle. Comme


on peut considrer les VA X y X 2 et X 2 X 3 comme indpendantes, on peut
utiliser le lemme : P r { X y ffi X 3 = 0) = 1/2 + 2ej t2 e 2 ,3 . Donc, 13 = 2e i!22,3-
Les expressions X y ( b X 2 et X 2 A 3 jouent le rle dapproximations linaires
des botes-S et X y X 3 une approximation du chiffre o le bit intermdiaire
X 2 a t limin par lopration de ou exclusif.

Construction d une expression pour le chiffre

Aprs avoir construit la table d approximations linaires des botes-S, on


dispose des informations pour construire une approximation linaire du chiffre
entier par concatnation des approximations linaires des botes-S.
En construisant une approximation linaire qui met en jeu des bits du clair
et certains des bits la sortie de lavant-dernier tour des botes-S, on peut
attaquer le chiffre en retrouvant un sous-ensemble des bits de cls de tour
lissue du dernier tour.

Exemple 17.6 On construit une approximation linaire qui met en jeu


Sy2 ,S 2 2 ,Sz 2 et S 3 4 , comme dcrit dans la figure 17.5. On obtient ainsi une
expression pour les 3 premiers tours du chiffre (et non pour les 4 tours). Les
botes-S sont approches par :

Sy2 ^ V ] CDX'i (D X 4 = Y2 proba=12/16 b ia is= l/4


S22 : X 2 = Y2 Y a proba=4/16 biais =-1/4
S32 : X 2 = Y2 Y/y proba=4/16 b ia is= -l/4
A34 : X 2 = Y2 CBY4 proba=4/16 b ia is= -l/4

Cela va nous permettre de trouver certains des bits de la 5e cl de tour K$.

Notation On note Ui (resp. L)) le bloc de 16 bits en entre (resp. en sortie)


des botes-S du tour et U j (resp. Vyj ) le j f bit dudit bloc. On fait de mme
pour les cls de tour : Ki la ie cl de tour et K, j son j e bit.
On a alors Uy = P Ky le bloc en entre des botes-S du 1er tour.
En utilisant lapproximation linaire de 1,2, on obtient avec une probabilit
de 3 /4 :

V l,6 = U l,5 U l , 7 U l ,8 = (P 5 -^1 ,5 ) ( P 7 A u ,7 ) ( P s K l , s )


Cryptanalyss diffrentielle et linaire des chiffres itrs 189

tour 1

tour 2

tour 3

tour 4

Fig. 17.5 Attaque sur le chiffre simple.


190 Cryptanalyse linaire

En utilisant l'approximation linaire de .Sa,2, on a avec une probabilit de


1 /4 :
1*2,6 1*2,8 = t / 2 ,6 = (1*1,6 -^2,6)

En combinant les expressions prcdentes en utilisant le lemme 17.1, on


dduit avec une probabilit de l /2 + 2 ( 3 /4 - l /2 ) ( l /4 - l /2 ) = 3 /8 :

1*2,6 1*2,8 (-ft -Kl,5 ) (P? -Kl,7 ) (-f*8 -Kl,s) -K2,6 = 0 (17-4)

Pour le 3e tour, en utilisant lapproximation linaire de S3.2, on exprime


avec une probabilit de 1/4 :

14,6 1*3,8 = t/3,6 = (1*2,6 -K3.6)

en utilisant lapproximation linaire de 63 4, on a avec une probabilit de 1/4 :

1*3,14 1*3,16 = t / 3,14 = (1*2,8 ^ 3 ,14)

en combinant, on obtient avec une probabilit de 1/2 + 2 (1/4 1 /2 )2 = 5/8 :

Es,6 1*3,8 13,14 13,16 1^2,6 K 3.6 1*2.8 K3,14 = 0 (17.5)

Enfin, pour approximer les 4 botes-S, on combine (17.4) et (17.5) avec


probabilit 1/2 + 23(3 /4 - l / 2 ) ( l / 4 - 1 /2 )3 = 15/32 :

1*2,6 1*2,8 (P5 -Kl,5 ) (P 7 -Kl,7 ) (Ks -K l,s) K 2 ,6


1 3 ,6 1 3 ,8 1 3 ,1 4 1 3 ,1 6 1*2,6 P -3 ,6 1*2,8 -K 3 ,]4 = 0

Et comme 1 / 4,6 = 1*3,6 p4,6, t/ 4,8 = 1*3,14 1^4,8, K414 = 1*3,8 -K4,i4 et
K4 16 = 1*3,16 -K4,i 6, on r-crit ce qui prcde en

t/4,6 t/4,8 1/4,14 t/4,16 / 5 P7 -18 = P'K (17-6)

avec E/c
qui est fix 0 ou 1 selon la cl du chiffre.
Si la valeur de E/c est fixe 0, lexpression

t/4,6 t/4,8 t/4,14 t/4,16 ffi P5 P 7 P& = 0 (17.7)

a pour probabilit 15/32 et, pour E/c = 1, on obtient une probabilit de (1-
15/32)=17/32
En dautres termes, on dispose dune approximation affine des 3 premiers
tours du chiffre avec un biais de lordre de 1/32.
Comment peut-on utiliser ce biais ? Ou, comment peut-on retrouver certains
des bits de la cl ?
Cryptanalyss diffrentielle et linaire des chiffres itrs 191

17.3.3 Retrouver des bits de la cl

Une fois quon a approch linairement R 1 tours dun chiffre R tours


avec un biais suffisant, on peut tenter de retrouver des bits de la dernire cl
de tour (ici K$). Ceux-ci sont dtermins en prenant en compte les 2 dernires
botes-S du dernier tour et les bits obtenus par lapproximation linaire.
Il faut effectuer une cryptanalyse partielle du dernier tour du chiffre pour
tous les couples clairs/cryptogrammes connus. Plus prcisment, pour toutes les
valeurs possibles des bits cherchs de la dernire cl de tour, on fait un xor avec
les bits correspondants du cryptogramme et on les fait passer lenvers dans
les deux botes-S concernes pour obtenir les entres des botes-S du dernier
tour.
On effectue cette opration pour un grand nombre de couples
clairs/cryptogrammes et on compte le nombre de fois o lexpression linaire
(17.7) est vrifie.
La cl qui satisfait lexpression le plus souvent est la cl la plus vraisem
blable.
Les autres bits de la cl sont dtermins par une recherche exhaustive.

E xem ple 17.7 L expression linaire (17.7) affecte les entres des botes-S
42 et 44 du dernier tour. Pour tous les couples clairs/cryptogrammes,
on cherche les 256 valeurs possibles des bits de K$ qui sont concerns :
[K5.5 . . . K 5 ts, -^5,13 -^5,16]-
Pour chaque valeur, on compte le nombre de fois o (17.7) est satisfaite en
calculant les valeurs de [6/4,5 -6/4 ,g, f/4 ,13 6/4,ie]-
La valeur qui scarte le plus de la moiti des couples clair/crypto est la plus
probable. Selon le signe de lcart (> 0 ou < 0, on se servira de lexpression
linaire ou affine. Pour E;. = 0, on aura une probabilit < 1/2.

Exprimentation avec 1000 couples, en appliquant cette technique, la cl la plus


vraisemblable est (en hexadcimal) 24. Le biais de 0,0336 mesur exprimen
talement est proche du biais thorique estim 1/32 = 0,03125.

17.3.4 Complexit de lattaque

Soit e le biais tel que lexpression linaire soit vrifie. Matsui montre que
le nombre de clairs requis pour lattaque est proportionne] N l e- 2 .
Comme le biais est calcul partir des botes-S en utilisant le lemme, il d
pend de lapproximation linaire de chaque bote-S utilise. Ainsi, pour amlio
rer la sret d un chiffre, on cherche amliorer les botes-S (i.e. en minimisant
le biais de chaque boite-S) et maximiser le nombre de botes-S utilises dans
lattaque. C est de cette manire qua t conu Rijndael [22], le successeur de
DES, que nous prsentons dans le prochain chapitre.
Matsui a effectu une cryptanalyse de DES avec un taux de succs de 88%
en utilisant 220 clairs en 20 secondes sur un DES 8 tours. Il a gnralis cette
192 Cryptanalyse linaire

mthode un DES complet en connaissant 247 clairs et en dduisant 14 bits


de la cl, ce qui permet de rduire le temps d une cryptanalyse exhaustive qui
demanderait dexplorer les 256 cls possibles. Il a aussi tudi la possibilit d'une
attaque cryptogramme connu qui, en utilisant la mme technique, permet de
retrouver 7 bits de la cl en connaissant 254 cryptogrammes.
C h a p it r e 18

Deux chiffres robustes :


IDEA et AES

Dans ce chapitre, nous avons choisi de prsenter deux chiffres cl secrte


modernes et relativement robustes aux techniques modernes de cryptanalyse :
IDEA et le gagnant de lappel d offres de lagence gouvernementale amricaine
(NIST) pour le remplacement du DES, l'AES, appel Rijndael par ses inven
teurs. Le lecteur peut se demander pourquoi prsenter IDEA qui ntait mme
pas candidat lappel doffres. La raison est simple. Pendant quelques annes,
IDEA a servi de standard de fait en tant que remplaant de DES pour certaines
applications. Il a t utilis, entre autres, par PGP ( Pretty Good Privacy) pour
scuriser les courriers lectroniques et par openSSL ( Secure Socket Layer) pour
scuriser le trafic web. Nous reviendrons d ailleurs sur ces deux outils dans le
chapitre 27 de ce livre.

18.1 IDEA

Le systme de chiffrement IDEA est une amlioration du systme Propo-


sed Encryption Standard conu en 1990 par Lai et Massey. Cette amliora
tion permet notamment de rsister une cryptanalyse diffrentielle. IDEA est
lacronyme de International Data Encryption Algorithm et est utilis en par
ticulier dans le systme PGP Pretty Good Privacy de Zimmermann prsent
plus en dtail dans [36]. Contrairement Rijndael que nous prsenterons dans
la prochaine section, IDEA est brevet.
IDEA est un systme de chiffrement par blocs de 64 bits qui utilise des cls
secrtes de 128 bits. Le mme algorithme est utilis la fois pour chiffrer et
pour dchiffrer. Il utilise trois composants de base qui sont

le ou exclusif note 0 ;

laddition modulo 2 16 note E3 ;

la multiplication modulo 216 + 1 note .

Toutes ces oprations manipulent des sous-blocs de 16 bits qui permettent


damliorer lefRcacit des programmes sur des processeurs 16 bits.
IDEA

Ai A-2 A3 X4

9iK )

Yl I2 transformation finale Y3

ou exclusif de blocs de 16 bits


(T) multiplication modulo 216 + 1 d entiers
de 16 bits
EB addition modulo 216 d entiers sur 16 bits

Fig. 18.1 Fonctionnement dIDEA.


Deux chiffres robustes : IDEA et AES 195

18.1.1 Description

Le fonctionnement dIDEA est dcrit dans la figure 18.1. Le bloc de donnes


de 64 bits est dcoup en 4 mots de 16 bits : X\ X-iX 3 X 4 quiconstituent les
entres de lalgorithme. Celui-ci est divis en 8 tours. A chaque tour, les4 mots
sont combins par des xor, additionns, multiplis entre eux et avec les 6 mots
de 16 bits de la cl. Entre chaque tour, le deuxime et le troisime mot sont
changs. A chaque tour, la suite doprations est la suivante :

(1) multiplication de A [ par le premier sous-bloc de la cl;

(2) addition de X-j et du deuxime sous-bloc de la cl ;

(3) addition de X 3 et du troisime sous-bloc de la cl ;

(4) multiplication de X 4 et du quatrime sous-bloc de la cl ;

(5) combinaison par xor des rsultats de (1) et (3) ;

(6) combinaison par xor des rsultats de (2) et (4) ;

(7) multiplication du rsultat de (5) avec le cinquime sous-bloc de la cl ;

(8) addition des rsultats de (6) et (7) ;

(9) multiplication du rsultat de (8) et du sixime sous-bloc de la cl ;

(10) addition des rsultats de (7) et (9) ;

(11) combinaison par xor des rsultats de (1) et (9) ;

(12) combinaison par xor des rsultats de (3) et (9) ;

(13) combinaison par xor des rsultats de (2) et (10) ;

(14) combinaison par xor des rsultats de (4) et (10) ;

La sortie du premier tour est constitue de 4 sous-blocs produits par les


tapes (11), (13), (12) et (14). On change les deux mots internes sauf lors
du dernier tour - et on obtient lentre du tour suivant. Aprs le huitime tour,
on applique une transformation finale :

(1) multiplication de X\ et du premier sous-bloc de la cl ;

(2) addition de X 2 et du deuxime sous-bloc de la cl ;

(3) addition de X 3 et du troisime sous-bloc de la cl ;

(4) multiplication de X 4 et du quatrime sous-bloc de la cl ;

Enfin, les 4 mots sont r-assembls pour former le cryptogramme I 1I 2E3I 4.


196 IDEA

18.1.2 Algorithme de squencement de cl

Lalgorithme de squencement de la cl fonctionne comme suit : on utilise 52


mots de 16 bits (6 pour chacune des 8 tours et 4 pour la transformation finale).
La cl de 128 bits est dcoupe en 8 sous-cls de 16 bits. Ce sont les 8 premires
sous-cls utilises par lalgorithme (les 6 du premier tour et les 2 premires du
deuxime). Ensuite, la cl subit une permutation circulaire de 25 bits vers la
gauche et est nouveau divise en 8 sous-cls de 16 bits. Les 4 premires sont
utilises par le 2e tour et les 4 suivantes par le 3e. La cl subit nouveau une
permutation circulaire de 25 bits vers la gauche pour les 8 sous-cls suivantes,
et ainsi de suite jusqu la fin de lalgorithme.

18.1.3 Dchiffrement

Le dchiffrement suit le mme fonctionnement hormis pour la cration des


sous-blocs de cl de dchiffrement. Les sous-blocs doivent tre linverse de la
cl de chiffrement pour laddition et pour la multiplication. Par dfaut, IDEA
prend 0 comme inverse multiplicatif de 0. Le calcul des inverses prend du temps
mais nest effectu quune seule fois par cl de dchiffrement. Les tableaux ci-
dessous indiquent respectivement les sous-blocs de cl de chiffrement puis les
sous-blocs de cl de dchiffrement correspondants :

tour sous-blocs de chiffrement


1 zp y(l) yW z[1] zp y( 1 )
3 6
y(2) y(2) 7 (2 )
2 z[2) 3 z{2) zp 6
3 zp y(3) y(3) zSp zp 7 (3)
Z2 3 6
4 z'f y(A) y(A) zf zp 7 (4)
Z2 3 6
5 z[5) y(S) y(5) z f] zp
Z2 3 6
6 z[G) y(6) y(6) zf zp 7 (6)
Z2 3 6
7 z[7) y(J) yC7) zP zp y(7)
Z2 Z3 6
z\H) y{&) zp 7 (8)
8 2 4 8) zP 6
finale z f] y(Q) y(Q) zP
Z2 3

tour sous-blocs de dchiffrement


1 zP y(9) y(9) ^ 9) zp y(&)
Z2 Z3 6
2 z P 1 -z P y (8) z P ~ ' z p yC7)
Z2
y (7) y (7) z p - 1 z p ^(6)
3 z p -1 Z3 Z2
4 z p 1 -z P y ( 6 ) z p 1 y(5) y(5)

5 zP ~ X y(5) y(5) z p 1
3 Z2 zp 6
y(4)
6 zS p1 3 -z P z p - 1 z p
zP ~ 1 -z P ^7(2)
7 -z P zp 1 zSp 6
y (2) y(2) ^(1)
8 zP ~ 1 3 Z2 zp 1 zp Z6
finale z [iyl y(l) y ( 1)
Z2 3 z iirl
Deux chiffres robustes : IDEA et AES 197

18.1.4 Cryptanalyse

IDEA possdant une cl de longueur 128, une cryptanalyse exhaustive nces


siterait 2128 essais pour retrouver la cl. En faisant lhypothse quun processeur
puisse tester 109 cls par seconde, et en en utilisant 109 en parallle, il faudrait
1013 annes pour trouver la cl, plus que lge de lunivers. Il faudrait 1024
processeurs de ce type pour trouver la cl en un jour mais il n y a pas assez
datomes de silicium dans lunivers pour construire une telle machine.
De plus, par conception, cet algorithme est suppos robuste une crypta
nalyse diffrentielle aprs seulement 4 des 8 tours.
Cependant, il existe une classe de cls faibles pour ce systme, dcouverte
par Daemen. Si de telles cls sont utilises, un cryptanalyste peut les identifier
par une attaque clair choisi. En hexadcimal, une classe de telles cls est :
0000 0000 0X00 0000 0000 ooox xxxx xooo
o X reprsente nimporte quelle valeur hexadcimale. La probabilit dengen
drer une telle cl alatoirement est trs faible : 2 96.

18.2 La slection de AES

Depuis linvention par Biham et Shamir de la cryptanalyse diffrentielle,


le DES commenait ne plus offrir de garantie de scurit suffisante. Aussi,
le NIST (National Institute o f Standards and Technology ) a lanc en 1997 un
appel d offres pour remplacer le DES et lire un algorithme de chiffrement cl
secrte capable de protger la confidentialit des informations pour le X X Ie
sicle, tant pour le gouvernement amricain que pour le secteur priv.
Lappel d offres stipulait que le remplaant de DES (ou AES pour Advanced
Encryption Standard) devait dfinir un algorithme public de chiffrement cl
secrte par blocs, libre de droits et utilisable dans le monde entier. La taille des
blocs ainsi que celle des cls taient spcifies : le NIST demandait de pouvoir
chiffrer des blocs de 128 bits avec des cls de taille 128, 192 ou 256 bits.
En 1998, le NIST avait reu quinze propositions dont Rijndael que nous al
lons dcrire dans la suite de ce chapitre. Celles-ci provenaient de la communaut
cryptographique mondiale et ont t prsentes au cours de la confrence First
AES Candidate Confrence (AES1). Au cours de cette confrence, le NIST a
demand des avis publics sur les diffrents candidats. Les rsultats des analyses
de ces diffrents chiffres ont t prsents au cours de la confrence Second
AES Candidate Confrence (AES2) qui sest tenue en 1999 A lissue de cette
seconde confrence et en utilisant les analyses et les commentaires sur les diff
rents candidats, cinq chiffres finalistes ont t retenus : MARS, RC6, Rijndael,
Serpent et Twofish. Le procd de slection adopt par le NIST a t publi
dans un rapport intitul Round 1 Report.
Les algorithmes finalistes ont subi une analyse approfondie dans un second
temps. Le NIST a sollicit de nouveaux avis publics sur les finalistes en se
198 Rijndael

concentrant sur la scurit, la proprit intellectuelle et divers aspects dimpl-


mentation. En ce qui concerne la scurit, les finalistes ont t jugs sur les
critres suivants :

- la comparaison de la scurit des diffrents algorithmes pour une mme taille


de cl ;

- lindiscernabilit entre le rsultat du chiffrement et une permutation ala


toire de lentre;

- la correction des bases mathmatiques permettant dvaluer la scurit des


algorithmes ;

- d autres facteurs de scurit prenant en compte diffrents commentaires de


la communaut et de nouvelles mthodes de cryptanalyse.

Les nouveaux rsultats de ces avis publics ont t prsents au cours de


la Third AES Candidate Confrence (AESS) qui sest droule en 2000. La
description des diffrents candidats encore en lice ainsi que les commentaires
publics ont t publis par le NIST dans un rapport intitul Official Round 2
public comments.
Aprs cette deuxime tape de slection, le NIST a tudi les diffrentes
informations disponibles pour choisir le gagnant de cet appel doffres. Finale
ment, le 2 octobre 2000, le NIST a annonc le vainqueur. Le nouveau standard
de chiffrement ou AES est Rijndael, ainsi nomm par ses concepteurs Daemen
et Rijmen, deux chercheurs Belges.
On ne peut que souligner leffort du NIST quant la slection du remplaant
du DES en faisant appel la communaut cryptographique mondiale, non
seulement pour la conception dun nouveau chiffre mais aussi pour lvaluation
de sa scurit.

18.3 Rijndael

Le vainqueur de lappel doffres du NIST est donc Rijndael, invent par


Daemen et Rijmen [22] que nous prsentons ci-dessous. Nous reprenons le se
cond document propos au NIST dans lequel Daemen et Rijmen prsentent leur
systme. Dans un premier temps, on rappelle quelques faits mathmatiques de
base sur les corps finis pour reprsenter les donnes informatiques de manire
adquate puis nous dcrirons le fonctionnement de Rijndael.

18.3.1 Rappels mathmatiques

Les oprations de Rijndael sont dfinies soit au niveau de loctet, soit sur
des mots de 32 bits. Un octet est reprsent comme un lment du corps fini F2s
(comme pour les codes cycliques prsents au chapitre 8) tandis que les mots
sont reprsents par des polynmes coefficients dans F2s. Nous rappelons ci-
dessous les oprations utiles la comprhension du fonctionnement de Rijndael.
Deux chiffres robustes : IDEA et AES 199

Oprations dans F2 = F2 [x\/m(x)

On travaille dans le corps dextension de IF2 dfini au moyen du polynme


m (x) qui est un irrductible sur F2. Le polynme m {x) = l + x + x 3 + x 4:-\-x8 peut
tre reprsent en binaire laide de linverse de la reprsentation polynomiale
par 100011011 ou, de manire quivalente, par sa valeur hexadcimale (I l B )n
Dans cette structure, un lment de base est un polynme de F2[:r] de degr
au plus 7. bjx 7 + be,x6 4 - + b\X + b0 et reprsente un octet Par exemple,
xe + x A + x 2 + x + 1 <-> 01010111 -> (57)h-
Addition : par addition des coefficients. Par exemple, (x 6 + x 4 + x 2 + x +
1) + (x 7 + x + 1) = x 7 + x 6 + x 4 + x 2 -> (57)h + (83)h = (D 4)h-
Multiplication : multiplication des polynmes modulo rri(x). Par exemple,
(a;6 + a;4 + x 2 + x + l ) .( x 7 + x + 1) = x 7 + x 6 + 1 mod m (x) <-> (57)h-(83)a' =
(C l)h mod m.
Multiplication par x : c est une opration de dcalage des bits suivi d un ou
exclusif avec m (x) si le coefficient du monme de degr 8 est 1.

Codage dun mot 32 bits dans F28N

Un mot de 32 bits est reprsent par un polynme de degr au plus 3 dans


lanneau -/\x]/(xA + 1) dont on dcrit les principales oprations ci-dessous.
L addition usuelle de deux polynmes de degr au plus 3 se fait par addition
des coefficients.
La multiplication usuelle c(x) = a(x).b(x) de polynmes a pour inconvnient
de rendre ventuellement un polynme c(a;) de degr suprieur 3. Aussi, fauf
il considrer une multiplication modulaire des polynmes a et b modulo M (x ) =
a:4+ l. En fait, dans Rijndael, on ne considre que des produits par un polynme
a fix.
Multiplication modulaire par a (x ) modulo AI (x) = x A + 1.
c(x) mod M (x) = d(x) a(x) <E> b(x), pour a fix, peut tre ralis au
do \ / o0 03 a2 a i \ j *>o
( dl ) = ( 2 a 0 al ) Il
d3) Vas 02 O! a0y

Comme x A+ t nest pas un irrductible de F2s, la multiplication par a nest


pas ncessairement inversible. Dans AES, le polynme fix a(x) est inversible.

18.3.2 Spcifications dAES

Rijndael est un chiffre itr de taille de blocs et de cls valeurs dans


{128,192,256} bits.
Les diffrentes transformations utilises travaillent sur un rsultat interm
diaire appel tat qui est reprsent par un tableau doctets deux dimensions
4 lignes et Nb colonnes, comme dans lexemple ci-dessous pour Nb=6 ; dans
ce cas, ltat est compos de 24 octets ou 192 bits.
200 Rijndael

Les cls de tour admettent une reprsentation analogue 4 lignes et Nk


colonnes, comme dans lexemple ci-dessous pour Nk=4 ; dans ce cas, la cl com
prend 128 bits ou 16 octets.
Le clair et la cl sont rangs octet par octet dans les colonnes des tableaux.

0 ,n 0 ,1 0 ,2 0 ,3 0 ,4 0 ,5 k o ,l k o ,2 k o ,3

o
P
1 ,0 1 ,1 1 ,2 1 ,3 1 ,4 1 ,5 k l,0 fc l .l k l,2 k l,3

2 ,0 2 ,1 2 ,2 2 ,3 2 ,4 2 ,5 ^ 2,0 ^2,1 k 2 ,2 k 2 ,3

3 ,0 3 ,1 3 ,2 3 ,3 3 ,4 3 ,5 k 3,0 &3,1 k s ,2 ^ 3,3

Ces tableaux peuvent tre transforms en tableaux de dimension 1 indics


de 0 4.Nb-l pour le premier et de 0 4.Nk-l pour le second en les lisant colonne
par colonne (pour lentre et la sortie).
Le nombre de tours Nr est fonction de la taille des blocs et de la taille de la
cl :
Nr Nb=4 Nb=6 Nb=8
Nk=4 10 12 14
Nk=6 12 12 14
V
00

14 14 14
II
S

Transformations de tour

Avant le premier tour, on effectue une opration de ou exclusif avec les bits
de la cl de tour (AddRoundKey).
A chaque tour, en fonction dune cl de tour obtenue au moyen dun al
gorithme de squencement qui sera dcrit plus loin, on effectue les oprations
suivantes sur ltat :

-B yteSub : utilisation d une bote-S qui travaille octet par octet et qui sera
dcrite plus en dtail dans le paragraphe 18.3.2.

-S h iftR ow : on applique une permutation circulaire sur les lignes de ltat.


Sa valeur dpend du numro de la ligne et du nombre de tours Nr. Il est
noter que la premire ligne (de numro 0) ne subit pas cette permutation.
Le tableau ci-dessous donne la valeur des dcalages

Nr Cl C2 C3
4 1 2 3
6 1 2 3
8 1 3 4

La figure 18.2 montre le fonctionnement dune permutation circulaire sur


les lignes de ltat.
Deux chiffres robustes : IDEA et AES 201

pas de permutation
m n 0 p m n 0 P
k permutation de Cl
j 1 j
d e f permutation de C2 d e

w x z pennutation de C3 x
y 3
W y

Fig. 18.2 Fonctionnement de ShiftRow sur les lignes.

MixColumn : 0 11 multiplie chaque colonne de ltat vue comme un polynme


par le polynme fix a{x) = 03 j j x 3 + 01 n x 2 + 01 h x + 02// mod x A + 1 au
moyen dune matrice circulante :

Notons que linverse de a (x ) est le polynme d(x) = 0/1//.T3 d 0D fjx 2 +


09 h x + 0E h.

AddRoundKey : on effectue un xor entre les bits de ltat et ceux de la cl de


tour.

Au dernier tour on omet la multiplication par a(x) mod x A+ 1 pour rendre


le dchiffrement plus ais.

D escription des b o te s-S

Toute la scurit des chiffres de ce type rside dans la conception des botes-
S. Nous dcrivons ci-dessous le fonctionnement de celles qui sont utilises dans
Rijndael :

- on calcule linverse multiplicatif de chaque octet dans F2k ;

-o n applique la transformation affine suivante sur chaque octet rsultant de


lopration prcdente :

/ yO \ / 1 0 0 0 1 1 1 K /X0 \
( X1\
I 2
yl/2 \ / n o o o i i n
x2 ( '0\
11 100011
2/3 1 1 1 1 0 0 0 1 *3 0
VA 1 1 1 1 1 0 0 0 X4 + 0
2/5 0 1 1 1 1 1 0 0 x5 1
\ye J V0 0 1 1 1 1 1 0 / \x6 J
x2/7 7 'OOOlllll7 ' X7 J

Notons que lopration inverse (pour le dchiffrement) est une substitution


sur les octets : on applique la transformation affine inverse puis on calcule
linverse multiplicatif du rsultat.
202 Rijndael

18.3.3 Algorithme de squencement de cl

Les diffrentes cls de tour sont obtenues par drivation de la cl principale


au moyen de lalgorithme de squencement de la cl qui se droule en deux
tapes :

- une phase dexpansion de la cl ;

- une phase de slection de la cl de tour.

Le principe de base de lalgorithme est le suivant :

- le nombre de bits pour la cl de tour est gal la longueur du bloc multipli


par le nombre de tours plus un (par exemple, pour une taille de bloc de 128
bits et 10 tours, il faudra 1408 bits) ;

- la cl principale est tendue en une cl tendue ;

- les cls de tour sont issues de la cl tendue de la faon suivante la premire


cl de tour consiste en les Nb premiers mots de la cl tendue, la seconde en
les Nb suivants et ainsi de suite.

Expansion de la cl

La cl tendue est un tableau une dimension de mots de 32 bits not


W[Nb*(Nr+l)] dont les Nk premiers mots sont la cl principale Key. Les autres
mots sont obtenus rcursivement partir des mots prcdents. La fonction
dexpansion de la cl dpend de la valeur de Nk. Ily a en fait deux fonctions
dexpansion ; une lorsque Nk< 6 et une autre lorsque Nk>6.
Expansion de la cl quand Nk< 6 :
Algorithme 18.1 ________________________________________________________
KeyExpansion (Key[4*Nk] , W[Nb*(Nr+l)])
pour i de 0 Nk-1 faire
W[i] < (Key [4*?'] ,Key[4*?>l] ,Key[4*?>2] ,Key[4*?>3] )
fpour
pour i de Nk Nb*(Nr+l) faire
temp< W[ - 1]
si i mod Nk = 0 alors
temp< SubByte(RotByte(temp)) Rcon[i/Nk]
fsi
W[i] < W[i-Nk] temp
fpour

Dans cet algorithme, la fonction SubByte(W) renvoie un mot de 32 bits


compos de quatre octets. Chaque octet est issu de lapplication de la bote-
S loctet de la position correspondante du mot dentre. La fonction Rot-
Byte(W) retourne un mot de 32 bits aprs avoir appliqu la permutation cir
culaire ( a ,b ,c ,d ) i> (b ,c ,d , a ). Rcon est une constante qui sera dfinie plus
loin.
Deux chiffres robustes : IDEA et AES 203

Expansion de la cl quand Nk> 6 :

Algorithm e 18.2 ___________________


KeyExpansion (Key [4*Nk] , W[Nb*(Nr+l)])
pour i de 0 Nk-1 faire
W[i]< (Key[4*z] ,Key[4*z+l] ,Key[4*?+2] , Key [4*i+3] )
fpour
pour i de Nk Nb*(Nr+l) faire
temp< W[i-1]
si i mod Nk= 0 alors
tempe- SubByte(RotByte(temp)) Rcon[i/Nk]
sinon si i mod Nk = 4 alors
temp< SubByte(temp)
fsi
fsi
W[i] < W[i-Nk] temp
fpour

La constante Rcon est indpendante de Nk. Elle est dfinie par :


Rcon[i] = (RC[i] , 0 0 //, 0 0 //, 0 0 //)

o RC[i] reprsente un lment de F2s dfini inductivement par :

RC [1] = 1 = 01//
RC [/] = x.RCti - 1] = 02//.RC [ - 1] =

Slection de la cl de tour

La cl du ie tour est le contenu de Wentre les positions W[Nb*z] et W[Nb* (z +


1)], comme illustr par la figure suivante :

\W 0 \W l W2 W 3 \ W 4 \ Ws |W6 W 7 |W8 |W 9 |Ww |Wu ]

cl de tour U cl de tour 1...

18.3.4 Dchiffrement

Rijndael a t conu pour fonctionner de la mme manire au chiffrement


quau dchiffrement en remplaant chaque opration lmentaire par son inverse
au seul prix dun changement de l'algorithme dexpansion de la cl qui devient :

appliquer lalgorithme normal d'expansion de la cl ;

appliquer InvMixColumn toutes les cls de tour hormis pour la premire


et pour la dernire, o InvMixColumn reprsente le produit par le polynme
d(x), inverse multiplicatif du polynme fix a (::).
204 Rijndael

18.3.5 Conclusion

La conception de Rijndael a t inspire par les attaques linaires et dif


frentielles ainsi que par des attaques utilisant des manipulations algbriques
(par interpolation) et motive par les critres techniques que les auteurs ont
dtaills dans leur livre [23]. Dans ce dernier, les concepteurs du chiffre donnent
une description complte de leur chiffre, des critres de conception ainsi quun
panorama des diffrentes attaques menes sur des versions rduites de Rijndael,
en particulier une extension des travaux de Matsui sur la cryptanalyse linaire.
C h a p it r e 19

Diffrents modes de
fonct ionnement

Les chiffres en bloc complexes comme DES, IDEA ou AES (Rijndael [21])
supportent diffrents modes de fonctionnement qui dpendent de la faon dont
les blocs successifs du cryptogramme sont chiffrs. On en dnombre quatre
principaux :

- ECB : electronic codebook mode ;

- CFB : cipher feedback mode ;

- CBC : cipher block chaining mode ;

- OFB : output feedback mode.

Le premier, ECB, reprsente le fonctionnement le plus simple. Chaque bloc


du clair Xi est chiffr indpendamment du suivant. Dans le mode CFB, chaque
bloc du cryptogramme yi agit sur le bloc de clair suivant Xi+\ avant son chif
frement par une opration de ou exclusif. Pour les deux derniers modes CBC
et OFB, on agit sur la cl secrte. Celle-ci va tre modifie entre chaque bloc
du clair. Nous les dcrivons en dtails dans les sections suivantes.

19.1 Mode ECB

Cest le mode qui est dcrit prcdemment dans cet ouvrage. Etant donn
lin blocdu clair , chaque bloc est chiffr avec la cl K par la fonction en de
chiffrement, donnant le cryptogramme y.,. . . comme indiqu dans la figure 19.1.

f \
,X 2 ,X i
CK

v y

Fig. 19.1 Fonctionnement du mode ECB.


206 Mode CBC

Le dchiffrement fonctionne de manire symtrique. Chaque bloc yi du cryp


togramme est dchiffr avec la cl K par la fonction de dchiffrement (Ik per
mettant de recouvrer le bloc du clair aq correspondant.
Ce mode de fonctionnement est le plus naturel. Le clair ne subit aucune
modification, la cl de chiffrement reste inchange ainsi que le mode de fonc
tionnement. Il ne complique pas outre mesure le travail du cryptanalyste. Cest
pour cette raison qu'ont t introduits les modes de fonctionnement suivants.

19.2 Mode CBC

Ce mode permet de perturber un peu le fonctionnement prcdent. En ef


fet, chaque cryptogramme yl agit sur le bloc de clair suivant Xi+1 avant son
chiffrement par une opration de ou exclusif comme dcrit dans la figure 19.2.

Fig. 19.2 Fonctionnement du mode CBC.

Au dpart, les deux parties sentendent sur une valeur initiale (note
IV yo dans la figure) qui permet d initialiser le processus. Cette valeur ini
tiale remplace le premier bloc du cryptogramme qui nest pas encore dfini. Au
lieu de chiffrer directement Xi, le premier bloc du clair, on chiffre par en (la
fonction de chiffrement qui utilise la cl secrte K ) le rsultat dune opration
de ou exclusif entre yo et Xy. Le rsultat du chiffrement e k (yo xy ) donne y y
premier bloc du cryptogramme. On continue de la mme manire pour chiffrer
les blocs suivants du clair.
Le fonctionnement du dchiffrement est illustr par la figure 19.3. Le premier
bloc du cryptogramme y y est dchiffr par d k , la fonction de dchiffrement.
Mais, rappelons que yi = ex (y o ') Donc. dK (eK (yo %i)) = yo * i et
pour obtenir Xy, premier bloc du clair, il faut connatre I V = yo pour effectuer
lopration o:/'io = aq. Le dchiffrement des autres blocs du cryptogramme
se fait de manire analogue.

( ) IV pour Initial Value en anglais.


Diffrents modes de fonctionnement 207

19.3 Modes OFB et CFB

Pour ces deux derniers modes, le chiffrement du clair se fait par une suite
de ou exclusifs avec des cls qui sont issues du chiffrement par le chiffre cl
secrte :

O F B : la suite des cls est un chiffrement itr dune valeur initiale IV On


pose zq=YV et on calcule la suite Z\Zi. . . avec Zi = e x (z j_ i). Le clair est
alors chiffr par y-, x.t (B Zi (fig. 19.4). Le dchiffrement se fait de manire
symtrique en changeant les rles de Xi et de y.;.

C F B : on commence avec yo=TV (un bloc de 64 bits) et la cl suivante est


produite en chiffrant le cryptogramme prcdent z-, = e k {y , i ) - Sinon, tout
se passe comme pour le mode OFB (fgs. 19.5 et 19.6).

Xi X2

(
" t )
lV = z 0 eK

'r 'J

2/1 2/2

Fig. 19.4 Chiffrement en mode OFB.

Cependant, un problme existe avec le mode OFB. Avec ce dernier, un cryp


tanalyste qui connatrait un bloc x,, du clair pourrait facilement lui substituer
un faux bloc m par une opration de ou exclusif entre Xi m et le bloc de
cryptogramme correspondant yi. On peut galement imaginer des attaques si
milaires pour les modes CBC et CFB mais dans ces deux cas, certains blocs du
clair seront modifis dune manire que le cryptanalyste ne pourra contrler.
208 M o d ific a tio n D te c tio n C o d e et M e s s a g e A u th e n tic a tio n C o d e

Xl x 2

'
IV = y 0 f ) m c s
ex l CK J * vJ

yi 2/2

Fig. 19.5 Chiffrement en mode CFB.

2/i 2/2

IV=2/o ( eK ) * 0 ( ey ) *0

Fig. 19.6 Dchiffrement en mode CFB.

19.4 M o d ific a tio n D t e c t i o n C o d e


et M e s s a g e A u th e n tic a tio n C o d e
Le calcul dun MDC ( Modification Dtection Code) ou dun MAC (Message
Authentication Code) est rendu possible par les modes CBC et CFB.
Pour calculer le MDC d un message M , on dbute par une valeur initiale
(IV) dont tous les bits sont nuls. On construit ensuite le cryptogramme y\ ... yn
en chiffrant M en mode CBC ou CFB et le MDC est simplement le dernier bloc
du cryptogramme yn.
Le calcul dun MAC est analogue au calcul du MDC la diffrence prs que
la valeur initiale IV nest plus nulle. Elle est instancie une valeur convenue
entre les parties qui schangent des messages. De cette manire, on assure
lauthentification de lempreinte du message puisque seules les deux parties
partagent la mme valeur initiale. Ainsi, il ne doit pas tre possible de falsifier
un MAC, ni de trouver un message diffrent qui ait le mme MAC. En dautres
termes, on souhaite quil n y ait pas de collision. Nous reviendrons sur cet aspect
dans le chapitre 22 qui traite des fonctions de hachage cryptographiques.
C h a p it r e 20

Cryptographie cl publique

On dfinit dans ce chapitre les notions de fonction sens unique et de


fonction trappe qui proviennent de la thorie de la complexit. Ces deux
notions sont au cur de la cryptographie cl publique [14, 77]. Considrons
deux ensembles arbitraires X et Y et une fonction / : X > Y. Soit f ( X )
lensemble image de X par / . La fonction / est dite sens unique si pour tout
x d e X , il est facile de calculer f ( x ) (autrement dit, / peut tre calcule en
temps polynomial) et sil est difficile de trouver, pour la plupart des y E f { X )
un x X tel que f ( x ) = y (en dautres termes ce dernier problme doit tre
dans la classe NP voire NP-complet). Ltat actuel des connaissances en thorie
de la complexit ne permet pas de prouver que les fonctions sens unique
existent puisque leur existence suffirait dmontrer que P ^ NP. Qui plus est,
la thorie de la complexit ne semble pas suffisante pour fournir ne serait-ce
quun indice de leur existence. Il existe cependant des candidats sous la forme de
fonctions quil est possible de calculer efficacement mais pour lesquelles aucun
algorithme efficace dinversion nest connu.

Les fonctions sens unique ne peuvent pas servir telles quelles de systme
de chiffrement en utilisant f ( M ) pour chiffrer M puisque mme le destina
taire lgal ne serait pas en mesure de dchiffrer le cryptogramme. La notion
de fonction sens unique trappe est d une utilit plus immdiate pour la
cryptographie cl publique. Une fonction / : X Y est dite trappe si elle
peut tre calcule efficacement dans le sens direct. Le calcul dans le sens inverse
est aussi efficace pourvu quon dispose d une information secrte, la trappe, qui
permette de construire une fonction -g telle que g o f = Id. Ainsi, il est facile de
calculer limage par / de nimporte quelle entre mais calculatoirement impos
sible d inverser / sans connatre g. D une part, il doit tre facile dengendrer de
tels couples (/,</) D autre part, la publication de / ne doit rien rvler sur g.

Nous illustrons la construction d un systme de chiffrement cl publique


au moyen d un problme NP-complet, celui du sac dos que lon peut lire
dans [81]. Il sagit du chiffre de Merkle-Hellman, qui a t publi presque en
mme temps que RSA que nous prsenterons plus loin dans le chapitre.
210 Merkle Hellman

20.1 Merkle Hellman

20.1.1 Prsentation du problme

On rappelle quun problme est calculatoirement difficile*1* sil nexiste


pas dalgorithme de rsolution de ce problme en temps polynomial pour un
modle de calcul dterministe. Ainsi, les problmes NP-complets sont calcula
toirement difficiles. On a choisi dans [35] un problme NP-complet, celui de la
somme de sous-ensembles dont on rappelle lnonc.

Donne Un n-uplet dentiers A = (ai, , an) tels que les a, sont tous dis
tincts et un entier k.
Question Existe-t-il un sous-ensemble de A dont la somme est gale k ?

E x em p le 20.1 Pour les donnes

A = (43,129,215,473,903,302,561,1165,697,1523)

et k = 3231, on remarque que 3231 = 129 + 473 + 903 + 561 + 1165 est solution.

En principe, on peut toujours trouver une solution en testant la somme de


chaque sous-ensemble de A et en identifiant ceux qui ont une somme gale k.
Dans lexemple, cela signifie quil faudrait tester 210 sous-ensembles. Si cette
valeur nest pas encore suffisante, que peut-on dire dun n-uplet de plusieurs
centaines dentiers? Par exemple, pour n = 300 sur une machine qui effectue
un million d oprations par seconde, il faudrait 6.4 x 1076 annes de temps de
calcul !

20.1.2 Fonction sens unique associe au problme du sac dos

Le problme du sac dos nous permet de dfinir une fonction sens unique
comme suit : tout entier x, 0 < x < 2 1 admet une unique reprsentation en
binaire sur n bits. On dfinit f ( x ) comme le nombre obtenu partir d un n-
uplet d entiers A, en sommant les a, pour lesquels le bit Xi de la reprsentation
binaire de x = x n- iX n - 2 - Xo est gal 1. En notation matricielle, si A est
un vecteur ligne de dimension n et B x le vecteur x sur n bits, f ( x ) (A , Bx),
o () dnote le produit scalaire usuel. Ainsi,

/(1 )= / ( 0 . . .01) = On
/(2 ) = / ( 0 ...1 0 ) = On-l
/ ( 3 )= / ( 0 ..1 1 )= On + On- 1

^ * On dit untractable en anglais.


Cryptographie cl publique 211

E xem ple 20.2 En poursuivant notre exemple prcdent o n = 10, on observe


que /(3 6 4 ) = /(0101101100) = 129 + 473 + 903 + 561 + 1165 = 3231.

Alors, pour trouver x avec pour seule connaissance /(.?:), on a autant de


travail que pour rsoudre le problme du sac dos qui est NP-complet. La
fonction / est un bon candidat de fonction sens unique si n est un entier
suffisamment grand.
Comment fonctionnerait un tel systme de chiffrement ? On applique / sur
des blocs de n bits correspondants une suite de bits du texte clair.

E xem ple 20.3 En continuant notre exemple, si on code a par 1 = 00001 . z


par 26 = 11010 on peut coder par concatnation deux caractres sur 10 bits.
Sur le texte qui d o rt dne, on obtient :

qu i_ do rt d in e
(3936 1032 4161 1983 1165 3455 1118)

qui reprsente le cryptogramme.

Pour le moment notre systme de chiffrement nest pas cl publique. Il


peut toujours tre utilis comme chiffre cl secrte. Cependant, le destinataire
se trouve confront la rsolution dun problme de sac dos pour dchiffrer !

20.1.3 Transformation en un systme cl publique

Pour transformer la fonction du paragraphe 20.1.2 en une fonction sens


unique trappe, il faut trouver des classes de problmes de sac dos faciles.
Cest le cas si les lments du vecteur A forment une suite appele super
croissante, i.e. qui vrifie Vj, 1 < j < n. J3i=i < aj- Dans ce cas, le problme
du sac dos admet une solution facile. Il suffit de parcourir A de la droite vers
la gauche de la faon suivante : tant donn k, on teste si A; > an. Si k < an, an
nest pas dans la somme et on passe llment a i . Si k > an, an est dans
la somme et on teste si k\ = k an > an y... Cet algorithme se termine quand
on a atteint llment a i. Cet algorithme montre aussi que, pour chaque entier
k, le problme du sac dos correspondant a au plus une solution.
Mais maintenant, si on publie A, dchiffrer sera aussi facile pour le destina
taire que pour un cryptanalyste ! Pour viter cela, on va perturber A de telle
sorte que le n-uplet rsultant B ressemble un problme de sac dos arbitraire.

20.1.4 Perturbation du problme

Pour perturber A de telle sorte que le n -uplet rsultant B ressemble un


problme de sac dos arbitraire, on utilise une multiplication modulaire en
arithmtique modulo m > a,. Comme A est super-croissant, m est grand
compar aux ai. On choisit un autre entier t premier avec m i.e. qui vrifie
pgcd (t, m ) = 1. L entier t sera le multiplicateur et m le module. Le choix de
t premier avec m garantit lexistence dun inverse t-1 modulo rn obtenu par
212 Merkle Hellman

lalgorithme dEuclide tendu. On forme alors les produits bi = a, x t mod m


pour tout i, 1 < i < n et on obtient un nouveau n-uplet B qui est utilis comme
cl publique.

E x em p le 20.4 Pour retrouver les valeurs de notre exemple

(43,129,215,473,903,302, 561,1165,697,1523)

on part de A = (1,3,5,11,21,44,87,175,349,701) et on choisit m = 1590,


t = 43 dont linverse est = 37 modulo m.

Les entiers t, t-1 et m constituent linformation secrte (la trappe). On


chiffre de la mme manire que prcdemment : pour chiffrer un message binaire
AI de n bits, on calcule (B , M ) d .

20.1.5 Comment dchiffrer?

Comme le destinataire connat les entiers t, t ~ 1 et m, il peut retrouver A


partir de B. Aprs avoir reu un bloc chiffr d e N, il calcule / 1d = c mod m
et il rsout le problme du sac dos dfini par A et c. La solution dfinit une
suite unique AI de n bits. Il sagit aussi d un bloc du clair car toute solution
AI' du problme pour B et d est gale AI :

c ee f V = r 1 (B , Al') ee A I') = (A, M ') mod m

Observons que (A , M ') < m car m > ui-> ce qui implique que la
congruence ci-dessus se simplifie en c = (A ,M '). Comme le problme dfini
par A et c ne peut avoir plusieurs solutions, on a ncessairement M = M '.

E x em p le 20.5 Dchiffrons par exemple le cryptogramme

(3936,1032,4161,1983,1165,3455, 1118)

On multiplie par t-1 = 37 modulo rn avec m = 1590 On obtient


(942,24,1317,231,175,635,26). Dchiffrons le seul bloc 942 avec la suite super
croissante A = (1,3,5,11,21,44,87,175,349, 701).

942 > 701, le bit 10 de M sera 1 et on recommence avec 942-701=241;

241 > 175, le bit 8 de M sera 1 et on recommence avec 241-175=66;

66 > 44, le bit 6 de M sera 1 et on recommence avec 66-44=22 ;

22 > 21, le bit 5 de AI sera 1 et on recommence avec 22-21=1 ;

1 > 1, le bit 1 d e A I sera 1 et on a fini.

Donc A I 1000110101 qui correspond au bloc de deux lettres qu.


Cryptographie cl publique 213

20.1.6 Cryptanalyse

Le systme de chiffrement de Merkle et Hellman (celui du sac dos) a


subi plusieurs attaques fructueuses. En 1978, Herlestam a publi un article
intitul Critical remarks on some public-key cryptosystems dans lequel il
a remarqu quun bit du cryptogramme obtenu par le systme du sac dos
peut tre rvl. En 1979, Shamir a propos dans un article la confrence
STOC une cryptanalyse dun systme de sac dos dans certaines circonstances.
Finalement, Shamir et Zippel ont trouv des failles dans la transformation qui
permet de reconstruire la suite super-croissante partir de la suite normale. De
plus, lors de la confrence CRYPTO [1], Adleman a russi une attaque sur le
systme du sac dos en utilisant un Apple II. Les techniques de cryptanalyse
de ce chiffre se sont amliores grandement. Nous en prsenterons une efficace
avec le chapitre 23.

20.2 RSA

20.2.1 Prambule mathmatique

D fin ition 20.1 On appelle indicatrice dEuler dun entier n et on note


le nombre d entiers compris entre 1 et n qui sont premiers avec n.

<f(n) = ca rd {j G { 1 , . . . , n j : pgcd (j, n) = 1}

On a <p(l) = 1 et pour un entier premier p, <f(p) = p 1.


Une mthode de calcul de <p(n) est de dcomposer n en produit de facteurs
premiers n = Ftp|n,p premier P P alorSi <p(n ) = IIp|n,ppremier(P P p p_1) =
ripKppremierC1 ~ ?) Par exemple, >(12) = (4 - 2)(3 - 1) = 12(1 - |)(1 - ).

Nous utiliserons aussi le thorme de Fermat-Euler : m v^ = 1


mod n si pgcd (m, n) = 1. Pour plus de dtails sur la thorie des nombres,
nous recommandons la lecture de [52].

20.2.2 Systme de chiffrement RSA

En 1978. Rivest, Shamir et Adleman ont propos la mthode suivante [78] :

(1)on choisit deux entiers premiers assez grands p et q, de lordre de 10100 ;

(2) on fixe n = pq et on publie n ;

(3) on calcule ip(n) = (p - l ) ( 1) ;

(4) on choisit e tel que pgcd (e, <p(n)) = 1 et on le publie ;

(5) on calcule d tel que d.e = 1 mod <f(n).


214 RSA

On chiffre alors un message M en calculant M e mod n = C pour un entier


M tel que 0 < M < n et on dchiffre selon C d mod n = (M e)d mod n =
M1 m od n = M mod n.

On montre ci-dessous que le dchiffrement de RSA est correct [78], i.e. que
lon a bien M ed = M k'pba)+l mod n avec d s l mod <p(n).
Par le thorme dEuler, = 1 mod p => M p~ x = 1 mod p si
pgcd (M ,p ) = 1 Et comme (p 1)|<p(n), M k v ^ + 1 = M mod p (cest tri
vialement vrai si M = 0 mod p).
On procde de mme pour q : M k v ^ + 1 = M mod q (cest trivialement
vrai si M = 0 mod q). Et on a bien : M ed = Al mod (pq).

La sret de ce systme repose sur lhypothse RSA pour laquelle il est aussi
difficile de dcrypter que de factoriser n, ce qui est un problme trs difficile.

Exponentiation modulaire

Pour implmenter RSA, on a besoin dun algorithme dexponentiation mo


dulaire rapide pour calculer ab mod n. On prsente ci-dessous un algorithme
qui travaille en temps proportionnel au logarithme de b : pour ce faire, on lve
successivement au carr a, a2, ..
Soit (b*,, b k-1, , bo) la reprsentation binaire de b telle que b = J2i-o ^2'.
La procdure suivante calcule ab mod n [20].

Algorithme 20.1 ________________________________________________________


Exponentiation modulaire (a, b, n)
c < 0 ; d < 1 ;
Soit (bk, b k -1, - bo) la reprsentation binaire de b
pour i < k jusqu 0 pas -1 faire
c < 2.c ; d < (d.d) mod n ;
si bi = 1 alors
c < c + 1 ; d < (d.a) mod n ;
fsi
fpour
renvoie d

Calculons par exemple les valeurs de c et de d la fin de chaque itration


pour 7560 mod 561 : b = (1000110000) et le rsultat du calcul est la valeur
finale de d qui est encadre.

i 9 8 7 6 5 4 3 2 1 0
bi 1 0 0 0 1 1 0 0 0 0
c 1 2 4 8 17 35 70 140 280 560
d -7_ 49 157 526 160 241 298 166 67 B

Chaque exposant c calcul est soit le double de lexposant prcdent soit le


double de la valeur de lexposant prcdent plus 1. La reprsentation binaire de
Cryptographie cl publique 215

b est lue de la droite vers la gauche afin de contrler quelles oprations doivent
tre effectues. Chaque itration utilise une des deux identits suivantes :

a2c mod n = (ac)2 mod n


a2 c + 1 mod n = a.(a c ) 2 mod n

selon la valeur de b, qui est respectivement f) ou 1. Llvation au carr est


la seule opration effective de litration. La variable c permet d expliquer le
fonctionnement de l'algorithme. L invariant de lalgorithme est d = ac mod n
puisque c ne fait que doubler ou doubler et crotre de un jusqu ce que c = b
On observe en outre que la valeur de c juste aprs le traitement du bit bi est
la mme que le prfixe (bk, bk -1, . . . b,) de la reprsentation binaire de b.
Si les entiers a et b sont des nombres sur k bits, le nombre total d oprations
arithmtiques ncessaires est dordre 0 (k) et le nombre doprations sur les bits
est en 0 (k3).

E xem ple 20.6 Illustrons par un exemple le fonctionnement la main de cet


algorithme pour 1773 mod 133. 73 = (1001001)

i h 172' 172* mod 133 valeur


0 1 17 17 mod 133 17
1 0 172 289 mod 133 23
2 0 232 529 mod 133 130
3
4
1
0
1302
92
16900
81
mod
mod
133
133
E
81
5 0 812 6561 mod 133 44
6 1 442 1936 mod 133 74
-.R
et 1773 mod 133 = 17 1723 172 = 1 7 -9 -7 4 mod 133 = 17.

E xem ple de chiffrem ent par R S A

Deux correspondants, Alice et Bob, communiquent en utilisant RSA. Ils ont


dcid dutiliser n = 133. La cl publique dAlice est 37.

(1) Quelle est la cl secrte dAlice ?

(2) Si le message chiffr reu par Alice est 17, quel est le clair correspondant?
On supposera que les messages sont des entiers modulo n.

Il faut tout dabord factoriser n en produit de deux nombres premiers.


On rappelle que les premiers nombres premiers sont 1 ,2,3,5, 7 ,1 1 ,1 3 ,1 7 ,1 9 ...
Aprs quelques tentatives, on trouve que n = 133 est le produit des deux fac
teurs premiers 7 et 19. On calcule alors y?(133) = 6 18 = 108.
Puisque la cl publique e = 37, la cl prive d est linverse de e modulo <f(n)
puisque d e = 1 mod <p(n). On obtient d laide de lalgorithme dEuclide
216 RSA

tendu. Pour le faire la main, on prfrera la version itrative de lalgo


rithme 15.1 provenant de [24],
Par exemple, Euclide tendu(37,108) donne lieu :

9 r = <7mod r Q LrJ R T
37 108 37 (1,0) 0 (0,1) (1,0)
108 37 34 (0,1) 2 (1,0) ( - 2 ,1 )
37 34 3 (1,0) 1 ( - 2 ,1 ) ( 3 ,- 1 )
34 3 1 ( - 2 ,1 ) 11 ( 3 ,- 1 ) (-3 5 ,1 2 )
3 1 0 ( 3 ,- 1 ) 3 (-3 5 .1 2 ) *

[] 0 * (-35,12) * * *

A la fin de lexcution, on obtient la valeur de pgcd (37,108) = 1 et Q donne


les coefficients de Bezout, i.e. le couple d entiers ( 35,12) tels que 37 (35) +
108 (12) = 1. Il nest pas ncessaire de calculer les valeurs marques *. La
valeur de la cl secrte est donc 35 mod 108 = 108 35 = 73.
Pour dchiffrer A = 17, il sufft de calculer 1773 mod 133 ce qui donne 17
(voir exemple de calcul la main de lexponentiation modulaire).

20.2.3 Tests de primalit

La sret de RSA repose sur la construction dun grand entier n produit


de deux grands entiers premiers p et q. Mais comment peut-on engendrer de
grands nombres premiers facilement ?
Le procd le plus rpandu pour construire de grands premiers est de tirer
au hasard de grands entiers et de tester sils sont premiers ou non.
Le nombre moyen de choix quil faut effectuer avant de tirer un premier est
raisonnable, comme exprim dans le thorme des nombres premiers qui donne
la densit des premiers plus petits quun entier fix.

T h o r m e 20.2 Le nombre d entiers premiers infrieurs n. not nr(n) vrifie

Cet quivalent est approch assez rapidement. Ainsi, en choisissant alatoi


rement des entiers de 500 bits, on obtiendra un nombre premier au bout de 350
tentatives environ. En effet, on a de lordre de 7r(2500) nombres premiers pour
2500 entiers. Si on calcule le rapport 7r(2500) /2 500 on trouve 346,57.

L e test de prim a lit de F erm t

Il fonctionne comme une sorte de rciproque au petit thorme dEuler.


Si on a trouv a ^ 0 tel que on_1 A 1 mod n, on est sr que n est compos.
Inversement, trouver un a tel que an_1 = 1 mod n ne garantit pas la prima
lit de n. Il existe de (rares) contre-exemples. En rptant les calculs pour un
Cryptographie cl publique 217

nombre suffisant de valeurs de a, on peut envisager dutiliser ce critre comme


test probabiliste de primalit.
Test de Fermt Choisir a alatoirement ; n passe le test si an~l = 1 mod n.
Si un entier n compos passe le test pour a, n est dit pseudo-premier en
base a.
Un rsultat de Pomerance permet daffirmer que le rapport du nombre de
pseudo-premiers sur 7r ( n ) tend vers 0 quand n tend vers linfini et assez rapide
ment. On en dduit que si un grand nombre choisi au hasard n passe le test de
Fermt, il faut tre malchanceux pour tomber sur un nombre pseudo-premier.
Hlas, certains nombres composs n passent avec succs le test de Fermt
pour a premier avec n. Ce sont les nombres de Carmichael.

Thorme 20.3 Un entier n est un nombre de Carmichael ssi n est non pre
mier, sans facteur carr et tout diviseur premier p de n est tel que {pl)|(n1).

Exemple 20.7 On peut obtenir un nombre de Carmichael de la forme :

n = (6f + l)(1 2 f + l)(18f + 1)

si 61 + 1, 121 + 1 et 18/ + 1 sont tous trois des premiers. 1729 = 7 - 1 3 -1 9 est


un tel nombre de Carmichael.

Il faut donc amliorer le test de Fermt pour avoir de meilleurs certificats


de primalit.

Test probabiliste de Solovay-Strassen

Le test de primalit de Solovay-Strassen repose lui aussi sur le thorme


dEuler mais en calculant la racine carr modulaire. Il permet de tester la
primalit de n de la manire suivante : choisir a alatoirement ; lentier n passe
le test si = (^ ) mod n o (^ ) est le symbole de Jacobi que nous
prsentons dans le chapitre suivant et qui permet de dcider rapidement si a
est un carr modulo n.
Pour un entier n donn, on considre Gn le groupe form des a qui vrifient
la congruence. Gn est un sous-groupe de Z * . En particulier, si n est premier,
la congruence est vraie pour tout a ^ 0 mod n et Gn = Z * . Contrairement au
test de Fermt, on dispose ici dune rciproque.

Proposition 20.4 Si un entier n nest pas premier, Gn Z*.

Preuve Si lentier n nest pas premier, il existe au moins a G Z* qui ne vrifie


pas la congruence. Dans ce cas, il y en a <p(ri)/2 puisque Gn est un sous-groupe
deZ*.

On en dduit une probabilit pour que le test fonctionne.


218 RSA

C o ro lla ire 20.5 Si un entier n est non premier et pour a G Z n tir au hasard,
la probabilit que Ventier n passe le test est infrieure 1/2.

En rptant r fois le test, la probabilit que n soit compos est donc sup
rieure ou gale 1 l / 2 r.

C on stru ire des n om b res prem iers

Plutt que de tirer au hasard de grands nombres et de tester leur primalit,


on peut essayer de construire rcursivement de grands entiers. On construit

n = 1 + p * 1 p*

o les pi sont des premiers dj connus et les A,- des entiers non nuls.

T h o r m e 20.6 n est premier ssi il existe a G Z * tel que a (n_1) = 1 mod n


et a^n~ b 'r ^ i mod n pour tout diviseur premier p de (n 1).

Preuve En effet, si n est premier, a est un gnrateur : il remplit les conditions.


Rciproquement, si un tel a existe, il est forcment dordre n 1 dans Z * . Or
tout lment de Z / est dordre un diviseur de <p(n) ; comme <p(n) < n 1, cela
signifie que <p(n) = n 1 et que n est premier.

Pratiquement, on teste pour des a tirs au hasard si les conditions du tho


rme sont vrifies. C est facile : on a les facteurs premiers de n 1. Si on na
pas satisfaction pour diffrentes valeurs de a, on essaye un autre n.

20.2.4 Attaques de RSA

RSA possde quelques faiblesses propres.

Attaque en connaissant la factorisation de n

Le cryptanalyste qui trouve une factorisation de n pq peut calculer <f(n)


et en dduire la cl secrte d.
Pour se protger contre une telle attaque, il est conseill d appliquer les
principes suivants :

(1) n = pq > O200 ;

(2) p et q ont des longueurs qui ne diffrent que de quelques digits ;

(3) ni p ni ne doivent tre petits ; ils ne doivent pas tre choisis dans une table
de nombres premiers et ne doivent pas tre dune forme particulire.
Cryptographie cl publique 219

La premire condition vite une attaque par recherche exhaustive. La se


conde contrecarre la recherche exhaustive de n comme la diffrence de deux
carrs :
f p + q'
n = pq = I

pour des valeurs de 7 -//L allant de y/n 2. La dernire condition empche la


recherche dans un ensemble de facteurs premiers relativement petit. Aucune
des attaques ci-dessus ne semble avoir t fructueuse du fait que les conditions
voques ci-dessus sont simples appliquer. D autres critres plus compliqus
[6, 78] sont pris en compte en pratique.

A ttaqu e p o u r ip(n) con n u

Si (p(n) est connu du cryptanalyste, il peut trouver une factorisation de n :

( n = pq
1 Pin) = { p - 1)(<7- 1)

et en posant q = il obtient une quation du second degr dont les solutions


sont p et q :

(p{n) (p 1) - 1^ 0 <=> p 2 -I- p {<p{n) n 1) + n 0

Le calcul de <p(n) est donc aussi difficile que la factorisation de n.

A ttaque sur les cycles

Le cryptanalyste voit passer c = m e mod n ; il essaye de trouver v tel que :

ce = c mod n O e" = 1 mod <p(n)

ce qui permet de trouver m = cf '' mod n.


En effet cf' = c mod n 4$ ce 1 = 1 mod n et, par le thorme dEuler,
on a ev 1 = 0 mod <p(n) e" = 1 mod <p(n). Comme c = me mod n et
de = 1 mod <p(n), on peut prendre d = e "-1 pour dchiffrer.

E xem ple 20.8 Alice publie ses paramtres publics e et n, 17 et 143. Fred
intercepte c = 19. Il calcule

i 2 3 4
ce* 84 28 19

Il ne lui reste plus qu lire m pour i = 3, soit 28.


220 RSA

Si le module n est commun tous les utilisateurs

On distribue un message commun m deux utilisateurs, comme pourrait


le faire un centre de distribution de cl qui dlivrerait m comme cl secrte
deux utilisateurs dun mme rseau local. La cl secrte m est envoye aux
deux utilisateurs de paramtres publics respectifs e\,n et c2, n qui vrifient
pgcd (e i,e 2) = 1.
Le cryptanalyste intercepte m ei et m e2. Il ne lui reste plus qu calculer les
coefficients de Bezout au moyen de lalgorithme dEuclide tendu; il obtient
u, v G N tq ue\ + ue2 = 1. Il peut alors retrouver la cl secrte par :

(me )u(m e2)v = m mod n

Exemple 20.9 Le module partag est n = 143 et les exposants de chiffrement


respectifs sont e\ = 17 et e2 = 19. On distribue m = 123 en envoyant 12317 =
106 au premier utilisateur et 12319 = 72 au second. Fred calcule alors les
coefficients de Bezout du pgcd(17,19) = (9, 8) et retrouve la cl m = 106972 8
mod 143 = 123.

Factorisation de n par le crible dEratostne

On divise n par tous les entiers impairs compris entre 3 et \_\fn\. Observons
que cette mthode de factorisation ne travaille pas en temps polynomial sur la
taille de lentre. En effet, lorsque lentier n est fourni lalgorithme, il est
cod, par exemple en binaire sur k bits. La taille de n est donc k. Or le temps
de fonctionnement de cet algorithme est de lordre 0 (\y/n\) pour n = 2 k, ce
qui nest pas polynomial sur la taille de lentre. Cette mthode est cependant
efficace pour de petites valeurs n < 10l2.

Il existe de nombreuses autres mthodes de factorisation mais aucune


dentres elles ne fonctionne en temps polynomial. Nous les prsenterons dans
un prochain chapitre car elles ncessitent quelques rappels mathmatiques.

Conclusions sur R S A

La mthode RSA est considre pratiquement comme sre pourvu que la


taille des cls soit suffisante. On ne connat pas dattaque fructueuse de RSA
lorsque la taille des deux entiers premiers est suffisamment grande (de lordre
de 160 chiffres dcimaux). Cependant, cette mthode a deux inconvnients :

- RSA requiert des cls de plus en plus longues du fait de lamlioration des
mthodes de factorisation et de laccroissement de la vitesse des ordinateurs;

- RSA est plus lent que DES dun facteur suprieur mille.
Cryptographie cl publique 221

20.3 Le problme du logarithme discret

Supposons que, dans le procd RSA, le module n soit public et que lex
posant d soit conserv secret. On suppose, de plus, quun cryptanalyste a in
tercept tm couple clair/cryptogramme (M , M e mod n) et cherche casser le
procd. Il cherche donc lexposant secret de dchiffrement d. Il doit rsoudre
un problme de logarithme discret dont on donne lnonc ci-dessous.

L ogarith m e discret de y en base g

Donne g , y lments dun groupe fini G dordre n.

Question trouver x tel que gx = y mod n.

Ou, formul de manire diffrente, pour p un entier premier, g un lment


gnrateur d e G = Z* (primitif), y = gx mod p et x = logfl(y) mod p 1.

Ainsi, notre cryptanalyste est conduit rechercher la valeur d qui vrifie


(M e) d = M , pour autant que ce problme admette une solution. Ce nest en
effet pas toujours le cas.

E xem ple 20.10 Soit G = Z * un groupe cyclique. Pour le logarithme en base 2,


seuls 1,2 et 4 possdent un logarithme discret. En base 3, on obtient le tableau
suivant :
nombre 1 2 3 4 5 6
logarithme 6 2 1 4 5 3

Plus gnralement, tout lment y G G possde un logarithme discret en


base y si et seulement si G est cyclique de gnrateur g.

Clairement, il est facile de calculer le logarithme discret de groupes de faible


cardinalit, mais cette opration est suppose trs difficile lorsque le cardinal
de G crot.

Le problme du logarithme discret est donc un bon candidat comme fonc


tion sens unique. C est partir de ce constat qua t conu le systme de
chiffrement d El Gamal qui fait lobjet de la prochaine section.

20.4 El Gamal

Le systme de chiffrement dEl Gamal repose sur la difficult calculatoire


de calculer un logarithme discret, prsent dans la section prcdente. Il a t
propos en 1985 avec un schma de signature numrique associ [32]. Si le
systme de chiffrement na pas remport un grand succs, celui de signature en
revanche est lorigine de plusieurs standards, comme DSS ou DSA.
222 El Gamal

Systme de chiffrement dEl Gamal

(1) on choisit p un premier suffisamment grand pour que le problme du loga


rithme discret dans Zp soit difficile ;

(2) on choisit E 2 px un lment primitif;

(3) on calcule (3 = a a mod p, pour u un nombre conserv secret (la cl prive) ;

(4) la cl publique est alors la donne de p, a, /3.

L opration de chiffrement est dfinie de la manire suivante :

E : (x , k) >> (yi a k mod p, y 2 = x(3k mod p)


pour k alatoire secret de L V !

Le clair x est masqu par la multiplication par (3k et produit y2. La valeur
de a k est transmise en tant que partie du cryptogramme comme y\.
Lopration de dchiffrement est :

(2/ 1 , 2/2 ) 2/2 (2/i ) 1 P

Bob, qui connat la cl prive a, calcule (3k partir de a k. Comme (3 = aa,


il suffit de calculer (a k) a = (3k. Il ne reste plus qu multiplier y 2 par linverse
de (3k mod p pour retrouver x.
Observons que le cryptogramme est deux fois plus long que le clair.

E x e m p le 20.11 Alice veut transmettre x = 1299 Bob. Elle commence par


rcuprer les paramtres publics de Bob p = 2579, a = 2, (3 = 949.
Elle choisit une valeur alatoire k G Z p_ i = 853 et calcule :

yi = 2853 mod 2579 = 435 y 2 = 1299.(949)853 mod 2579 = 2396

Bob reoit (435,2396) et connat a = 765 qui a permis le calcul de (3 = 2765


mod 2579 = 949. Il calcule (2/1) mod p = 435765 mod 2579 = 2424 et en
cherche l'inverse modulo p par Euclide tendu : (2424,2579) = 599.2424 +
563.2579 = 1 (f3k) 1 = -5 9 9 = 1980. Il calcule ensuite 2396.1980
mod 2579 = 1299 pour retrouver le clair transmis par Alice.
C h a p it r e 21

Signatures numriques

Si le but traditionnel de la cryptographie est ltablissement de communi


cations confidentielles en prsence d'indiscrets, ce nest pas son seul intrt.
En effet, la cryptographie moderne tant cl secrte qu cl publique possde
un grand nombre dautres applications du fait de la gnralisation massive des
communications numriques par Internet.
Dans [14], dautres applications sont proposes : Yauthentification et
Yidentification qui seront traites ultrieurement et les signatures numriques.
Dans ce chapitre, nous nous intressons laspect signatures numriques d au
tant plus que lutilisation de celles-ci est devenu lgale en France depuis le 29
fvrier 2000. Larticle 3 de cette loi stipule que lcrit sur support lectronique
a la mme force probante que lcrit sur support papier.

La notion de signature a t introduite par Diffie et Hellman dans [29] et fait


encore lobjet de nombreuses recherches. Le but des signatures est de faire la
preuve de lidentit de lexpditeur et de lintgrit du message. Une signature
dpend la fois du contenu du message et de lidentit du signataire.
Elle doit empcher diffrents types de fraudes :

- la falsification ou lusurpation de la signature ;

la non-reconnaissance du message par lexpditeur, dite rpudiation.

Le cahier des charges dune signature est donc le suivant :

elle doit tre calculable par le signataire pour tout message M ;

- tout individu (et en particulier le destinataire) doit pouvoir vrifier la si


gnature ;

elle doit tre impossible falsifier ;

- lexpditeur ne doit pas pouvoir affirmer que sa signature a t imite.

A linstar de la cryptographie, deux mthodes sont envisageables. La pre


mire est dutiliser des systmes de chiffrement cl secrte [72] et la seconde
dutiliser des systmes de chiffrement cl publique. Nous dcrirons brivement
quelques mcanismes utilisant cette seconde mthode.
224 Mcanisme gnral de signature

21.1 Mcanisme gnral de signature

Un procd de signature est compos :

- d un algorithme priv de signature not sig qui, un clair M et pour une


cl fixe K , retourne une signature S :

sigA-(M) = S

- d un prdicat public de vrification not ver qui, une cl fixe K et pour


tout couple clair/signature (M ,S ), va vrifier la validit de la signature S
pour le clair M :

verk (M, S) = vrai S = sigK ( M)

21.2 Signature par RSA

Le premier exemple de procd de signature est le systme cl publique


RSA.
Bob dsire envoyer un message M sign Alice. Ils disposent pour cela de
leurs systmes RSA respectifs :
Priv Publics
Alice dA nA, eA
Bob ds tib, eB

Le procd de signature est alors :

sigk { M ) = M dB mod nu = S

Celui de vrification :

verk {M, S) = vrai <*=> S B mod b = M

E x e rcice 21.1 Comment Bob peut-il envoyer Alice un message chiffr et


sign ?

C o rrig Soient les fonctions de chiffrement et de dchiffrement dAlice et de


Bob comme donnes dans le tableau ci-dessous :
Privs Publics
Alice D a (C) = C d'A mod nA Ea (M ) = M eA mod nA
Bob D b {C) = C dD mod ris E b (M ) M eB mod ub
Signatures numriques 225

Bob envoie le message :

C = E a ( D b ( M) )

et Alice le dchiffre en :
E b ( D a (C)) = M
Pour cela, il faut que M < ub < n A, sinon on inverse lordre chiffrement-
dchiffrement.

21.3 Signature par El Gamal

La particularit du procd dEl Gamal est quil a t spcialement conu


pour raliser des signatures lectroniques la diffrence de RSA qui permet de
chiffrer aussi bien que de signer.

21.3.1 Fonctionnement

Soit p un nombre premier pour lequel le problme du logarithme discret est


difficile dans Z * et soit a une racine primitive de Z * . Le message M G Z * et
sa signature est un couple (7 , 6 ) G Z* x Zp_ i. Lensemble des cls est K =
{(p, a, a, / ? ) :/? = a a mod p)
Priv Publics
a p,a,(3
On choisit k G alatoire et secret qui vrifie pgcd (k, p 1) 1 et on
dfinit une signature comme :

sig K ( M , k ) = (7 , 6 )

avec
7 = ak mod p 6 = (M a^)k~l mod {p 1)

Pour M , 7 G Z^ et 6 G Z p_ i, on dfinit le prdicat de vrification par :

ve rx ( M, 7 , ) = vrai O /b '7'5 = a M mod p

Si la signature est construite correctement, la vrification authentifie la si


gnature car :
/31 JS = a ai!a kS mod p
= a M mod p
on utilise le thorme de Fermat-Euler et le fait que :

07 + k = M mod (p 1) car 6 = (M a'y) ^ 1 mod (p 1)

Bob calcule la signature en utilisant sa cl prive n et la valeur alatoire


k (utilise une seule fois pour la signature de M ). La vrification seffectue
laide de la cl publique.
226 Signature par El Gamal

E x e m p le 21.1 Soit p = 467 et a = 127. On a bien que pgcd (a,p 1) = 1.


Soit a = 2 un lment primitif de Z *. On calcule

(3 = a a mod p = 2127 mod 467 = 132

Si Bob veutsigner le message M = 100 pour la valeur alatoire k = 213 qui


vrifie bien pgcd (A:, p 1) = 1, il calcule linverse de k modulo p 1 au moyen
de lalgorithme dEuclide tendu qui donne fc-1 = 431. Ainsi :

7 = ak mod p = 2213 mod 467 = 29

et

6 = (M a r fk - 1 mod (p 1) = (100 127 29) 431 mod 466 = 51

On peut alors authentifier la signature de (100.29.51) en valuant le prdicat


de vrification verk (M, 7 , ) :

/T V = a M mod p & 132292951 = 2100 mod p = 189

ce qui valide la signature.

21.3.2 Scurit dEl Gamal

On reprend ici la prsentation faite dans [87] qui montre la difficult de re


trouver les paramtres privs par diffrentes attaques en jouant sur les diffrents
paramtres quun cryptanalyste peut matriser.
On suppose quun cryptanalyste (Oscar) souhaite contrefaire une signa
ture sur le message M sans connatre le paramtre priv a. Si Oscar choisit 7
et essaye de trouver le <5 correspondant, il doit calculer le logarithme discret
log7 a Mi0_ 'y = 6 mod p.
Sil choisit plutt 6 et cherche 7 , il doit rsoudre lquation d inconnue 7 :

P 'f = a M mod p

pour laquelle on ne connat pas de solution.


Il peut galement tenter dobtenir (7 , 6 ) de telle sorte que le couple soit une
signature valide. Cette fois encore, on ne connat pas de mthode pour obtenir
ce rsultat ; il sagit dun problme ouvert.
Si Oscar choisit 7 et 6 et cherche obtenir M , il obtient une donne du
problme du logarithme discret et il doit rsoudre :

logQ/ ? V
Donc Oscar ne peut pas signer un message alatoire de cette faon.
Oscar peut signer un message alatoire en choisissant simultanment 7 ,
et M . Pour i , j deux entiers, 0 < i , j < p 2 et pgcd (j , p 1) = 1, il calcule :

7 = cd/3J mod p
= 7y-1 mod (p 1)
M = 7*i 1 mod (p 1)
Signatures numriques 227

o j 1 est calcul modulo (p - 1) en utilisant ie fait que pgcd (j, p 1) = 1. Le


couple ( j , 6 ) est une signature valide de M. En effet :

/Uq*5 = (a*/3J) _Q mod p


= p a zp 3 a - l j 1o ? P 3 p - a l p 3 m ocl P

= a~ lJ 1011/33 mod p
= a - 7 *-7 mod p
= a M mod p

E xem ple 21.2 Soit p = 467, a = 2 et (3 = 132. Supposons quOscar choisisse


i = 99 et j = 179. Alors j -1 = 151 mod p 1. Il calcule :

7 = 2 "1 3 2 179 mod 467 = 117


6 = 117.151 mod 466 =41
M = 99.41 mod 466 =331

Il obtient (117,41) comme signature valide de 331. Il vrifie sa validit par :

13211711741 = 2331 mod 467 = 303

21.4 Digital Signature Standard (DSS)

DSS est une variante du procd dEl Gamal qui date de 1994. Aux Etats-
Unis, DSS est aux signatures ce que DES (ou AES) est au chiffrement.
Si un cryptogramme nest en gnral chiffr et dchiffr quune seule fois,
une signature doit pouvoir tre vrifie plusieurs fois. Par exemple, lors de la
signature dun contrat, plusieurs parties peuvent vouloir vrifier la signature
dune personne et ce, mme plusieurs annes aprs. Il semble donc important
davoir des critres de scurit plus robustes que pour le chiffrement. Comme
la signature par El Gamal nest pas plus sre que le problme du logarithme
discret nest difficile, il faut utiliser de grandes valeurs de p. A lheure actuelle,
on utilise des nombres de 1024 bits.
Cependant, un module de 512 bits engendre une signature de 1024 bits.
Dans le cas des cartes puce, par exemple, il est souhaitable d avoir une signa
ture plus courte. Par une astuce, DSS se distingue dEl Gamal en offrant une
signature de 320 bits sur un message de 160 bits en impliquant un module de
512 bits. L astuce revient travailler dans un sous-groupe de Z * de taille 2160.

21.4.1 Fonctionnement

Soit p un nombre premier de 512 bits, q un facteur premier de 160 bits de


p1 et soit a une racine qe primitive de lunit modulo p tels que le problme du
logarithme discret dans le sous-groupe engendr par a est difficile. Le message
M G et sa signature est constitue du couple (ei, e 2 ) G Z x Z . L ensemble
des cls est :
K = { (p, , a, a, (3) : (3 aa mod p]
228 Digital Signature Standard (DSS)

Priv Publics
a p, q, a, (3
On choisit 1 < k < q 1 alatoire et on dfinit une signature comme :

sigk (M, k) = (7 , )

pour

7 = (ak mod p) mod q = (M + a ^ k - 1 mod q

Pour M G Z * et 7 , G Z . on dfinit :

ei = M ^ 1 mod q
e2 = 7<i>~1 mod q

Le prdicat public de vrification devient :

verk (M, 7 , 5) = vrai <=> (a ei/3e2 mod p) mod q 7 = (a k mod p) mod q

Notons que 6 ^ 0 mod q car 1 mod q est ncessaire la vrification des


signatures. Si Bob obtient 5 = 0 mod q dans le procd de signature, il doit la
rejeter et construire une nouvelle signature avec une nouvelle valeur de k.

E x e m p le 21.3 On choisit q = 101 et p = 78q + 1 = 7879. Une racine primitive


de Z 7879 est 3 et on peut prendre :

a = 378 mod 7879 = 170

On suppose que a = 75. on a :

P = aa mod 7879 = 4567

Bob veut signer M = 1234 et choisit k = 50. k 1 mod 101 = 99. Il obtient :

7 = (17050 mod 7879) mod 101 = 2518 mod 101 = 94

et
= (1234 + 75.94)99 mod 101 = 97

La signature du message 1234 est alors (94,97) et se vrifie par :

5_1 = 9 7 - 1 mod 101 = 25


e\ = 1234.25 mod 101 = 45
e2 = 94.25 mod 101 = 27

et on a bien :

(17045456727 mod 7879) mod 101 = (17050 mod 7879) mod 101 = 94
Signatures numriques 229

Pour justifier le bon fonctionnement du procd de vrification, il est nces


saire dintroduire le lemme suivant.

Lem m e 21.1 Si p est un entier premier, q un facteur premier de p 1, g un


entier non nul plus petit que p et a = / c-^)/q nl0(j p; alors ofl mod p = 1.
De plus, si m mod q = n mod q alors a m mod p = a n mod p.

Preuve Par le thorme de Fermat-Euler, on a :

a9 mod p = mod ^ mod p = gv~ 1 mod p = 1

Si m = n mod q, pour un entier A, rn = n + Xq: alors, comme a q mod p 1,


am = a na Xq = a n mod p.

Nous pouvons maintenant justifier le bon fonctionnement de la vrification.

T h orm e 21.2 Pour un triplet (A/, 7 , A) valide, on a bien

(aeip e2 mod p) mod q = y = (a k mod p) mod q

pour e\ = M ^ 1 mod q et e2 = 7 <~ 1 mod q.

P reuve Puisque k = M + 07 mod q et en utilisant le lemme 21.1, on dduit


que (a(M+aT')<5 mod p) mod q = (a k mod p) mod q.

21.4.2 Modifications apportes par rapport El Gamal

La premire modification consiste changer le - en + dans la dfinition


de S, soit
6 = (M -I- aqjfc-1 mod (p 1) (21.1)

Cela change le prdicat de vrification en :

a Mpn = y mod p (21.2)

Si pgcd ( M + a j , p 1) = 1, alors A-' 1 mod (p1) existe et on peut modifier


lquation (21.2) en :
a M r /P"5-1 = 7 mod p (21.3)

La modification principale de DSS est la suivante : supposons que q soit


un nombre de 160 bits tel que q\{p 1) et que a soit uneracine qe primitive
de lunitmodulo p (pour construire un tel a, on prendune racine primitive
cto et on pose a = OqP 1^ 9 mod p). Ainsi /3 et 7 sont galement des
racines qe de lunit. Donc, les exposants de o , fi et 7 peuvent se rduire modulo
q sans changer la fonction de vrification (21.3). Le problme est que 7 apparat
comme exposant dans le membre gauche de (21.2) mais pas comme exposant
230 Digital Signature Standard (DSS)

dans le membre droit de (21.3). Donc, si 7 est rduit modulo , on doit aussi
rduire le membre gauche de (21.3) modulo q dans la vrification. On note que
(21.2) ne peut plus fonctionner avec ces rductions modulo q. On passe donc
au procd dcrit dans le paragraphe 21.4.1.

L inconvnient majeur de ce procd est quil est plus lent que RSA dun
facteur compris entre 10 et 40. Cependant, la gnration des cls est plus rapide
que pour RSA. Lin autre inconvnient est quune taille de cl de 512 bits est
souvent trop petite. C est pourquoi la taille des cls utilises tend aujourdhui
vers 1024 bits.
C h a p it r e 22

Fonctions de hachage

Les algorithmes de signature prsents dans le chapitre prcdent ont la


fcheuse tendance faire crotre grandement la taille des messages signs. En
effet, leur utilisation nave suit un fonctionnement analogue au chiffrement par
blocs des longues chanes de clair. On commence par dcouper le message
signer en blocs de mme taille et on signe indpendamment chacun des blocs.
Ceci pose plusieurs problmes. Tout d abord la taille de la signature devient
trs grande. Ensuite, la plupart des procds de signatures srs sont lents. On
aimerait cependant pouvoir signer des messages plus longs comme un contrat
commercial qui peut occuper un espace de plusieurs kilo-octets.
Une solution ce problme est d utiliser une fonction de hachage cryptogra
phique. Cette fonction, qui doit tre rapide calculer, transforme un message
de longueur arbitraire en une empreinte numrique de taille fixe. Cette dernire
est ensuite signe, comme dans lexemple ci-dessous :
message x longueur arbitraire
I
empreinte 2 = h(x) 160 bits
I
signature y = sig^(z) 320 bits
Ainsi, lorsque Bob souhaite signer un message x, il calcule au moyen d une
fonction de hachage une empreinte numrique z = h(x), signe avec y = sig^(z)
et transmet le couple (x , y ). Tout le monde peut valider la signature. Il faut
recalculer lempreinte z = h(x) puis, en utilisant le procd de vrification de
la signature, vrifier que le rsultat du prdicat de vrification de la signature
verx { z , y ) est correct.

22.1 Dfinition dune fonction de hachage

On dfinit une fonction de hachage comme une fonction qui associe des
mots binaires de longueur arbitraire des mots binaires de longueur n fixe :

h : {0 ,1 }* -> ( 0 .1 } " pour n N

Une fonction de hachage nest jamais injective.


232 Fonctions de hachage collisions difficiles

Exemple 22.1 Le bit de parit est un exemple de fonction de hachage.

On peut construire une fonction de hachage soit au moyen dune fonction


sens unique comme le logarithme discret soit au moyen dune fonction de
compression du type :

g : {0, l } m > { 0 , 1} pour m ,n G N, m> n

Dans ce chapitre, nous donnerons des exemples de ces deux types de


constructions.

22.2 Fonctions de hachage collisions difficiles

Il faut prendre quelques prcautions pour que lutilisation de la fonction de


hachage naffaiblisse pas le procd de signature. Comme on signe lempreinte
numrique plutt que le message, il est ncessaire que h satisfasse quelques
proprits pour viter les falsifications.
L attaque la plus naturelle pour un indiscret Oscar consiste chercher un
autre message qui ait la mme empreinte, i.e. trouver deux valeurs qui entrent
en collision, autrement dit x' ^ x tel que h(x) = h(x'). Sil y parvient, le
message (a/, h(x)) est un message sign valide. Pour empcher ce type de fraude,
il faut que h soit collisions faibles difficiles.
Une autre attaque possible est la suivante : Oscar cherche deux messages
distincts x et x' qui ont la mme valeur de hachage. Il persuade ensuite Bob
de signer le message x par son empreinte numrique h{x) et obtient y. Alors le
couple (x',y) est une signature authentique. Cela nous conduit la dfinition
de la difficult des collisions.

Dfinition 22.1 Une fonction de hachage h est collisions fortes difficile sil
est calculatoirement difficile dobtenir deux messages diffrents x et x' tels que
h{x) = h(x').

Notons que si h est collisions fortes difficile, elle est galement collisions
faibles difficile.

Voici un dernier type d attaque. Avec de nombreux procds de signature, il


est possible dobtenir des contrefaons sur la signature d empreintes numriques
alatoires z. Supposons quOscar obtienne une signature valide de z. Il peut
alors chercher un message x tel que 2 = h(x). Pour viter cette attaque, on
demande h d avoir la mme proprit de non-inversibilit que dans le cas
dune fonction sens unique.

Dfinition 22.2 On dit que h est sens unique si, pour une empreinte num
rique donne z, il est calculatoirement difficile de trouver un message x tel que
h(x) = z.

On admettra que si h est collisions fortes difficiles, h est sens unique.


Fonctions de hachage 233

22.3 Dimensioimement du nombre de bits dune fonction de


liachage

Pour dterminer la taille en nombre de bits de lempreinte par la fonction


de hachage, on fait appel au paradoxe des anniversaires. Cela permet de rendre
la recherche de collisions calculatoirement difficile.
Paradoxe des anniversaires
Donne B = (b\,. . . ,bk) { 1 , 2 , . . . , n } k.
Question Quelle est la probabilit p quil existe au moins deux lments iden
tiques dans B ?
Par un rapide calcul de probabilits et par passage lvnement compl
mentaire. on obtient que :

^ k1 k1
. i ~ p = < i = ^ k -*> = n
i=0 1

Comme 1 + x < e x : q < e~k.

Pour k > ^1 + yj l + 8nln(2)^ /2 , q < 1 /2 .

Exemple 22.2 Avec n = 365 jours et k = 23 personnes, on a plus d une chance


sur deux que deux personnes aient leur anniversaire le mme jour.

En appliquant le paradoxe des anniversaires aux collisions, il est possible


de trouver la taille n de limage par la fonction de hachage pour viter les
collisions.
Pour ce faire, on calcule et on trie autant de couples (x, h(x)) que possible.
On suppose que les images par h suivent une distribution uniforme et on dtecte
une (ou plusieurs) collisions.
En appliquant le paradoxe des anniversaires, les valeurs de k correspondent
aux jours anniversaires ; il y en a 2".
En considrant k couples on a plus d une chance sur deux davoir une colli
sion avec k > ^1 + y/T+~(8 ln(2))2r j /2. En passant au logarithme, on calcule
les premiresvaleurs de log2(fc) en fonction de la taille de lempreinte :
n 50 100 150 200
log2(fc) 25,24 50,24 75,24 100.24

En calculant un peu plus de 2r!/2 images par h, on trouveune collision avec


une probabilit > 1 /2 .
Comme on requiert que h soit rsistante aux collisions, on choisit n pour que
le calcul de 2r,/'2 images par h soit calculatoirement difficile. A ce jour, d aprs
la table ci-dessus, la taille de n est de 128 bits, voire mme de 160 bits.
234 Hachage par le logarithme discret

22.4 Hachage par le logarithme discret

Cette fonction de hachage a t propose par Chaum, van Heijst et Pfitz-


mann. Elle nest pas assez rapide pour tre pratiquement performante mais elle
illustre un exemple simple de fonction de hachage assez sre.

Description de lalgorithme

On choisit p un grand nombre premier tel que q = (p l ) /2 est galement


premier. Soient a et P deux lments primitifs de Z p. La valeur logQ(/?) est
conserve prive et on suppose quelle est difficile calculer. On dfinit alors la
fonction de hachage

h 7Lqx Z 9 > Zp \ {0 }
{x\,X2 ) i>a XlPx2 mod p

Le thorme suivant est une preuve de la sret de cette mthode pourvu


que le calcul du logarithme discret reste difficile.

T h o r m e 22.3 Etant donn une collision pour la fonction de hachage de


Chaum, van Heijst et Pfitzmann, le calcul de logQ(/3) est facile.

P reu v e On suppose disposer d une collision h {x \, .7:2) = h(x3, 2:4) avec


( xi ,X 2 ) ^ (x 3 , x 4). On a donc

a x ip x2 = a X 3 /3X i mod p a 11-13 = p X i~ x 2 mod p

On note d = pgcd (4 X2 ,p 1). Comme ( p1) = 2 pour un nombre premier


, on a d G {1, 2, q,p 1}. On considre chacune des valeurs de d :

d = 1. On pose y = (4 X2 ) _ 1 mod (p 1). On a :

P = p(x* - x^y mod p = a (xi~X3)y mod p

et on peut calculer le logarithme discret log0 (/3) par

logQ(/?) = (xi - x 3 ) ( x 4 - 2) _1 mod (p - 1)

- d = 2. Comme (p 1) = 2q pour un nombre premier , on a pgcd (4


X2 , q) = 1. Soit y = (4 a^ ) -1 mod q. On a (x4 X2 )y = kq + 1 pour un
entier k et donc
p(x 4 - x 2)y = pkq+i mod p = ( ~ l ) kP mod p = /? m od p

car Pq = 1 mod p. On a donc


a (xA-x2)y ^ p(x 1 - x 3)y mod p = p mod p

On en dduit que loga (/3) = (4 X2 )y mod (p 1) ou que logc>(/3) =


(x\ x 3 ) y + q mod (p1). On peut facilement vrifier lequel de ces rsultats
est convenable. On obtient donc galement le logarithme discret logQ(/?).
Fonctions de hachage 235

d = q. On a < X2 < 1 et 0 < X4 < 1- Donc, ( 1) < X4 X2 < q1.


Il est donc impossible d avoir pgcd (x 4 .''2, p - 1) = q.

- d = (p 1). Ce cas ne peut se produire que si X2 = X4 . On a alors


a XlP X2 = a X3 PX2 mod p. Donc que, a x 1 = a X3 mod p et, x\ = X3 . On
a donc ( x i , X 2 ) = (x.s,.t4) qui est une contradiction. Ce cas est donc gale
ment impossible.

En conclusion, h est collisions fortes difficiles pourvu que le calcul de loga (/3)
dans Z p soit galement difficile.

22.5 Hachage compressif

On dcrit ci-dessous comment construire une fonction de hachage crypto


graphique en suivant le schma dcrit dans [15] : on choisit une fonction de
chiffrement cl secrte e k ; partir de e k , on construit une fonction de com
pression g que lon va utiliser pour construire une fonction de hachage h. Cest
sur ce principe que sont construites les fonctions de hachage les plus utilises
comme MD5 ou SHA dont nous allons dcrire le fonctionnement un peu plus tard.
Nous commenons par la prsentation de la mthode de construction vo
que ci-dessus.

22.5.1 Construction dune fonction de compression

A partir de e*,, une fonction de chiffrement cl secrte,

e k '{ 0, l } n x { 0. l } n * { 0, l } n

on peut construire g une fonction de compression, identique la fonction de


chiffrement, dont la taille de limage par est n :

g : { 0 ,1 } " x {(J, l } ri { 0 ,1 } pour n e N

La fonction de chiffrement est utilise soit directement, si elle est rsis


tante aux collisions, soit en la perturbant un peu en utilisant par exemple
une des perturbations ci-dessous :

g (k ,x ) = ek(x) x
g(k, x ) = e k ( x ) @ x k
g(k, x ) = e k ( x k) ffi x
g {k, x ) = e k{ x k) ffi x k

En procdant de cette manire, on dispose d une fonction de compression g :


{0,1}"*-{0,1}.

On va ensuite utiliser cette fonction de compression pour construire une


fonction de hachage cryptographique :

h : {0 ,1 }* > {0, l } n pour n 6 N


236 Hachage compressif

22.5.2 Construction de la fonction de hachage

Nous suivons la construction de Merkle [15] qui permet dlaborer une fonc
tion de hachage partir dune fonction de compression g : {0, l } m {0,1}",
comme celle obtenue prcdemment.
Soit r = m n > 1. On veut construire h : {0 ,1 }* {0, l } n.
Soit x E {0 ,1 }* et l sa longueur en binaire.

-on complte x avec des 0 en tte pour obtenir u = 0 x t.q. |w| = 0 mod r;

on complte t avec des 0 en tte pour obtenir y = (Pl t.q. \y\= 0 mod r1 ;

on dcoupe y en blocs de r 1 bits et on ajoute un 1 au dbut de chacun


des blocs pour former le mot v ;

on construit le mot w = i{)rv compos de t blocs de longueur r.

Exemple 22.3 r = 4, x = 11101, t = 101. On forme u = 0 0 0 1 1101, v = 1101.


w = 0001 1101 0 0 0 0 1101 = icii<;2W3k;4 (t = 4)

On dfinit inductivement une fonction H par //<, = 0n et H, = iw,)


pour 1 < i < t. La fonction de hachage cryptographique h est dfinie au moyen
de H comme :
h{x) = H t

Proposition 22.4 h est rsistante aux collisions si g lest aussi.

P reu v e Par contraposition, tant donn (x , x') une collision de h, on en d


duit une collision de g. (x , x') = ( w i . . . v y , v;\ .. . w't) obtenues inductivement
partir de H o , . . . ,H t et , . . . , H't, . On suppose que t < t'
Puisque (x . x ') est une collision de h, H t = H't, :

- O n suppose quil existe un indice i , 0 < i < t pour lequel H t- i = H 't'-i


H tii ^ H__i~ Alors II,* i^/' v et g[H ti\Wti) =
H t~i = If'i, , = g{ll[i est une collision de g.

- O n suppose maintenant que H t- i = H't, _ i pour ( ) < ? ' < t. Alors, il existe
un indice i,0 < i < t t.q. Wt~i / C est le cas soit parce que les
mots w et w' sont de longueurs diffrentes soit parce quils sontdiffrents
(sinon h serait sans collision). Alors, g ( l I t - i - i W t - , ) = H t - = H'L, _ i =
et H t - i - i w t - i +


Fonctions de hachage 237

22.5.3 Fonctions de hachage efficaces

Les fonctions de hachage utilises en pratique sont construites selon le prin


cipe ci-dessus. Les plus courantes sont :
nom bits tours x tapes vitesse relative
MD5 128 4x 16 1
SHA 160 4x20 0,28

22.6 Fonction MD5

MD5 est une fonction de hachage cryptographique qui produit des em


preintes de 128 bits. Il sagit de la fonction de hachage utilise pour constituer
lempreinte de la signature de PGP. MD5 a t propose par Rivest de la socit
RSA en 1991.
MD5 fonctionne itrativement sur des mots de 32 bits. La fonction prend
en entre une variable de chanage de quatre mots (la valeur initiale) ainsi
que le message compos d un bloc de seize mots et engendre une sortie de
quatre mots (i.e. 128 bits) dfinissant ainsi une nouvelle variable de chanage.
On chane ensuite le bloc de message suivant avec le rsultat du hachage du
premier bloc comme dcrit dans la figure 22.1.

message

bloc 1 bloc 2 bloc n

valeur \V V\ \ \ \ \ valeur
initiale y 7 MD5 y y MD5 y y MD5 y y hache

Fig. 22.1 Chanage des blocs par MD5.

Toutes les oprations utilises par MD5 sont dfinies sur des mots de 32
bits. La transformation consiste en quatre tapes successives et chaque tape
est constitue de seize sous-tapes. Dans chacune des sous-tapes un mot des
variables de chanage est modifi comme suit : on ajoute un mot du message et
le rsultat du calcul d une fonction non linaire dpendant des trois autres mots
de la variable de chanage ; ce rsultat subit ensuite une permutation circulaire
dun certain nombre de bits.

22.6.1 Complmentation du message

MD5 commence par effectuer un complment' dont le rle est de trans


former le message hacher x pour que celui-ci soit un multiple de 512 bits. L en
tre binaire complte est ensuite dcoupe en mots de 32 bits M [0]. M [ n 1]
en utilisant lalgorithme suivant :

^ C est lopration de padding en anglais.


238 Fonction MD5

Algorithme 22.1 _____________________________________________


1. d < 447 || mod 512
2. Z <reprsentation binaire de x mod 264 tq |Z| = 64
3. M <- .l.Od.Z

De cette manire, on assure que n est un multiple de 16.

22.6.2 Description de lalgorithme

Ensuite, on calcule lempreinte numrique, code sur 128 bits au moyen de


lalgorithme ci-dessous.
Algorithme 22.2 ________________________________________________________
1. A <-67452301 (hex)
B <EFCDAB89 (hex)
C <98BADCFE (hex)
D <-10325476 (hex)
2. pour i < 0 n /16 1 faire
3. pour j < 0 15 faire
x \ j ] ^ M [ m + j]
fpour
4. A A < A
B B ^B
c c < C
D D ^D
5. tape 1
6. tape 2
7. tape 3
8. tape 4
9. A < A + AA
B i - B + BB
C <- C + C'C
D < D + D D
fpour

Lempreinte est le rsultat de la concatnation des mots A B C D rangs dans


des registres mmoire. Ceux-ci sont initialiss ltape 1. de lalgorithme. On
traite ensuite itrativement le tableau M par blocs de 16 mots. A chaque itra
tion de la boucle 2, on utilise un nouveau bloc de 16 mots de M quon range dans
le tableau A la ligne 3. Le contenu des registres est sauvegard la ligne 4.
On effectue ensuite trois tapes de hachage dcrites ci-dessous qui traitent cha
cune 16 mots de X . Chaque tape de hachage produit de nouvelles valeurs pour
les registres A , i?, C et D. Pour terminer, on ajoute aux nouvelles valeurs des
registres les valeurs initiales qui ont t sauvegardes par des additions modulo
232.
Les quatre tapes de MD5 sont toutes diffrentes et utilisent les oprations
logiques suivantes choisies pour leur rapidit sur des ordinateurs modernes :

- X A Y le et logique bit bit de X et Y ;


Fonctions de hachage 239

-X V Y le ou logique bit bit de X et Y ;

- X Y le ou exclusif logique bit bit de X et Y ;

->X la complmentation bit bit de X ;

X + Y laddition modulo 232 ;

- X <5C s permutation circulaire de s bits de X vers la gauche (0 < s < 31).

Les tapes de MD5 utilisent les quatre fonctions boolennes suivantes :

- f ( x , y, z ) = ( x a y ) v( ( - x ) a z)

- g ( X , Y , Z) = ( X A Y ) V (Y A ->Z)

h{X, Y Z ) = X ( D Y Z

-i(X ,Y,Z) = Y (X V ->(Z))

ainsi quune table T [1. . 64] de 64 lments construite au moyen de la fonction


sinus. T [ i] reprsente la partie entire de 4294967296.abs(sin(?)), i en radians
et abs la valeur absolue.
Les quatre tapes sont :

-tape 1 : on note [abcd k s i ] lopration

a = b + ((a + f(b, c, d) + X[k] + T[i}) s)

et on effectue les 16 oprations suivantes :

[ABCD 071] [CDAB 2 17 3]


[ABCD 475] [CDAB 6 17 7]
[ABCD 879] [CDAB 10 17 11]
[ABCD 12 7 13] [CDAB 14 17 15]
[DABC 1 12 2] [BCDA 3 22 4]
[DABC 5 12 6] [BCDA 7 22 8]
[DABC 9 12 10] [BCDA 11 22 12]
[DABC 13 12 14] [BCDA 15 22 16]

-tape 2 : on note [abcd k s i ] lopration

a = b + ((a + g{b. c. d) + X[A] + T[i\) <SC s)

et on effectue les 16 oprations suivantes :

[ABCD 1 5 17] [CDAB 11 14 19]


[ABCD 5 5 21] [CDAB 15 14 23]
[ABCD 9 5 25] [CDAB 3 14 27]
[ABCD 13 5 29] [CDAB 7 14 31]
[DABC 6 9 18] [BCDA 0 20 20]
[DABC 10 9 22] [BCDA 4 20 24]
[DABC 14 9 26] [BCDA 8 20 28]
[DABC 2 9 30] [BCDA 12 20 32]
240 Fonction MD5

tape 3 : on note [ a b c d k s i ] lopration

a = b + ((a + h{b, c, d) + A[fc] + T[i]) s)

et on effectue les 16 oprations suivantes :

[ABCD 5 4 33] [CDAB 11 16 35]


[ABCD 1 4 37] [CDAB 7 16 39]
[ABCD 13 4 41] [CDAB 3 16 43]
[ABCD 9 4 45] [CDAB 15 16 47]
[DABC 8 11 34] [BCDA 14 23 36]
[DABC 4 11 38] [BCDA 10 23 40]
[DABC 0 11 42] [BCDA 6 23 44]
[DABC 12 11 46] [BCDA 2 23 48]

-tape 4 : on note [abcd k s i ] lopration

a b + {{a + i(b, c, d) + A[fc] + T[i]) s)

et on effectue les 16 oprations suivantes :

[ABCD 0 6 49] [CDAB 14 15 51]


[ABCD 12 6 53] [CDAB 10 15 55]
[ABCD 8 6 57] [CDAB 6 15 59]
[ABCD 4 6 61] [CDAB 2 15 63]
[DABC 7 10 50] [BCDA 5 21 52]
[DABC 3 10 54] [BCDA 1 21 56]
[DABC 15 10 58] [BCDA 13 21 60]
[DABC 11 10 62] [BCDA 9 21 64]

De nombreuses implmentations de cette fonction de hachage sont proposes


sur le web dans diffrents langages tels que java, C++ etc.

22.6.3 Attaques

En 1996, H. Dobbertin [30, 31] a russi une attaque sur la fonction de com
pression de MD5. Plus prcisment, il a trouv en quelques heures de calcul une
collision dans la fonction de compression. Par collision on entend que la fonc
tion de compression a fourni la mme image sur deux entres x et x distinctes
partageant la mme valeur initiale {IV). En d autres termes que

com press(/V, x) = com press(/V, x)

Les valeurs (hexadcimales) proposes par H. Dobbertin sont :

I V = 12AC2375 3B341042 5F62B97C 4BA763ED

pour la valeur initiale et comme valeur d entre x les 16 blocs hexadcimaux


suivants :
Fonctions Je hachage 241

X0 =AA1DDA5E x4=1006363E x8=98A1FB19 x i2=1236ED65


xi==D97ABFF5 x5=7218209D xt= l FAE44B0 Xi3=D93E0972
x 2 =55F0E1C1 x6=E01C135D x 10-236BB992 xi4^D458C868
x3=32774244 x 7=9DA64D0E x'u =6B7A669B x 15=6B72746A

La seconde valeur x est dfinie partir des blocs de x comme :

Xi = Xi pour i ^ 14
X1 4 x i 4 + 2 9

Pour plus de dtails sur cette attaque, nous suggrons la lecture de [31] qui
en dcrit les grandes lignes sans trop entrer dans des considrations techniques.
En consquence de quoi, MD5 nest plus recommande pour des applications
ncessitant un haut niveau de scurit. Les fonctions qui en assurent le rem
placement sont SHA-1 ou RIPEMD ainsi que leurs variantes les plus rcentes.

Nous dcrivons ci-dessous le fonctionnement de SHA-1 qui suit galement la


construction de Merkle.

22.7 Fonction SHA-1

SHA utilise les diffrentes reprsentations suivantes : la reprsentation de


base est la reprsentation hexadcimale qui code des mots binaires de longueur
4 comme, par exemple, 7//=0111 ou /1//=1010 ; ces entiers hexadcimaux sont
ensuite regroups par mots de longueur 8 pour donner un mot de 32 bits qui
reprsente le codage binaire dun entier compris entre 0 et 2 3 2 1 .

E xem ple 2 2.4 1 0 1 0 0001 0000 0011 1111 1110 0010 0011 = A103FE23

Le codage dun entier 0 < z < 2 64 est tel que 2 = 2 32,x + y pour deux mots de
longueur 8 , x et y . Enfin, SHA travaille sur des blocs de 512 bits reprsents
comme 16 mots de 32 bits.
Comme pour MD5, on utilise les oprations logiques usuelles de la section
prcdente.

22.7.1 Complmentation du message

SHA commence par effectuer un complment du message initial. A lissue


de cette opration, on obtiendra un mot binaire de n blocs de 512 bits, un peu
comme pour MD5. SHA va travailler sur chacun de ces n blocs.
Soit x e {0 ,1 }* et i sa longueur en binaire ( < 264) sur 64 bits. Si t < 232,
le premier mot ne comportera que des zros :

on complte x avec un 1 en queue pour obtenir le mot u = x 1 ;


242 Fonction SHA-1

- o n ajoute m zros pour que la longueur du mot w = xOm vrifie |w| = 0


mod 512.

E x e m p le 22.5 Si le message original hacher de longueur 40 est :


01100001 01100010 01100011 01100100 01100101
On commence par ajouter le 1 final :
01100001 01100010 01100011 01100100 01100101 1
On ajoute ensuite 512 64 (40 + 1) = 407 zros la fin du message pour
obtenir le message (en hexadcimal) :
61626364 65800000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000
On ajoute ensuite au message sa longueur en binaire exprime en hexadcimal.
Dans notre cas la longueur est 40 soit 28 en hexadcimal :
61626364 65800000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000028

A lissue de ce complment, le message sera compos de n blocs de


512 bits (ou de manire quivalente, en n paquets de 16 mots de 32 bits)
M o, M \, . . . , i.

22.7.2 Description de lalgorithme

SHA utilise une suite de 80 fonctions boolennes / o , .. -, / 7 g. Chacune dentre


elles prend en entre trois mots de 32 bits et fournit en sortie un mot de 32
bits. Les fi sont dfinies comme suit :

f t{ B, C, D) = (B A (7) V (~<B A D ) pour 0 < t < 19


f t(B,C ,D ) = BCD pour 20 < t < 39
ft (B, C, D) = { B A C) V { B A D) V {C A D) pour 40 < t < 59
ft(B , C,D) = B 0 (7 D pour 60 < t < 79

SHA utilise galement 80 constantes Kq, . . . , A 79 qui sont dfinies par :

Kt = 5A827999 pour 0 < t < 19


Kt = 6ED9EBA1 pour 20 < t < 39
Kt = 8F1BBCDC pour 40 < t < 59
Kt = CA62C1D6 pour 60 < t < 79

L empreinte du message est calcule en utilisant le message complt du pa


ragraphe 22.7.1 en utilisant deux registres et en une suite de 80 mots de 32 bits
W o, - W 7 9 . Chaque registre comprend cinq mots de 32 bits (respectivement
A, B, C , D, E pour le premier et H 0, H\, H 2 , H 3 , H 4 , H 5 pour le second).
Fonctions de hachage 243

On iiiitialise tout dabord les Hi aux valeurs hexadcimales suivantes :

H 0 = 67452301
H i = EFCDAB89
H 2 = 98BADCFE
H 3 = 10325476
H i = C3D2E1F0

On effectue itrativement les calculs sur chacun des M-, du paragraphe 22.7.1.
Le traitement de chacun des M* comprend 80 tapes.
Algorithme 22.3 _________________________________________________________
1. dcouper Mi en 16 mots W q, . . . , ILis
2. pour t 16 jusqu 79 faire
w t * - (wt_3 wt_8 w t- 14 W t - i o ) i
fpour
3. A + - H 0 ]B *- H i - C e - H 2; D *- H a; E * - H A
4. pour t * 0 jusqu 79 faire
TEMP-s A 5 + f t (B, C , D ) + E + W t + K t ;
E * - D ; D * - C ; C <- B 30; B <- A; A * - TEMP ;
fpour

H 3 * H 3 + D : H 4 < H 4 + E ;

Aprs avoir trait tous les Mi, les 160 bits de lempreinte du message par
SHA sont constitus des cinq mots HoHiH 2 H 3 H4.

22.7.3 Attaques

Dans [16], Chabaud et Joux proposent une attaque pour trouver des colli
sions dans une version affaiblie de SHA appele SHA-0. Ils utilisent pour ce faire
des techniques proches de la cryptanalyse diffrentielle. En revanche, cette ap
proche na pas domi de rsultat probant pour SHA-1. Cette fonction de hachage
cryptographique reste une des fonctions de hachage actuellement recommande
avec RIPEMD que nous ne dcrirons pas.

22.8 Digital Signature Algorithm (DSA)

Le Digital Signature Algorithm (DSA) date de 1994 et se fonde sur DSS que
nous avons prsent dans le paragraphe 21.4.1. Dans cette variante, on signe
lempreinte du message par une fonction de hachage et non plus le message
lui-mme.

Fonctionnement

Soient p un nombre premier de 512 bits, q un facteur premier de 160 bits de


p 1 et a une racine qe primitive de lunit modulo p tels que le problme du
244 Autres applications des fonctions de hachage

logarithme discret dans le sous-groupe engendr par a est difficile. Soit h, une
fonction de hachage cryptographique connue de tous les utilisateurs du systme,
comme par exemple, MD5 ou SHA-1. Le message M G Z* et sa signature est
constitue du couple ( ei ,e2) x Z , . L ensemble des cls est :

K = {(p, , a,a, (3) : P = a mod p}

Priv Publics
a p, q, a , P
On choisit 1 < k < q 1 alatoire et secret puis on dfinit la signature :

sig7<(M , k) = (7 ,<5)

pour

7 = (a k mod p) mod q 6= (h ( M ) + a7 )fc_1 mod q

Pour M e Z p et 7,6 G Z g, on dfinit :

ei = h ( M ) 6 ~ 1 mod q
= 7<5-1 mod q

Cette fois, le prdicat de vrification est :

verk (M, 7 , <5) = vrai (a eiPe2 mod p) mod q = 7

Notons que <5 ^ 0 mod q car -1 mod q est ncessaire la vrification des
signatures. Si Bob obtient <5 = 0 mod q dans le procd de signature, il doit la
rejeter et construire une nouvelle signature avec une nouvelle valeur de k.
La seule diffrence avec DSS est quici on ne signe pas le message Al dans
son intgralit mais plutt lempreinte de M par h, une fonction de hachage
cryptographique. L intrt est quavec ce procd, la taille de la signature ne
dpend plus de la taille du message. Lobjet quon signe est de taille fixe (environ
160 bits) quelle que soit la taille de M , ce qui entrane un gain important sur
la taille du message sign transmis.

Notons quil est tout aussi facile de dfinir une signature avec hachage pour
RSA ou tout autre systme de signature numrique en remplaant le message
par son empreinte.

22.9 Autres applications des fonctions de hachage

Une des principales applications des fonctions de hachage est d assurer


Vintgrit des donnes (i.e. que les donnes nont pas subi de modification).
Pour ce faire, on calcule lempreinte correspondant une entre donne. On
Fonctions de hachage 245

protge ensuite lintgrit de cette empreinte en la signant. Pour vrifier ul


trieurement que lentre na pas subi de modification, il suffit de recalculer
lempreinte de la donne au moyen de la fonction de hachage et de comparer
avec lempreinte originale. Cette technique est utilise pour la lutte contre les
virus informatiques ou pour la distribution de logiciels. Ce type dutilisation
se nomme MDC (Modification Dtection Code). Il sagit en effet dempcher
laltration d une donne.
Une autre application des fonctions de hachage rside dans leur utilisation
dans des protocoles de signature ou d'identification. Les fonctions de hachage
que nous avons prsentes prcdemment sont publiques et ne mettent pas en
jeu de cls secrtes. Si pour calculer lempreinte, on ajoute lutilisation d une
valeur initiale non nulle qui joue le rle dune cl secrte (comme dans le mode
de fonctionnement CBC dun systme de chiffrement cl secrte dcrit dans
la section 19.2), il est possible de fournir une authentification de lorigine des
donnes (comme dcrit dans la norme ISO X9.76) en mme temps quune ga
rantie de lintgrit des donnes. Ce type dutilisation se nomme MAC (Message
Authentication Code).
C h a p itr e 23

Sret des chiffres cl publique

Dans ce chapitre nous dcrivons diffrentes attaques sur les chiffres cl pu


blique que nous avons prsents prcdemment. En particulier, nous dcrivons
une manire de retrouver le clair pour le chiffre de Merkle-Hellman, quelques
attaques par factorisation de RSA et comment calculer un logarithme discret
pour le chiffre dEl Gamal.
La premire section est lune des vritables cryptanalyss du chiffre de
Merkle-Hellman qui a conduit assez rapidement un abandon des mthodes
de chiffrement bases sur des problmes de sac dos. Les deux autres sections
prsentent les principes lorigine de diffrentes mthodes pour attaquer des
systmes cls publiques et qui ont pour consquence de faire crotre la taille
des cls.

23.1 Cryptanalyse du chiffre de Merkle-Hellman

Cette technique de cryptanalyse utilise la technique de rduction de rseaux


arithmtiques par lalgorithme LLL dont on trouve de nombreuses implmen
tations, comme par exemple dans les logiciels de calcul formel comme Magma ou
Maple. Nous prsentons tout dabord les rseaux arithmtiques et lalgorithme
LLL avant de passer la cryptanalyse du chiffre de Merkle-Hellman.

23.1.1 Bref historique des rseaux arithmtiques

Les rseaux arithmtiques ont pour origine la rduction de formes quadra


tiques. Celles-ci ont t tudies par Lagrange, Korkine et Zoltarev pour dfinir
la notion de forme rduite associe une forme quadratique. Gauss a rsolu
le cas particulier des formes quadratiques deux variables Cependant, le pro
blme subsiste dans le cas gnral cause de la notion de rduction.
Minkowski rsout le problme de la notion de rduction en introduisant la
gomtrie des nombres. Il dfinit la notion de minima successifs dun rseau
et celle de famille de vecteurs ralisant ces minima, sans pour autant russir
rsoudre le problme de rduction de rseau.
Ce dernier problme est finalement rsolu en 1982 par Lenstra, Lenstra et
Lovsz. Ils proposent un algorithme polynomial de transformation d une base
quelconque dun rseau en mie base rduite au sens de Lovsz. Il ne sagit
248 Cryptanalyse du chiffre de Merkle-Hellman

pas d une base parfaite mais elle est suffisante pour la rsolution de nombreux
problmes, comme la factorisation de polynmes ou la cryptanalyse de Merkle-
Hellman.

23.1.2 Introduction aux rseaux arithmtiques

Dfinition 23.1 Un rseau est un sous-groupe discret de K " i.e. un ensemble


de vecteurs qui vrifient que :

- loppos de tout vecteur du rseau est dans le rseau ;

- la somme de deux vecteurs du rseau est encore dans le rseau ;

- tous les points du rseau sont isols.

Dfinition 23.2 Une base d un rseau est un ensemble de vecteurs linairement


indpendants qui engendrent le rseau; i.e. tout vecteur du rseau est une
unique combinaison linaire coefficients entiers des vecteurs de la base (et
rciproquement).

Nous nous limitons aux rseaux forms uniquement de vecteurs coordon


nes entires en suivant [17, 53]. Ces rseaux entiers vrifient la dfinition 23.3.

Dfinition 23.3 Un rseau entier est un sous-groupe de Z " i.e. un ensemble


de vecteurs coordonnes entires qui vrifient que :

- loppos de tout vecteur du rseau est dans le rseau ;

la somme de deux vecteurs du rseau est encore dans le rseau.

Tout rseau (entier) L possde une base i.e. une famille libre de r vecteurs
b = (b\,. . . , br), telle que le rseau L est lensemble des combinaisons linaires
entires des vecteurs de b. Rciproquement, soit une base de r vecteurs de Z "
b = ( b ], . . . , b, ) avec r < n, lensemble des combinaisons linaires entires de
ces r vecteurs est un sous-groupe discret de Z " , un rseau not L(b) :

Si tout rseau entier possde une base, il en possde mme mie infinit qui
ont toutes le mme nombre de vecteurs, ce qui dfinit la dimension du rseau.

Lemme 23.4 Soient b et b' deux bases dun rseau L. Il existe M une r x r
matrice unimodulaire (i.e. coefficients entiers dont le dterminant det(M) =
1) telle que = M.bi pour i = 1 , . . . , r.
Sret des chiffres cl publique 249

P reu ve Comme b et b' sont des bases de L , il existe M et N deux r x r


matrices coefficients entiers telles que b[ = M h, et bi = N . b M N = Idr
et det(M )det(iV) = 1. Comme les deux dterminants sont entiers, det( M) =
det(iV) = 1

Un invariant dun rseau L est une quantit dfinie dans un rseau qui
ne dpend que du rseau et non du choix de la base. La dimension en est un
premier exemple. On introduit deux autres types dinvariants :

- Le dterminant d{L) qui est le volume du paralllpipde r-dimensionnel


construit sur une base quelconque. Il se calcule partir du dterminant de
Gram d une base du rseau :

d(L) =| det(6i,. . . , br) |= \Jdet ([(bu bj)]i<i,j<r)

o (a, b) reprsente le produit scalaire usuel.

- Les minima successifs du rseau. On appelle premier minimum dun rseau


la longueur du plus court vecteur non nul. Le ie minimum dun rseau L est
le plus petit rel positif A pour lequel il existe dans L i vecteurs linairement
indpendants bji de norme || bjk ||2< A pour 1 < k < i. On note ce rel
M L).

23.1.3 Rduction de rseaux de dimension deux

Le cas particulier de la rduction de rseaux en dimension deux est d


Gauss. Pour comprendre cet algorithme, on introduit la notion de base rduite
dun rseau. Soit (u , v ) la base dun rseau; on dit que cette base est rduite si
elle ralise les minima Ai (L) et K^{L). Une base rduite est forme de vecteurs
aussi courts que possible.
Voici un algorithme simple qui calcule cette base rduite en dimension deux :
cest mie variante de l algorithme d Euclide !
A lgorith m e 23.1
si|| u ||<|| v || alors v <-> u ; (v est le plus court des deux vecteurs)
rp ter
k ; (k vrifie - \ { v ,v ) < { u - k v , v ) < %(v,v))
u < u k.v ;v <-> u
ju s q u ||u ||<|| v ||

E xem ple 23.1 Soit une base de deux vecteurs u = (3,1) et v = (2,1), de
normes ||w|| = \/I et ||?;|| = y/E. A la premire itration de lalgorithme on
calcule k = [| | = 1 et on raccourcit u en u - v (1,0) avant dchanger u et
v qui deviennent te = (2,1) et v = (1,0). A la seconde itration de lalgorithme
on calcule k = 11] = 2 et on raccourcit u en u 2 v = (0,1) avant d changer
u et v qui deviennent u = (1,0) et v = (0,1). Les deux vecteurs sont de mme
norme et lalgorithme termine avec une base de vecteurs plus courts.
250 Cryptanalyse du chiffre de Merkle-Hellman

Le principe de cet algorithme est le suivant. A chaque tape, on cherche


diminuer autant que possible la longueur du vecteur le plus long de la base
(u, v) par translation paralllement lautre vecteur. L algorithme se termine
quand le vecteur ainsi obtenu est plus long que le vecteur rest fixe. Dans ce
cas, lopration de translation napporte plus rien.
On montre ci-dessous la correction de lalgorithme de Gauss.

Lemme 23.5 L algorithme de Gauss est correct.

Preuve A chaque itration u est plus court et comme L est discret, lalgorithme
termine.
Le rsultat est u, v qui vrifient |(w, ?;}| < 11|'||2 et ||?;|| > ||u ||. Pour tout w e L
011 a 'm = au 4- bv. Par minorations, on montre que u est un plus court vecteur :

IieI) 2 g 2 I u12 + 2 ab(u,v) + 2 |M|2 > ( a2 |af>| + 6 2 )|| x ||2 > ||w||2

En supposant w indpendant de u, i.e. b =/ 0,

IMI2 > fl2MI2-|a&IMI2+ (3&2M 2+ f> 2IMI2) >


Ml2 = ( M - i r ) 2N I 2+ ! & 2lld2 > IMI2

si |6|> 1 ; et si b = 1, ||ie||2 > ci2||m||2 |a|||2-|- ||w|2 > |n|2.


v est donc galement un vecteur court qui est indpendant de w.

Lemme 23.6 Si u est le rsultat de l algorithme, v < ( 4 / 3 ) l^4ri(/.)1'/2.

Les vecteurs u et u ralisent les premiers et second minima du rseau. La


figure 23.1 dcrit gomtriquement le fonctionnement de lalgorithme de rduc
tion de rseaux dans le cas deux dimensions.

o o \ O
o
o o
o
o

Fig. 23.1 Fonctionnement de lalgorithme de Gauss.


Sret des chiffres cl publique 251

23.1.4 Rduction de rseaux de dimension suprieure deux

Quand la dimension n est plus grande (strictement) que deux, les minima
successifs nengendrent pas ncessairement le rseau. En effet considrons le
2 o o o i\
(00201
0 0 0 2 1 /
) qui contient V = \(1,1,1,1,1).
> j > > /
Il
00001/
admet comme minima successifs Ai = 2 pour i G { 1 , . . . , 5} et une famille
ralisant ces minima ne contient pas forcment V et ne permet pas de lobtenir,
comme par exemple 2.1d5-

Avant de construire une base de bonne qualit, il faut commencer par


orthogonaliser la base. On utilise lorthogonalisation de Gram Schmidt qui
transforme une base h = ( fq, . . . , bn) dun rseau L R " en une autre base
b* = (6) , . . . , 6* ) dfinie inductivement par :

r b* = h
' j Vi,j = ' (b*%\
i 3 . ^
P0ur 1 - 3 < i - 71
b* = bi - Vijb* pour 1 < i < n

Ensuite, on dfinit une notion adquate de base rduite. On utilise ici la


dfinition de Lovsz. On dit que b est Lovsz-rduite si 1 < | pour 1 <
j < i < n et ||6*||2 > (| ll^i-ill2 pour 1 < i < n. La dfinition 23.7
explique en quel sens les vecteurs d une base rduite sont relativement courts.

D fin ition 23.7 Soit L R un rseau de base rduite (61, . . . , bn) :

(1) pour tout vecteur w non nul de L, ||Z)i||

(2) plus gnralement, pour tout ensemble ( i , . . . , eq} de vecteurs linairement


indpendants de L,

INI < 2(n-1)/2 max{|ai|,. . . , ||at||} Pour 1 < j < t

23.1.5 Algorithme LLL

Lalgorithme LLL de rduction de rseaux est un algorithme polynomial qui


construit une base rduite, tant donn une base dun rseau fournie en entre.

T h orm e 23.8 Soit L Z " un rseau de base (61, . . . , bn) et soit C > 2 G R
tq. INI2 < C pour 1 < i < n. Le nombre d oprations arithmtiques ncessaires
LLL est 0 ( n Alog((7)) pour des entiers de taille (){n log(C')) bits.

Cet algorithme fonctionne selon le principe suivant. LLL est une combi
naison de Gauss dans un hyperplan et de Gram Schmidt. On essaye dappli
quer Gauss des sous-rseaux projets de dimension 2. Plus prcisment, on
commence par projeter bi et N i orthogonalement lespace engendr par
(b1, - - -, b i-1) et on effectue une tape de Gauss sur le rseau projet.
252 Cryptanalyse du chiffre de Merkle-Hellman

Les oprations de translation et dchange dans lespace projet sont rele


ves et sappliquent en fait sur bi et b j+ 1 eux-mmes. De plus, si ncessaire, le
nouveau vecteur obtenu est aussi translat par rapport ( f q , . . . , bz_ i) pour se
rapprocher de son projet.
Comme dans lalgorithme de Gauss, il y a deux types d oprations : des
translations et des changes de vecteurs. Les translations se limitent dplacer
un vecteur paralllement ses prdcesseurs. Les changes nagissent que sur
des vecteurs voisins.
Nous proposons ci-dessous une prsentation de cet algorithme issue de [71].
Algorithme 23.2 ________________________________________________________
1. b \ ^ h ;B 1 = (b*1,b*1)-,
2. pour i * 2 n faire
b ^ bi
pour j < 1 i 1 faire /i ,j < ^ f 3^ ; 6* < b * fii,jb* fpour
Bi = (b t,b t)
fpour
3. k e - 2
4. RED (A:, k 1) (mise jour de certains f a j )
5. si B k < ( f - Hk,k--) Sfc_ialors
[I i [ I k ,k 1, B * B k HII Bk1, f l k ,k 1 ^ ~ fi Bk 1j B ,
Bk < Bk~i Bk/B; Bk- i < B ;
bk ^ bk- 1
si k > 2 alors pour j < 1 k 2 faire /qv( <-> Uk-i,j fpour fsi
pour i * k + 1 h n faire
A* IH .k i k i ,k 3 k i , k 1 l^t-i k i ,k \ < ^ "f" t^k,kll^ i,k
fpour
k < max{2, k 1}
aller en 4
sinon
pour l < k 2 h l faire RED(/c, l) : fpour
k < k + 1
fsi
6. si k < n alors aller en 4 sinon rsultat < (iq,. . . , bn) fsi

Et de lalgorithme RED(A;, /) :
A lg o rith m e 23.3 _____________________________________________
si \fik,i\ > ^alors
r <- [0,5 + fik,i\ ; bk <- bk ~ rbi
p o u r j < 1 l 1 faire fikj < fikj rn ij fp ou r
i~kk,l < f^k,l T
fsi

tapes 1 et 2 : initialisations et calculs de Gram Schmidt ;


Sret des chiffres cl publique 253

tape 3 : k est une variable t.q. bi, ^2, - , fc-i sont rduits; lalgorithme
cherche modifier bk pour que 6], 62, . . . , bk soient rduits ;

tape 4 : le vecteur bk est modifi de manire adquate de telle sorte que


i| < \ et les Hkj sont mis jour pour 1 < j < k 1 ;

- ta p e 5 : la condition ||b*||2 > (| ||b*_ L||2 pour 1 < i < n est


viole pour i = k. Les vecteurs bk et bk- 1 sont changs et leurs paramtres
sont mis jour, k est galement dcrment de 1 car seuls bi, b? , . . . , bk- 2
sont rduits. Sinon bk est modifi de manire adquate de telle sorte que
lhfc,j| < 5 pour 1 < j < k - 2 en conservant ||*||2 > ( f - \\b*-J2
satisfaite, k est alors incrment car fcj, b2, , bk est rduite.

23.1.6 Application la cryptanalyse de Merkle-Hellman

Lalgorithme LLL va nous permettre de cryptanalyser le chiffre de Merkle-


Hellman en rsolvant un problme de sous-ensembles (SSP) de faible den
sit [73].
On dfinit la densit dun //-uplet ( j , . . . , an) comme

max{log(a,j) : 1 < i < n }

Lalgorithme LLL nous permet de ramener le problme de la somme de


sous-ensembles celui de la recherche dun vecteur court dans un rseau. LLL
construit une base rduite qui contient un vecteur dont la norme est un facteur
2( -1 )/2 prs celle du plus court vecteur du rseau.
En pratique, LLL trouve un vecteur qui est bien meilleur et LLL peut trou
ver une solution au problme de la somme de sous-ensembles pourvu que ce
vecteur soit plus court que la plupart des vecteurs non nuls du rseau.
Voici comment on peut rsoudre un problme de somme de sous-ensembles
(SSP) au moyen de LLL. Rappelons tout d abord lnonc du problme SSP :

Donne A = ( a i , . . . , o,n), n-uplet dentiers distincts et un entier s.


Rsultat x = (xi,. x n), x* e { 0 . 1 } t.q. (A, x) = s.

O11 construit un rseau L dont la base est constitue par les lignes de la
/1 0 0 ... 0 01 \
0 i 0 ... 0 - o 2
0 0 1 ... 0 G3
matrice V =
i 0 0 0 ... 1 -an
\0 0 0 ... 0 s /
Si j , . . . , vn+i reprsentent les lignes de V et que x est solution de SSP,
alors
^ X i V i + v n+i = ( x i , . . . , x n,Q)
7=1
254 Cryptanalyse du chiffre de Merkle-Hellman

Comme les Xi sont des valeurs binaires, ce vecteur est court. Il faut donc
calculer une base rduite de V et vrifier si la base rduite contient un vecteur
qui et une solution au problme SSP.

Justification

On note v i , . . . , vn+i les lignes de la matrice A et L le rseau de dimen


sion n + 1 engendr par ces vecteurs. Si ( x i , . . . , x n) est solution de SSP,
y = '}'? ) XiVi vn+\ est un vecteur de L.
Si la densit de SSP est faible, ce qui signifie que les ai sont grands, alors
la plupart des vecteurs de L seront de grande longueur et y peut tre le plus
court vecteur non nul de L. Si c est bien le cas, il est donc vraisemblable que
LLL ait trouv une base contenant ce vecteur.

Lalgorithme LLL ne nous donne aucune garantie de succs. En supposant


que LLL rend toujours une base qui inclut le plus court vecteur non nul du
rseau, cette attaque a une forte probabilit de succs si la densit de SSP est
majore par 0,9408. Voici un exemple en Maple illustrant le fonctionnement de
cette cryptanalyse.

E x e m p le 23.2 On construit le 5-uplet de base a :


> a:=[12,14,27,55,120];
a := [12, 14, 27, 55, 120]
On calcule la somme des lments du 5-uplet :
> s: =0 ;
s := 0
> for i from 1 to 5 do s:=s+a[i] od;
s := 228

On choisit le module plus grand que la somme (228) :


> m:=250;
m := 250
t est le multiplicateur
> t:=61;
t := 61
On calcule linverse de t par lalgorithme d Euclide tendu :
> igcdex(t,m,u ,v );print(u,v);
1
41, - 1 0
u est linverse de t, de valeur 41.
On calcule le 5-uplet perturb par la multiplication modulaire :
> b:=map(x->t*x mod m,a);
Sret des chiffres cl publique 255

6 := [232, 104, 147, 105, 70]


On construit une donne arbitraire et on la rsout par LLL :
> lattice([ [ 1 ,0,0,0,0,-b[l]], [0,l,0,0,0,-b[2]],
> [ 0 , 0 , 1 , 0 , 0 , - b [3] ] , [ 0 , 0 , 0 , 1 , 0 , - b [4] ] ,
> [0,0,0,0,l,-b[5]],[0,0,0,0,0,+b[l]+b[3]]],integer) ;

[[1, 0, 1, 0, 0, Oj, [0, - 1 , 0, 1, 0, -1 ] , [-2 , - 1 , 2, - 1 , 0, 0],

23,2 Attaques par factorisation de RSA

Outre 1a. technique nave de factorisation par le crible dEratostne que


nous avons prsente dans le paragraphe 20.2.4, il existe dautres techniques
pour factoriser un entier. Nous prsentons ici lide de Fermt qui est assez
simple. Une amlioration rcente de celle-ci est la mthode du crible quadra
tique.
Nous rappelons quelques rsultats de thorie des nombres sur les carrs en
arithmtique modulaire.

23.2.1 Les carrs modulaires

On veut dcider le problme suivant qui sera utile pour la factorisation :

Donne Un entier premier p > 2 et un entier a.


Question Existe-t-il x e Z * t.q. x 2 = a mod p ?

Si a est un carr (b2 = a mod p), a possde deux racines carres b modulo
p. Un algorithme naf pour trouver les carrs est de calculer x 2 mod p pour
x = 1 , 2 , . . . , {p l ) / 2 car les autres entiers de ((p l ) / 2 ) -t- 1 , . . . , (p 1) sont
leurs opposs.
Les carrs de Z * sont appels rsidus quadratiques modulo p.

Symbole de Legendre

Une technique simple pour dcider le problme des carrs dans le cas o p
est premier est dutiliser le symbole de Legendre not pour p premier :

G si p|a
+1 si a est un carr
1 sinon

mod p.
256 Attaques par factorisation de RSA

P reu v e Si p |a, les deux membres de la congruence sont nuls.


On suppose que p /a . Par le petit thorme de Fermt, modulo p, le carr de
a ^ gale 1 donc aK 1 = A l. Si g est un gnrateur de Z * tel que a = gj ,
f . . . (p 1) (P1)
alors, a est un rsidu quadratique ssi j est pair. Et donc a 5 = gi 2 vaut 1
ssi j(p l ) / 2 est divisible par p 1. Ainsi le membre droit et le membre gauche
de la congruence valent 1 dans 7LV et chacun vaut +1 ssi j est pair.

Le symbole de Legendre vrifie les proprits suivantes [56] :

(fHtX);
(2) = (1) E2~ autrement dit, -1 est un carr modulo p si p = 1 mod 4
et nest pas un carr modulo p si p = 3 mod 4 ;

(3) = (_ 1 ) ^ autrement dit, 2 est un carr modulo p si p = 1 mod 8


et nest pas un carr modulo p si p = 3 mod 8 ;

(4) = si ^ et P sont premiers entre eux;

(5) loi de rciprocit quadratique pour p et premiers :

( .) = ( - -() = { ^ - sS m d 4

Le problme revient maintenant calculer le symbole de Legendre. Si a,


est pair (et rduit modulo p), a scrit comme 2aa' avec a 1 impair; on utilise
ensuite la proprit de multiplicativit du symbole de Legendre : ip c }'
On distingue deux cas :

- a ' non premier et a' = n t = i -k Alors ( f r ) = (^ r ) ' (^ ) !

a' premier et on applique la loi de rciprocit quadratique.

E x e m p le 23.3 Dcider si 26 est un carr modulo 43 ou non revient calculer


son symbole de Legendre : ( f f ) - On factorise 26 en 2. 13: (| | ) = ( A ) (1)
et on utilise les proprits : (1) 1 (j| ) = (!) ^ 43 sonttous deux
premiers mais non congrus 3 modulo 4. L application de la loi de rciprocit
quadratique donne : (f)- Par rduction de 43 mod 13, on obtient ( A ) =
1. Autrement dit, 26 nest pas un carr modulo 43.

Linconvnient est que le calcul de ce symbole est compliqu car il faut


chaque fois factoriser le numrateur. Un autre inconvnient est que le
symbole de Legendre ne peut se calculer que lorsque p est un nombre premier.
C est pourquoi on introduit un autre symbole, le symbole de Jacobi qui va nous
aider faire ce calcul dans les autres cas.
Sret des chiffres cl publique 257

Symbole de Jacobi

Le symbole de Jacobi tend celui de Legendre comme suit.

D fin ition 23.10 Etant donn m et n premiers entre eux, m impair,

pour m = n L , P' 1 symbole de Legendre.

U vrifie la. plupart des proprits du symbole de Legendre sauf les princi
pales :

- (^ ) ^ mod m en gnral;

- = 1 n est un carr modulo m. (par exemple, ( ) = (| )(| ) =


( 1)(1) = 1 mais fix G N t.q. x 2 = 2 mod 15.)

Par contre, si ( ) ^ 1, alors n nest pas un carr modulo m.

Le problme est maintenant de calculer le symbole de Jacobi. Soit calculer


( m ) m e^J n premiers entre eux, avec m impair :

-si n > m , ( i ) = ( s - ^ a ) ;

-s i n est pair, n = 2 an' et ( ) = ( ) ( ) ;

-s i n est impair et n < m, ( ^ ) = ( ^ ) ( l ) - ^ 2r~ ;

Quelques valeurs particulires sont : (^ ) = +1 et ((() = +1.

E x em p le 23.4 Dcider si 26 nest pas un carr modulo 155. Calculons (f| | ) :

( ft) = ( A ) ( i i ) = ( - i)'155 - w ( l f ) ( - i ) * * = - ( g ) = -(*>=(*)


oppos du produit de deux symboles de Legendre. Le rsultat vaut 1, ce qui
signifie que 26 nest pas un carr modulo 155.

23.2.2 Factorisation : lide de Fermt

Fermt a eu lide de base qui permet la factorisation de grands entiers et


lessentiel des efforts de la recherche en matire de factorisation a t d amliorer
son approche :
Pour factoriser n, il suffit de trouver deux entiers x et y modulo n distincts
et non opposs modulo n qui vrifient

x2 = y2 mod n
258 Attaques par factorisation de RSA

En effet, dans ce cas, puisque (x + y) (x y) est multiple de n,le calcul du


pgcd(n, x + y) ou du pgcd(n, x y) nous donne un diviseur non trivialde n.
Il suffit donc de calculer les carrs modulo n dentiers lgrement suprieurs
[\/ri] en esprant tomber sur un petit carr parfait y 2 et de trouver un diviseur
non trivial de n par lobservation prcdente.

E x e m p le 23.5 Factorisons n = 9167. i/9167 ~ 95,7. On calcule 962 mod n =


49, qui est videmment un carr. 96 + 7 = 103 et 96 7 = 89 sont des candidats
pour trouver des diviseurs de n et sont mme ses facteurs premiers.

Le problme est que lorsque n devient grand, il ny a pas de raison quun


entier x 2 choisi alatoirement autour de [y/n] donne un carr parfait modulo n.
On cherche donc amliorer lalgorithme.

E x e m p le 2 3 .6 Factorisons n = 849239. On a \\/n\ = 922. On calcule 9222


mod n = 845 = 5 132. Lentier 845 nest pas un carr parfait mais 9222
rduit modulo n na que de petits facteurs premiers : 5 et 13. On calcule alors
(922 + j ) 2 mod n et on retient ceux qui nont que des petits facteurs premiers.
On conserve :
9222 mod n = 845 = 5 132
9332 mod n = 2 54 17
9372 mod n = 2 5 132 17
Et en multipliant les trois congruences on obtient :

9222 9332 9372 mod n = 22 56 134 172

Et nous obtenons x 2 = y 2 mod n pour x = 922 933 937 et y = 2 53 132 17.


En calculant pgcd (a: + y , n) et pgcd (a; y , n) on trouve 1229 et 691 qui sont les
facteurs premiers de n.

Lorsque x 2 mod n se dcompose en produit de petits facteurs premiers


et lorsquon dispose dun nombre suffisant d galits de ce type, on peut les
combiner entre elles pour obtenir une congruence x 2 = y 2 mod n comme dans
lexemple ci-dessus.
On peut systmatiser cette approche comme suit. On se donne h petits
premiers (les premiers nombres premiers par exemple), p i , . . . , ph et on dfinit
B = { 1} U { jh}, la base de factorisation. Si un entier a se dcompose
en un produit d lments de B , a est appel B-friable (smooth) et un entier b
est dit B-adapt si le reprsentant de b2 mod n se trouvant dans lintervalle
[n/2, n/2] est U-friable. Chaque 6, / + adapt satisfait une galit dans :
b2 = { - i r Pr . . . p t
Quand on a assez de bi, (au maximum h + 2 =| B |+1), on peut tenter de
fabriquer x et y comme suit :
A chaque bi on associe le vecteur binaire des exposants de sa factorisation
sur B : Ui = (ui0, . . . , uih) o :

/ um = i mod 2
( Uij = otij mod 2 pour 1 < j < h
Sret des chiffres cl publique 259

On cherche ensuite une combinaison linaire non triviale des dont la


somme modulo 2 = 0, i.e. on trouve un sous-ensemble / de { 0 , . . . , h } tel que
lon ait : Vj, uij = 0 mod 2. Cela garantit quon a un carr.

On observe que Yliei bf = p f 1 . . . p^h o tous les /3, sont pairs. On construit
alors x et y comme
J * = rlie/**
i Pl/2 Ph/2
l v = Pi Ph

Si on a la malchance d avoir x = y mod n, on cherche une nouvelle com


binaison linaire des ut quitte augmenter la collection de nombres B-adapts.

Pour avoir une bonne chance de succs, il faut avoir de lordre de | B \


nombres .B-adapts bi, chacun tant obtenu aprs examen dun nombre dentiers
infrieurs n qui, en moyenne, est de lordre de :

n
Card{nombres B-adapts < n}

Ce procd, mme si peu adquat pour de trs grands nombres, est trs
efficace ; il est sous-exponentiel i.e. son temps de calcul moyen est de la forme
gO(log (n)) p 0ur Q < i

On amliore encore cette recherche de nombres B-adapts avec le crible


quadratique.

23.2.3 Le crible quadratique

On cherche des nombres B-adapts parmi des entiers b tels que b2 mod n
est petit (de lordre de y/n) devant n.

On considre le polynme :

f { z ) = { z + [ Vn \ ) 2 - n

Tant que 2 est petit, on approche f ( z ) par 2Zy/n et on a :

(z -t- lV n \ ) 2 = f ( z ) mod n

On cherche des nombre B-adapts parmi les 2 + [\/nJ, pour de petits z.

Un dfaut de la mthode est que si on souhaite beaucoup de nombres B-


adapts, il faut utiliser des z de plus en plus grands ce qui augmente le temps
de recherche.
260 Attaques par factorisation de RSA

23.2.4 Algorithme p 1 de Pollard (1974)

On cherche factoriser un entier n; si p est lun de ses facteurs premiers


(quon cherche) qui est tel que p 1 na que de petits facteurs premiers tous
majors par une borne B , on applique lalgorithme suivant [19] :
Algorithme 23.4 ________________________________________________________
1. a < g (o lentier g : 2 < g < n)
2. pour j 2 B faire
a < aJ mod n
fpour
3. d < pgcd (a 1, n)
4. si 1 < d < n alors d facteur de n : succs
sinon aucun facteur trouv : chec
fsi

Le fonctionnement de cet algorithme est le suivant : supposons que p\n


pour p premier. Pour tout facteur premier q de p 1, on a q < B et {p 1)|P!.
En notant ( p - 1 ) = ] x . . . x t avec* q\ < B, q2 < B , . . . ,qk < B on a
B\ = 1 x 2 x . . . qi x . . . x qk x . . . x B, do (p 1)|.B!.
A la fin de ltape 2, on a a = gB' mod n donc a = g B' mod p car p\n. Si
on suppose raisonnablement que pgcd (g,p) = 1, comme gp l = 1 mod p et
(p on a a = 1 mod p.
A ltape 3, p\(a 1) et p\n entranent p\d pour d = pgcd (a 1,n). La
valeur d est un diviseur non trivial de n sauf si a = 1 lissue de ltape 2.
Ayant trouv d, on peut tenter de factoriser nouveau d et g.

E x e m p le 23.7 Pour n = 15770708441 et B = 180, on obtient ltape 3.


a = 11620221425 et d = 135979. Une factorisation de n est donc n = 135979 x
115979.
Ici, la factorisation russit car d 1 na que des petits facteurs premiers
(2 x 3 x 131 x 173) et en choisissant B > 173, on aura (d 1)\B\.

Lorsque B > [y/n\, cet algorithme tend avoir la mme complexit que le
crible dEratostne i.e. en ( ) ( B log(U )(log(n))2 + (log(n))3).
La faiblesse de cette mthode est que n doit admettre un facteur premier p
tel que p 1 nait que de petits facteurs premiers dont les ordres de multiplicit
sont tous gaux un (cf. [56]).

Un des algorithmes les plus efficaces ce jour, bas sur les courbes ellip
tiques, est une gnralisation de lalgorithme p 1 de Pollard. Nous donnons
dans le tableau ci-dessous la complexit de quelques bons algorithmes de
factorisation :
crible quadratique O (e((1+(1))'V/Iog() loe los()))
courbes elliptiques O (e((1+(1))\/21og(,) loglog()))
)^e ((l,9 2 + o (l))(lo g (n ))1/3(loglog(r))2/3)^
crible algbrique
Sret des chiffres cl publique 261

pour p le plus petit facteur premier de n.

23.3 Calcul du logarithme discret

On rappelle lnonc du calcul du logarithme discret de y en base g dans un


groupe G not multiplicativement.
Logarithme discret de y en base g
Donne g , y lments d un groupe fini G dordre n.
Question Trouver x tel que gx = y mod n.

23.3.1 Mthode numrative

Lorsque lordre (ou le cardinal) n du groupe G est suffisamment petit, il


suffit dnumrer les puissances successives du gnrateur g jusqu trouver
llment correspondant celui dont on cherche le logarithme discret en base g.
En d autres termes, pour ( 1 , . . . , n }, on calcule gx mod n jusqu trouver y.
Cette mthode requiert n 1 multiplications modulaires et n comparaisons. Elle
est peu coteuse en espace puisque seuls g, x et y doivent tre mmoriss.
A linstar de lalgorithme du crible d Eratostne, la mthode numrative
nest pas polynomiale en la taille de lentre. En effet, si lordre de G est n
qui vrifie 2 k~1 < n < 2 k, n est de taille k tandis que la complexit de cet
algorithme est 0 {n) = 0 ( 2 k).

En pratique, dans les applications cryptographiques, on travaille avec des


groupes d ordre suprieur 2160 et la mthode numrative est difficilement
envisageable.
On dispose galement d algorithmes moins inefficaces pour rsoudre ce pro
blme comme par exemple lalgorithme de Shanks ou celui de Pollard que nous
prsentons dans les paragraphes suivants. Ces deux algorithmes sappliquent
tout groupe fini G. Leur complexit en temps est en O( ^nl og( n) ). L algo
rithme de Shanks a une complexit en espace en O( yf n) qui est amliore en
0 (1 ) dans lalgorithme de Pollard.

23.3.2 Algorithm*: baby step giant step de Shanks

L ide de Shanks est de construire deux listes de puissances de g :

-une liste de petits pas {g 1 : i = 0 ..\y/n] 1} ;

-u n e liste de pas de gant { yg ; j = f)..|\/n]}.

Il sagit ensuite de trouver un terme commun aux deux listes (il existe
toujours par le principe des tiroirs de Dirichlet). Ainsi g 10 = y g AIC" et
x = io+ jo\ V n \ -
262 Calcul du logarithme discret

P reu v e Si y G alors 3x G Z tel que gx = y. Soit r = \ y / n \ ; en effectuant la


division euclidienne de x par r, ou a x = o,r + b avec 0 < b < r 1. De plus
cty/n < x < n. Donc il existe bien a e { 0 , . . . , r } et b e { 0 , . . . , r 1} tel que
gb = yg~ar.

A lg o r ith m e 23.5 ________________________________________________________


entres : n le cardinal de G ; g, y E G

construire lensemble B := {(*, g1) : i = 0..r 1}


construire lensemble L { { j , y g ~ r'^) j = 0..r}
trier B et L selon un ordre sur les g 1 et les g~r'J
trouver io et jo tels que : gl = y g r'J"
rsu ltat < (io + jor) (logarithme discret de y en base g dans G)

C o m p le x it Pour un groupe d ordre n, les complexits sont :

- e n temps : 0 (i/nlog(n)) dont 0 (y/n) oprations de groupe;

- e n espace : 0 (y/n).

En effet, pour r = \y/n\, on a 2r + 1 oprations de groupe ncessaires la


construction des listes ou, asymptotiquement, 0 ( r ) oprations. Le tri des listes
requiert 0 (r log(r)) oprations et la recherche d un lment commun dans deux
listes tries 0 (lo g (r)).

E x em p le 23.8 On travaille dans Z*13 engendr par g = 3. Lordre du groupe


est n = 112 et r = [\] = 1 1 . On cherche le logarithme discret de y = 57 en
base g.
Lensemble des petits pas sous la forme de couples (exposant, valeur) est :

B= {(0,1), (1,3), (2,9), (3, 27), (4,81),


(5,17), (6,51), (7,40), (8, 7), (9, 21), (10,63)}

et celui des pas de gant sous la forme de couples (exposant, valeur) est :

L= {(0,57), (1, 29), (2,100), (3,37), (4,112), (5,55), (6,26),


(7,39), (8,2), (9,3), (10,61), (11,35)}

L lment 3 est commun aux petits pas et aux grands pas, il a t engendr
pour *o = l dans la liste B et pour jo = 9 dans la liste L. Le logarithme discret
que lon cherchait est x = io + r.jo = 100. On peut vrifier la validit de ce
rsultat en calculant gx mod 113 = 57.

23.3.3 Algorithme p de Pollard

Lalgorithme p de Pollard est un algorithme probabiliste de complexit


0 (y/n) en temps et 0 (1 ) en espace.
Sret des chiffres cl publique 263

Lide est de construire une suite rcurrente dlments : = f {zi). La


fonction / est dfinie en partitionnant G en Gi,, G2,G 3 (G = G\

f gz si z G G!
/(* ) = { z2 si z G g 2
[ yz si z G g 3

L lment z, est dfini par le tirage alatoire dun nombre ao G { 1 , . . . , n } .


On peut alors exprimer les termes de cette suite comme :

Zi = ga' y bi pour i > 1

avec
cii + 1 mod <p(n) si a-i G G]
a,+1 = 2ai mod ip(n) si ai G G 2
ai si at G G3
fi, si bi G Gi
bi+ \ = ^ 2bi mod <p(n) si fi,- G G2
bi + 1 mod y?(n) si fi, G G3
et avec comme valeur initiale pour ao la valeur alatoire choisie initialement et
pour b0 = 0 .
Comme ce sous-groupe est de cardinal fini, la suite (zi)i>0 sera priodique
de priode T partir dun certain rang. Donc il existe s et T tels que z s + t = z8
(s est le plus petit indice pour lequel lgalit est vrifie). On obtient ainsi une
relation de rcurrence du type : m ai+T = x{bi+T h ) mod <p(n), o i G Z .
Si (fi,; . 7 fi,) est inversible modulo <p(n) lquation na quune solution ; c est
le logarithme discret. Sinon, il y a plusieurs solutions. Si elles sont peu nom
breuses, on peut les tester successivement, sinon on recommence lalgorithme
avec une autre valeur initiale ao-
Algorithme 23.6 _________________________________ _______________________
entre : G d ordre n, g et y E G
partitionner G en G i U G 2 U G3
Choisir ao G { 1 . . . , n } au hasard
2 < ga mod n; a < a0; fi < 0; i < 1 ;
tantque (zref / z) ou (i = 1) faire
si i est une puissance de 2 alors zTef < z ; aref < a; firef < fi fsi
i < i + 1 ;
si z g G i alors z <gz mod n ; a * a + 1 mod 1p(n) fsi
si z E G 2 alors z < z 2 mod n;
a < 2 a mod (p(n); fi < 2fi mod <fi(n) fsi
si z G G 3 alors z < y z mod n; fi < fi + 1 mod <p(n) fsi
ftq
rsultat (x logarithme discret de y en base g dans G
est solution de : aref a = x(b firef) mod

C om p le x it Cet algorithme a une probabilit de succs suprieure \ pour


une complexit en temps en 0 (\/n) et 0 (1 ) en espace.
264 Calcul du logarithme discret

Zs + T

P
F ig . 2 3 .2 illustration de lalgorithm e p de Pollard.

Preuve Pour la complexit en espace, seules sept variables sont ncessaires.


Outre le compteur i et un triplet (Zi,a,i,bi), on ne conserve en mmoire quun
triplet de rfrence (zlef, aret, bief) o ref va parcourir les puissances de deux
successives. Lorsque la variable ref est plus grande que s, zle{ est un lment
de la partie priodique de la suite. De plus, quand la valeur de la variable ref
est suprieure T, le nombre dlments de la suite zret, zref+i,. . . , 22 x1er est
plus grand que T. Il existera donc probablement un lment de cette suite,
Zj, ref < j < 2 x ref qui sera gal zIef. Ce qui permet dtablir la relation de
rcurrence cherche.
Pour valuer la complexit en temps, on utilise le paradoxe des anniversaires :
en effectuant k tirages successifs avec remise dans un ensemblen lments,
la probabilit d avoir choisi deux fois un mme lment est suprieuref pour
k > (1 + -y/l + 8nln(2))/2.
En effet, si A est lvnement : tous les lments choisis sont distincts, on a :

P r (A ) = n(n ~ l ) - ( " - ~ ( t ~ 1 = TT I I - 1
n. V n
i= 1

De plus, 1 + x < ex ,Vx G M. D o P r (A ) < IX-f-i e- " < < e- '.


Ainsi P r ( A) < | si k 2 k 2n ln(2) > 0. Donc pour k > (1 + -y/l + 8nln(2))/2,
la probabilit d avoir choisi deux fois rm mme lment est suprieure f .
Ainsi en supposant que le comportement de la suite (z,)lCn est alatoire (hy
pothse raisonnable dans la mesure o la partition de G est convenable), on
peut esprer trouver une relation au bout dun nombre d itrations de lordre
de 0 (y/n).
chaque itration il y a au maximum une opration de groupe, deux oprations
modulaires, une addition, cinq comparaisons et sept affectations. On a donc une
probabilit de succs > | pour une complexit en temps en 0 (\/n)

Remarque 23.1 L algorithme de Pollard porte bien son nom, car la lettre p
permet de reprsenter la suite (z,).iCt; priodique partir d un certain rang (s
sur la figure 23.2).
Sret des chiffres cl publique 265

E x em p le 23.9 On travaille dans Z *13 engendr par g = 3. Lordre du groupe


est n = 112. On cherche le logarithme discret de y = 57 en base g. On parti
tionne G en G x = { 1 , . . . , 3 7 },G 2 = ( 3 8 , . . . , 74} et G 3 = { 7 5 , . . . , 113}.
On choisit au hasard ao = 20 et on calcule les diffrentes valeurs de la suite :

i z a b
0 14 20 0
1 42 21 0
2 69 42 0
4 45 85 0
8 109 4 3
16 97 16 30
26 97 64 34

Il y a concidence des valeurs pour i = 16 et i = 26. On a trouv la relation


de rcurrence cherche : ai6 26 = x(b 2 6 b\e) mod ^(113), soit 48 = Ax
mod 112. Comme pgcd (4,112) = 4 et que 4divise 48, on divise tout par 4
et on rsout 12 z mod 28 (cf. 15.3.2). On cherche ensuite une solution
de la forme x = k x 28 - 12 qui, pour k = 4 donne x = 100, la valeur du
logarithme discret. On peut vrifier la validit de ce rsultat en calculant gx
mod 113 = 57.

Il existe d autres algorithmes de calcul du logarithme discret, mais aucun ne


travaille en temps polynomial sur la longueur de lentre. Pour plus de dtails, le
lecteur intress pourra se reporter des ouvrages plus techniques comme [15]
ou encore [71].
C h a p itr e 24

Gnration de suites
pseudo-alatoires

24.1 Motivation

La gnration de suites pseudo-alatoires de bonne qualit est rendue cru


ciale, dune part pour des systmes de chiffrement probabilistes comme celui
dEl Gamal, dautre part pour les chiffres masque jetable ( one-time pad en
anglais [77]). Nous avons prsent ce dernier chiffre dans le chapitre 16.
Rappelons que le chiffre masque jetable est un chiffre cl secrte qui
ralise la condition du secret parfait (voir e.g. [14] ce sujet). Il a t invent
par G. Vernam en 1917 pour transmettre des tlgrammes chiffrs.
Avec un tel chiffre, A et R peuvent changer des messages secrets. Ils par
tagent une cl secrte K (une suite alatoire de n bits). Si A veut envoyer un
message M de n bits R, il envoie le cryptogramme C = M K o C est la
somme modulo 2 des bits de M et de K ( correspond au ou exclusif). Par
exemple (0011 0101 = 0110). Le cryptogramme reu peut tre dchiffr par R
en effectuant lopration C K = M K K = M 0. Si dautres messages
doivent tre envoys, il faut engendrer une nouvelle cl, d o lappellation
usage unique.
La scurit de ce chiffre repose sur la qualit de la suite alatoire. Il est
intressant de noter quune dfinition rigoureuse des suites alatoires est assez
rcente. Intuitivement, une suite finie est dite alatoire si elle ne peut pas tre
comprime ou si sa complexit de Kolmogorov est leve. La complexit de
Kolmogorov de la suite s est dfinie de faon informelle comme la taille du plus
petit programme qui permet d crire s (voir [66]). En fait, on peut montrer
quil est impossible de construire une suite alatoire parfaite. Toutes les suites
que nous pouvons engendrer mcaniquement ne sont quune approximation
des suites alatoires. On les appelle suites pseudo-alatoires.
268 Gnration de suites alatoires

24.2 Gnration de suites alatoires

La cration d un chiffre masque jetable requiert lusage d une source


naturelle de bits alatoires comme une source radioactive ou la rptition
de tirages pile ou face dune pice. De telles sources sont absolument essen
tielles pour fournir une cl secrte initiale pour les systmes de chiffrement,
comme le tlphone rouge qui relie Moscou Washington.
Cependant, beaucoup de sources naturelles de bits alatoires produisent
une suite qui est biaise (la probabilit que le bit i soit 1 est plus grande
que la probabilit que le bit i soit 0 par exemple) ou dont les bits sont
corrls (grossirement cela signifie que la suite se rpte priodiquement).
Heureusement, il est possible de remdier ces dfauts.
Pour transformer une suite biaise sans corrlation en une suite sans biais,
il a t propos par J. von Neumann de grouper les bits par paires et de trans
former 01 en 0, 10 en 1 et d effacer les paires de la forme 00 et 11. Le rsultat
de cette transformation sera une suite sans biais - et sans corrlation - puisque
les paires 01 et 10 auront une mme probabilit dapparition.
Nous ne traiterons pas la manire de retirer la corrlation dune suite qui
est un peu trop technique pour tre prsente dans cet ouvrage.

24.3 Gnration de suites pseudo-alatoires

Le chiffre de Vernam nest pas trs utilis cause de la grande longueur de sa


cl. Cependant, la taille de la cl peut tre rduite sil est possible de mmoriser
seulement une petite suite alatoire x et de ltendre en une suite pseudo
alatoire y au fur et mesure des besoins. Le procd qui permet d engendrer
une telle suite est appel gnrateur de suite pseudo-alatoire ou GPA. La suite
y est appele pseudo-alatoire car elle est construite au moyen d un procd de
calcul dterministe qui ne peut donc pas engendrer toutes les suites y possibles.
Nanmoins, lide est de produire une suite y qui ne peut pas tre distingue
dune vraie suite alatoire de mme longueur.
Nous commenons par rappeler le fonctionnement des gnrateurs de suites
pseudo-alatoires classiques bien que leur qualit nest pas suffisante pour une
utilisation cryptographique.

24.3.1 Gnrateur de suites pseudo-alatoires classique

Les gnrateurs de suites pseudo-alatoires bass sur des mthodes de


congruence linaire sont les plus rpandus en informatique. Ils utilisent une
rcurrence de la forme :

Yi+ 1 = aYi + b mod m

pour engendrer une suite { Y i , . . . } partir des paramtres secrets Y0 ,a,b et


m. Il est possible de retrouver ces paramtres avec la seule connaissance dun
Gnration de suites pseudo-alatoires 269

certain nombre de bits de la suite en utilisant par exemple lalgorithme de


rduction de rseaux LLL qui a t prsent dans le pararaphe 23.1.5.

Si de tels gnrateurs ne sont pas suffisants, quels sont les gnrateurs de


suites pseudo-alatoires acceptables ?

24.3.2 De bons gnrateurs de suites pseudo-alatoires

En utilisant lhypothse quil existe des fonctions sens unique, M. Blum


et S. Micali ont propos une premire mthode pour construire de bons gn
rateurs de suites pseudo-alatoires binaires. Ils utilisent pour cela des prdicats
sens unique. Soit D un ensemble fini et f : J) > J) une permutation sens
unique des lments de D. Soit B : D > { 0 , 1 } un prdicat sens unique tel
que :

(1) tant donn x = / 1(y), il est facile de calculer B( y) ;

(2) tant donn seulement y, il est difficile de calculer / 1(y).

Nous ne prciserons pas les notions facile et difficile dans la suite mais
nous dcrivons comment, tant donn une permutation sens unique, il est
possible de construire un bon gnrateur de suites pseudo-alatoires binaires.
Nous aurons besoin de construire le prdicat sens unique B au moyen de /
en utilisant le thorme 24.1.

T h o r m e 24.1 L existence de fonctions sens unique implique lexistence de


fonctions sens unique dont on peut extraire un prdicat sens unique.

Soit / une permutation sens unique et soit la fonction / ' dfinie par :

f ' ( x 1 , x 2, .. - , x n3) = f ( x 1 ) . f ( x 2) . f ( x ns)

pour des aq, x 2, . . . , x ns, de mme longueur n. Si b(i, x) reprsente le ie bit de


x, le prdicat sens unique extrait de f est dfini par B ( x \, x 2, . . . , x ri;t )
EUr 1 fc(*.*(i-i).n 2+ j) m od 2- D

E x em p le 24.1 valuons le prdicat avec n 2 de

2 4

(0 1 ,1 0 ,1 1 ,1 1 ,0 0 ,0 1 ,1 0 ,0 0 ) = V x (.i-iW +j) m od 2
i= 1 j = 1

Xk 0 1, 1 0, 1 1, 1 1, 0 0, 0 1, 1 0, 0 0, E
i= 1 * * * * 3
i= 2 SK * * * 1
total 4
La somme vaut 4, ou encore en arithmtique modulo 2, 0 qui est la valeur du
bit suivant.
270 Gnration de suites pseudo-alatoires

On peut alors construire un gnrateur de suite pseudo-alatoire partir


d une fonction sens unique en suivant la mthode propose dans [39].

Thorme 24.2 L existence de permutations sens unique implique celle de


gnrateurs pseudo-alatoires. D e plus, pour tout polynme Q(n), il existe un
gnrateur pseudo-alatoire qui tend des suites alatoires de taille n en des
suites pseudo-alatoires de taille Q{n).

La preuve de ce thorme est dcoupe en deux lemmes.

Lemme 24.3 L existence de permutations sens unique implique celle dun


gnrateur pseudo-alatoire qui tend son entre d un bit.

La construction du GPA est alors la suivante : soit / une permutation sens


unique et B son prdicat sens unique. On propose alors comme GPA la
fonction G\ dfinie comme suit :

Gi (x) = f ( x ) . B ( x )

On peut alors montrer par labsurde que G i est bien un GPA.


Lide de la construction de cette fonction provient de Blum et Micali [12].
Le second lemme qui permet dachever la preuve du thorme est le suivant :

Lemme 2 4 .4 L existence de gnrateurs pseudo-alatoires qui tendent leur


entre d un seul bit implique que, pour tout polynme Q{n), il existe un GPA
qui tend toutes les entres de taille n en des sorties de longueur Q(n).

Nous nous contentons de donner la construction du GPA : soit G satisfaisant


les hypothses. On construit alors un GPA G q qui, pour tout polynme Q(n),
va tendre son entre de longueur n en une sortie de longueur Q{n). Pour
x = x'i x'2 . . . x n+i, on peut crire x = pref(x;).rmb(x) o pref(x) = X\ X2 - xn
et rm b() = x n+i
On pose m = Q (n ) et on dfinit Iqj (x) = rm b (G (x ^ )) pour iW dfini par la
rcurrence :
f x () = x
\ x(*+1) = pref(G '(x^))

O n d fin it e n su ite G q : G q ( x ) = 6^ ( x )6 ^ ( x ) . . . b<


Q l\ x ).

La figure 24.1 illustre cette construction.


Un tel GPA possde la proprit quil est difficile de prdire le (i + l ) e bit
connaissant la valeur des bits 0 i avec un taux de russite suprieur (1 + e ) / 2
pour un algorithme qui travaille en temps polynomial sur la taille de la suite
alatoire fournie en entre et la valeur l/e. On dit aussi que le GPA passe le
test du bit suivant de Yao (cf. [58, 98]).

U ne reste plus qu utiliser une bonne fonction sens unique, RSA.

(1) rmb pour rightm ost bit, ou bit le plus droite.


Gnration de suites pseudo-alatoires 271

n
G q (x )

x
i= 1

= m

F ig . 2 4 .1 C on stru ction d un G P A .

24.4 Gnrateur RSA

Le gnrateur RSA est une illustration du schma gnral propos par Blum
et Micali tel quexpos dans ce chapitre. On prend comme permutation sens
unique f ( x ) = Xe mod N . N est un entier de taille n produit de deux nombres
premiers p et g et e un entier tel que pgcd (e, <p(A )) = 1. On extrait le prdicat
(2) f
B( x) = lsb(x), o lsb(x) retourne le bit de poids faible de a: .L e gnrateur
RSA prend en entre un triplet (N, e, x ) et fonctionne comme suit.
Algorithme 24.1 _________________________________________________________
entre : (N , e, x )
Xq < x
pour i < 1 l faire
Xi < xf _ 1 mod N
yi 4 - Isb(aq)
fpour
sortie : la suite , ;

La sret de ce gnrateur repose sur celle de RSA. Sous lhypothse RSA,


le gnrateur RSA est donc parfait.

24.4.1 Hypothse RSA

Soient un module N = p q de taille n (p et q sont deux entiers premiers


de longueur comparable), un entier e tel que pgcd (e, <fi(N)) = 1 et un en
tier M proportionnel iV2/ e. Quel que soit le test statistique fonctionnant en
temps polynomial, il est impossible de distinguer la distribution induite par x e
mod N pour x e [1, M] choisi au hasard de la loi uniforme sur [1, A ].

^ lsb pour least signifiant bit en anglais.


C h a p itr e 25

Certification

25.1 Introduction

Un certificat est un document numrique qui garantit la relation entre un


sujet (personne physique ou machine) et sa cl publique. La ralisation de
certificats repose fortement sur lexistence de mcanismes de signature. Un
certificat permet de contrer une attaque du type homme du milieu lors de la
transmission dune cl publique (fig. 25.1).

A lice Fred Bob


eA n A e F>n F eB n B
(X
O c>'
cr
eA n A
e F,n F
---------------y

meA m od nA mer m od nF
< -------------------

Fig. 25.1 Attaque de lhomme du milieu.

Dans cette situation, un faussaire, Fred simmisce dans un change entre


Alice et Bob. Du ct d Alice, il se fait passer pour Bob et inversement, du
ct de Bob, il se fait passer pour Alice' \ Ainsi, lorsque Alice transmet sa
cl publique Bob, celle-ci est intercepte et conserve par Fred. Il transmet
Bob sa propre cl publique en se faisant passer pour Alice. Bob envoie en
toute confiance un message chiffr qui utilise les informations publiques quil a
reues. Fred le reoit et le dchiffre au moyen de sa cl secrte et le transmet
Alice chiffr au moyen de la cl publique dAlice. Alice et Bob sont tous deux
convaincus davoir chang un message sr alors quil nen est rien.

Pour prendre un exemple plus concret, imaginons quAlice effectue un trans


fert dargent en contactant sa Banque. Elle lui envoie un message chiffr et sign

(1)Des logiciels du domaine public permettent de faciliter une attaque de ce type, comme
ettercap sous lin u x par exemple.
274 Forme gnrale d un certificat

par un systme clef publique. Elle doit tre sre de lauthenticit de la cl pu


blique de sa Banque, i.e. quil ne sagit pas de celle d un indiscret. Inversement,
la Banque doit tre sre que la signature est bien celle d Alice.
Si chacun des deux possde un certificat garantissant la relation entre liden
tit de lautre et sa cl publique, Alice et la Banque sont srs quils commu
niquent bien entre eux. Cette garantie est ralise au moyen de la signature des
informations par un tiers, appel Autorit de Certification (AC). Les certificats
qui sont signs par lAC sont utiliss pour authentifier la relation entre un sujet
(Alice ou la Banque) et sa cl publique.
Le cahier des charges pour un certificat est donc :

- dassurer la relation entre un sujet et sa cl publique ;

de permettre de vrifier quune cl publique appartient bien son propri


taire prtendu.

A linstar de la cryptographie, deux mthodes sont envisageables. La pre


mire utilise des chiffres symtriques et la seconde des chiffres asymtriques.

25.2 Forme gnrale dun certificat

Un certificat associe une cl publique lidentit relle dun sujet (personne


physique ou machine). Tel que dcrit dans la norme X.509, il comprend les
informations suivantes :

Subject : Nom Distingu, Cl publique


Issuer . Nom Distingu, Signature
Period of Validity : date de dbut, date de fin
- Administrative Information : version, numro de srie
Extended Information

Linformation Nom Distingu est utilise pour fournir une identit dans
un contexte spcifique. Un sujet peut avoir un certificat personnel et un autre
en tant que membre d une organisation. La norme X.509 dfinit les champs
suivants pour linformation Nom Distingu :

- Common Name : nom certifier Bruno Martin


- Organization| Company :contexte UNSA
- Organizational Unit : contextespcifique I3S
- City/Locality : ville Sophia Antipolis
-S tate/P rovin ce : pour US PACA
- Country : code pays fr

Linformation cruciale des certificats est la signature numrique de lautorit


de certification.
Certification 275

25.3 Utilisation et ralisation asymtrique

25.3.1 But de la certification

Le but des certificats est de procurer une garantie quant la lgitimit de


la cl publique transmise. La plupart du temps, ceux-ci sont raliss au moyen
de signatures numriques qui protgent la cl publique du sujet des attaques
comme limitation ou la modification.
Lors de la vrification de lidentit certifie transmise, il peut tre ncessaire
de vrifier la signature faite par YA C . Une telle vrification peut tre accomplie
avec plus ou moins de rigueur. Par exemple, un navigateur peut demander la
cohrence entre le nom du domaine de lidentit certifie et celui qui lui a fourni
cette information.

25.3.2 Mise en uvre

Dans une utilisation scurise de la certification, on associe un ou plusieurs


certificats chaque fois que la cl publique de lexpditeur (A par exemple) est
transmise (fig. 25.2). Pour obtenir son certificat, A doit :

- engendrer son couple cl prive, cl publique ;

- sadresser une autorit de certification qui sera le garant de son identit ;


pour ce faire, A doit fournir une preuve de son identit et lautorit de
certification va effectuer diffrentes vrifications de lidentit de A ainsi que
de sa cl publique (par exemple, il peut vrifier la validit du domaine
d origine, celle d ime adresse postale, tlphoner A, etc).

IdA.clA
C l d e A
certifie par A C SagiMcWM/l.clA))

Fig. 25.2 Cl de A certifie par AC.

Le destinataire (B par exemple) vrifie alors le certificat de A (fig. 25.3) en


utilisant lalgorithme public de vrification de lautorit de certification {AC).
Une fois cette vrification faite, B , confiant en lidentit de A, peut alors utiliser
les informations transmises.

25.3.3 Chane de certification

Il peut y avoir plus de deux certificats : celui qui garantit la relation entre
lidentit de A et sa cl publique ruais aussi celui qui garantit la relation entre
276 Utilisation et ralisation asymtrique

h(ldA,clA)
{ac)
\ l d A,c\A
Algorithme public
VerAC ) de vrification de AC

Y
oui/non

F ig . 2 5 .3 Vrification d e la cl de A certifie par AC.

lidentit de lAC et sa cl publique. Dans ce cas, on parle de chane de cer


tification o chaque certificat va garantir lauthenticit du certificat prcdent
(fig. 25.4).

DCY)
flI d /ic .K /lC

t l d A ,c l A

F ig . 2 5 .4 E xem ple de chane de certification de lidentit de A.

Au bout de la chane de certification, on trouve une autorit de certification


racine dont lintgrit ne peut tre mise en doute. Ainsi, la cl publique de cette
autorit de certification racine doit tre connue de faon indpendante (comme,
par exemple, celles qui sont intgres directement lintrieur des navigateurs).
Parmi les autorits de certification les plus rpandues, on trouve :

- R S A Security ( frctp : / / www.r s a s e c u r i t y . c o m / ) :

-VeriSign ( h ttp : / / www.v e r i s i g n . c o m / ).

E x e m p le 25.1 Si A envoie B son identit numrique, elle lui transmet ga


lement une chane de certification. Si des messages sont frquemment changs
Certification 277

entre A et B , aprs le premier envoi, B peut mmoriser la cl publique de A


dont il aura vrifi le certificat lissue de la premire communication. Pour
les communications ultrieures, A naura plus besoin dexpdier B sa cl pu
blique. B utilisera systmatiquement la cl publique de A quil a dj vrifie.

En pratique, la taille de la chane de certification est borne. Le destinataire


finit par trouver une autorit de certification racine quil connat.

On peut considrer d autres modles de chane de certification. Si, par


exemple, lmetteur et le destinataire connaissent une mme personne qui va
garantir leurs cls, la longueur de la chane de certification peut tre rduite.
Cest sur ce principe que fonctionne PGP, le systme de chiffrement des cour
riers lectroniques. PGP nutilise pas dautorit de certification. Tous les uti
lisateurs engendrent et distribuent leur propre cl publique. Les utilisateurs
peuvent mutuellement signer la cl des autres, ajoutant ainsi un niveau de
confiance dans le systme. Celui qui signe la cl publique d un autre devient le
parrain de ce dernier. Quand un utilisateur reoit une nouvelle cl publique, il
examine la liste des parrains qui ont certifi la nouvelle cl. Sil y trouve quel
quun de confiance, alors il a toutes les raisons de considrer la cl comme valide.
Si deux des parrains sont des personnes en qui il a moyennement confiance mais
qu'il connat lexpditeur, il peut dcider daccepter la cl. Tout cela est au
tomatis ; il suffit de signifier PGP le degr de confiance quon accorde aux
diffrents utilisateurs.

25.3.4 Attaques

Le couple cl publique/cl prive d une autorit de certification est sus


ceptible dun effort de cryptanalyse soutenu. Pour cette raison, lautorit de
certification doit engendrer de longues cls. Il lui est difficile de les changer r
gulirement car il lui faudrait en avertir lensemble des clients qui en ont besoin.
Si un cryptanalyste, Charles, russit retrouver le couple de cls de lautorit
de certification, il lui est possible dengendrer de faux certificats authentiques,
ce qui lui permettrait de se faire passer pour nimporte quel autre utilisateur
en certifiant une fausse identit. En cas de compromission de lautorit de cer
tification, les cls publiques des utilisateurs restent valables mais ne sont plus
certifies de faon sre.

Une autre attaque revient usurper lidentit d un utilisateur et de deman


der lautorit de certification de dlivrer un certificat. Par exemple, Bob tente
de se faire passer pour Alice pour envoyer sa banque le message, je veux faire
un virement de 10000 . Au pralable, il demande lautorit de certification
de certifier son identit (usurpe). Si lautorit de certification neffectue pas
un nombre suffisant de vrifications, Bob russira usurper lidentit d Alice
et effectuera le virement. C est pour cette raison que certaines autorits de cer
tification demandent lutilisateur de se prsenter en personne et de fournir
des preuves de son identit.
278 Utilisation et ralisation symtrique

25.4 Utilisation et ralisation symtrique

25.4.1 But de la certification

Dans le contexte symtrique, le but de la certification est d tablir une com


munication scurise entre deux parties (Alice et Bob) avec preuve de leur
identit lorsquils ne se connaissent pas. En ce cas, tout repose sur lautorit
de certification (AC), galement appele tiers de confiance dans ce contexte.
L autorit de certification partage une cl secrte avec chacun des utilisateurs.
Lors d une demande de communication entre Alice et Bob, lautorit de cer
tification va engendrer une nouvelle cl de session. Lensemble des utilisateurs
doivent avoir une confiance absolue dans lautorit de certification puisque celle-
ci partage une cl secrte avec chacun d entre eux. Ceci est im risque en cas de
compromission de lautorit de certification.

25.4.2 Mise en oeuvre

Alice souhaite entrer en communication avec Bob par lintermdiaire de


lautorit de certification. Pour ce faire (fig. 25.5) :

(1) Alice sadresse lAC et lui demande une cl pour communiquer avec Bob.

(2) LAC lui envoie deux messages :

- m\ (chiffr avec la cl secrte partage avec Alice) qui contient : la cl


de session K , un rappel de lidentit de Bob (en effet, Alice pouvait
avoir demand plusieurs communications avec des destinataires autres
que Bob), une estampille T (soit un numro de srie, soit une date) et L
une dure de vie de cette cl de session.
- m 2, message destin Bob et chiffr avec la cl partage avec Bob (le
certificat) qui contient : la cl de session K , un rappel de lidentit d Alice
(pour que Bob sache qui a demand communiquer avec lui), l estampille
T et L une dure de vie de cette cl de session.

(3) Aprs avoir dchiffr m \, Alice rcupre la cl de session K qui va lui per
mettre de communiquer avec Bob et engendre le message 7713, chiffr avec la
cl de session K , contenant son identit et lestampille T reue de AC. Elle
retransmet le certificat et le nouveau message ms Bob.

(4) Bob peut dchiffrer le certificat 7712, rcuprer les informations provenant de
lAC (la cl de session K , lidentit dAlice, lestampille et la dure de vie
de la cl). Avec la connaissance de K , il est alors en mesure de dchiffrer
ms qui lui confirme quil sagit bien d Alice qui cherche communiquer
avec lui. Il sait galement quil ne sagit pas dun imposteur qui aurait
observ des communications prcdentes et qui rejouerait une ancienne
demande de communication grce lestampille qui garantit la fracheur
de la communication. Bob accuse bonne rception des messages d Alice en
calculant 7714 qui est une modification numrique convenue de lestampille
(ici T + 1) et envoie 7774 Alice qui peut commencer la communication.
Certification 279

demande de
communication
mA=chK(TW)
avec B

AC
1

mi=chA(K,i(B),T,L)
:A^ I B

m2=chB(A,id( A), T,L)-------------- m2=chB(A,id(A), T,L)


retransmet / 3=chA,(id(A),7)

Fig. 25.5 Ralisation symtrique de la certification.

Alice est sre quil sagit bien de Bob car seul Bob peut dchiffrer le certificat
issu de lAC. Il ne sagit pas non plus d un imposteur car le dernier message
contient la modification numrique convenue de lestampille.

25.4.3 Scurit

Toute la scurit de ce mcanisme repose sur lautorit de certification en


qui tous les utilisateurs doivent avoir confiance. En effet, lAC connat toutes les
cls. Non seulement la cl partage avec chaque utilisateur mais aussi lensemble
des cls de session. Aussi, en cas de compromission de lautorit de certification,
tous les messages peuvent tre dchiffrs.

Un autre inconvnient de ce systme est le grand nombre de cls qui sont


mises en jeu. Il faut que lautorit de certification possde une cl partage avec
chaque utilisateur potentiel, et il doit galement grer toutes les cls de session.
En outre se pose le problme de la communication initiale de ces cls que nous
allons traiter dans le chapitre suivant.
C h a p itr e 26

Gestion des cls

26.1 Exemple introductif

Dans cet exemple, on considre un rseau de commimications entre N uti


lisateurs. Pour que chaque utilisateur puisse communiquer avec n importe quel
autre de faon sre, il faut = 0 ( N 2) cls partages entre toute paire
(non ordonne) d'utilisateurs'1' . Comment nos N utilisateurs ont-ils pu prendre
connaissance de ces cls ?
Nous donnons quelques solutions naves avant de considrer les principes
de gestion des cls. Nos utilisateurs ont pu se rencontrer deux deux pour
changer leur cls ou bien ont pu se les communiquer par un courrier spcial ou
par porteur. Dans tous les cas, tout le systme repose sur lchange pralable
des cls.
Les inconvnients de ces mthodes sont vidents. 11 faut tout d abord que les
utilisateurs puissent se rencontrer ou mme pouvoir transmettre des messages
sur un canal scuris, ce qui nest pas toujours possible. Par exemple, lors dun
conflit militaire, deux units dun mme corps d arme peuvent tre spares
physiquement par un ennemi. 11 y a alors rupture des liens de communication
et impossibilit d changer les cls. Ensuite, un grand nombre de cls entre en
jeu, puisquil faut un nombre binomial de cls pour communiquer entre tous
les correspondants. Enfin, il faut que les parties se connaissent et se fassent
mutuellement confiance afin de pouvoir se rencontrer pour changer des cls.
C est pour diminuer le nombre de cls enjeu et pour remdier ces diffrents
inconvnients quont t inventes les techniques de gestion de cls.

26.2 Gestion des cls

Nous rappelons le principe de Kerchoff (1883) :

La scurit d un systme de chiffre ne doit pas dpendre du secret de


l algorithme mais seulement du secret de la cl.

* } Le modle sous-jacent qui permet de reprsenter un tel rseau de communications entre


N utilisateurs est celui d un graphe complet, i.e. dont tous les sommets sont relis.
282 Gestion des cls

La sret de tout systme de chiffrement, tant cl publique qu cl secrte,


repose principalement sur le secret de la cl. Mis part le chiffre de Vernam
pour lequel on peut garantir la scurit, celle de tous les autres chiffres est
limite dans le temps.
Mais ce ne sont pas les seules menaces ; il faut galement viter :

- la modification ;

- la destruction malintentionne ;

- le rejeu ;

- l a divulgation ( disclosure).

La gestion des cls doit permettre la gnration sre, le stockage et la dis


tribution pour assurer le cycle de vie des cls qui est dcrit dans la figure 26.1.

destruction destruction

Fig. 26.1 Cycle de vie des cls.

Ce cycle de vie des cls comprend :

- La gnration qui doit tre effectue en accord avec les rgles de gnration
de cl; cela peut demander une phase de test pour vrifier ladquation de
la cl avec les rgles pour viter, par exemple, des cls faibles.

- L activation qui rend la cl active pour les oprations de chiffrement.

- La dsactivation qui limite la dure dactivit de la cl. Cela se produit soit


lorsque la cl a atteint sa date d expiration soit lorsquelle a t rvoque.

- L a ractivation qui permet de rutiliser une cl prime.

- L a destruction qui termine le cycle de vie de la cl. La destruction de la cl


signifie que lon doit effacer tout enregistrement de la cl de faon ce que
ne subsiste plus aucune information utilisable des fins cryptanalytiques.
Gestion des cls 283

Les techniques employes pour la gestion des cls reposent essentiellement


sur le chiffrement qui permet de lutter contre la divulgation et lutilisation
frauduleuse, les mcanismes d intgrit des donnes (hachage et signature) qui
vitent la modification abusive et les mcanismes dauthentification (certifica
tion) pour contrer la mascarade (lorsquun faussaire Fred se fait passer pour
Alice ou pour Bob).

26.2.1 Gnration

La gnration des cls a recours un gnrateur pseudo-alatoire ou un


processus stochastique. U est inluctable que certaines valeurs de lespace des
cls soient plus probables que d autres et la technique de gnration des cls
doit tre conserve secrte. Pour plus de dtails sur les gnrateurs pseudo
alatoires, se reporter au chapitre 24.

26.2.2 Dure de vie

La dure de vie des cls doit tre limite dans le temps et en nombre d utilisa
tions. Ces contraintes proviennent de considrations cryptanalytiques. En effet,
la dure de vie dune cl est limite par le temps ncessaire la cryptanalyse
des messages changs. C est ce que lon appelle gnralement la scurit cal-
culatoire. Un cryptanalyste peut toujours arriver cryptanalyser des messages
lorsquil dispose dune quantit d information convenable et de suffisamment
de temps et de ressources informatiques.
Une cl est considre comme compromise lorsque son usage non autoris est
connu ou suspect. Ce risque saccrot au cours du temps. Les cls compromises
doivent tre dsactives.

26.2.3 Distribution

On peut distinguer plusieurs manires de distribuer les cls selon le type de


la cl. En effet, sil sagit de cls publiques, il nest a priori pas ncessaire de
les chiffrer pour les transmettre. En revanche, ce nest pas le cas sil sagit de
cls secrtes. Dans ce cas, les cls doivent tre chiffres, soit par un mcanisme
de chiffrement cl publique (cest ce que lon nomme une enveloppe digitale)
soit par un mcanisme de chiffrement cl secrte. Nous dcrirons ces diffrents
mcanismes dans une prochaine section. Ensuite, nous prsenterons le protocole
de DifRe Hellmann qui permet deux parties de construire conjointement une
cl secrte sans que celle-ci ne soit transmise. Ce dernier cas correspond la
mise en accord entre les parties dans le but de construire une cl Secrte.

26.3 Distribution des cls publiques

La distribution de cls publiques permet de rendre la cl publique d un


utilisateur disponible pour dautres utilisateurs. Le point crucial pour la distri
bution des cls publiques est lauthentifcation qui peut ou non tre ralise au
moyen d une autorit de certification. On distingue diffrents cas :
284 Distribution des cls secrtes

- Si le sujet dispose d un canal qui assure lauthentification de lorigine et lin


tgrit des donnes (comme par courrier lectronique scuris par exemple),
il lui est possible de distribuer sa cl publique par ce moyen.

- De manire alternative, les cls publiques peuvent galement tre distribues


au travers d un canal non protg. Pour lauthentification de lorigine et pour
lintgrit des donnes, il faut alors recourir un autre canal de communica
tion, scuris pour ce dernier. Une telle approche est envisageable lorsquon
dispose dun rseau haut dbit pour 1a, distribution et d un rseau scu
ris faible dbit (tlphone, tlcopie . . . ) pour la garantie de lorigine et
lintgrit.

-E nfin, on peut utiliser une autorit de certification (chap. 25). Dans ce cas,
lauthentification des cls publique est faite au moyen dun certificat garanti
par lautorit de certification.

26.4 Distribution des cls secrtes

La distribution de cl secrte permet de transmettre une cl engendre ou


obtenue par im sujet d autres sujets en la protgeant de faon adquate.
Rappelons que les cls secrtes doivent tre chiffres lors de leur transport.
Pour ce faire, on peut utiliser des techniques cl secrte (symtriques) ou cl
publique (asymtrique) avec ou sans recours un tiers de confiance (autorit de
certification dans le cas de mcanismes asymtriques ou centre de distribution
de cls dans le cas de mcanismes symtriques).

26.4.1 Par un mcanisme symtrique

La distribution de cls secrtes au moyen de mcanismes symtriques utilise


des cls secrtes partages au pralable entre l'expditeur de la cl et le destina
taire. Une norme ISO 11770-2 dcrit douze mcanismes de transport distincts
qui font appel ou non un centre de distribution de cl. Nous en dcrivons
quelques-uns ci-dessous.

Sans centre de distribution de cl

Le mcanisme de base est dcrit dans la figure 26.2.

Ch k a b ( K )
A B

Fig. 26.2 Transport de cl secrte par un mcanisme sym


trique sans centre de distribution de cl.

Dans ce cas, on suppose quune cl K a u est partage au pralable entre A


et B et que A est le dtenteur de la cl K transporter.
Gestion des cls 285

(1) A envoie i? la cl transporter K , chiffre au moyen de leur cl partage


K ab.

(2) B dchiffre le message et obtient la nouvelle cl K .

Ce mcanisme de base ne procure quune authentification implicite de A.


Nanmoins il est possible de lamliorer pour obtenir une authentification de
A, lauthentification de la cl et une garantie de sa fracheur. Pour ce faire, il
suffit dajouter quelques donnes dans le cryptogramme (fig. 26.3).

Fig. 26.3 Transport de cl secrte par un mcanisme sym


trique sans centre de distribution de cl avec garantie de fra
cheur.

(1) A envoie B une estampille T ou un numro de squence N , lidentit de


B (pour djouer une attaque par substitution o un faussaire F usurperait
lidentit de B ), la cl transporter K chiffre au moyen de leur cl partage
K ab.

(2) B dchiffre le message et obtient la cl K , vrifie que le message lui est bien
destin et vrifie la validit de lestampille ou du numro de squence.

Observons que cette amlioration permet galement de prmunir B dune


attaque par rejeu grce lusage de lestampille.

Avec un centre de distribution de cls

La distribution de cls secrtes au moyen dun mcanisme symtrique avec


un centre de distribution de cls utilise K A une cl secrte partage entre A (qui
demande la communication) et le centre de distribution des cls, K b une cl
secrte partage entre B (le destinataire) et le centre de distribution des cls. A
cherche retransmettre B une cl K Ab engendre par le centre de distribution
de cl (CDC). Pour une illustration de ce protocole, voir la figure 26.4.

(1) A sadresse au CDC en lui envoyant un message qui contient son identit A,
lidentit du destinataire B et un jeton N ;

(2) le CDC lui renvoie un message chiffr au moyen de la cl K A qui contient le


jeton N , une confirmation de lidentit de B, la cl utiliser avec B, K ab et
un certificat transmettre B , chiffr avec K b qui contient la cl partage
K AB et lidentit de A ;

(3) A transmet B le certificat issu du CDC, C h x H( K a b . A) ;


286 Distribution des cls secrtes

C h K B (K AB'A )_______ 3^ n
n
4 ChKAB(Nb)
t-------------------------------------
cnKAB<Nb-i)
I
A.B.N ChKA(N.B,KAB,ChKe(KAB,A))

Fig. 26.4 Transport de cl secrte par un mcanisme sym


trique avec centre de distribution de cl.

Fig. 26.5 Modle de distribution de cl de type pull.

(4) B dchiffre le certificat issu du CDC, obtient la cl K a b et lidentit de son


correspondant ; il envoie alors A un accus de rception chiffr avec K a b
contenant un nouveau jeton A), ;

(5) A accuse bonne rception en effectuant une opration convenue sur le jeton
Nf, (ici une dcrmentation).

Cest lexemple du protocole de Needham-Schroeder [74] qui est une variante


de la certification symtrique que nous avions considre au chapitre 25. Ce
protocole fournit une authentification de A et une certification de la cl B.
Ce mcanisme de distribution de cl est appel pull car le demandeur de
la cl sadresse tout dabord au centre de distribution de cl, comme rsum
figure 26.5. Au heu de sadresser ds la premire tape au centre de distribution
de cl, le demandeur A peut faire la demande de communication directement
auprs de B qui va se charger de contacter le centre de distribution de cl puis
transmettra la cl de session A, comme dcrit figure 26.6. C est le modle de
distribution de type push.
Enfin, il est possible de mlanger ces deux approches pour obtenir le modle
dit mixte (fig. 26.7).
Gestion des cls 287

Fig. 26.6 M odle de distribution de cl de ty p e p u sh .

Fig. 26.7 M od le de distribution d e cl de type m ix te .

26.4.2 Par un mcanisme asymtrique

Le transport de cl secrtes par un mcanisme asymtrique prsuppose que


lexpditeur possde une cl publique certifie du destinataire. Une norme ISO
11770-3 dfinit six mcanismes gnriques distincts pour le transport des cls
secrtes. Comme pour le transport par un mcanisme symtrique, nous en d
crirons seulement deux, un sans garantie de lorigine et un avec garantie de
loxigine.

Sans garantie de lorigine

Il sagit de la situation que nous avons dcrite avec des systmes cl


publique comme RSA ou El Gamal. Ceux-ci permettent le transport dune cl
secrte en une seule tape pourvu que lexpditeur possde au pralable Bpub,
la cl publique du destinataire. Le fonctionnement en est gnrique quel que
soit le systme de chiffrement utilis et est dcrit par la figure 26.8.

(1 ) A envoie B une estampille T (ou un numro de squence TV), une confir


mation de son identit, et K . la cl secrte. Toutes ces donnes sont chiffres
au moyen de la cl publique de B.

ChBpub{T/N-,A-I<)

Fig. 26.8 T ransport de cl secrte par un m canism e asym


trique sans garantie de l origine.
288 Mise en accord par Diffie Hellman

ChBpub(SgA(T/N-,B;K))
A B

Fig. 26.9 Transport de cl secrte par un mcanisme asym


trique avec garantie de lorigine.

(2) B peut alors dchiffrer le message, vrifier la validit de lestampille (ou du


numro de squence) qui doit correspondre celui de A et dchiffrer la cl
secrte qui lui a t transmise.

Ce mcanisme permet de contrer mie attaque par rejeu et fournit mie au


thentification implicite de la cl puisque seul B est susceptible de la recouvrer.
En revanche, B na aucune garantie quant lidentit de lexpditem

A vec garantie de lorigine

Pom fournir une garantie de lorigine, on ajoute une opration de signature


au mcanisme prcdent, comme illustr par la figure 26.9 en utilisant par
exemple RSA :

(1) A envoie B une estampille T ou un numro de squence TV, une confirma


tion de son identit, et K , la cl secrte. Il signe lensemble de ces informa
tions. Toutes ces donnes sont ensuite chiffres au moyen de la cl publique
de B.

(2) B peut alors dchiffrer le message, vrifier lintgrit et lorigine du message.


Il vrifie ensuite la validit de lestampille ou du numro de squence qui
doit correspondre celui de A. Si toutes ces vrifications sont satisfaisantes,
il accepte la cl secrte qui lui a t transmise.

Ce mcanisme permet de contrer une attaque par rejeu et fournit une au


thentification unilatrale de lexpditeur (grce la signatme) et une authentifi
cation bilatrale implicite de la cl puisque seul B est susceptible de la recouvrer
et seul A a la possibilit de signer. Le rle de la signature et du chiffrement
peuvent ventuellement tre inverss dans certains cas.

26.5 Mise en accord par Diffie Hellman

Un mcanisme (ou protocole) de mise en accord est un procd qui permet


dtablir une cl partage entre plusieurs entits de telle sorte quaucune d entre
elle ne puisse tablir sa valeur par avance. Cest, le cas du protocole de Diffie
Hellman [28].
Gestion des cls 289

Ce protocole permet deux entits qui ne se sont jamais rencontres de


construire une cl secrte commune connue d eux seuls et inconnue de qui
conque, mme d un indiscret qui couterait leurs communications. Il faut dis
poser d'une fonction sens unique trappe : un bon candidat est le logarithme
discret :

- tape prliminaire :

on choisit q un grand nombre premier ;


on choisit a, 1 < a < , un lment primitif de Z * ;

- chaque utilisateur U :

choisit secrtement une valeur alatoire X n , 1 < X\j < q et la conserve


secrte ;
rend publique Yn = aXu mod q.

A et B veulent construire une cl, connue deux seuls (fig. 26.10). Les infor
mations publiques sont : Y a et Yb-

A calcule K = Y%A mod q ;

- B calcule symtriquement K = Y X b mod q.

A et B auront alors une cl (secrte) commune K :

Y Xa = ( X b ) Xa = aXeXA = ( Xa ) X b = Y X b mod q

En arithmtique mod q

----------- ax B -------------

X X
An < B
Dialogue confidentiel k
f ---------------------------- C h0x Ax B(m sg) [
M C hcx Ax B(m sg) ---------------------------

Fig. 26.10 Mise en accord par Diffie-Hellman.

Les cls prives dans ce protocole sont sres : si un ennemi peut calculer
la cl prive X a de A partir de Y a = oX a mod , il rsout le problme
du logarithme discret rput difficile. Le problme de retrouver la cl partage
entre A et B h partir des informations transmises est un problme qui est aussi
difficile que le problme du logarithme discret. Linconvnient de ce protocole
290 Mise jour des cls

En arithmtique mod q

------------ ax B ------------

X flXAICh (SignA(aXB|aXA|B)) ----------- X


A fi f B
Q ^ ----------

ChK(SignB(aXBlflXA|A)) _________

Fig. 26.11 Protocole STS.

est quil ne prmunit pas contre une attaque de lhomme du milieu. Pour ce
faire, il faut le complter par des mcanismes dauthentification.
On obtient ainsi le protocole STS pour Station To Station (fig. 26.11). Il
ajoute des mcanismes dauthentification au protocole prcdent. Alice va chif
frer au moyen de la cl commune le rsultat de la signature de Xa , ax 11 et
lidentit de B. B, va accuser rception de manire analogue.

26.6 Mise jour des cls

Une fois obtenue une cl secrte, on peut souhaiter ne pas ritrer ce type
dchange chaque session mais en faisant voluer la cl session aprs session.
Cest le but de la mise jour des cls.
La mise jour des cls est un procd qui permet de partager des cls
construites au pralable en les faisant voluer au moyen de paramtres obtenus
pour la session.
On dfinit une nouvelle cl de session K partir :

- dune cl partage lors dune communication prcdente K a b ;

- d un paramtre F qui est soit un nombre alatoire, soit une estampille ou


un numro de squence ;

dune fonction de mise jour de la cl, / .

Le fonctionnement se droule en deux tapes :

(1) linitiateur A choisit le paramtre de drivation F et le transmet B ;

(2) A et B calculent la nouvelle cl K en utilisant la fonction / comme :

K = f { K a b , F)

E x e m p le 26.1 Comme fonction / de mise jour, on peut utiliser une fonction


de hachage cryptographique h applique la concatnation des donnes F et
K a b : I< = h { K AB\F).

Pour plus de dtails nous renvoyons le lecteur larticle de synthse [34].


C h a p it r e 27

Applications de la cryptographie
la scurit des rseaux

27.1 Motivation

Depuis la rvolution internet dont la consquence est laccroissement des


communications numriques, le problme de la scurit devient incontournable.
Il suffit d ouvrir un magazine spcialis pour dcouvrir de nouvelles atteintes
la scurit des donnes. Le fait que les protocoles de transmission des don
nes par Internet nont pas t conus pour fournir des services de scurit
nest certainement pas tranger ce constat. En effet, lorsquune donne tran
site sur le rseau depuis sa source vers sa destination, elle traverse un grand
nombre de points sur lesquels elle peut tre intercepte et mme modifie. Et
mme lintrieur dun rseau local, certains utilisateurs peuvent transformer
les donnes d autrui. On constate que 80% des pertes sont dues des fraudes
commises par des employs. Le tableau ci-dessous montre que les pertes fi
nancires lies la fraude informatique sur 10 ans sont sans cesse croissantes
(daprs le CLUSIF' ) , France) :
Pertes en MF
Origine 1984 1994 cart/an
Facteur humain 2030 1850 -1%
Erreurs 1770 2800 +4%
Fraude 2200 6550 +10%

27.2 Introduction la scurit

27.2.1 Les menaces

Deux grands types dattaques sont possibles [37] :

(1)Le CLUSIF, fond en 1984, offre un cadre dans lequel les acteurs de la scurit des
systmes d information peuvent se rencontrer, changer leurs points de vue, travailler et
progresser ensemble. A ce jour, le CLUSIF rassemble plus de 600 membres, appartenant
300 organismes ou socits. Sa particularit est d accueillir aussi bien les utilisateurs
que les professionnels, fondant sa culture sur une gale participation des uns et des autres
et son dynamisme sur une confrontation permanente de loffre et de la demande.
292 Introduction la scurit

- Soit des attaques passives qui se dclinent en :

Y observation non autorise, o un indiscret observe des informations qui


transitent sur le rseau ;
l accs non autoris, o un intrus lit des informations mmorises dans
un ordinateur.

Dans ces deux cas, lindiscret ne fait que prendre connaissance des donnes
sans les modifier.

- Soit des attaques actives o linformation est modifie. On distingue alors :

le contrle non autoris dun systme ; lattaquant prend le contrle com


plet dune machine ;
la modification de l information ; le pirate falsifie le contenu dune donne
lintrieur dun ordinateur ou lors de son acheminement sur le rseau.
l accs des services ; le pirate se sert de ressources (temps de calcul ou
logiciels) auxquels il na normalement pas de droits daccs.
le refus de service aux utilisateurs lgaux ; le pirate empche le bon fonc
tionnement d une machine ou d une ressource.

27.2.2 Pourquoi scuriser ?

Pour amliorer la scurit face aux attaques identifies, les mesures mettre
en uvre doivent viser assurer :

- la disponibilit : aptitude du systme remplir une fonction dans des condi


tions prdfinies dhoraires, de dlais ou de performance ;

- l intgrit : garantie que linformation nest aucunement modifie except


par une action volontaire et autorise ;

la confidentialit : capacit garder secrtes des informations avec accs


aux seules entits autorises.

Il sagit alors de protger les donnes, les ressources et la rputation d un site.

La protection des donnes repose sur les trois caractristiques prcdentes :


la confidentialit (ou le secret) permet dviter que linformation soit rendue
accessible (on dit aussi divulgue) un utilisateur ou un systme non autoris ;
Vintgrit empche laltration ou la destruction des donnes par un utilisateur
illgitime et la disponibilit garantit laccessibilit des donnes aux utilisateurs
lgitimes dmi systme.
La protection des ressources vise empcher laccs non autoris aux res
sources dun site. En effet, toute ressource a un cot (espace disque, impri
mantes, temps de calcul) quon ne veut pas ncessairement laisser disposition
dun intrus.
Applications de la cryptographie la scurit des rseaux 293

La protection de la rputation nest pas non plus ngliger. Si un indiscret


usurpe lidentit dun tiers ou dune socit et commet des actions illicites, cela
peut poser un certain nombre de problmes lgaux ou commerciaux.

Le but de la scurit informatique est dassurer la protection des donnes,


des ressources et de la rputation dun site. Elle recouvre la fois Yaspect phy
sique qui prend en compte les risques tels les vols et les catastrophes naturelles :
inondations, incendie, accidents lectriques, etc, et l aspect logique qui traite des
intrusions, des bombes logiques, des virus, du sabotage, de lutilisation fraudu
leuse des ressources.

27.2.3 Comment protger ?

On distingue quatre types de protection que lon prsente selon la difficult


croissante de mise en uvre :

Pas de protection : on najoute rien linstallation de base des machines.

Scurit par lobscurit : on masque lexistence du systme en esprant que


le serveur dune petite entreprise ou une machine domestique ne prsente
pas dintrt pour un pirate.

- Scuriser l hte : on scurise chaque hte sparment. Cela marche bien pour
des machines individuelles mais pas pour un grand nombre de machines.
Cette opration demande beaucoup de temps par machine et reprsente un
cot non ngligeable en temps ingnieur.

- Scuriser le rseau : on contrle les accs au rseau des diffrents htes et


services proposs plutt que scuriser hte par hte. Cette approche utilise
les coupe-feu (ou firewall en anglais), lauthentification et le chiffrement des
donnes.

27.3 Introduction aux protocoles rseaux

Nous nous intressons exclusivement aux protocoles qui permettent de grer


les transmissions de donnes sur Internet. C est sur ce rseau que transitent
la plus grande partie des informations changes. En fait, Internet reprsente
lensemble des rseaux interconnects qui utilisent le protocole internet IP (pour
Internet Protocol). Celui-ci permet d interconnecter plusieurs rseaux physiques
en un rseau logique unique au moyen de protocoles de transmission de donnes
contrls par TCP ( Transmission Control Protocol). On parle alors de gestion
de rseau par T C P /IP [49].

27.3.1 Les caractristiques de TCP/IP

T C P /IP constitue un ensemble de standards de protocoles ouverts, dispo


nibles librement, qui fonctionnent indpendamment du matriel ou du systme.
294 Introduction aux protocoles rseaux

Cet ensemble de protocoles permet la mise en rseau de diffrents matriels et


logiciels par la gestion d un plan d'adressage commun qui permet tout pri
phrique T C P /IP de contacter un autre priphrique reli soit au mme rseau
local soit Internet.

27.3.2 Standards du protocole

Les protocoles correspondent des rgles formelles et consensuelles de com


portement. T C P /IP permet la cration dun rseau htrogne indpendant
des diffrents systmes dexploitation et architectures de machines. Le dve
loppement et les modifications des protocoles composant T C P /IP ncessitent
le consensus du monde informatique et ne relvent pas dun unique fabricant.
Leur nature ouverte ncessite ldition de documents standardiss largement
diffuss :

- des documents presque dfinitifs appels R F C (Request fo r Comments) qui


proposent des standards pour lvolution de T C P /IP ;

des documents de travail, appels Internet Drafts, qui nont pas de statut
formel et qui ont une dure de vie de 6 mois.

Les RFC recouvrent une grande varit de documents qui vont des do
cuments informels jusqu la spcification complte de certains protocoles.
Une fois publi comme RFC, le document reoit un numro. Un tel docu
ment nest ni revu ni r-dit sous le mme numro. On les trouve ladresse
www. i e t f . o r g / r f c . html.
L IETF, Internet Engineering Task Force, est le groupe charg de lingnierie
et de lvolution dinternet. Il propose des standards par lintermdiaire de
groupes de travail et les met disposition sous la forme de RFC ou dInternet
Drafts. Dans le domaine de la scurit, on peut citer les groupes de travail :

- Open spcification for PGP ; - Public Key Infrastructure ;

- Authenticated Firewall Traversai ; . S/M IME Mail Security ;

- Common Authentication Techno


Secure Shell;
logy;
- Domain Name Security ; SimPle Public Ki* Infrastructure ;

- IP Security Protocol (IPSEC) ; - Transport Layer Security ;

One time password authentication ; - Web Transaction Security.

Dans ce chapitre, nous nous intressons aux rsultats de quelques-uns de ces


groupes de travail. Mais avant tout, nous prcisons le modle de transmission
de donnes qui dcrit comment mettre en rseau les ordinateurs.
Applications de la cryptographie la scurit des rseaux 295

27.3.3 Un modle de transmission de donnes

Un modle darchitecture a t propos par lOrganisation internationale


de normalisation (ISO : International Standards Organization) pour dcrire la
structure et les fonctions des protocoles de transmission des donnes. Ce mo
dle d architecture, appel Modle de rfrence de linterconnexion de systmes
ouverts (OSI : Open Systems Interconnect reference model), fournit un cadre
de conventions commun pour la transmission de donnes.
Le modle de rfrence OSI est dcoup en sept couches qui dfinissent les
diffrentes fonctions des protocoles de transmission. Chacune des couches repr
sente une fonction excute quand des donnes sont transmises entre deux ap
plications qui communiquent sur un rseau intermdiaire. Le tableau ci-dessous
dcrit chaque couche en fonction de son nom et fournit une brve description
de sa fonction :
7 couche applicative :
comprend les programmes dapplications utilisant le rseau
6 couche de prsentation :
standardise la prsentation des donnes destines aux applications
5 couche de session :
gre les sessions entre les applications
4 couche de transport :
assure la dtection et la correction derreurs
3 couche rseau :
gre les connexions au travers du rseau pour les couches suprieures
2 couche de liaison :
assure la transmission des donnes sur le lien physique
1 couche physique :
dfinit les caractristiques physiques du matriel rseau

Une couche ne dfinit pas un protocole. Elle dcrit une fonction de transmis
sion de donnes qui peut tre excute par plusieurs protocoles. Ainsi, chaque
couche peut contenir plusieurs protocoles qui dfinissent chacun un service utile
au rle de cette couche. Par exemple, un protocole de transfert de fichiers ou un
protocole de courrier lectronique fournissent tous deux des services utilisateurs
et font partie de la couche applicative.
Chaque protocole communique avec son homologue. Un homologue corres
pond une mise en uvre du mme protocole dans la couche quivalente du
systme distant. Le protocole de transfert de fichiers local est lhomologue du
protocole de transfert de fichiers du systme distant. La transmission de donnes
entre deux homologues doit tre standardise de faon garantir la transmission
des donnes. Ainsi, chaque protocole ne prend en charge que les transmissions
avec son homologue ; il ne tient pas compte des couches adjacentes. Cela im
plique quil faut alors dfinir une convention de transmission des donnes entre
les couches. Celle-ci sort du cadre de cet ouvrage et nous ne la dcrivons pas
plus avant.
Nous voquons seulement la rpartition de quelques services que nous allons
utiliser dans la suite de ce chapitre. Il sagit du service de courrier lectronique
(SMTP : Simple Mail Transfer Protocol) , de celui du web (H TTP : Hyper
296 Introduction aux protocoles rseaux

Text Transfer Protocol) et de T C P /IP que nous avons vu prcdemment. La


rpartition de ces diffrents services par couches est dcrite dans la figure 27.1.

Applications
SMTP HTTP SMTP HTTP

^ Transport
TCP TCP
Rseau
IP IP
Lien
- < ----------------------------- > -

Fig. 27.1 Rpartition des services par couche.

27.3.4 Services et mcanismes de scurit

Services de scurit

Un service de scurit permet de contrer un ensemble particulier de me


naces. Par exemple, un service de confidentialit empche laccs non autoris
linformation. La norme ISO 7498-2 dfinit un certain nombre de services de
scurit dcrits dans le tableau ci-dessous :
1 service d authentification d entits
service d authentification de lorigine des donnes
2 service de contrle d accs
3 service de confidentialit avec/sans connexion
service de confidentialit slectif
service de confidentialit du flux de trafic
4 service d intgrit de connexion avec/sans rcupration
service d intgrit slectif
service dintgrit sans connexion (slectif ou non)
5 non-rpudiation avec preuve d origine
non-rpudiation avec preuve de dpt

Le service d authentification permet de vrifier que la partie distante est bien


celle quelle prtend tre. Elle doit notamment permettre de garantir lintgrit
de linformation d identification.
Le service de contrle d accs vise empcher lutilisation non autorise
de ressources, que ce soit de linformation, des entits (terminaux ou nuds
intermdiaires), des liens de connexion ou mme des services (de transmission
de donnes ou applicatifs).
Le service de confidentialit des donnes doit empcher la divulgation non-
autorise de linformation et du trafic. On distingue :

(1) la confidentialit oriente connexion : protection des paquets de donnes qui


sont transmis ;
Applications de la cryptographie la scurit des rseaux 297

(2) la confidentialit sans connexion : protection des donnes statiques ;

(3) la confidentialit slective : protection de champs slectionns ;

(4) la confidentialit dun flux de donnes : protger le contrle du trafic pour


empcher de savoir qui communique avec qui.

Le service dintgrit des donnes vise interdire la modification acciden


telle ou maligne des donnes. Comme pour le service de confidentialit, on
distingue :

(1) lintgrit sans connexion : protection des donnes statiques ;

(2) lintgrit slective : concerne un ou plusieurs champs choisis ;

(3) lintgrit oriente connexion : protection des paquets de donnes.

On remarque que le service dintgrit des donnes nassure aucunement la


confidentialit. Ces deux services travaillent gnralement de concert.
Le service de non-rpudiation (fait de ne pouvoir contester tre lauteur
dun acte, par exemple la rception d un message) se dcline en :

(1) non-rpudiation avec preuve d origine : fournit une preuve de lexpdition


au destinataire : lexpditeur ne peut pas dmentir lenvoi ;

(2) non-rpudiation avec preuve de dpt : offre une preuve de dpt du message
lexpditeur : le destinataire ne peut pas nier la rception.

Ce service est indispensable pour les protocoles de paiement lectronique.

Puisque nous nous rapprochons de la machine, les services de scurit


peuvent tre implants diffrents niveaux du modle OSI. La qualit de la
scurit fournie est fort diffrente si elle est au niveau applicatif ou au niveau de
la couche de transport. Le tableau ci-dessous propose une rpartition possible
des services par couche :
1 2 3 4 5 6 7

Authentification x X X x

Contrle daccs x X X X

Confidentialit x X X X X X

Confidentialit slective x X

Secret du trafic X X X

Intgrit X X X X

Non-rpudiation X

Lensemble de ces services ne sert qu mettre en uvre une politique de


scurit. Celle-ci a pour but d informer les utilisateurs, personnels et respon
sables, des conditions satisfaire pour protger les acquis technologiques et les
informations d un site. Elle dfinit les rgles et les mcanismes qui permettent
la protection et sert de fil conducteur pour la configuration et laudit des sys
tmes dinformation. Une politique de scurit doit pouvoir tre implante par
ladministrateur, voluer dans le temps et tre bien adapte aux besoins.
298 Mots <li- passe jetables

E x e m p le 27.1 Pour fixer les ides, on comprend bien quune politique de s


curit diffrente rgit laccs une cabane de jardin, un garage, une habita
tion, un lieu de travail et une caserne militaire Pour accder aux diffrents
endroits mentionns, on multiplie le nombre de serrures et de contrles. Les
ensembles de rgles qui rgissent laccs ces diffrents lieux peuvent tre vus
comme autant de politiques de scurit diffrentes.

Pour plus de dtails sur la politique de scurit, nous proposons au lecteur


de se reporter la RFC2196.
Si la politique de scurit permet de dfinir les rgles qui permettent de
conserver ses acquis et de les spcifier au moyen des services de scurit, ces
derniers peuvent tre implments au moyen des mcanismes de scurit.

Les mcanismes de scurit

Ceux-ci implmentent les services de scurit au moyen des techniques de


base dcrites dans cet ouvrage et que nous rsumons ci-dessous :

chiffrement ;

- signatures numriques ;

- mcanismes de contrle d accs ;

- mcanismes d intgrit des donnes ;

- mcanismes d authentification ;

tiers de confiance (notariat lectronique) ;

-gestionnaire de scurit (gestion des cls).

27.4 Mots de passe jetables

Dans un premier temps nous dcrivons une belle application des fonctions
de hachage qui a t invente par L. Lamport [60]. Elle permet de raliser
un mcanisme de contrle d accs au moyen de fonctions sens unique ou de
fonctions de hachage cryptographique.

27.4.1 Expos du problme

Lors dun accs distant un systme, lutilisateur sidentifie au moyen de


son nom (ou login) et d un mot de passe. Un pirate peut dcouvrir le mot de
passe de lutilisateur de trois manires diffrentes :

- en accdant aux informations contenues au sein du systme, par exemple en


accdant au fichier des mots de passe ;
Applications de la cryptographie la scurit des rseaux 299

- e n interceptant lenvoi du mot de passe par observation du rseau ou au


moyen d un programme d espionnage sur Lordinateur de lutilisateur ;

- par la divulgation du mot de passe de lutilisateur si ce dernier a choisi un


mot de passe quil est facile de deviner.

Cette dernire possibilit ne peut tre contre quel que soit le protocole de
connexion scurise mis en place. Pour liminer ce problme, on fait de plus en
plus appel des systmes biomtriques comme la reconnaissance des empreintes
vocales, digitales ou rtiniennes mais qui sont ici hors de propos.

27.4.2 Solution

On remdie aisment la premire faiblesse dcrite. Il suffit de conserver


les mots de passe chiffrs. C est ce qui est ralis lheure actuelle dans la
plupart des systmes. Au lieu de conserver les mots de passe en clair dans un
fichier, on conserve les cryptogrammes correspondants. L utilisateur fournit au
systme son mot de passe en clair. Le systme, la rception du mot de passe
(transmis en clair), chiffre celui-ci et le compare au cryptogramme contenu dans
son fichier de mots de passe.
Cette mthode ne permet cependant pas dviter la seconde attaque dcrite.
Un pirate peut intercepter le mot de passe et le fournir au systme ultrieure
ment, ralisant ainsi une attaque par rejeu.

Pour viter cette attaque, une ide simple et efficace est dutiliser non plus
un unique mot de passe mais une suite de mots de passe. La solution propose
en 1981 par L. Lamport permet dviter de mmoriser une longue suite de mots
de passe en utilisant une fonction sens unique (fig. 27.2). C est la mthode
(2 )
qui est utilise lheure actuelle dans les systmes mots de passe jetables
comme S/Key, Dpie ou encore LogDaemon en faisant appel une fonction de
hachage cryptographique.
On fixe N un nombre maximal de connexions et s un mot de passe initial qui
nest inscrit nulle part. Le systme et lutilisateur partagent soit une fonction
sens unique soit une fonction de hachage cryptographique h. On note h1 sa
ie itre. Le ie mot de passe p-i est dfini par hN~i(s). La suite des N mots de
passe que lutilisateur fournit successivement pour se connecter est :

hN~1(s), hN~2(s) , . . . , h(h(h(s))), h(h(s)), h(s), s

et celle des informations connues du systme pour identifier lutilisateur est :

hN(s), hN^1(s) , . . . , h(h(h(s))), h(h(s)), h(s)

Pour la ie connexion parmi une suite de N possibles, le systme connat


hN 11 1 et i le numro de la connexion. En rponse la demande de connexion,

(2)
O TP : O n e tim e passwords en anglais.
300 Mots de passe jetables

co n n u du
systme

! hN (s)

P l=hN 1(s ) N -l

itration
login de h

h N i + l ( s ) = h ( Pi) < -

Pir-hF-Hs) N-i

h (s )

p N= h ( s ) = s
fourni par
l'utilisateur

Fig. 27.2 Principe de fonctionnem ent des O T P .

le systme envoie lutilisateur un dfi sous la forme du numro de connexion,


i. L utilisateur fournit alors comme entres h le mot de passe initial s, N
le nombre maximal de connexions et i le numro de la connexion courante. Il
calcule p j = hN ! (.s) et transmet pi au systme. Le systme, la rception de
Pi = hN~%(s), calcule h (p.;) = h(hN~l (s)) qui doit correspondre hN 111 quil
connat. Sil y a galit, il accepte la connexion et mmorise la valeur pi reue
de lutilisateur pour la prochaine connexion, sinon il refuse la connexion. Au
trement dit, chacun des mots de passe fourni par lutilisateur sert lidentifier
pour la connexion suivante.
Pour mieux comprendre le fonctionnement, on peut considrer la squence
de deux connexions dcrite par la figure 27.3.

connu du connu du
systme systme

j h]00(s) 1 hJ00(s)
P l= h "(s) p j= h iG0~i (sJ
itration
login de h

iff)=h(pw) <- login


itration
de h
p so=h50(s)
hSO(s) hs0(s)=h(p4g) < -------- 1
P 4 9 = h 49(s)
h 9(y)
h(s)

Pl00=h(s)= s Pioo^ ( s)=s


fo u rn i p a r fourni par
lutilisate u r l'utilisateur

Fig. 27.3 Squence de deu x connexions successives.

Pour que cela fonctionne, il faut que la fonction h vrifie les proprits
Applications de la cryptographie la scurit des rseaux 301

suivantes :

- non-inversibilit (connaissant limage, on ne peut retrouver lentre) ;

- robustesse aux collisions (il est improbable que deux entres diffrentes pro
duisent la mme image).

Autrement dit, h est une fonction de hachage cryptographique qui satisfait


la dfinition 22.1 du chapitre 22. En pratique, la fonction de hachage la plus
utilise est MD5 qui est dcrite dans ce mme chapitre.
De cette manire, on peut viter une attaque par rejeu de la connexion d un
utilisateur lgitime.
Pour avoir plus de dtails pratiques d implmentation ou d utilisation, le
lecteur pourra se reporter louvrage [41].

Scurit

Les attaques que lon peut porter contre ce mcanisme sont assez frustes.
Deux sont toutefois possibles :

- La force brute : on essaye toutes les possibilits pour le mot de passe i


jusqu trouver celle qui conduit la cl i + 1. Cette attaque est peu raliste
du fait du grand nombre de cls envisager.

- Une attaque par dictionnaire : on essaye un sous-ensemble de toutes les pos


sibilits qui sont choisies dans un dictionnaire. On se base sur le principe
que le choix du mot de passe initial s est rarement inintelligible. Des pro
grammes permettent de mener cette attaque. Si le mot de passe initial est
bien choisi, cette attaque est pratiquement inutilisable.

27.5 Kerberos

Kerberos(3) est un systme d authentification et de distribution de cls qui


a t dvelopp par le projet Athena du MIT. A la connexion dun utilisateur,
Kerberos authentifie cet utilisateur et la machine quil utilise et lui fournit un
moyen de prouver son identit d autres serveurs d un rseau local.
Cette authentification est utilise par des programmes comme r lo g in pour
autoriser lutilisateur se connecter dautres htes sans lui demander de mot
de passe. Cette mthode d authentification peut galement tre utilise par le
gestionnaire de courriers pour garantir que le courrier est expdi la bonne
personne et pour prouver lidentit de lexpditeur.

(3) ^
Dans la mythologie Grecque, Kerberos est le nom de lhydre trois ttes qui garde la
porte de lenfer.
302 Kerberos

Kerberos et lensemble de logiciels qui laccompagnent permettent dem


pcher une attaque par dguisement o un intrus usurpe ladresse dune ma
chine (IP spoofing). Dans cette attaque, lintrus peut connecter une machine
portable au rseau local et prtendre tre une machine lgitime de ce rseau.
Linconvnient de Kerberos est que son installation est lourde et demande le
remplacement ou la modification d un grand nombre de programmes.

27.5.1 Fonctionnement

Kerberos requiert un centre de distribution de cls pour le rseau qui est


compos de deux serveurs distincts, un serveur d authentification AS et un
(4 )
distributeur de tickets TGS . Il repose sur le protocole de Needham Schroeder
qui a t dcrit dans le paragraphe 26.4.1. A ce protocole, il ajoute des dates de
premption et le distributeur de tickets pour viter lutilisateur de sidentifier
en redonnant son mot de passe.
Quatre acteurs sont en prsence; lutilisateur connect sur le client C de
mande une connexion sur le serveur S par lintermdiaire du distributeur de
tickets TGS et du serveur d authentification AS, comme illustr dans la fi
gure 27.4.

S ,N ,T C tgs ,Ac t gs 3
U/C n
K(TC.S ,K )
I TGS e

K u(K ,N ,T c t g s )

(= ]
AS
S r
Tc,tgs =k TGS (U,C,TGS,T,L,K) ticket TGS
Tc s = K <5(U .C & T . L ,K )ticket de session
At tgs =KtC,T) authentificateur pour T c tgs
Aj. s = K (C ,T ) authentificateur pour Tc

Fig. 27.4 Protocole Kerberos.

On dcrit les tapes successives qui vont autoriser sa connexion :

(1) Lutilisateur U connect au rseau par le client C demande au serveur dau


thentification AS une connexion avec le serveur de tickets TGS partir de
la date T pour une dure L.

(4 )
AS pour authentication serv er et TG S pour tick et granting service en anglais.
Applications de la cryptographie la scurit des rseaux 303

(2) AS lui retourne deux messages chiffrs avec K u , cl secrte partage entre
U et AS :

- un contenant une cl de session K et un jeton N ;


-u n certificat ?c,tgs pour TGS chiffr avec K t g s , cl partage entre AS
et TGS. Il contient lidentit de U, lidentit de C , la confirmation quil
sagit d une connexion vers TGS, la date T , la dure L et la cl de session
pour la communication entre U et TGS.

Lchange entre U et AS est alors termin. U dispose d une cl de session


K pour sadresser TGS. U calcule A c tgs, un authentificateur qui permet
dempcher une attaque par rejeu. Il sagit dun message chiffr au moyen
de la cl de session K qui contient lidentit du client C et la date T.

(3) U demande TGS un ticket pour se connecter au serveur S1, lui envoie un
jeton ainsi que TCjtgs et A Citgs-

(4) TGS lui retourne un message chiffr avec la cl de session K qui contient :

- une nouvelle cl de session K ' pour sadresser S ;


-u n certificat Tc s pour S chiffr avec K s , cl partage entre TGS et S
qui contient lidentit de U, lidentit de C, la confirmation quil sagit
d une connexion vers S, la date T, la dure L et K ', la cl de session
pour la communication entre U et S.

Lchange entre U et TGS est alors termin. U dispose d une nouvelle cl


de session K ' pour sadresser k S. U calcule ACjS, un authentificateur qui
permet d empcher une attaque par rejeu. Il sagit d un message chiffr au
moyen de la nouvelle cl de session K ' qui contient lidentit du client C et
la date T .

(5) U transmet alors S1le certificat Tc,s et lauthentificateur 7lCls-


S peut alors authentifier U et C avec le certificat et lauthentificateur et
vrifier la validit de la session au moyen des dates. Il obtient galement la
cl de session K '.

(6) S retourne alors U une modification de la date (ici une incrmentation)


chiffre avec la cl de session.

La session entre U et S peut alors commencer.

27.5.2 Alternatives

Lintgration de Kerberos dans un rseau est quelque peu complique. Il


faut en effet interfacer chaque application avec la librairie Kerberos, ce qui
nest pas une mince affaire, ni toujours possible. Il faut dans ce cas hirarchiser
les serveurs selon les services quils peuvent offrir, ce qui complique la structure
du systme informatique.
Une alternative Kerberos qui est beaucoup plus souple est dutiliser un
shell scuris comme ssh que nous allons dcrire dans une prochaine section.
304 Scuriser les courriers lectroniques

27.6 Scuriser les courriers lectroniques

De plus en plus dutilisateurs communiquent par courrier lectronique, que


ce soit des particuliers ou des professionnels. Cependant, les utilisateurs ont
rarement conscience des risques encourus. Lorsquon envoie un courrier papier
par la poste, la confidentialit du pli est assure. Ce nest malheureusement pas
le cas si on utilise le courrier lectronique. Chaque message peut tre intercept
par un tiers qui dispose dun ordinateur connect au rseau. Ce tiers peut alors
impunment lire le message et mme en modifier le contenu. Ce risque peut
tre limit en faisant usage doutils cryptographiques.
Nous prsentons ci-dessous un outil classique qui permet d assurer la
confidentialit et lauthenticit des courriers lectroniques : PGP, qui est lacro
nyme de Pretty Good Privacy. Les autres outils disponibles (openPGP, son ana
logue libre ou encore GnuPG, une implmentation de GNU) fonctionnent de
manire analogue. Le lecteur intress pourra se reporter larticle [90] qui en
dcrit plusieurs autres.

27.6.1 Chiffrement des courriers par PGP

Le systme PGP de Zimmermann utilise IDEA pour le chiffrement cl


secrte (sect. 18.1), RSA pour la gestion des cls (sect. 20.2) et MD5 (sect. 22.6)
comme fonction de hachage sens unique.
PGP utilise la fois un systme de chiffrement cl publique et un systme
de chiffrement cl secrte. PGP cre une cl de session alatoire par message,
chiffre le message par IDEA au moyen de la cl de session et utilise ensuite RSA
pour chiffrer la cl de session au moyen de la cl publique du destinataire. Enfin,
PGP empaquette le message chiffr par IDEA et la cl de session range dans
une enveloppe digitale pour lenvoyer au destinataire par courrier lectronique
(% 27.5).

destinataire

Fig. 27.5 Fonctionnement de PGP.


Applications de la cryptographie la scurit des rseaux 305

Les cls publiques alatoires de PGP utilisent un test de primalit probabi


liste et le logiciel obtient ses germes initiaux en mesurant les intervalles entre
les touches frappes au clavier par lutilisateur. PGP engendre des cls IDEA
alatoires et utilise IDEA comme systme de chiffrement cl secrte plutt
que DES. PGP chiffre galement la cl prive de l'utilisateur en utilisant lem
preinte d une phrase cl au lieu d un mot de passe.
Les messages chiffrs par PGP ont une structure de scurit par couche. La
seule information rcuprable par un cryptanalyste est lidentit de lexpditeur,
pour autant que lidentificateur de la cl du destinataire soit connue.

27.6.2 Signatures par PGP

Nous dcrivons ci-dessous le fonctionnement de PGP comme mcanisme


de signature des messages. Nous reprenons ici la prsentation faite par M.
Iannamico dans [50].

Gnration de la signature

PGP utilise la cl prive de lexpditeur pour chiffrer une empreinte du


message et le signe de cette manire. L 'empreinte du message est un mot de
160 ou de 128 bits obtenu au moyen d une fonction de hachage cryptographique
sens unique. Le mcanisme de signature est dcrit dans la figure 27.6.

I\ T\
message m essage

V signature
N numrique
fonction
de 0100110 1100110 ],
hachage
\ empreinte Ni

h10010 transmis
au
cl prive de
lexpditeur destinataire

Fig. 27.6 Gnration de signature par PGP.

Lempreinte du message est un condens de 160 ou de 128 bits du message.


Il est caractristique du message au sens o, si le message a subi une quelconque
altration, lempreinte sera compltement diffrente. De cette manire, il est
possible de dtecter toute altration du message par un faussaire. L empreinte
est calcule au moyen d une fonction de hachage cryptographique sens unique.
La fonction utilise dans PGP partir de la version 5 est SHA, acronyme de
306 Scuriser les courriers lectroniques

Secure Hash Algorithm conu par la NSA( > pour le NISTC*. SHA est une
fonction de hachage qui fournit une empreinte de 160 bits. Son fonctionnement
est analogue celui de MD5. On pourra trouver plus de dtails dans le livre de
B. Schneier [83].
PGP peut aussi utiliser MD5 pour les signatures pour des raisons de com
patibilit puisque les versions prcdentes de PGP utilisaient cette dernire
fonction de hachage. La raison du passage de MD5 vers SHA est que MD5 a
t partiellement cass par H. Dobbertin, un cryptanalyste allemand, en 1996.
Nous avons dcrit cette attaque au paragraphe 22.6.3

V rifica tio n d e la sign atu re

Le destinataire (ou tout autre personne) peut vrifier la signature en uti


lisant la cl publique de lexpditeur pour dchiffrer lempreinte comme dcrit
dans la figure 27.7.

F7
K fon ction
message ---- 0100110
de
hachage empreinte
recalcule

signature
numrique;
J lldoilOl 0100110 [comparaison
empreinte
reue

S10010
cl publique de
lexpditeur

Fig. 27.7 Vrification de signature par PGP.

Cette vrification prouve que lexpditeur est bien lorigine du message


et que le message na pas t altr par un faussaire puisque seul lexpditeur
possde la cl prive qui a permis de construire la signature. Falsifier le message
est donc calculatoirement impossible et lexpditeur ne peut donc rpudier
la signature de ce message.

Laspect le plus intressant de PGP est son approche de la gestion distribue


des cls. Il ny a pas vraiment d autorit de certification. Tous les utilisateurs
engendrent et distribuent leur propre cl publique. Les utilisateurs peuvent

NSA est lacronyme de N ational S ecurity A g en cy , lagence de scurit amricaine.


NIST est lacronyme de N ational Institute o f Standards and Technology.
Applications de la cryptographie la scurit des rseaux 307

mutuellement signer la cl des autres, ajoutant ainsi un niveau de confiance


dans le systme en servant de parrains.

27.6.3 Gestion distribue des cls

La gestion distribue des cls utilise dans PGP fonctionne l'aide de par
rains. Ceux-ci sont d autres utilisateurs du systme qui peuvent signer les cls
publiques de leurs amis. Par exemple, lorsque Bernard cre sa cl publique, il
en donne une copie Chlo et David. Ceux-ci connaissent Bernard et signent
sa cl publique en lui en renvoyant une copie signe. Maintenant, si Bernard
prsente sa cl publique une trangre, Alice, il lui prsente avec les signatures
de ses parrains. Si Alice connat et a confiance en Chlo, elle a raison de croire
que la cl de Bernard est valide. Si elle connat peu ou a peu confiance en Chlo
et David, elle a moins de raisons de croire que la cl de Bernard est valide. Si
elle ne connat ou na confiance ni en Chlo ni en David, elle na aucune raison
de faire confiance 1a. cl de Bernard.
Au cours du temps, Bernard collectera de plus en plus de parrains. Si Alice
et Bernard gravitent dans les mmes cercles, les chances de connatre un des
parrains de Bernard sont plus leves.
Pour se prmunir contre Oscar qui substitue une cl, les parrains doivent
sassurer que la cl de Bernard appartient bien celui-ci avant de la signer.
Les parrains peuvent demander que la cl leur soit communique lors d une
rencontre en personne ou vrifie par tlphone.
Lavantage de ce mcanisme est quil ne demande pas quil y ait de centre
de distribution de cls en qui tout le monde doit avoir confiance. Le dfaut est
que lorsque Alice reoit la cl publique de Bernard, il ny a aucune garantie
quelle connaisse un des parrains et quelle se fie donc cette cl.

27.7 Scuriser les changes TCP/IP

Les mcanismes de scurit ne sont pas gnraliss au niveau de la couche IP.


Cest pourquoi JIETF sest pench sur la question pour ajouter des techniques
cryptographiques au-dessus de la couche IP - comme dcrit dans la figure 27.8
et fournir des services de confidentialit, dauthentification dintgrit et de
contrle daccs. Cette couche supplmentaire porte le nom de IP Security
Protocol (IPSec).
IPSec ajoute des techniques cryptographiques aux protocoles standard de
linfrastructure Internet. Larchitecture de scurit au niveau IP fournit des
mcanismes de scurit (dcrits dans la RFC1825) qui implmentent les services
dauthentification, dintgrit, de contrle d accs et de confidentialit.
Pour ce faire, on ajoute deux en-ttes de scurit :

- Authentication Header : assure les services dintgrit et d authentification


(IPv4 et IPv6) ;
308 Scuriser les changes T C P /IP

SM TP HTTP

TCP ( T r a n sm is sio n C o n tr a t P r o t o c o l )

IP Security Protocol
AH. ESP)

IP I n t e r n e t P r o t o c o l

Fig. 27.8 Protocole IPSec.

- Encapsulating Security Payload : assure la confidentialit et (selon le choix


dun mode et des algorithmes) peut galement assurer lintgrit et lau
thentification des donnes changes.

Ces deux mcanismes sont indpendants. Ils peuvent tre utiliss spar
ment, conjointement ou successivement. Ils ne dpendent pas dun algorithme
particulier et les systmes cryptographiques peuvent ainsi tre remplacs au
cours du temps.
Pour ces mcanismes, le transport des cls doit tre ralis par un protocole
de plus haut niveau, voire mme assur manuellement. Des techniques au niveau
applicatif sont bases sur le protocole de mise en accord de Diffie Hellman
comme dans le protocole d change de cl ISAKM P/Oakley que nous dcrivons
ci-dessous.

27.7.1 Protocole dchange de cls

Nous dcrivons le protocole d change de cl ISAKM P/Oakley [67]. Celui-ci


fonctionne au niveau de la couche applicative indpendamment des protocoles
de scurit des couches plus basses. Il sagit de diffrentes variantes du protocole
de Diffie-Hellman que nous avons dcrit dans la section 26.5. Lchange de
cls est une tape pralable toute session scurise. Il permet, de manire
optionnelle, dassurer lauthentification des parties.
Ce protocole travaille en deux tapes :

(1) il tablit un canal scuris (et authentifie des parties) ;

(2) il ngocie les associations de scurit pour IPSec (ce qui permet de dire
quels vont tre les mcanismes de scurit employs par la suite).

Une association de scurit est une structure qui dcrit les algorithmes
utiliss pour les diffrents mcanismes de scurit, par exemple quels sont les
chiffres utiliss ou les mthodes de signature.
Pour chacune de ces deux tapes, deux modes diffrents sont possibles : pour
tablir le canal scuris, on dispose des modes main (ou principal) et aggressive
Applications de la cryptographie la scurit des rseaux 309

(ou agressif) et pour ngocier les associations de scurit, des modes quick (ou
rapide) et new group (ou nouveau groupe). Nous dcrivons ces diffrents modes
ci-dessous.

M ode principal

Dans le mode principal, les deux parties utilisent les deux premiers messages
pour ngocier les associations de scurit de lchange lui-mme. Les deux mes
sages suivants effectuent une mise en accord de cls selon le protocole de Diffie-
Hellman et changent des messages pour sauthentifier mutuellement. Les deux
derniers messages sont utiliss pour authentifier les deux parties au moyen de
signatures et de hachage et, de manire optionnelle, en ayant recours des
certificats.

SA header ngocient
header SA termes change

KE+[Cr] header
change de cls
par Diffie-Hellman
header KE+[Cr]

Sigc [Cert] Id, lieader


authentification
header Ids [Cert] Sigs

F ig . 2 7 .8 IS A K M P /O a k le y M ain m ode.

Dans la figure 27.9, les abrviations suivantes ont t utilises :


- SA : association de scurit ;
- KE : donne pour lchange de cl ;
- Sig : signature;
- Cert : certificat de la cl pubque ;
- Cr : demande de certificat ;
- ID : identificateur de lentit ;
- [] : lment optionnel;
- header : en-tte correspondant au mode ;
- nonce : nombre alatoire utilis pour authentifier.

M ode agressif

Le mode agressif ressemble au principal mais en minimisant le nombre


d changes. Le premier message propose une association de scurit pour
lchange, fournit les donnes pour la mise en accord des cls selon le pro
tocole de Diffie-Hellman et un jeton pour lidentification. Le second message
permet d authentifier le serveur, donne son association de scurit et fournit les
donnes pour la mise en accord des cls. Le dernier message sert authentifier
le client.
310 Scuriser les changes T C P /IP

[Idc] noncec KE SA header

header SA KE nonce [Ids] [Cert] Sigs

Sigc [Cert] neader

F ig . 2 7 .1 0 IS A K M P /O a k ley Aggressive m ode.

Dans la figure 27.10, les abrviations sont les mmes que pour la figure 27.9.

M ode rapide

Le mode rapide est utilis pour ngocier les associations de scurit d IPSec
et pour engendrer ventuellement une nouvelle cl partage. Si c est le cas, un
nouveau protocole de Diffie-Hellman est ralis. Sinon, les parties engendrent
simplement des cls en utilisant des fonctions de hachage et sidentifient mu
tuellement au moyen de jetons.

[Idc] [Idg] [KE] noncec SA Hashj headci

header Hash2 SA [KE] [lds] [Idcj

Hash3 header

F ig . 2 7 .1 1 IS A K M P /O a k le y Q uick m ode.

Dans la figure 27.11, labrviation supplmentaire a t utilise :

-hash : rsultat du hachage sur donnes spcifies.

M ode nouveau groupe

Le but du mode nouveau groupe est de ngocier de nouveaux systmes


(comme par exemple des courbes elliptiques) au lieu du protocole de mise en
accord de Diffie-Hellman (fig. 27.12).

-t
* SA Hashj header
(D

O
header Hash2 SA

F ig . 2 7 .1 2 IS A K M P /O a k le y N ew G rou p m ode.

Une fois que les deux parties possdent une cl partage ainsi que les asso
ciations de scurit qui permettent de fixer :
Applications de la cryptographie la scurit des rseaux 311

lalgorithme d authentification pour AH, len-tte dauthentification;

- lalgorithme de chiffrement pour ESP, lajout de services de scurit ;

-le s cls utilises pour lauthentification et le chiffrement;

- la dure de vie de ces cls ;

un numro de squence pour parer une attaque par rejeu ;

il ne reste plus qu tablir la session scurise.

27.7.2 En-tte dauthentification

Le but de len-tte d authentification (AH : Authentication Header) est de


fournir un service d intgrit des donnes et un service dauthentification de
lorigine des donnes.
On ajoute une information d authentification (un MAC, ou empreinte du
message) sur len-tte du datagramme dorigine, les autres en-ttes et les don
nes par une cl secrte d'authentification. On ne touche pas aux informations
qui peuvent tre modifies sur les nuds de routage. Un service de parade dat
taques par rejeu est galement ajout sous la forme d un numro de squence
incrment lors de chaque change.
La technique utilise en ce moment est HMAC-MD5 (qui calcule une em
preinte au moyen de la fonction de hachage MD5) ou HMAC-SHA (qui calcule
une empreinte au moyen de la fonction de hachage SHA).
Deux modes de fonctionnement sont alors possibles :

- le mode transport : len-tte IP du paquet dorigine nest pas transforme ;

- l e mode tunnel : ajout dun en-tte IP au paquet dorigine; ce mode est


utilis dans des rseaux virtuels privs ou pour des protocoles point point.

La figure 27.13 illustre ladjonction de len-tte d authentification aux pa


quets dorigine.

Calcul de len-tte d authentification (A H )

Lempreinte (ou MAC : Message Authentication Code) est calcule au


moyen d une fonction de hachage qui prend une cl secrte K en entre.
MD5 hache itrativement une entre dcoupe en blocs de 512 bits et
fournit une sortie de 128 bits. Le MAC est calcul par :

MD5(A| |remplissage| |donne| |A')

o 11 dnote la concatnation des donnes.


Le rsultat est ajout aux champs concerns du datagramme.
C est somme toute le principe de fonctionnement. Cette version que nous
prsentons a t quelque peu modifie pour en amliorer la scurit.
312 Scuriser les changes T C P /IP

paquet d'origine [p header TCP/UDP header Upper layer payload

m ode transport

paquet avec AH IP header AH header TCP/UDP header Upper layer payload

< Authentifi

paquet d'origine
IP header TCP/U DP header Upper layer payload

m ode tu n n el

paquet avec AH
IP header AH header IP header TCP/UDP header Upper layer payload

A u th en tifi
<

Fig. 27.13 Adjonction de len-tte dauthentification.

27.7.3 Service de confidentialit

Le but de la transformation ESP (Encapsulating Security Payload) est de


fournir un service de confidentialit des donnes, un service d authentification
de lorigine, un service dintgrit et un mcanisme anti-rejeu.
Pour ce faire, la transformation ESP va chiffrer le contenu du datagramme
en suivant les informations ngocies dans les associations de scurit. La trans
formation ESP peut chiffrer et dchiffrer des portions du datagramme, en m
langer plusieurs et peut galement fournir un service dintgrit des donnes du
datagramme.
L aussi, deux modes de fonctionnement sont possibles (fig. 27.14) :

-L e mode transport : len-tte IP du paquet d origine nest pas transform.


Mais, la diffrence de AH, ESP ne procure de la scurit quaux proto
coles quil encapsule et non aux protocoles qui le vhiculent. Son utilisation
gnrale est de fournir des services de scurit pour des couches suprieures
comme TCP.

- L e mode tunnel : ajout dun en-tte IP au paquet dorigine. Ce mode est


utilis dans des rseaux virtuels privs ou pour des protocoles point point.
La transformation ESP peut encapsuler un datagramme complet en mode
tunnel.

Calcul de la transformation ESP

Cette transformation supporte plusieurs mcanismes de chiffrement et dau


thentification. Cependant, des conventions font que certaines combinaisons sont
plus courantes que dautres. C est le cas de DES-CBC, HMAC-MD5 ou HMAC-
SHA-1.
Applications de la cryptographie la scurit des rseaux 313

paquet d'origine IP header TCP/UDP header Upper layer payload

mode transport

paquet ESP IP header ESP header TCP/UDP header Upper layer payload ESP traiier SPauth

L CUM >
^ Authentifi y

TCP/UDP header Upper layer payload

IP header AH header IP header TCP/UDP header Upper layer payload ESP traiter ESFauth

4 Chiffr


Authentifi y.

Fig. 27.14 Modification des paquets par ESP.

27.7.4 Scuriser les connexions distantes

Nous avons vu dans ce chapitre comment il est possible de scuriser le


contrle daccs au moyen de mots de passe jetables. Mais une fois laccs
autoris par le systme, tous les messages changs peuvent tre espionns. Pour
en assurer la confidentialit, il est ncessaire de faire appel un mcanisme de
chiffrement sous la forme d un shell scuris. C est le but de ssh (secure shell).
SSH est un ensemble de programmes qui assurent la scurit d une connexion
distante en chiffrant la connexion [4].
SSH repose sur IPSec en proposant une implmentation propritaire dcou
pe en cinq composants principaux :

- le composant dinterception qui intercepte les paquets T C P /IP ;

- l e moteur qui prend en entre les paquets intercepts par le composant


d interception et les transforme en accord avec le protocole IPSec (ajout de
AH et ESP) ;

au-dessus du moteur se trouve un gestionnaire de politique de connexion qui


dcide si une connexion peut tre tablie et comment choisir les paramtres
des associations de scurit ;

- l e composant qui se charge de la gestion et de la transmission des cls


implmente le protocole ISAKMP/ Oakley ;

enfin, un composant est dvolu la gestion et 1a. vrification des certificats.

F on ction n em en t d e ssh

SSH permet lauthentification mutuelle des machines, l'identification de


lutilisateur et le chiffrement de la session en utilisant conjointement de la com
pression et un mcanisme cl secrte choisir parmi DES, 3xDES, IDEA,
314 Scuriser la couche de transport

Blowfish, RC4. Nous allons dcrire brivement ces diffrentes tapes. Nous sup
poserons que les diffrentes cls publiques sont connues. Si elles ne le sont pas,
elles sont transmises au moyen de certificats par un mcanisme de transport de
cl analogue celui dcrit dans la section 26.3.

Il faut dans un premier temps authentifier les machines au moyen dune


signature par DSA et dune fonction de hachage. Le client C sadresse au serveur
S en lui envoyant un message M dont lempreinte par une fonction de hachage
est sign par DSA, comme dcrit dans la figure 27.15.

IP header AH TCP donne

^ Signt/i(donne))

Fig. 27.15 Authentification des machines par DSA.

Le serveur qui connat lalgorithme public de vrification de la signature


peut alors valider la signature et tre sr quil sagit bien de la machine C.
Ensuite, il faut identifier lutilisateur. Le serveur connat sa cl publique de
chiffrement. 11 engendre alors un dfi compos d un nombre alatoire r et le
transmet chiffr lutilisateur en utilisant sa cl publique. Celui-ci est le seul
pouvoir dchiffrer le cryptogramme contenant r. Une fois le dchiffrement
accompli, il renvoie r au serveur pour sidentifier.
Une fois que la machine et lutilisateur ont t authentifis, on entre dans
un dialogue client/serveur scuris au moyen d IPSec dont le fonctionnement a
t dcrit ci-dessus.

27.8 Scuriser la couche de transport

Plusieurs protocoles sont utiliss pour scuriser la couche de transport


(TC P). L avantage est quils ne dpendent pas du protocole de lapplication,
Cette dernire les utilise de faon transparente. La figure 27.16 dcrit la pile
du modle OSI et le niveau o se situe la scurisation.
Diffrents exemples de protocoles permettant de scuriser la couche de trans
port sont :

- Secure Socket Layer utilis par Netscape ;

Private Communication Technology de Microsoft ;

- Transport Layer Security qui est en cours de standardisation par lIETF.

Ils fonctionnent tous de manire assez similaire; c est en particulier le cas


pour SSL et TLS, ce dernier reposant sur une ancienne spcification de SSL
mais en voluant quelque peu diffremment.
Applications de la cryptographie la scurit des rseaux 315

SM TP HTTP

Transport Layer Security


(SSI,, Tl.S) _

TCP (T r a n s m is s io n C o n tr o l P r o t o c o l )

IP ( I n t e r n e t P r o to c o l)

F ig . 2 7 .1 6 Scurisation de la couche de transport.

SSL (Secure Socket Layer) fournit un service dauthentification des donnes,


un service dintgrit des donnes, un service de confidentialit des donnes et
utilise la compression des donnes.
Il supporte plusieurs types de mcanismes d authentification et de chiffre
ment et peut protger tout protocole au niveau applicatif comme h ttp ou smtp.
Il est utilis par diffrents navigateurs comme Netscape, Explorer ou Mozilla.
TLS repose sur SSL3.0. Il est compos de deux couches :

- celle de rencontre ou Handshake Protocol ;

- et celle de communication ou Record Protocol.

Ces deux couches procurent les services suivants :

confidentialit de la connexion par DES, IDEA. RC2, RC4 . . . ainsi que du


chiffrement de type Vernam ;

- intgrit de la connexion par un MAC utilisant une cl en valeur initiale


(SHA-1 ou MD5).

Nous avons choisi de dtailler les principes essentiels de SSL3.0. Pour avoir
plus de dtails sur SSL, le lecteur intress pourra se reporter :
dvelopper.netscape. com /docs/m anuals/security/sslin/contents.htm

27.8.1 La couche de rencontre

La couche de rencontre, ou Handshake Protocol, de SSL permet notamment


d changer, de construire de nouvelles cls et dauthentifier les parties. Celle-ci
est dcrite dans la figure 27.17.
Le premier message du client vers le serveur permet de dfinir les chiffres qui
seront utiliss dans la suite et de transmettre un jeton qui nest autre quune
valeur alatoire note noncec dans la figure. Le serveur retourne les mmes
informations au client ainsi quun certificat (Cert) qui garantit son identit et
lui permet de communiquer sa cl publique. U peut galement demander au
client de sauthentifier (opration note [Cr] dans la figure). Le client vrifie le
316 Scuriser la couche de transport

SA noncec header ngocient


termes change
header [Cr] Cerl SA

Sigc(nonces) [Cert] KE header

header confirmation

dbut session SSL

Fig. 27.17 Fonctionnement du protocole de rencontre de SSL.

certificat et obtient la cl publique du serveur. Il peut alors crer une pr-cl


matre et la ranger dans une enveloppe digitale quil chiffre au moyen de la
cl publique du serveur (message not KE dans la figure). Si le serveur lui a
demand un certificat, il envoie galement celui-ci au serveur. Au terme de ces
trois messages, si les parties sont convaincues de leurs identits rciproques,
elles disposent de toutes les informations ncessaires pour construire les cls
qui serviront dans la suite de lchange. Le serveur peut crer une cl matre
par drivation de la pr-cl matre quil a reue du client et le client drive
galement la pr-cl matre pour obtenir la cl matre. A partir de cette cl
matre, ils construisent alors diffrentes cls de session qui seront utilises par
les services de confidentialit des donnes et dauthentification des donnes. Ils
schangent un dernier message pour signifier quils disposent bien des mmes
cls de session obtenues par drivation de la cl matre. La session SSL peut
alors dbuter.

27.8.2 La couche de communication

La couche de communication ou Record protocol met en place un service de


confidentialit et dintgrit des donnes. Elle prend en entre des messages de
taille arbitraire, les dcoupe en blocs de taille convenable pour les systmes de
chiffrement utiliss par la suite, peut ventuellement comprimer les donnes,
calcule un MAC, chiffre et transmet le rsultat. La transmission comprend ga
lement un numro de squence afin de pouvoir dceler des messages manquants,
modifis ou insrs. Le destinataire dchiffre les messages, les vrifie, les dcom
presse, les rassemble puis les redistribue aux protocoles de niveau suprieur.

Les techniques cryptographiques utilises par SSL sont dfinies sous la forme
de CipherSuites. Celles-ci comprennent les chiffres suivants : RSA, RC4. RC2
(ces deux derniers sont des chiffres cl secrte conus par la firme RSA), IDEA,
DES, 3xDES et AES et les fonctions de hachage suivantes : MD5 et SHA.
Chaque message est numrot. On commence par calculer le MAC avant le
chiffrement. Celui-ci est fonction dune cl K et du numro dordre du message.
Le message et son MAC sont ensuite chiffrs soit au moyen dun chiffre de type
Vernam soit dcoups en blocs et chiffrs en mode CBC (sect. 19.2). La valeur
initiale requise pour le mode CBC est modifie chaque connexion.
Applications de la cryptographie la scurit des rseaux 317

SMTP HTTP SMTP S-HTTP

Transport Layer Security


TCP ( T r a n sm is sio n C o n tr o l P r o t o c o l )
(SSL, TLS)

TCP ( T r a n sm is sio n C o n tr o l P r o t o c o l ) IP I n t e r n e t P r o t o c o l

IP I n t e r n e t P r o t o c o l

F ig . 2 7 .1 8 D eux manires de scuriser le p rotocole h ttp

Toutes les cls, valeurs initiales et cls de MAC, sont engendres partir
des paramtres de scurit obtenus lissue de la rencontre entre le client et
le serveur au moyen d une fonction de hachage. Le lecteur intress pourra se
reporter [33] pour le dtail de la drivation des cls.

27.8.3 Scuriser le protocole http

Le protocole h t t p (pour HyperText Transfer Protocol) est le protocole prin


cipal utilis entre des serveurs et des clients du World W ide Web. La spcifi
cation dorigine du protocole h ttp ne disposait que de peu de scurit. Depuis
quelques annes, 1TETF travaille la scurisation du protocole http. La scu
risation peut se porter sur diffrentes couches du modle OSI, comme dcrit
dans la figure 27.18. On peut soit scuriser le protocole au niveau de la couche
applicative, dfinissant ainsi le protocole S-HTTP qui est dcrit dans [33], soit
en dlguer la scurisation la couche SSL dcrite prcdemment. C est la s
curisation qui utilise SSL qui est la plus couramment utilise lheure actuelle.
A n n e x e A

Utilisation des registres linaires


dcalage

Cette annexe prsente lutilisation des registres linaires dcalage pour


calculer dans les corps finis. En pratique, les algorithmes d arithmtique sur les
polynmes coefficients dans un corps fini sont implments par des circuits
logiques squentiels qui sont trs bien adapts.
Un systme compos de tels circuits logiques ou registre linaire dcalage
volue selon des intervalles de temps discrets. Intuitivement, un registre linaire
dcalage est reprsent par un tat dentre, i.e. un mot de longueur n sur
{0 ,1 } ainsi que par un tat de sortie, i.e. un mot binaire de longueur r.
Par dfinition, un registre linaire dcalage est tel que pour chaque tat
dentre, il existe un tat de sortie unique qui est fonction de ltat dentre
linstant t et de ltat de sortie linstant t 1. Les registres linaires
dcalages sont composs de :

lments de mmoire qui permettent de mmoriser temporairement un bit ;

- additionneurs qui permettent dadditionner deux valeurs dentres x et y et


fournissent une valeur de sortie x y = x + y mod 2.

dcalage Cl C2 C3 c4
init. 1 0 1 1
1 0 1 0 1
2 0 0 1 0
3 0 0 0 1
4 0 0 0 0

entre sortie

Cl C2 c3 c4

Fig. A .l Registre dcalage de longueur 4.


320

De premier abord, un registre linaire dcalage semble un peu abstrait,


aussi nous prsentons ci-dessous quelques exemples simples. La figure A .l
illustre un registre linaire de longueur 4. Il comprend 4 cellules mmoire en
srie. Le registre linaire est contrl par une horloge. A un instant donn, le
contenu de chaque cellule est dcal dans la direction de la flche vers la cellule
suivante. Ainsi, pour un tat initial (1 ,0 ,1 ,1 ), le registre passe par les tats
successifs de la figure A .l.
La figure A .2 propose un registre linaire rtro-propagation. La sortie est
redirige sur lentre. Dans ce cas, le registre effectue une permutation circulaire
des bits du mot de son tat et cycle rapidement.

dcalage Cl C2 C3 C4

init. 1 0 1 1
1 1 1 0 1
2 1 1 1 0
3 0 1 1 1
4=init. 1 0 1 1

entre sortie

Ci c2 c3 c4

Fig. A.2 Registre dcalage reboucl de longueur 4.

La figure A .3 propose un registre linaire rtro-propagation qui comporte


un additionneur. Les valeurs des cellules sont les suivantes :
dcalage Cl C2 C3 c4
init. 1 0 0 0
1 0 1 0 0
2 1 0 1 0
3 0 1 0 1
4 0 0 1 0
5 0 0 0 1
6=init. 1 0 0 0

Cl c2 c3 c4

Fig. A .3 Registre linaire dcalage reboucl de longueur 4


Utilisation des registres linaires dcalage 321

O0 1 ?--& k

Fig. A .4 Registre qui calcule bj = ?liai-i-

A .l Arithmtique sur les polynmes

Les registres linaires dcalage sont trs utiles pour effectuer les multipli
cations et les divisions de polynme sur F2. On utilise un registre dcalage
pour reprsenter un polynme p(x) G IF2\x\/(xn 1)- Chaque cellule contient
un des n coefficients du polynme.

A. 1.1 Dcalage circulaire

Le dcalage circulaire dun polynme est ralis simplement par le registre


de la figure A .2. Il correspond aux itres de lopration x.p(x) mod x n 1.

A .1.2 Produit par un polynme fix

Nous donnons ici la prsentation faite dans [11]. Le produit par un polynme
fix g(x) = (jl'x1, + . . . + y\x + go se fait au moyen du circuit de la figure A .4.

Pour cela, les coefficients de g{x) sont placs conmie indiqu dans la fi
gure A.4. Les entres et sorties du registre reprsentent respectivement les po
lynmes a(x) = akx k + . . . + UjX + ao et b{x) = bk+LXk+L + . . . + b\X + bo. Le
produit b(x) = a(x)g(x) scrit b(x) = bk+LXk+L+ . . .+bo avec bj = J2i=o Siaj - i
pour j G { 0 , . . . , k + L}.

Le polynme produit b(x) = g{x)a{x) est obtenu par le registre linaire de


la figure A .4 si ltat initial du registre est entirement zro et que la suite
des coefficients de a,(x) est suivie de L + 1 zros.

Les coefficients de a(x) et de g(x) subissent une convolution opre par le


registre car :
L

bj = ^ gjj-j
i=0

En ternies de polynmes, le registre de la figure A.4 peut tre considr


comme un moyen de multiplier un polynme quelconque par un polynme fix
322 Arithmtique sur les polynmes

g(x). On lappelle galement circuit de multiplication par g(x).

entre C3 C2 Cl sortie
101 0 0 0

10 1 0 0 1

1 0 1 0 01

0 1 0 1 001

0 0 1 0 1001

0 0 0 1 11001

0 0 0 0 111001

b o , , b k + 3

fc

Fig. A .5 Produit par x 3 + x + 1.

La figure A .5 illustre le produit par le polynme g(x) = x 3 + x + 1 et la table


au-dessus les entres/sorties du registre ainsi que ses tats internes successifs.

La suite engendre la sortie de ce polynme 111001 correspond au po


lynme x 5 + x 2 x + 1 sur F2 qui est bien le rsultat du produit de x 2 + 1
reprsent par la suite des entres 101 par le polynme fix g(x).

Observons que la multiplication de deux polynmes sapplique au codage des


codes cycliques. Soit C(n, k) un code cyclique de polynme gnrateur g(x) de
degr r. Construire les mots de C sous la forme (Ao,.. -, ) revient calculer
(X)f=o AiXl)g{x). Le codage consiste donc en la multiplication de g(x) par
des polynmes de degr au plus k 1. A chaque code cyclique correspond un
seul circuit de codage, celui qui permet de multiplier un polynme quelconque
de degr au plus k 1 par g(x), le polynme gnrateur du code.

A .1.3 Division par un polynme

Soit b(x) y ;:; (|biX1 un polynme sur F2[x] diviser par g(x) = Y=o 9i%1
tel que g-,,- k = 1 (cas auquel on peut toujours se ramener). Soit r(x) lun des
restes partiels de la division. Il est de la forme :

r(x ) = rmx m + rm^ ix m- 1 + + rm_ n+fc+i x m +fc+1 +


bm_ n+kx m~n+k + bm- n+k- 1x m- n+k- 1 + - + 60
Utilisation des registres linaires dcalage 323

avec rm / 0. Le reste suivant est r'(x) = r(x) r7n,x"1 n+kg(x), soit

r'(x) = ( r m_ 1 - rmx m~n+k)x m~1 + (rm_ 2 - r m f?n _ fc_ 2) m _ 2 +


+ {rm- n+k + 1 - r mg i)x rn- n+k+1 +
(m_n+fc - r m g 0 ) x m ~ n + k +
bm-n + k -lX m- n+k- 1 + + b0
V______________ ^

On passe donc du reste partiel r(x) au reste partiel suivant dune manire
rcursive qui peut tre ralise pratiquement par le circuit de la figure A .6 en
utilisant un registre dcalage.

Fig. A .6 Circuit de division par g{x).

ltat initial, le contenu du registre est nul. Aprs n + 1 dcalages, les


coefficients du reste de la division de b(x) par g(x) se trouvent dans les cellules
ro,

E x em p le A . l Ralisons la division par le polynme g(x) = x A+ x + 1 . Elle est


implmente par le registre de la figure A .7.

bn rQ r3

Fig. A .7 Division par x4 + x + 1

Par exemple, pour la division du polynme b(x) = x 8 + x 5 par g(x) =


324 Arithmtique sur les polynmes

x4 + x + 1, on a la suite des tats internes du registre indique ci-dessous.

entre registre sortie


000001001 0000
00000100 1000 0
0000010 0100 00
000001 0010 000
00000 1001 0000
0000 1000 10000
000 0100 010000
00 0010 0010000
0 0001 00010000
1100 100010000

On retrouve ici que x 8 + x 5 = <?(x)(x4 + 1) + x + 1 par lecture du contenu des


cellules du registre et par lecture de la sortie en ayant limin les 0 superflus du
dbut et aprs 9 itrations (la premire ne compte pas, il sagit de ltat initial
du registre).
A nnexe B

Table de polynmes irrductibles


primitifs sur F2

degr polynme
2 x2 + x + 1
3 x3 + x + 1
4 x4 + x + 1
5 X 5 1- X 2 + 1
6 X6 + X + 1
7 X7 + X + 1
8 X8 + X6 + x 5 + x 4 + 1
9 X9 + X4 + 1
10 X 10 + X 3 + 1
11 x 11 + X 2 + 1
12 x 12 + x 7 + x 4 + X 3 + 1
13 x 13 + X 4 + X 3 + X + 1
14 x 14 + x 12 + X 11 + X + 1
15 X 15 + X + 1
A nnexe C

Tables des frquences relatives


des lettres

lettre frquence lettre frquence


a 6,16 n 6,02
b 0,40 o 5,12
c 5,35 P 2,92
d 3,86 q 0,62
e 18,61 r 5,35
f 2,24 s 6,96
g 1,79 t 7,41
h 1,48 u 5,03
i 6,35 V 1,03
j 0,04 w 0,35
k 0,13 X 0,36
1 5,26 y 1,39
m 1,97 z 0,04

Tab. C .l Table des frquences relatives des lettres en franais.


328

lettre frquence lettre frquence


a 8,05 n 7,19
b 1,62 o 7,94
c 3,20 P 2,29
d 3,65 q 0,20
e 12,31 r 6,03
f 2,28 s 6,59
g 1,61 t 9.59
h 5,14 u 3.10
i 7,18 V 0,93
j 0,10 w 2,03
k 0,52 X 0,20
1 4,03 y 1,88
m 2,25 z 0,09

Tab. C.2 Table des frquences relatives des lettres en anglais.


Index

chantillonnage, 107, 114 Associations de scurit, 308


lment neutre, 96 Attaque clair choisi, 179
quation du test de parit, 54 Attaque clair/crypto connus, 184
tendue dun paquet derreurs cy Attaque de lhomme du milieu, 273
cliques. 88 Attaque de RSA ip(n) connu, 219
tendue d un paquet, dfinition, 87 Attaque de RSA par factorisation,
218
Accs des services, 292 Attaque de RSA quand le module
Accs non autoris, 292 est commun, 220
Activation dune cl, 282 Attaque de RSA sur les cycles, 219
Advanced Encryption Standard Attaque par dguisement, 302
(AES), 197 Attaque par mascarade, 283
AES, 197 Attaque par rejeu, 278, 299
Aggressive mode, 309 Attaques actives, 292
Algorithme p de Pollard, 262 Attaques de MD5, 240
Algorithme p 1 de Pollard, 260 Attaques de RSA, 218
Algorithme d Euclide tendu, 152, Attaques passives, 292
216 Attaques sur El Gamal, 226
Algorithme dEuclide tendu, ver Attaques sur SHA, 243
sion itrative, 216 Authentication header, 307
Algorithme de Gauss, 249 Autorit de certification, 274
Algorithme de squencement de cl, Autorit de certification racine, 276
169, 202
Algorithme de Shanks, 261
Algorithme de Viterbi, 104 Base, 45
Algorithme de Warshall, 103 Base canonique, 46
Algorithme LLL, 247, 251 Base dun rseau, 248
Analyse d une bote-S, 179 Base dun rseau arithmtique, 248
Anneau, 95 Base de factorisation, 258
Anneau, dfinition, 78 Base Lovsz-rduite, 251
Application de LLL la cryptana Base rduite, 249
lyse, 253 Biais, 185
Application linaire, 46 Bit de parit, 42
Approximation affine, 185 Botes-S, 169, 177, 201
Approximation linaire, 185 Borne de Shannon, 95
Arbre de calculs, 126 Borne de Plotkin, 57
Arbre de codage, 99 Borne de Singleton, 57
Aspect logique de la scurit, 293 Boule pour la distance de Ham
Aspect physique de la scurit, 293 ming, 38
330 Codage, cryptologie &; applications

Boule pour la distance de Ham Chiffres itrs, 168, 199


ming, nombre dlments, Chiffres polyalphabtiques, 156
38 Cipher suites, 316
Bruit de quantification, 108 Cl de session, 278
Burst du GSM, 113 Cl de tour, 168
Clair, 149
Calcul de len-tte dauthentifica Classe cyclotomique, 81
tion (AH), 311 Classe du temps polynomial dter
Calcul de la distance libre, 103 ministe, 125
Calcul de la fentre de dcodage, Classe du temps polynomial pour
103 les modles non dtermi
Calcul de la transformation ESP, nistes, 127
312 Classes de complexit, 121
Calcul du logarithme discret, 261 Classes latrales, 49
Canal de transmission, 3 Clause, 131
Capacit de correction des codes CLUSIF, 291
convolutifs, 101 Codage longueur fixe, problme
Caractristique diffrentielle, 179, du, 39
181 Codage convolutif, 113
Carrs modulaires, 255 Codage dun problme, 121
CD, 107 Codage d rm problme de dcision,
CD-ROM, 109 122
Centre de distribution de cls, 284 Codage de canal, 113
Certificat, 273 Codage de la parole, 112
Certificat de primalit, 217 Codage de source, 113
Certification par des mcanismes Codage des codes cycliques au
symtriques, 278 moyen d rm registre li
Chane de certification, 276 naire, 82
Chef de classe, 50 Codage par les codes convolutifs,
Chiffre cl secrte, 150 101
Chiffre masque jetable, 163 Code correcteur des CD, 92
Chiffre transposition, 161 Code t-raccourci, 108
Chiffre dEl Gamal, 221 Code rptition, 42
Chiffre de Csar, 151 Code autodual, 55
Chiffre de Jefferson, 165 Code correcteur du minitel, 110
Chiffre de Merkle-Hellman, 210 Code de Golay, 116
Chiffre de Vernam, 163, 267 Code de Golay tendu, 65
Chiffre de Vigenre, 156 Code de Reed-Solomon entrelace
Chiffre monoalphabtique, 150 ment crois, 109
Chiffre RSA, 213 Code des CD, 107
Chiffres multiplicatifs, 151 Code linaire, 46
Chiffres produits, 168 Code raccourci, 108
Chiffres substitutions, 153 Code raccourci drm code de Reed-
Chiffres additifs, 151 Solomon, 109
Chiffres affines, 153 Code de la parole, 114
Chiffres dfinis par mot-cl, 153 Codes quivalents, 47
Chiffres de Feistel, dfinition, 168 Codes longueur variable, 95
Index 331

Codes BCH, 85 Construction effective d un GPA,


Codes convolutifs, 95, 116 270
Codes correcteurs de paquets der Contrle d accs, 298
reurs, 87 Contrle non autoris, 292
Codes cycliques, 77, 114 Conversion analogique/ numrique,
Codes de Hamming, 61, 110 107
Codes de Hamming tendus, 63 Convolution de deux suites, 96
Codes de Reed-Muller, 71, 86 Corps finis, 198
Codes de Reed-Muller, dfinition Corps de dcomposition, 80
inductive, 72 Corps fini deux lments, 77
Codes de Reed-Solomon, 85, 108 Correction derreurs, 39, 42
Codes de transmissions satelli Correction de paquets derreurs, 88
taires, 116 Couches du modle OSI, 295
Codes des CD-ROM, 109 Courbe amplitude/temps, 107
Codes des rseaux informatiques, Courbes elliptiques, 310
110 CRC, 115
Codes des tlphones mobiles, 112 Crible dErastostne, 220
Codes duaux, 53 Crible quadratique, 259
Codes MDS, 85 Critres de primalit, 129
Coefficients de Bezout, 152 Crossed Interleaved Reed-Solomon
Collisions, 208, 232 Codes (CIRC), 108
Collisions faibles difficiles, 232 Cryptanalyse, 149
Collisions fortes difficiles, 232 Cryptanalyse couples clairs /
Complment, 237, 241 cryptogrammes connus,
Complmentation dun message, 150
237 Cryptanalyse clair choisi, 150
Complmentation du message dans Cryptanalyse cryptogramme
SHA, 241 connu, 150
Complexit de Kolmogorov, 32, 267 Cryptanalyse des chiffres monoal
Complexit de la- primalit, 143 phabtiques, 153
Complexit des problmes de cryp Cryptanalyse diffrentielle, 177
tographie, 139 Cryptanalyse du chiffre de Vige
Complexit des problmes de tho nre, 158
rie des codes, 133 Cryptanalyse du chiffre de Merkle-
Complexit en temps, 125 Hellman, 247
Condition dempilement des Cryptanalyse exhaustive, 154
sphres, 41 Cryptanalyse linaire, 184
Condition du secret parfait , 163 Cryptogramme, 149
Confidentialit, 292 Cryptographie cl publique, 209
Conjugu d une racine algbrique, Cryptologie, 149
81 Cycle de vie des cls, 282
Construction d Alon, 138 Cyclic Redundancy Check (CRC),
Construction dune fonction de ha 110
chage, 235
Construction de nombres premiers, Dchiffrer, 149
218 Dcidabilit dun problme, 122
332 Codage, cryptologie & applications

Dcodage des codes de Hamming, Distributeur de tickets, 302


63 Distribution de cls publiques, 283
Dcodage distance minimale, 103 Distribution de cls secrtes par rm
Dcodage au plus proche voisin, 49, mcanisme asymtrique,
102 287
Dcodage de codes cycliques par le Distribution de cls secrtes par rm
calcul du syndrome, 84 mcanisme symtrique,
Dcodage de paquets d erreurs cy 284
cliques, 89 Distribution des cls secrtes. 284
Dcodage des codes convolutifs, 104 Diversification de la cl, 172
Dcodage des codes cycliques au Donne, 121
moyen d rm registre li Donne drm problme, 122
naire, 83 DSA, 221
Dcodage par le tableau standard, DSS, 221
50
Dcodage par le syndrome, 55 Echange de cls par ISAKM P/
Dcrypter, 149 Oakley, 308
Dfi, 300 En-tte dauthentification, 311
Dfinition inductive des codes de En-ttes de scurit, 307
Reed-Muller, 71 Encapsulating Security Payload,
Dsactivation dune cl, 282 308
Dtection derreur, 39, 42 Enigma, 167
Dtection derreurs dans les Entrelacement, 90, 98, 115
couches basses des r Entrelacement avec retard, 91
seaux, 111 Entrelacement crois, 92
Dterminant dun rseau, 249 Entrelacement diagonal. 115
Data Encryption Standard (DES), Entropie, 3
169 Enveloppe digitale, 283
Degr dune extension de corps, 81 Envoi d rm message chiffr et sign
Densit d un n-uplet, 253 par RSA, 224
Destruction d une cl, 282 Espace vectoriel, 45
Diagramme de transition dtats, ETSI, 112
100 Exponentiation modulaire, 214
Diffrentiel, 179 Expression linaire, 184
Digital Signature Algorithm (DSA), Extension de corps, 80
243
Digital Signature Standard (DSS), Facteurs dun polynme cycloto
227 mique, 82
Dimension dun espace vectoriel, 46 Factorisation, 220
Dimension drm rseau, 248 Factorisation de Fermt, 255, 257
Disponibilit, 292 Falsification, 223
Disques compacts, 107 Famille gnratrice, 45
Distance, 37 Famille libre, 45
Distance de Hamming, 38, 102 Fentre de dcodage dun code
Distance libre dun code convolutif, convolutif, 103
102 Fonction sens unique, 209
Distance minimale, 40, 48 Fonction de compression, 235
Index 333

Fonction de tour, 168 Ingalit triangulaire, 38


Fonction de compression, 232 Indicatrice d Euler, 213
Fonction de hachage, 290 Indice de concidence, 159
Fonction de hachage sens unique, Influence de la cl sur un diffren
232 tiel. 181
Fonction de ronde, 168 Intgrit, 292
Fonction de valuation, 131 International Standards Organiza-
Fonction trappe, 209 tion (ISO), 295
Fonctions de hachage, 208, 231, 299 Internet, 293
Fonctions de hachage efficaces, 237 Internet Drafts, 294
Forme normale dun code linaire, Internet Engineering Task Force
47 (IETF), 294
Formule de Bayes, 11 Invariants dun rseau, 249
Inverse multiplicatif, 152
Gnrateurs congruence linaire,
IP, 293
268
IP Spoofing, 302
Gnration de suites alatoires, 267
IPSec. 307
Gnration des cls, 282
ISO, 295
Gestion des cls, 281
Gestion distribue des cls dans
PGP, 307 Kerberos, 301
GnuPG, 304
GPA, 267 Langage, 122
Graphe de mots, 100 Langage de dcision, 122
Graphe de codage, 100 Langage reconnu par une machine
Graphe de De Bruijn, 100 de Turing non dtermi
Groupe Spcial Mobile (GSM), 95, niste, 126
112 Langages NP-complets, 130
Linarit des codes convolutifs, 97
Hachage compressif, 235 Littraux, 131
Hachage par le logarithme discret, Logarithme discret, 289
234 LogDaemon, 299
Hamming, proposition de, 41
Handshake protocol, 315
Mcanisme de mise en accord, 288
Homologue, 295
Mcanisme de signature, 224
Hyper Text Transfer Protocol
Mcanismes d authentification, 283
(http), 296
Mcanismes d intgrit, 283
Hypothse RSA, 271
Mcanismes de scurit, 298
Idal principal, dfinition, 78 Mthode numrative pour le calcul
IDEA, 193, 304 du logarithme discret, 261
IETF, 294 MAC, 311
Implmentation dune permutation Machine de Mealy, 100
circulaire, 321 Machines chiffrer, 165
Implmentation du produit par un Machines rotors, 167
polynme fix, 321 Machines de Turing, 121
Implmentations des oprations sur Machines de Turing dterministes,
les polynmes, 320 123
334 Codage, cryptologie & applications

Machines de Turing non dtermi Nombres pseudo-premiers, 217


nistes, 126 Non-rpudiation, 223
Main mode, 309 Norme ISO.11770-2, 284
Matrice gnratrice, 46 Norme ISO.11770-3, 287
Matrice de contrle d un code cy Norme ISO.7498-2, 296
clique, 80 Norme X.509 pour la certification,
Matrice gnratrice d un code cy 274
clique, 79 Numrisation de linformation. 107
MD5, 237, 301, 304
Menaces, 291 Observation non autorise, 292
Message Authentication Code One Time Pad, 163, 267
(M AC), 208, 245 One Time Passwords, 299
Minima successifs dun rseau, 249 Opration de codage par des re
Minitel, 110 gistres, 322
Mise jour des cls, 290 Open Systems Interconnect refe-
Mise en accord de Diffie Hellman, rence model (OSI), 295
288, 308 OpenPGP, 304
Mise sous forme normale dun code,
OpenSSL, 193
47
Opie, 299
Modle de rfrence de lintercon
Ordre multiplicatif, 80
nexion de systmes ou
Orthogonalisation de Gram
verts, 295
Schmidt, 251
Modle de transmission de donnes,
OTP, 298
295
Modle mixte, 286
Paquet d erreurs, 87
Modle pull, 286
Modle push, 286 Paradoxe des anniversaires, 233
Mode CBC, 205 Paramtre dun code, 46
Mode CFB, 205 Paramtres dun code raccourci,
Mode ECB, 205 108
Mode OFB, 205 PCT, 314
Mode transport, 311, 312 Permuteur, 167
Mode tunnel, 311, 312 PGP, 193, 277, 304
Modification de linformation, 292 Planetary standard, 117
Modification Dtection Code Poids d un mot, 38, 102
(MDC), 208, 245 Poids minimal, 41
Montrer quun langage est NP- Poids minimum, 48
complet, 132 Politique de scurit, 297
Mot reu, 49 Polynme cyclotomique, 80
Mots de passe jetables, 298 Polynme de contrle, dfinition, 79
Multiplication modulaire, 211 Polynme gnrateur d un code cy
clique, 78
New group mode, 310 Polynme gnrateur d un code de
NIST, 197 Hamming, 82
Nombre adapt, 258 Polynme gnrateur du CRC, 110
Nombre friable, 258 Polynme irrductible, 81
Nombres de Carmichael, 217 Polynme minimal, 81
Index 335

Polynmes gnrateurs dun code 256


cyclique, 97 Protection des donnes, 292
Polynmes irrductibles primitifs Protocole Internet, 293
de F2, 325 Protocole de Diffie Hellman, 283,
Pr-cryptogramme, 171 288
Prdicat sens unique, 269 Protocole de mise en accord, 283,
Primalit est polynomial, 143 288
Principe de KerchofF, 150, 281 Protocole de Needham Schroeder,
Problmatique du secret, 149 285, 302
Problme de la distance minimale, Protocole Station To Station
136, 138 (STS), 290
Problme de la distance minimale Protocoles des rseaux, 293
dans un corps fini, 137
Problme de la distribution des Quantification, 108
poids, 135 Quick mode, 310
Problme de la primalit, 129, 141
Problme de la satisfiabilit des for Ractivation d une cl, 282
mules boolennes, 131 Rduction de rseaux (cas gnral),
Problme de la somme de sous- 251
ensembles, 139 Rduction gnrique, 132
Problme de la somme de sous- Rseau arithmtique, 248
ensembles dans un corps Rseau de communications, 281
fini, 137 Rseau de substitutions / permuta
Problme du couplage trois tions, 177
(3DM), 134 Rseau entier, 248
Problme du dcodage de paquets Rseaux arithmtiques, 247
derreurs, 88 Rsidus quadratiques, 217, 255
Problme du dcodage des codes li Rsolution de ax = b mod n, 155
naires, 133 Rvolution Internet, 291
Problme du logarithme discret, Racine carre modulaire, 217
145, 221 Racine primitive, 80
Problme du plus court chemin Racines ne de lunit, 80
dans un graphe, 103 Rapidit de RSA, 220
Problme du poids des classes lat Rapport signal/bruit, 108
rales, 133 Rayon de recouvrement, 41
Problme, formulation, 121 Record protocol, 316
Problmes de calcul, 122 Record protocol, 315
Problmes de dcision, 122 Redondance, 61, 110
Problmes de sac dos faciles, 211 Refus de service, 292
Produit de polynmes, 96 Registre linaire rtro-
Profondeur d un entrelacement, 90 propagation, 319
Proprit de cyclicit, 77 Registres linaires, 111
Proprit de dtection de erreurs Registres linaires dcalage, 319
dans les CRC, 111 Replay Attack, 278
Proprits du symbole de Jacobi, Reprsentation polynomiale, 95,
257 110
Proprits du symbole de Legendre, dfinition, 78
336 Codage, cryptologie & applications

Request For Comrnents (RFC), 294 SSH, 303, 313


Retard de lentrelacement, 91 SSL, 314
Rijndael, 193, 197 Suite super-croissante, 211
RIPEMD, 241, 243 Suites alatoires, 163, 267
RSA, 304 Suites pseudo-alatoires, 267
Sur-codage de messages, 95
S/Key, 299 Symbole de Jacobi, 217
Scuriser lhte, 293 Symbole de Jacobi, 257
Scuriser les connexions distantes, Symbole de Legendre, 255
313 Symboles de redondance, 47
Scuriser les courriers lectro Syndrome, 54, 83, 111
niques, 304 Systme cryptographique, 149
Scurit de SMTP, 315 Systme de chiffrement, 149
Scurit calculatoire, 169, 283 Systmes biomtriques, 299
Scurit de HTTP, 315, 317
Scurit de TCP, 314 Table dapproximations linaires,
Scurit de T C P /IP , 307 186
Scurit des rseaux, 291 Table des syndromes, 55
Scurit par lobscurit, 293 Table des diffrentiels, 180
Sac dos, 210 Table des frquences des lettres, 327
Satisfiabilit, 131 Table des frquences relatives des
Schma de communication, 3 lettres en franais., 154
Secure Hash Algorithm (SHA), 237, Tableau standard, 50
241, 305 Taux d information d un code, 46
Serveur d authentification, 302 TCP, 293
Service, 295 TC P /IP , 293, 296
Service dintgrit des donnes, 297 Technique d entrelacement crois,
Service de confidentialit des don 92
nes, 296 Technique d entrelacement, 90
Service dauthentification, 296 Technique d entrelacement avec re
Service de confidentialit, 312 tard, 91
Service de contrle d accs, 296 Test de Friedman, 159
Services de scurit, 296 Test de Kasiski, 158
Services et mcanismes de scurit, Test de Lucas, 142
296 Test de primalit de Fermt, 216
Signal, 3 Test de primalit de Solovay-
Signal sonore, 107 Strassen, 217
Signatures avec hachage, 243 Tests de primalit, 142, 216
Signatures numriques, 223 Thorme de Fermat-Euler, 213
Signatures par El Gamal, 225 Thorme de Cook, 131
Signatures par PGP, 305 Thorme de Pratt, 143
Signatures par RSA, 224 Thorme des nombres premiers,
Simple Mail Transfer Protocol 216
(SMTP), 295 Thorie de linformation, 3, 154,
Somme de sous-ensembles, 210 163
Sous-espace vectoriel, 45 Thorie de la complexit, 121
SPN, 177 Tiers de confiance, 278
Index 337

TLS, 314 Turing, 175


Trame d un flux audio, 108
Trame du GSM, 113 UMTS, 95
Transforme de Hadamard-Walsh,
Vrification d une signature, 224
75
Vrification de la signature dans
Transformation ESP, 312 PGP, 306
Transformation polynomiale, 130 Vecteur d erreur, 49
Transitivit de la rduction polyno Viterbi, 114
miale, 130 Viterbi, algorithme de, 95
Transposition simple tableau, 161 Vitesse relative de DSS, 230
Transpositions, 161 Vitesses relatives de SHA et MD5,
Treillis, 104 237
Turbo codes, 95 Voyager, 116
Bibliographie

[1] L.M. Adleman. On breaking the iterated Merkle-Hellman public-key cryp-


tosystem. In Springer Verlag, editor, C R Y PTO 82, LNCS, pages 303-304,
1982.

[2] M. Agrawal, N. Kayal, and N. Saxena. Primes in P. preprint, 2002.

[3] J.L. Balczar, J. Diaz, and J. Gabarro. Structural Complexity I. Springer


Verlag, 1988.

[4] D. J. Barrett and R. E. Silvermann. SSH Le shell scuris. O Reilly, 2002.

[5] J.P. Barthlmy, G. Cohen, and A. Lobstein. Complexit algorithmique


et problmes de communication. Collection technique et scientifique des
tlcommunications. Masson, 1992.

[6 E.L. Bauer. Decrypted secrets. Springer Verlag, 1997.

[7] M.P. Bai. Codage symbolique. Masson, 1993.

[8] E.R. Berlekamp, R.J. McEliece, and H.C.A. van Tilborg. On the inherent
intractability of certain coding problems. IEEE Transactions on Informa
tion Theory, IT-24 :384-386, 1978.

[9] A. Beutelspacher. Cryptology. The Mathematical Association o f America,


1994.

[10] E. Biham and A. Shamir. Diferential cryptanalysis of DES-like crypto-


systems. In Crypto90, 1990.

[11] R.E. Blahut. Theory and practice of error-control codes. Addison Wesley,
1983.

[12] M. Blum and S. Micali. How to generate cryptographically strong s


quences of pseudo-random bits. SIAM J. Comput, 13 :850 864, 1984.

[13] G. Brassard. A note on complexity and cryptograpliy. IEEE Trans. on


Inform. Theory, IT-25 :232-233, 1979.

[14] G. Brassard. Cryptologie contemporaine. Logique, mathmatiques, infor


matique. Masson, 1993.

[15] J.A. Buchmann. Introduction to cryptography. Undergraduate texts in


mathematics. Springer Verlag, 2001.
340 Codage, cryptologie Sz applications

[16] F. Chabaud and A. Joux. Diferential collisions in SHA-0. In H. Krawczyk,


editor, Crypto98, number 1462 in LNCS, pages 56 -71. Springer Verlag,
1998.

[17] A.M. Cohen, H. Cuypers, and H. Sterk. Some tapas o f computer algebra.
Springer, 1999.

[18] G. Cohen, J.L. Dornstetter, and P. Godlewski. Codes correcteurs der


reurs. Collection technique et scientifique des tlcommunications. Mas
son, 1992.

[19] H. Cohen. A course in com.putational algebraic number theory. Springer


Verlag, 1993.

[20] T.H. Cormen, C.E. Leiserson, and R.L. Rivest. Introduction to algorithm,s.
MIT Press, 1989.

[21] J. Daemen and V. Rijmen. AES proposai : Rijndael. Technical report,


Katholieke Universiteit Leuven, 1999.

[22] J. Daemen and V. Rijmen. The Rijndael bloc cipher. Technical report,
AES proposai, 1999.

[23] J. Daemen and V. Rijmen. The design of Rijndael. Springer Verlag, 2002.

[24] J Davenport, Y. Siret, and E. Tournier. Calcul formel. Masson, 1986.

[25] B. S. Davie and L. L. Peterson. Computer Networks, A System, approach,.


Morgan Kaufmann, 1996.

[26] J.P. Delahaye. La compression des donnes. Pour la science, 217 :177 189,
1995.

[27] M. Demazure. Cours dalgbre, primalit, divisibilit, codes. Cassmi, 1997.

[28] W . Diffie and M.E. Hellman. Multiuser cryptographie techniques. In


AFIPS confrence proceedings, number 46, pages 109 112, 1976.

[29] W. Diffie and M.E. Hellman. New directions in cryptography. IEEE


Trans. on Inform. Theory, 22(6) :644-654, 1976.

[30] H. Dobbertin. Cryptanalysis of MD5 compress. Technical report, German


Information Security Agency, 1996.

[31] H. Dobbertin. The status of MD5 after a recent attack. CryptoBytes,


2(2) :1 7, 1996.

[32] T. ElGamal. A public key cryptosystem and a signature scheme based on


discrte logarithms. IEEE Transactions on Information Theory, 31 :469
472, 1985.

[33] W . Fumy. Internet security protocols. In State o f the art in applied cryp
tography, number 1528 in LNCS, pages 186-206. Springer Verlag, 1997.
Bibliographie 341

[34] W . Fumy. Key management techniques, [n State o f the art in applied cryp-
tography, number 1528 in LNCS, pages 209 223. Springer Verlag, 1997.

[35] M.R. Garey and D.S. Johnson. Computers and intractahility. Freeman,
1979.

[36] S. Garfinkel. PGP. O Reilly & Associates, 1995.

[37] S. Ghernaouti-Hlie. Internet et scurit. Que sais-je. PUF, 2002.

[38] O. Goldreich. The universal Turing m.achine, chapter Randomness, inter


active proofs and zero-knowledge, pages 377-405. Oxford Science Publi
cations, 1988.

[39] O. Goldreich. Foundations o f cryptograpliy. class notes, 1989.

[40] J. Gruska. Foundations o f Computing. International Thomson Publishing,


1997.

[41] C. Hare and Siyan K. Internet firewalls and network security. New Riders
Publishing, 1996.

[42] J. Hartmanis On computational complexity and the nature of computer


science. Communications o f the ACM, 37(10) :37-43, octobre 1994.

[43] J. Hebenstreit. Thorie de linformation. In Encyclopdia Universalis.


pages 301-303. Encyclopdia Universalis, 1997.

[44] H. M. Heys. A tutorial on linear and differential crvptanalysis. Electrical


and Computer Engineering, Faculty of engineering and applied scie nce,
Memorial university of Newfoundland, St Johns. NF, Canada A1B 3X5.

[45] H. M. Heys and S.E. Tavares. Substitution-permutation networks rsistant


to differential and linear cryptanalysis. J. Cryptology, (9) :1 19, 1996.

[46] R. Hill. A first course in coding theory. Oxford University Press, 1986.

[47] D.G. Hoffman, D.A. Lonard, C.C. Linder, K.T. Phelps, C.A. Rodger, and
J.R. Wall. Coding theory, the essentials. Pure and applied mathematics.
Dekker, 1991.

[48] J.E. Hopcroft and J.D. Ullman. Introduction to autom.ata theory, lan-
guages, and computation. Addison-Wesley, 1979.

[49] C. Hunt. TCP/IP, Administration de rseaux. O Reilly & Associates,


Inc., 1993.

[50] M. Iannamico. Pretty Good Privacy, PG P for Personal Privacy, Version


5.0, For the Mac OS, Users Guide. PGP Inc, 1997.

[51] R. Johannesson and K. Sh. Zigangirov. Fundam,entais o f convolutional


coding. Sris on digital and mobile communication. IEEE press, 1999.
342 Codage, cryptologie & applications

[52] G.A. Jones and J.M. Jones. Elementary number theory. SUMS. Springer
Verlag, 1997.

[53] A. Joux. La rduction de rseaux en cryptographie. PhD thesis, Ecole


Polytechnique, 1993.

[54] D. Kahn. La guerre des codes secrets. InterEditions, 1980.

[55] L.R. Knudsen. Block ciphers - a survey. In Springer Verlag, editor, State
o f the art in applied cryptography, number 1528 in LNCS, pages 18-48,
1998.

[56] N. Koblitz. A course in number theory and cryptography. Graduate texts


in mathematics. Springer Verlag, 1987.

[57] A.N. Kolmogorov. Three approaches to the quantitative dfinition of in


formation. Problemy Pederachi Informatsii, 1 :311, 1965.

[58] E. Kranakis. Primality and cryptography. Teubner sris in computer


science. Wiley, 1986.

[59] X. Lagrange, P. Godlewski, and S. Tabbane. Rseaux GSM-DCS. Hermes,


1995.

[60] L. Lamport. Password authentication with insecure communication. Com


munications o f the ACM, 24(11) :770-772, 1981.

[61] S. Lang. Algebra. Addison Wesley, 1970.

[62] S. Lang. Algbre linaire, volume 1. InterEditions, 1976.

[63] S. Lang. Algbre linaire, volume 2. InterEditions, 1976.

[64] D.A. Lelewer and D.S. Hirschberg. Data compression. A C M computing


surveys, 19(3) :261-296, 1987.

[65] H.R. Lewis and C.H. Papadimitriou. Elments o f the theory of computa
tion. Prentice-Hall, 1981.

[66] M. Li and P. Vitnyi. An introduction to Kolmogorov complexity and its


applications. Springer Verlag, 1993.

[67] SSH Communications Security Ltd. Ssh ipsec express. Technical report,
White Paper, 1998.

[68] F.J. MacWilliams and N.J.A. Sloane. The theory o f error correcting codes.
North-Holland, 1977.

[69] X. Marsault. Compression et cryptage en informatique. Hermes, 1992.

[70] M. Matsui. Linear cryptanalysis method for DES cipher. In Eurocrypt93,


1993.
Bibliographie 343

[71] A. Menezes, P. van Oorschot, and S. Vanstone. Handbook of applied cryp


tography. CRC Press, 1997.

[72] C.J. Mitchell, F. Piper, and P. Wild. Digital signatures. In J. Sim-


mons, editor, Contem.porary cryptology, the science of information inte-
grity, chapter 6. IEEE Press, 1991

[73] A. M. Odlvzko. The rise and fall of knapsack cryptosystems. In C. Pome-


rance, editor, Cryptology and Computational Number Theory, volume 42
of Proc. Symp. Appl. Math,., pages 75-88, 1990.

[74] R. Oppliger. Internet and intranet security. Artech House, 1998.

[75] C.H. Papadimitriou. Computational complexity. Addison Wesley, 1994.

[76] A. Poli and Ll. Huguet. Codes correcteurs. Number 1 in Logique, math
matiques, informatique. Masson, 1989.

[77] R.L. Rivest. Cryptography. In Handbook of Theoretical Computer Science,


volume A, chapter 13. Elsevier, 1990.

[78] R.L. Rivest, A. Shamir, and L. Adleman. A Method for Obtaining Di


gital Signatures and Public-Key Cryptosystems. Comm,. of the ACM,
21(2) :120 126, 1978.

[79] D.E. Robling-Denning. Cryptography and data security. Addisson Wesley


Publishing Company, 1983.

[80] S. Roman. Introduction to coding and information theory. Springer Verlag,


1996.

[81] A. Salomaa. Public K ey Cryptography. EATCS monographs. Springer


Verlag, 1990.

[82] D. Salomon. Data compression, the complt reference. Springer Verlag,


1998.

[83] B. Schneier. Cryptographie Applique. International Thomson Publishing,


1995.

[84] C.E. Shannon and W . Weaver. The mathem.atical theory o f communica


tion. University o f Illinois press, 1964.

[85] S. Skiena. The algorithm,s design manual. Springer Verlag, 1998.

[86] J. Stern. La science du secret. Odile Jacob, 1998.

[87] D. Stinson. Cryptographie, thorie et pratique. International Thomson


Publishing, 1995.

[88] J.H. van Lint. Introduction to coding theory. Graduate texts in mathe-
matics. Springer Verlag, deuxime dition, 1992.
344 Codage, cryptologie & applications

[89] J.H. van Lint. Handbook o f combinatorics, volume 1, chapter Codes, pages
775 -807 North Holland, 1995.

[90] M. Vandenwauver and F. Jorissen. Securing internet electronic mail. In


Springer Verlag, editor, State o f the art in applied cryptoqraphy, number
1528 in LNCS, pages 142-162, 1997.

[91] A. Vardy. The intractability of computing the minimum distance of a code.


IEEE Transactions on Information Theory, IT43 :1757- 1766, 1997.

[92] A. J. Viterbi and Jim K. Omura.. Communications and information theory.


McGraw-Hill, 1979.

[93] J. von zur Gathen and J. Gerhard. Modem Computer Algebra. Cambridge
University Press, 1999.

[94] T. A. Welch. A technique for high performance data compression. Com


puter, 17(6) :819. 1984.

[95] S.B. Wicker. Deep space applications. In Handbook of Coding Theory,


volume II, chapter 25. North Holland, 1998.

[96] J. Wolfmann and O. Papini. Algbre discrte et codes correcteurs. Num


ber 20 in Mathmatiques &; Applications. Springer Verlag, 1994.

[97] P. Wolper. Introduction la calculabilit. InterEditions, 1991.

[98] A.C. Yao. Theory and applications of trapdoor functions. In Proc. 23rd
IEEE Symp. on Foundations of Computer Science, pages 80-91, 1982.

[99] J.-P. Zanotti. Codage d un signal audio-numrique. Rapport de recherche


3333, INRIA, 1998.

[100] J. Ziv and A. Lempel. A universal algorithm for sequential data com
pression. IEEE Transactions on Information Theory, IT-23(3) :337-343,
1977.

[101] J. Ziv and A. Lempel. Compression of individual sequences via variable-


rate coding. IEEE Transactions on Information Theory, IT-24(5) :530-
536, 1978.

[102] G. Zmor. Cours de cryptographie. Cassini, 2000.


Dans la mme collection

Aux ditions Eyrolles


D e l a l o g i q u e c b l e a u x m i c r o p r o c e s s e u r s , p ar J.-M . B ernard et J. Hugon.
Tome 1. - Circuits combinatoires et squentiels fondamentaux, avec la collaboration de
R. le Corve, 1983, 6e tirage, 232 pages, (puis).
Tome 2. - Applications directes des circuits fondamentaux, 1983, 6e tirage, 148 pages,
(puis).
Tome 3. - Mthodes de conception des systmes. 1986, 7e tirage, 164 pages, (pu is).
Tome 4. - A pplication des mthodes de synthse. 1987, 8 ' tirage, 272 pages.
L a c o m m u t a t i o n l e c t r o n i q u e , p a r G r in s e c , (puis).
Tome 1. - Structure des systmes spatiaux et temporels. 1984, 3' tirage, 456 pages.
Tome 2. - Logiciel. M ise en uvre des systmes, 1984, 3' tirage, 512 pages.
O p t i q u e e t t l c o m m u n i c a t i o n s , Transmission e t traitement optiques d e l information, par
A . Cozannet, J. Fleuret, H . M atre et M . Rousseau. 1983, 2e tirage, 512 pages, (puis).
RadarmTOROLOGIE, T ldtection active de l atm osphre , par H. Sauvageot, 1982,
312 pages.
P r o b a b i l i t s , s ig n a u x , b r u i t s , par J. Dupraz, 1983, 2 e tirage, 384 pages, (puis).
M t h o d e s s t r u c t u r e l l e s p o u r l a r e c o n n a i s s a n c e d e s f o r m e s , par L. M iclet. 1984,
208 pages.
I n t r o d u c t i o n a u x r s e a u x d e f i l e s d a t t e n t e , par E. Gelenbe et G. Pujolle, 1985,
2e tirage, 208 pages, (puis).
A p p l i c a t i o n s d e s t r a n s i s t o r s e f f e t d e c h a m p e n a r s n i u r e d e g a l l i u m , coordonn par
R. Soares, J. Obregon et J. G raffeuil, 1984, 532 pages.
P r a t i q u e d e s c i r c u i t s l o g i q u e s , par J.-M . Bernard et J. Hugon. 1990,4e dition, 480 pages,
(pu is).
T h o r i e d e s g u i d e s d o n d e s l e c t r o m a g n t i q u e s , par Ch. Vassallo.
Tome 1. - 1985, 504 pages.
Tome 2. - 1985, 700 pages.
C o n c e p t i o n d e s c i r c u i t s i n t g r s M O S, Elm ents d e base, p ersp ectiv es , par M . Cand,
E. D em oulin, J.-L. Lardy et P. Senn, 1986, 472 pages.
T h o r i e d e s r s e a u x e t s y s t m e s l i n a i r e s , par M . Feldmann. 1987, 2edition,
424 pages,(puis).
C o n c e p t i o n s t r u c t u r e d e s s y s t m e s l o g i q u e s , par J.-M. Bernard, 1987, 2e tirage,
400 pages.
P r v i s i o n d e l a d e m a n d e d e t l c o m m u n i c a t i o n s , M thod es et modles, par N . Curien et
M . Gensollen, 1989, 488 pages.
S y s t m e s d e r a d i o c o m m u n i c a t i o n s a v e c l e s m o b i l e s , par J.-G. Rmy, J. Cueugniet et
C. Siben, 1992, 668 pages.
I n n o v a t i o n , d r g l e m e n t a t i o n e t c o n c u r r e n c e d a n s l e s t l c o m m u n i c a t i o n s , par
L. Benzoni et J. Hausman, 1993. 344 pages.
L e s TLCOMMUNICATIONS, T echnologies, rseaux, serv ices, par L.-J. Libo is, 1994,
216 pages.
346 Codage, cryptologie et applications

I n n o v a t i o n e t RECHERCHE e n t l c o m m u n i c a t i o n s , P rog rs techniques e t en jeux


con om iques, par M . Feneyrol et A . Gurard, 1994, 328 pages.
L e s o n d e s v a n e s c e n t e s e n o p t i q u e e t e n o p t o l e c t r o n i q u e , par F. de Fornel, 1997,
312 pages.
C o d e s i g n , c o n c e p t i o n c o n j o i n t e l o g i c i e l - m a t r i e l , par C.T.I. Comete, 1998, 204 pages
I n t r o d u c t i o n a u D a t a M in in g . A nalyse intelligente des donnes, par M ich e l Jambu, 1998,
114 pages
M t h o d e s d e b a s e d e l a n a l y s e d e s d o n n e s , par M ich e l Jambu, 1999, 412 pages + CD
ROM.
D e s t l c o m s l I n t e r n e t : c o n o m i e d u n e m u t a t i o n , par E . Turpin, 2000,459 pages.

I n g n i e r i e d e s c o n n a i s s a n c e s , volutions rcen tes e t nouveaux dfis, par J. Charlet,


M . Zacklad, G. Kassel et D. Bourigault, 2000.
E m is s io n p h o t o n i q u e e n m i li e u c o n f i n , par A . Rahmani et F. de Fornel, 2000, 190 pages.
A p p r e n t i s s a g e a r t i f i c i e l , c o n c e p t s e t a l g o r i t h m e s ; par A . Cornujols et L . M iclet, 2002,
590 pages.

Aux ditions Dunod


l e c t r o m a g n t i s m e c l a s s i q u e d a n s l a m a t i r e , par Ch. Vassallo, 1980,272 pages,
(puis).
T l c o m m u n i c a t i o n s , O b je c tif2000, sous la direction de A . G low inski, 1981, 2' tirage,
300 pages, (puis).
P r in c ip e s d e s c o m m u n i c a t i o n s n u m r iq u e s , par A.-J. V ite rb i et J.-K. Omura, Traduit de
l anglais par G. Batail, 1982, 232 pages, (puis).
P r o p a g a t i o n d e s o n d e s r a d i o l e c t r i q u e s d a n s l e n v i r o n n e m e n t t e r r e s t r e , par
L . Boithias, 1984, 2e tirage, 328 pages, (puis).
S y s t m e s d e t l c o m m u n i c a t i o n s , B ases d e transmission, par P.-G. Fontolliet, 1984,
2e tirage, 528 pages, (puis).
l m e n t s d e COMMUNICATIONS NUMRIQUES, Transmission su r fr q u e n c e porteuse, par
J.-C. B ic, D. Duponteil et J.C. Imbeaux, (puis).
Tome 1. - 1986, 384 pages.
Tome 2. 1986, 328 pages.
TLINFORMATIQUE, Transport e t traitem ent d e l information dans les rseaux e t systm es
tlinform atiques e t tlm atiques, par C. M acchi, J.-F. G uilbert et 13 co-auteurs, 1987,
934 pages.
L e s SYSTMES DE TLVISION EN ONDES MTRIQUES ET DCIMTRIQUES, p a r L . GouSSOt, 1987,
376 p a g e s, (puis).
P r o g r a m m a t i o n m a t h m a t i q u e , Thorie e t algorithmes, p ar M . M in ou x, (pu is).
Tome 1. 1987, 328 pages.
Tome 2. - 1989, 272 pages.
E x p l o r a t i o n i n f o r m a t i q u e e t s t a t i s t i q u e d e s d o n n e s , par M . Jambu, 1989,528 pages,
(pu is).
TLMATIQUE, Techniques, normes, services, cooidonn par B. M arti, 1990, 776 pages.
COMPATIBILIT l e c t r o m a g n t i q u e , Bruits e t perturbations radiolectriques, sous la
direction de P. Degauque et J. Ham elin, 1990, 688 pages.
Dans la mme collection 347

L e s f a i s c e a u x h e r t z i e n s a n a l o g i q u e s e t n u m r iq u e s , par E. Femandez et M . Mathieu,


1991, 648 pages.
L e s t l c o m m u n i c a t i o n s p a r f i b r e s o p t i q u e s , par I et M . Joindot et douze co-auteurs,
1996, 768 pages.

Aux ditions Masson


S t r o p h o n i e , C ours de r e lie f so n ore th orique e t appliqu, par R. Condamines, 1978,
320 pages.
L e s R s e a u x p e n s a n t s , Tlcom m unications et socit, so u s la d irection d e A . G iraud,
J.-L. M issika et D. W olton. 1978, 296 pages (puis).
F o n c t i o n s a l a t o i r e s , par A . Blanc-Lapierre et B Picinbono. 1981, 440 pages.
P s y c h o a c o u s t i q u e , L o reille rcep teu r d information, pa rE . Z w icke r et R. Feldtkeler,
traduit de l allemand par C.Sorin, 1981, 248 pages.
D c i s i o n s e n t r a i t e m e n t d u s i g n a l , par P.- Y . A rq u s, 1982, 2 e d ition 2 8 8 p a g e s (puis).
T l c o m m u n i c a t i o n s s p a t i a l e s , p ar d e s in g n ieu rs d u CNES et d u C N E T (puis).
Tome 1. - Bases thoriques, 1982, 432 pages.
Tome 2. - Secteur spatial, 1983, 400 pages.
Tome 3. - Secteur terrien, Systmes de tlcommunications par satellites, 1983,468 pages.
G e n s e e t c r o i s s a n c e d e s t l c o m m u n i c a t i o n s , par L.-J. Libois, 1983,432 pages ( p u is ).
L e V i d o t e x , Contribution au x d bats sur la tlm atique c o o r d o n n p ar C l. A n c e lin et
M . M a rch a n d , 19 84, 2 5 6 p ag es.
c o u l e m e n t d u t r a f i c d a n s l e s a u t o c o m m u t a t e u r s , par G. Hbuterne, 1985,264 pages.
L E u r o p e d e s P o s t e s e t T l c o m m u n i c a t i o n s , par CI. Labarrre, 1985, 256 pages.
T r a i t e m e n t d u s i g n a l p a r o n d e s l a s t i q u e s d e s u r f a c e , par M . Feldmann et J. Hnaff.
1986, 400 pages.
T h o r i e d e l i n f o r m a t i o n o u a n a l y s e d i a c r i t i q u e d e s s y s t m e s , par J. Oswald, 1986,
488 pages.
L e s v i d o d i s q u e s , par G. Broussaud, 1986, 216 pages.
L e s p a r a d i s i n f o r m a t i o n n e l s , D u m in itel a u x s e r v ic e s d e co m m u n ica tio n du fu tu r, par
M . Marchand et le SPES, 1987, 256 pages.
S y s t m e s e t r s e a u x d e t l c o m m u n i c a t i o n e n r g im e s t o c h a s t i q u e , p ar G. Doyon,
1989, 704 pages.
P r in c ip e s d e t r a i t e m e n t d e s s i g n a u x r a d a r e t s o n a r , par R. L e Chevalier, 1989.
280 pages.
CIRCUITS i n t g r s e n a r s n i u r e d e g a l l i u m , Physique, tech n ologie e t rgles de con ception ,
par R. Castagn, J. P. Duchemin, M . Gloanec et G. Rumelhard, 1989, 608 pages.
A n a l y s e d e s s i g n a u x e t f i l t r a g e n u m r iq u e a d a p t a t i f , par M . Bellanger, 1989,
416 pages, (puis).
L a p a r o l e e t s o n t r a i t e m e n t a u t o m a t i q u e , par Calliope, 1989, 736 pages.
L es FILTRES n u m r iq u e s , A nalyse e t synthse des filtres unidimensionnels, par R. Boite et
H. Leich, 1990, 3e dition, 432 pages.
L e s m o d e m s p o u r t r a n s m i s s i o n d e d o n n e s , par M . Stein, 1991, 384 pages.
L a m e s u r e d e l a f r q u e n c e d e s o s c i l l a t e u r s , par Chronos, 1992, 368 pages.
T r a i t e m e n t s d e s s i g n a u x p o u r l e s s y s t m e s s o n a r , par M . Bouvet, 1992, 504 pages.
C o d e s CORRECTEURS d e r r e u r s , Une introduction au cod a g e algbrique, par G. Cohen,
Ph. Godlewski, J.-L. Dornstetter, 1992, 272 pages.
C o m p l e x i t a l g o r i t h m i q u e e t p r o b l m e s d e c o m m u n i c a t i o n s , par J.-P. Barthlmy,
G. Cohen et A. Lobstein. Prface de M .M in o u x, 1992, 256 pages.
348 Codage, cryptologie et applications

G e s t i o n d e RSEAUX, Concepts, e t outils, par Arpge, 1992, 272 pages.


L e s n o r m e s d e g e s t i o n d e r s e a u l i s o , par C. Lecerf et D. Chomel, 1993, 272 pages.
L i m p l a n t a t i o n i o n i q u e p o u r l a m i c r o l e c t r o n i q u e e t l o p t i q u e , par P-N. Favennec,
1993, 532 pages.
T e c h n i q u e d e c o m p r e s s i o n d e s s ig n a u x , par N. Moreau, 1994, 288 pages.
L e RNIS. T echniques e t atouts, p ar G . D ic e n e t, 19 95, 3 e d ition , 3 1 2 p a g es.
T h o r i e s t r u c t u r a l e d e l a c o m m u n i c a t i o n e t s o c i t par A .- A . Moles, 1995,3 tirage,
296 pages.
T r a i t e m e n t n u m r iq u e d u s i g n a l . T horie e t pratique, par M. Bellanger. 1995, 5e dition,
480 pages.
T l c o m m u n i c a t i o n , R alits e t virtualits : un aven ir p o u r le X X e sicle, par
M. Feneyrol, 1996, 256 pages.
C o m p r e n d r e l e s m t h o d e s f o r m e l l e s , P a n o r a m a e t o u t i l s l o g i q u e s , par J.-F. Monin,
1996, 320 pages.
L a p r o g r a m m a t i o n R a c t i v e , A pplication aux systm es communicants, par F. Boussinot,
1996, 280 pages.
I n g n i e r i e d e s s y s t m e s m i c r o p r o c e s s e u r s , A pplication au traitement du signal e t de
l image, par E. Martin et J.-L. Philippe, 1996, 320 pages.
L e r g im e ju r i d i q u e c o m m u n a u t a i r e d e s s e r v i c e s d e t l c o m m u n i c a t i o n s , par
A. Blandin-Obernesser, 1996, 216 pages.
P a y s a g e d e s r s e a u x d e t l c o m m u n i c a t i o n s , par R. Parfait, 1997, 376 pages.
L e c o m p l e x e d e B a b e l , C rise ou m atrise d e l information ? , par Jean Voge, 1997,
192 pages.
L a t l v i s i o n h a u t e d f i n i t i o n (TVHD), par A . Boukelif, 1997, 233 pages.

A la Documentation franaise
L e s t l c o m m u n i c a t i o n s f r a n a i s e s , Q uel statut p o u r qu elle entreprise ?, par
G. Bonnetblanc, 1985, 240 pages.
L a c o m m u n i c a t i o n a u QUOTIDIEN. D e la tradition e t du changem ent l au be d e la
vidocom m unication, par J. Jouet, avec la collaboration de N. Celle, 1985, 240 pages.

L o r d r e c o m m u n i c a t i o n n e l , L es nouvelles tech n ologies d e la com m unication : en jeu x et


stratgies . par F. du Castel, P. Chambat et P. Musso, 1989, 352 pages.
H i s t o i r e D ENFANCE, L es rseaux c b ls audiovisuels en France, par J.-M. Charon,
J. -P. Simon, avec la participation de B.Mige, 1989, 240 pages.
L a COMMUNICATION p l u r i e l l e , L interaction dans les tlcon fren ces, coordonn par
P. Prin et M. Gensollen, 1992, 304 pages.
M t a p h o r e e t m u l t im d i a , C on cepts e t applications, par G. Poulain, 1996, 240 pages.

H i s t o i r e c o m p a r e d e s t r a t g i e s d e d v e l o p p e m e n t d e s t l c o m m u n i c a t i o n s , par
A.-M . Delaunay Macullan, 1997, 166 pages.

Aux Presses polytechniques et universitaires romandes


A D A AVEC LE SOURIRE, par J.-M. Berg, L.-O. Donzelle, V. Olive et J. Rouillard, 1989,
400 p a g e s.
Dans la mme collection 349

SYSTMES m i c r o p r o g r a m m s , Une introduction au m agiciel, p a r D . M a n g e , 1990,


384 pages.
R s e a u x d e n e u r o n e s r c u r s i f s p o u r m m o ir e s a s s o c i a t i v e s , par Y. Kamp et M . Hasler,
1990, 244 pages.
VHDL, D u langage la modlisation, par R. Airiau, J.-M. Berg, V. Olive et J. Rouillard,
1990, 576 pages (puis).
la direction de M. Kunt,
T r a i t e m e n t d e l 'i n f o r m a t i o n , s o u s
Volume 1. - Techniques modernes de traitement numrique des signaux, 1991, 440 pages.
Volume 2. - Traitement numrique des images, 1993, 584 pages.
Volume 3. - Reconnaissance des formes et analyse de scnes, 2000, 306 pages.
E f f e t s n o n l i n a i r e s d a n s l e s f i l t r e s n u m r iq u e s , par R. Boite, M. Hasler et H. Dedieu,
1997, 226 pages.
VHDL, Langage, m odlisation, synthse, par R. Airiau, J.-M. Berg, V. Olive et J. Rouillard,
1998, 568 pages.
O b je ts r a c t i f s e n Java, par F. Boussinot, 2000, 183 pages.

Aux ditions Springer


ASN .l - c o m m u n ic a tio n e n t r e s y s t m e s h t r o g n e s , par O. Dubuisson, 1999,
546 pages.
D r o it e t s c u r it d e s t l c o m m u n ic a tio n s , par C. Guerrier et M.-C. Monget, 2000,
458 pages.
SDH, n o r m e s , r s e a u x e t s e r v ic e s , par T. Ben Meriem, 2000, 633 pages.
T r a ite m e n t d u s ig n a l a l a t o ir e , par T. Chonavel, 2000, 296 pages, CD Rom.
L e c h a m p p r o c h e o p t iq u e , t h o r i e e t a p p lic a t io n s , par D. Courjon et C. Bainier, 2002, 344
pages.
C o m m u n ic a t io n a u d i o v i s u e l le , par E. Rivier, 2002,456 pages.
L a p r o p a g a t io n d e s o n d e s r a d io le c t r iq u e s , par H. Sizun, 2002, 360 pages.
O p t o le c t r o n iq u e m o l c u la ir e e t p o ly m r e : d e s c o n c e p ts a u x co m p o sa n ts , par
A. Moliton. 2003, 421 pages.

Aux ditions Hermes Science


P r o je t e t in n o v a tio n , par G. Poulain, 2000.
I n t r o d u c tio n a u x m th o d e s fo r m e lle s , par J.-F. Monin. 2000, 351 pages.
UMTS e t p a r t a g e d e l e s p a c e h e r tz ie n , parL. Genty, 2001, 390 pages.
R s e a u x d e t l c o m m u n ic a tio n s , par R. Parfait, 2002, 512 pages.
O b je t s c o m m u n ic a n ts , par C. Kintzig, G. Poulain, G. Privt et P.-N. Favennec, 2002,
396 pages.
T r a f ic e t p e r fo r m a n c e s d e s r s e a u x d e t l c o m s , par G. Fiche et G. Hbuteme, 2003,
592 pages.
L e t l p h o n e p u b lic - c e n t a n s d u s a g e s e t d e t e c h n iq u e s , par F. Carmagnat, 2003,
310 pages.
par J.-M. Lourtioz, H. Benisty,
L e s c r is t a u x p h o to n iq u e s o u l a lu m i r e e n c a g e ,
V. Berger, J.-M. Grard et A. Tchelnokov, 2003,430 pages.
M a n a g e m e n t d e s c o n n a is s a n c e s e n e n t r e p r is e , par I. Boughzala et J.-L. Ermine, 2004,
310 pages.
350 Codage, cryptologie et applications

L es a g e n ts in t e llig e n t s p o u r u n n o u v e a u co m m e rce le c t r o n iq u e , par C. Paraschiv,


2004, 246 pages.
D e B l u e t o o t h W iR - s c u r i t , q u a l i t d e s e r v i c e , a s p e c t s p r a t iq u e s ; par H. Labiod et
H. Afifi, 2004, 300 pages.