Sie sind auf Seite 1von 354

SCIENCES SUP

Cours et exercices avec solutions


Master coles dingnieurs

THORIE DES CODES


Compression, cryptage, correction
Jean-Guillaume Dumas Jean-Louis Roch ric Tannier Sbastien Varrette

THORIE DES CODES


Compression, cryptage, correction

Jean-Guillaume Dumas
Matre de confrences luniversit Grenoble 1

Jean-Louis Roch
Matre de confrences lENSIMAG

ric Tannier
Chercheur de lINRIA Rhne-Alpes luniversit Lyon 1

Sbastien Varrette
Doctorant luniversit du Luxembourg

Illustration de couverture : Antenne-relais de transmission sur le mont Pisgah dans les Appalaches. Photographie de Jean-Guillaume Dumas.

Dunod, Paris, 2007 ISBN 9-78-210-050692-7

Prambule e
Cet ouvrage a t initi au printemps 2000, avec la cration du Dpartement ee e e e ENSIMAG-ENSERG Tlcommunications ` lInstitut National Polytechnique ee a de Grenoble et la construction dun cours gnral de premi`re anne (niveau e e e e Licence troisi`me anne dans le schma LMD) dintroduction aux codes et ` e e e a leurs applications. e Edit initialement sous forme de polycopi, il a volu en devenant un support e e e de cours de rfrence pour dirents cours des universits de Grenoble, ` la ee e e a fois ` lInstitut National Polytechnique de Grenoble (INPG) et ` lUniversit a a e Joseph Fourier (UJF). Nous remercions nos coll`gues qui ont particip ` ces enseignements et ont e e a contribu par leurs commentaires ` amliorer notre support de cours : Gilles e a e Debunne, Yves Denneulin, Dominique Duval, Grgory Mouni et Karim Sae e mak. e

Grenoble, Lyon, Luxembourg, le 19 dcembre 2006. e Jean-Guillaume Dumas, Jean-Louis Roch, Eric Tannier, Sbastien Varrette. e

Sommaire
Introduction 1 Thorie des codes e 1.1 De Jules Csar ` la tlcopie . . . . . . . . . . . . . . . . e a ee 1.1.1 La source : de limage ` la suite de pixels . . . . . a 1.1.2 La compression du message . . . . . . . . . . . . . 1.1.3 La dtection derreurs . . . . . . . . . . . . . . . . e 1.1.4 Le chirement . . . . . . . . . . . . . . . . . . . . 1.1.5 Le dcodage . . . . . . . . . . . . . . . . . . . . . . e Lattaque et le dchirement . . . . . . . . . . . . e La dcompression et les pertes . . . . . . . . . . . e 1.1.6 Les dfauts de ce code . . . . . . . . . . . . . . . . e 1.1.7 Ordres de grandeur et complexit des algorithmes e Taille des nombres . . . . . . . . . . . . . . . . . . La vitesse des ordinateurs . . . . . . . . . . . . . . Taille et ge de lunivers . . . . . . . . . . . . . . . a Complexit des algorithmes . . . . . . . . . . . . . e 1.2 Codage par ot et probabilits . . . . . . . . . . . . . . . e 1.2.1 Le code de Vernam . . . . . . . . . . . . . . . . . . 1.2.2 Un peu de probabilits . . . . . . . . . . . . . . . . e enements et mesure de probabilit . . . . . . . . Ev` e Probabilits conditionnelles et Formule de Bayes . e 1.2.3 Entropie . . . . . . . . . . . . . . . . . . . . . . . . Source dinformation . . . . . . . . . . . . . . . . . Entropie dune source . . . . . . . . . . . . . . . . Entropies conjointe et conditionnelle . . . . . . . . Extension dune source . . . . . . . . . . . . . . . 1.2.4 Chirement parfait . . . . . . . . . . . . . . . . . . 1.2.5 Mise en pratique du chirement parfait ? . . . . . . 1.3 Codage par blocs, alg`bre et arithmtique . . . . . . . . . e e 13 19 19 19 20 21 22 23 23 24 24 26 26 26 27 27 28 29 30 30 31 32 32 33 34 35 36 37 37

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

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

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

6 1.3.1

Sommaire Blocs et modes de cha nage . . . . . . . . . . . . . . . Le mode ECB : Electronic Code Book . . . . . . . . . Le mode CBC : Cipher Bloc Chaining . . . . . . . . . Le mode CFB : Cipher FeedBack . . . . . . . . . . . . Le mode OFB : Output FeedBack . . . . . . . . . . . . Le mode CTR : Counter-mode encryption . . . . . . . 1.3.2 Structures algbriques des mots de codes . . . . . . . e Groupes . . . . . . . . . . . . . . . . . . . . . . . . . . Anneaux . . . . . . . . . . . . . . . . . . . . . . . . . Corps . . . . . . . . . . . . . . . . . . . . . . . . . . . Espaces vectoriels . . . . . . . . . . . . . . . . . . . . Alg`bre linaire . . . . . . . . . . . . . . . . . . . . . . e e 1.3.3 Codage bijectif dun bloc . . . . . . . . . . . . . . . . Inverse modulaire : algorithme dEuclide . . . . . . . . Lindicatrice dEuler et le thor`me de Fermat . . . . e e Lexponentiation modulaire et le logarithme discret . . Fonctions ` Sens Unique . . . . . . . . . . . . . . . . . a 1.3.4 Construction des corps premiers et corps nis . . . . . Tests de primalit et gnration de nombres premiers . e e e Arithmtique des polynmes . . . . . . . . . . . . . . e o Lanneau V [X]/P et les corps nis . . . . . . . . . . . Polynmes irrductibles . . . . . . . . . . . . . . . . . o e Constructions des corps nis . . . . . . . . . . . . . . 1.3.5 Implmentations des corps nis . . . . . . . . . . . . . e Oprations sur les polynmes . . . . . . . . . . . . . . e o Utilisation des gnrateurs . . . . . . . . . . . . . . . e e Racines primitives . . . . . . . . . . . . . . . . . . . . 1.3.6 Gnrateurs pseudo-alatoires . . . . . . . . . . . . . . e e e Les gnrateurs congruentiels . . . . . . . . . . . . . . e e Les registres ` dcalage linaire . . . . . . . . . . . . . a e e Gnrateurs cryptographiquement srs . . . . . . . . . e e u Quelques tests statistiques . . . . . . . . . . . . . . . . Dcoder, dchirer, attaquer . . . . . . . . . . . . . . . . . . e e 1.4.1 Dcoder sans ambigu e . . . . . . . . . . . . . . . . . e t Proprit du prxe . . . . . . . . . . . . . . . . . . . ee e Larbre de Human . . . . . . . . . . . . . . . . . . . Reprsentation des codes instantans . . . . . . . . . . e e Thor`me de McMillan . . . . . . . . . . . . . . . . . e e 1.4.2 Les codes non injectifs . . . . . . . . . . . . . . . . . . Lempreinte de vrication . . . . . . . . . . . . . . . e Les fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 39 40 40 41 41 42 42 43 44 45 46 46 49 52 54 55 55 58 59 60 63 64 64 65 66 69 71 71 74 74 76 77 78 80 81 81 82 82 83

1.4

Thorie des codes e

1.4.3

Transformations avec perte . . . . . . . . . . . . . . . . 87 Transforme de Fourier et transforme discr`te . . . . . 87 e e e Algorithme de la DFT . . . . . . . . . . . . . . . . . . . 89 e DFT et racines ni`mes de lunit dans un corps ni . . . 90 e Produit rapide de polynmes par la DFT . . . . . . . . 92 o Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . 93 Attaque des gnrateurs congruentiels linaires . . . . . 93 e e e Algorithme de Berlekamp-Massey pour la synth`se de e registres ` dcalage linaire . . . . . . . . . . . 94 a e e Le paradoxe des anniversaires . . . . . . . . . . . . . . . 97 Attaque de Yuval sur les fonctions de hachage . . . . . . 98 Factorisation des nombres composs . . . . . . . . . . . 98 e Nombres premiers robustes . . . . . . . . . . . . . . . . 103 Rsolution du logarithme discret . . . . . . . . . . . . . 104 e . . . . . . . . . . . . . . . . . . . . . . . . . 107 108 108 109 110 111 111 114 117 117 119 120 122 122 123 124 125 126 126 127 128 129 132 132 136 137

2 Thorie de linformation et compression e 2.1 Thorie de linformation . . . . . . . . . . . . . . . . . . . . . e 2.1.1 Longueur moyenne dun code . . . . . . . . . . . . . . 2.1.2 Lentropie comme mesure de la quantit dinformation e 2.1.3 Thor`me de Shannon . . . . . . . . . . . . . . . . . . e e 2.2 Codage statistique . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Algorithme de Human . . . . . . . . . . . . . . . . . Lalgorithme de Human est optimal . . . . . . . . . . 2.2.2 Codage arithmtique . . . . . . . . . . . . . . . . . . . e Arithmtique ottante . . . . . . . . . . . . . . . . . . e Arithmtique enti`re . . . . . . . . . . . . . . . . . . . e e En pratique . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Codes adaptatifs . . . . . . . . . . . . . . . . . . . . . Algorithme de Human dynamique pack . . . . . . Compression dynamique . . . . . . . . . . . . . . . . . Dcompression dynamique . . . . . . . . . . . . . . . . e Codage arithmtique adaptatif . . . . . . . . . . . . . e 2.3 Heuristiques de rduction dentropie . . . . . . . . . . . . . . e 2.3.1 RLE Run Length Encoding . . . . . . . . . . . . . . Le code du fax (suite et n) . . . . . . . . . . . . . . . 2.3.2 Move-to-Front . . . . . . . . . . . . . . . . . . . . . . 2.3.3 BWT : Transformation de Burrows-Wheeler . . . . . . 2.4 Codes compresseurs usuels . . . . . . . . . . . . . . . . . . . . 2.4.1 Algorithme de Lempel-Ziv et variantes gzip . . . . . 2.4.2 Comparaison des algorithmes de compression . . . . . 2.4.3 Formats GIF et PNG pour la compression dimages .

8 2.5 La compression avec perte . . . . . . . . . . . . . . . . 2.5.1 Dgradation de linformation . . . . . . . . . . e 2.5.2 Transformation des informations audiovisuelles 2.5.3 Le format JPEG . . . . . . . . . . . . . . . . . 2.5.4 Le format MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Sommaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 137 138 139 141 143 143 143 145 146 146 147 147 147 149 149 151 151 152 152 153 153 155 156 156 158 161 165 168 168 168 169 172 174 175 176 176 179 180 181

3 Cryptologie 3.1 Principes gnraux et terminologie . . . . . . . . . . e e 3.1.1 Terminologie . . . . . . . . . . . . . . . . . . ` 3.1.2 A quoi sert la cryptographie ? . . . . . . . . . 3.2 Attaques sur les syst`mes cryptographiques . . . . . e 3.2.1 Principes de Kerckhos . . . . . . . . . . . . 3.2.2 Les grands types de menaces . . . . . . . . . Attaques passives/actives . . . . . . . . . . . Cryptanalyse et attaques sur un chirement . 3.3 Syst`me cryptographique ` clef secr`te . . . . . . . . e a e 3.3.1 Principe du chirement ` clef secr`te . . . . . a e 3.3.2 Classes de chirements symtriques . . . . . e Les chirement symtriques par ot . . . . . e Les chirements symtriques par blocs . . . . e Chirement inconditionnellement sr . . . . . u 3.3.3 Le syst`me DES (Data Encryption Standard) e Prsentation exhaustive du syst`me DES . . e e Diversication de la clef dans DES . . . . . . Avantages et applications de DES . . . . . . Cryptanalyse de DES . . . . . . . . . . . . . 3.3.4 Le nouveau standard AES (Rijndael) . . . . . Principe de lalgorithme . . . . . . . . . . . . La diversication de la clef dans AES . . . . Scurit de AES . . . . . . . . . . . . . . . . e e 3.4 Syst`me cryptographique ` clef publique . . . . . . . e a 3.4.1 Motivations et principes gnraux . . . . . . e e 3.4.2 Chirement RSA . . . . . . . . . . . . . . . . Ecacit et robustesse de RSA. . . . . . . . . e Attaques sur RSA . . . . . . . . . . . . . . . 3.4.3 Chirement El Gamal . . . . . . . . . . . . . 3.5 Authentication, Intgrit, Non-rpudiation . . . . . e e e 3.5.1 Fonctions de hachage cryptographiques . . . MD5 . . . . . . . . . . . . . . . . . . . . . . . SHA-1 . . . . . . . . . . . . . . . . . . . . . . SHA-256 . . . . . . . . . . . . . . . . . . . .

Thorie des codes e Whirlpool . . . . . . . . . . . . . . . . . . . . . . . . Etat des lieux sur la rsistance aux collisions . . . . e 3.5.2 La signature lectronique . . . . . . . . . . . . . . . e Contrle dintgrit par les fonctions de hachage . . o e e Codes dauthentication, ou MAC . . . . . . . . . . Les signatures lectroniques . . . . . . . . . . . . . . e Signature RSA . . . . . . . . . . . . . . . . . . . . . Standard DSS - Digital Signature Standard . . . . . Protocoles usuels de gestion de clefs . . . . . . . . . . . . . 3.6.1 Gnration de bits cryptographiquement sre . . . . e e u 3.6.2 Protocole dchange de clef secr`te de Die-Hellman e e attaque Man-in-the-middle . . . . . . . . . . . . . . 3.6.3 Kerberos : un distributeur de clefs secr`tes . . . . . e Prsentation gnrale du protocole Kerberos . . . . e e e Dtail des messages Kerberos . . . . . . . . . . . . . e Les faiblesses de Kerberos . . . . . . . . . . . . . . . 3.6.4 Authentication ` clef publique . . . . . . . . . . . . a 3.6.5 Infrastructures ` clefs publiques : PGP et PKI X . . a Principe gnral . . . . . . . . . . . . . . . . . . . . e e Les lments de linfrastructure . . . . . . . . . . . . ee Les certicats lectroniques . . . . . . . . . . . . . . e Le mod`le PKIX . . . . . . . . . . . . . . . . . . . . e Architectures non hirarchiques, PGP . . . . . . . . e Dfauts des PKI . . . . . . . . . . . . . . . . . . . . e 3.6.6 Un utilitaire de scurisation de canal, SSH . . . . . . e SSH, un protocole hybride . . . . . . . . . . . . . . . Authentication du serveur . . . . . . . . . . . . . . Etablissement dune connexion scurise . . . . . . . e e Authentication du client . . . . . . . . . . . . . . . Scurit, intgrit et compression . . . . . . . . . . . e e e e Dirences majeures entre SSH-1 et SSH-2 . . . . . e 3.6.7 Projets de standardisation et recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . et . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 181 182 183 183 184 186 187 188 189 189 190 192 192 194 195 197 198 198 200 202 204 208 209 210 211 212 212 214 214 215 215 217 218 218 219 220 221 222 222

3.6

4 Dtection et correction derreurs e 4.1 Principe de la dtection et de la correction derreurs . . . e 4.1.1 Codage par blocs . . . . . . . . . . . . . . . . . . . 4.1.2 Un exemple simple de dtection par parit . . . . . e e 4.1.3 Correction par parit longitudinale et transversale e 4.1.4 Schma de codage et probabilit derreur . . . . . e e 4.1.5 Deuxi`me thor`me de Shannon . . . . . . . . . . e e e Rendement dun code et ecacit . . . . . . . . . e

10

Sommaire Capacit de canal . . . . . . . . . . . . . . . . . . . . . e Transmission sans erreur sur un canal de capacit xe . e e Dtection derreurs par parit - codes CRC . . . . . . . . . . . e e 4.2.1 Contrle de parit sur les entiers : ISBN, EAN, LUHN . o e Code barre EAN . . . . . . . . . . . . . . . . . . . . . . Code ISBN . . . . . . . . . . . . . . . . . . . . . . . . . Cl RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . e Carte bancaire : LUHN-10 . . . . . . . . . . . . . . . . . 4.2.2 Codes de redondance cyclique (CRC) . . . . . . . . . . Codage CRC . . . . . . . . . . . . . . . . . . . . . . . . Dcodage CRC . . . . . . . . . . . . . . . . . . . . . . . e Nombre derreurs de bit dtectes . . . . . . . . . . . . e e Exemples de codes CRC . . . . . . . . . . . . . . . . . . Distance dun code . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Code correcteur et distance de Hamming . . . . . . . . 4.3.2 Codes quivalents, tendus et raccourcis . . . . . . . . e e Codes quivalents . . . . . . . . . . . . . . . . . . . . . e Code tendu . . . . . . . . . . . . . . . . . . . . . . . . e Code poinonn . . . . . . . . . . . . . . . . . . . . . . c e Code raccourci . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Code parfait . . . . . . . . . . . . . . . . . . . . . . . . 4.3.4 Codes de Hamming binaires . . . . . . . . . . . . . . . . Codes linaires et codes cycliques . . . . . . . . . . . . . . . . . e 4.4.1 Codes linaires et redondance minimale . . . . . . . . . e 4.4.2 Codage et dcodage des codes linaires . . . . . . . . . . e e Codage par multiplication matrice-vecteur . . . . . . . . Dcodage par multiplication matrice-vecteur . . . . . . e 4.4.3 Codes cycliques . . . . . . . . . . . . . . . . . . . . . . . Caractrisation : polynme gnrateur . . . . . . . . . . e o e e Opration de codage . . . . . . . . . . . . . . . . . . . . e Dtection derreur et opration de dcodage . . . . . . . e e e 4.4.4 Codes BCH . . . . . . . . . . . . . . . . . . . . . . . . . Distance garantie . . . . . . . . . . . . . . . . . . . . . . Construction des polynmes gnrateurs BCH . . . . . . o e e Codes BCH optimaux : codes de Reed-Solomon . . . . . Dcodage des codes de Reed-Solomon . . . . . . . . . . e Paquets derreurs et entrelacement . . . . . . . . . . . . . . . . 4.5.1 Paquets derreur . . . . . . . . . . . . . . . . . . . . . . 4.5.2 Entrelacement . . . . . . . . . . . . . . . . . . . . . . . 4.5.3 Entrelacement avec retard et table dentrelacement . . . 4.5.4 Code entrelac crois et code CIRC . . . . . . . . . . . e e 222 224 225 226 226 227 228 228 228 229 229 229 230 230 230 234 234 235 235 235 236 237 240 240 243 243 244 246 247 249 250 251 251 252 253 254 258 258 259 260 261

4.2

4.3

4.4

4.5

Thorie des codes e Application : code CIRC . . . . . . . . . . . . . . Codes convolutifs et turbo-codes . . . . . . . . . . . . . 4.6.1 Le codage par convolution . . . . . . . . . . . . . 4.6.2 Le dcodage par plus court chemin . . . . . . . . e Le diagramme dtat . . . . . . . . . . . . . . . . e Le treillis de codage . . . . . . . . . . . . . . . . Lalgorithme de Viterbi . . . . . . . . . . . . . . Codes systmatiques, rendement et poinonnage e c Codes convolutifs rcursifs . . . . . . . . . . . . . e 4.6.3 Les turbo-codes . . . . . . . . . . . . . . . . . . . Composition parall`le . . . . . . . . . . . . . . . e Dcodage turbo . . . . . . . . . . . . . . . . . . . e Turbo-codes en blocs et turbo-codes hybrides . . Performances et applications des turbo-codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11 262 265 265 266 267 267 268 270 270 271 271 272 273 274 275 . . . . . . . . . . . . . . . 279 279 289 296 315 329 331 et . . . . . . algorithmes 335 . . . . . . . . . . . . . . . . . . . . . . 335 . . . . . . . . . . . . . . . . . . . . . . 337 . . . . . . . . . . . . . . . . . . . . . . 338 341

4.6

Compression, cryptage, correction : en guise de conclusion Solutions des exercices Solutions des exercices proposs e Solutions des exercices proposs e Solutions des exercices proposs e Solutions des exercices proposs e Solution de lexercice du casino Bibliographie Liste des gures, tableaux Liste des gures . . . . . . Liste des tableaux . . . . Liste des algorithmes . . . Index au au au au . . chapitre chapitre chapitre chapitre . . . . . 1 2 3 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduction
Ce livre a pour objet la transmission automatique dinformations numriques, e et se focalisera sur la structure de linformation, indpendamment du type e de support de transmission. Linformation peut tre de nimporte quel type e pourvu quon puisse en donner une reprsentation numrique : textes, images, e e sons, vidos par exemple. La transmission de ces types de donnes est omnie e prsente dans la technologie, et spcialement dans les tlcommunications. Il e e ee est donc ncessaire de sappuyer sur de bonnes bases thoriques pour que cette e e transmission soit able, ce dernier terme se voyant donner plusieurs signications qui sont les objectifs qui nous guideront tout au long de louvrage. Les canaux de transmission peuvent galement tre de tous types (rseaux e e e de cbles ou dondes), via ventuellement un support de stockage. Nous ne a e considrons pas les probl`mes physiques que posent la transmission, qui font e e lobjet de la thorie dite du signal . La thorie des codes, elle, traite de la e e forme de linformation elle-mme quand elle doit tre transmise, ou stocke. e e e
PERTURBATION

SOURCE

Codage

CANAL

Dcodage

DESTINATION

Efficacit de la transmission : compression des donnes Scurit de linformation : cryptage, authentification Intgrit du message : correction derreurs

Fig. 1: Schma fondamental du codage. e

La communication dune information commence par sa formulation par un metteur, se poursuit par un transit via un canal, et se termine par la reconse titution du message par le destinataire. Parfois lmetteur et le destinataire e sont confondus, sil sagit dun processeur ou dune personne qui enregistre des donnes dans un registre, une mmoire ou un disque puis les lit ultrieurement. e e e

14

Introduction

Linformation doit tre reue par son destinataire dans son intgralit, en se c e e e curit, et le plus rapidement possible. Or quel que soit le canal considr, avec e ee des variations selon le support, on ne peut jamais le supposer sr , dans u plusieurs sens du terme : il y a toujours des erreurs au cours des transmissions, et le message est susceptible dtre lu, voire altr, par des tiers plus ou moins e ee bien intentionns. Il sagit alors pour lmetteur denvoyer ses messages sous e e une forme qui permette au destinataire de les reconstituer en tenant compte dventuelles altrations au cours du transfert ou de la condentialit de cere e e taines informations, tout en minimisant la taille des donnes. Ces contraintes e sont les points de dparts de plusieurs champs dtude en mathmatiques et e e e en informatique, souvent dvelopps indpendamment les uns des autres bien e e e quils traitent des mmes objets. Le but de ce livre est de les rassembler en e un seul volume an de prsenter une seule thorie, dont lobjet est la forme e e donne ` linformation au cours de sa transmission, cest-`-dire une thorie e a a e gnrale des codes. e e En 1948, Claude Shannon posait la premi`re pierre de ce quil a appel une e e thorie mathmatique de linformation . On raconte que sa thorie est ne e e e e de rexions sur la langue (langlais, en loccurrence) : Shannon samusait ` e a masquer une proportion variable des textes quil lisait, et ` les reconstituer ` a a partir de la partie visible. En enlevant quelques mots, il pouvait reconstituer le sens de la phrase de faon certaine. Cest que ces mots cachs taient redonc e e dants, ils napportaient rien au sens du message. Si il en enlevait trop, il lui tait impossible de reconstituer le message avec certitude. Shannon mit alors e au point une thorie qui serait ` mme de calculer la quantit dinformae a e e tion dans nimporte quel type de message, ce qui revient ` dterminer son a e taux de redondance. Rduire cette redondance est ce quaujourdhui nous appelons la compression, e ou thorie de linformation , par dlit historique, et bien que ce titre e e e puisse convenir ` louvrage entier, qui dpasse largement cette thorie. Dans a e e un souci decacit, qui rel`ve de loptimisation de lespace de stockage, et e e plus encore de la rapidit de transmission, il sagit de rendre le message le plus e court possible, en ne gardant que ce qui est indispensable ` sa comprhension, a e ou mieux, en le reformulant sans redondance. La condentialit dont on veut entourer la transmission dune information e est une proccupation beaucoup plus ancienne que celle de lecacit. Pare e tant du principe que les routes (comme les canaux numriques) ne sont pas e sres, et quun message peut tre intercept au cours de sa transmission, il u e e faut transformer le texte, le dcorrler de sa signication, en ne laissant qu` e e a ses destinataires la clef de son dchirement. Les histoires de codes secrets, et e des batailles entre inventeurs de codes et briseurs de codes (qui cherchent ` a conna la signication dun message sans en avoir la clef) pars`ment lhistre e

Thorie des codes e

15

toire des socits et des tats. Shannon contribua galement ` ce domaine en ee e e a apportant pour la premi`re fois, en 1949, une preuve thorique de condentiae e lit. Une discipline scientique est aujourdhui consacre aux codes secrets, la e e cryptologie. Non seulement les mthodes actuelles garantissent le secret sur la e signication dun message, mais elles permettent aussi de signer des documents ou didentier un metteur. e Tous les canaux permettant de transmettre une information numrique peue vent tre soumis ` des perturbations qui sont susceptibles daltrer une partie e a e des messages, et donc den modier le sens. Si les informations sont envoyes e sans redondance, la plus petite altration peut en eet entra e ner des fausses interprtations ` larrive. Dans le cas dun texte en langue naturelle, la plue a e part des erreurs naltreront pas la perception du lecteur, car la redondance lui e permettra de reconstituer le message original. Shannon, lui encore, a montr e un rsultat sensationnel en 1948 : mme sur des canaux dont le taux derreur e e est tr`s important, il est possible dajouter susamment de redondance pour e que le message soit reu dans son intgralit. Mais sa dmonstration nest pas c e e e constructive et ce thor`me motive toujours la construction de mthodes ine e e cluant de faon ordonne et optimise de la redondance an que le destinataire c e e puisse soit sapercevoir que le message a t altr (codes dtecteurs), soit coree ee e riger lui-mme les erreurs ventuelles (codes correcteurs). Toutes ces mthodes e e e sont paramtrables, cest-`-dire adaptables au type de support considr, et ` e a ee a son taux derreur. Ce sont ces trois proccupations lecacit, la scurit, lintgrit qui e e e e e e retiennent lattention des concepteurs de mthodes de transmission de line formation. Lintrt de les prsenter ensemble repose sur leur objet commun, ee e le code, qui structure linformation dans tous les supports technologiques actuels, et sur lutilit de disposer dans un seul volume de toutes les faons de e c manipuler linformation avant de lenvoyer ou de la recevoir. Le socle sur lequel sappuie la thorie des codes est issu de lalg`bre linaire, e e e de larithmtique, des probabilits, de lalgorithmique et de la combinatoire. e e Les mod`les mathmatiques et les premiers dveloppements algorithmiques e e e qui structurent la notion de code sont introduits dans le premier chapitre de cet ouvrage. La prsentation de ces mod`les est assortie dintroductions des e e mathmatiques utiles ` leur manipulation, ainsi que de notions gnrales sur e a e e lecacit des mthodes de calcul, dont nous ferons un usage intensif tout au e e long de louvrage. Il sera utile pour lire ce chapitre de disposer dun bagage thorique de base en alg`bre linaire, ce qui rend ce livre accessible apr`s une e e e e licence scientique. Certains lments dpassent les connaissances classiques ee e des tudiants non mathmaticiens, ils sont donc prsent en dtails ici. Le e e e e e lecteur se rendra rapidement compte de leur relle ecacit pratique, le plus e e souvent au moment mme de leur introduction. Pour clarier encore lutilit e e

16

Introduction

et les dpendances entre les notions introduites, la gure 2 les reprsente. e e


Probabilits Structures algbriques Arithmtique, Fonction dEuler Thormes chinois et de Fermat Entropie Algorithme dEuclide Fonction Puissance Modulo Test de primalit Gnrateurs pseudoalatoires Test dirreductibilit Arithmtique des polynmes Complexit des algorithmes

Transforme de Fourier discrte Construction des corps finis

Compression

Dtection/Correction

Cryptologie

Fig. 2: Schma des notions introduites dans le premier chapitre, avec leurs dpene e dances.

Cette gure permettra aussi au lecteur press ou intress par une partie de e e e louvrage seulement de retrouver son chemin, la lecture linaire ntant pas e e obligatoire. Mme si ce premier chapitre est conu pour introduire la thorie e c e des codes, il peut servir de bo ` outils de rfrence lors de la lecture des te a ee chapitres suivants. Ceux-ci reprennent sparment la compression, la cryptoe e graphie, et les codes dtecteurs et correcteurs derreur. Ils prsentent les re e e sultats thoriques fondamentaux et les algorithmes qui en dcoulent. Chacun e e de ces trois chapitres est illustr par des exemples dutilisation pratique dans e le contexte des tlcommunications. Nous nous sommes eorcs de prsenter ` ee e e a la fois les thories classiques du codage et les dveloppements les plus rcents e e e sur le sujet, dans la mesure o` un tel livre dintroduction le permettait. u En plus de runir des thories mathmatiques qui partagent le mme objet, e e e e le credo de cet ouvrage est algorithmique. Ici, les proprits mathmatiques ee e des fonctions servent ` rendre ecaces leurs calculs. Les mthodes de calcul a e sont toujours donnes de faon dtaille, et immdiatement implmentables e c e e e e en nimporte quel langage de programmation. Lecacit des mthodes est e e toujours calcule et discute, les implmentations existantes compares. Nos e e e e sciences sont ` la fois les hriti`res des mathmatiques grecques, qui faisaient a e e e de lesthtique de leurs noncs leur principale qualit, et des mathmatiques e e e e e

Thorie des codes e

17

orientales, mues plus souvent par lutilit et le calcul. Cest encore ce qui e peut unir toutes les thories des codes, et cest un de leurs grands mrites, de e e faire appel ` des mathmatiques rigoureuses et apprcies des esth`tes pour a e e e e construire des mthodes ecaces appliques dans la communication courante. e e Ce livre est ainsi au conuent de ces euves, il attirera les frus de technologie e autant que les amateurs de thorie des nombres, sans compter ceux que les e histoires de dchirement de langages obscurs, de machines qui corrigent leurs e propres erreurs et de codes secrets font toujours rver. e

Chapitre 1

Thorie des codes e


On appellera un code une mthode de transformation qui convertit la reprsene e tation dune information en une autre. Cette dnition est susamment large e pour accueillir plusieurs objets mathmatiques (fonctions, algorithmes, transe formes), dont nous ferons usage tout au long de ce texte. Le mot code servira e aussi ` dsigner le produit de ces transformations, cest-`-dire linformation a e a code et sa structure. e Mais pour commencer ` se retrouver dans ces dnitions et comprendre ce a e quest vraiment le code, voici un exemple simple mlangeant les technologies e et les poques. e

1.1

De Jules Csar ` la tlcopie e a ee

Pour introduire toutes les proprits importantes des codes, en voici un consee truit ` partir dexemples rellement utiliss, actuellement ou par le pass. a e e e Supposons que nous voulions envoyer une information par fax tout en assurant le secret de la transmission. Voici ce que pourrait tre un code qui raliserait e e cette opration. e

1.1.1

La source : de limage ` la suite de pixels a

La transmission par fax permet de faire transiter des images par un canal tlphonique. Ce quon demandera ` ce code sera dassurer les transformaee a tions ncessaires pour obtenir ` larrive une image semblable ` loriginale, e a e a rapidement et secr`tement, dans un format qui puisse transiter par le canal. e Le premier procd de transformation sera assur par le scanner de lappareil. e e e Il consiste ` lire limage et ` la transformer en une suite de pixels, quon peut a a se reprsenter comme des petits carrs soit noirs, soit blancs. Cest un code, e e

20

e Chapitre 1 : Thorie des codes

selon la dnition que nous en avons donne, et nous lcrirons comme un e e e algorithme, dans un format que nous adopterons tout au long de cet ouvrage. Algorithme de codage Entres Une image e Sorties Une suite de pixels Lentre de lalgorithme est aussi appele la source, et la sortie le code1 . e e La mthode adopte sera la suivante : la largeur de limage source est divise e e e en 1728 parties gales ; la longueur est ensuite divise en lignes, de faon ` e e c a former des carrs de mme taille. Ces carrs seront les pixels. e e e Chaque pixel se voit attribuer la couleur noire si ` cet endroit limage est sufa samment fonce, et la couleur blanche si limage est claire. Cest la premi`re e e partie de notre code.

1.1.2

La compression du message

Pour formaliser les messages sources et les codes, on dnit le langage dans e lequel ils sont exprims. On appelle alphabet un ensemble ni V = {v1 , . . . , vk } e dlments appels caract`res. Le cardinal dun ensemble ni V est son nombre ee e e dlments, not |V |. ee e Une suite de caract`res de V est une cha On note V lensemble des cha e ne. nes sur V , et V + lensemble des cha nes de longueur non nulle. Comme lalphabet du code et lalphabet de la source peuvent direr, on parle dalphabet source e et dalphabet du code. Par exemple, pour la mthode de compression que nous e allons voir maintenant, lalphabet source est le rsultat du scanner, ` savoir e a {pixel blanc, pixel noir}, et lalphabet du code sera lensemble de bits {0, 1}. On pourrait envoyer la suite de pixels sous forme de bits numriques, puisquils e sont immdiatement traduisibles en 0 (pour un pixel blanc) et 1 (pour un pixel e noir). Mais on peut alors appliquer quelques principes simples ` cette suite de 0 et de a 1, an de la compresser. Si on imagine que la page ` envoyer ne comporte que a quelques lignes de texte, et quune bonne partie est blanche, ce qui arrive tr`s e souvent dans les fax, alors ny a-t-il pas de meilleur moyen de transmettre une suite de, mettons, 10000 zros, que demployer eectivement les 10000 zros ? e e Bien sr, il y a un meilleur moyen, et nous venons dailleurs de lemployer, u car nous avons voqu cette longue suite sans lcrire explicitement. Il sagit e e e simplement dindiquer que le code est compos de 10000 zros plutt que de e e o
Le mot code est tr`s accueillant. Il dsigne aussi bien lensemble des transformations e e que leur rsultat, ainsi que, souvent, un programme informatique. Cette apparente confusion e permet en fait de saisir les liens entre divers procds mathmatiques et informatiques, et e e e cest pourquoi nous conservons le terme dans ses multiples acceptions.
1

1.1 De Jules Csar ` la tlcopie e a ee

21

les crire tous. Le code du fax ralise ce principe de compression ligne par e e ligne, cest ` dire par blocs de 1728 pixels. Pour une ligne, on peut dcrire a e prcisment lalgorithme de codage par lalgorithme 1. e e Algorithme 1 Codage fax simpli. e Entres Une suite de 1728 pixels, not M e e Sorties Le message M compress e Soit n un compteur de pixels conscutifs, initialis ` 0 e ea Pour un indice i parcourant la ligne de pixels (de 1 ` 1728) Faire a Si le pixel dindice i est le mme que le pixel dindice i 1 Alors e nn+1 Sinon Ecrire n et la couleur du dernier pixel dans M n0 Fin Si Fin Pour Ainsi, par exemple, une ligne enti`rement blanche ne sera plus code par une e e suite de 1728 zros, mais par le code 1728 0, soit, dans un format numrique e e qui pourra tre envoy par le canal, 11011000000 0, puisque cest la repre e e sentation de 1728 en binaire. On a donc remplac un message de 1728 bits en e un message de 12 bits, ce qui est nettement plus court. Cest donc un principe dit de compression des messages, appel RLE pour Run-Length Encoding, et e que nous dtaillerons dans le chapitre 2.3.1. Nous nous sommes servis dun e caract`re despacement dans notre reprsentation (entre 1728 et 0), pour une e e meilleure visibilit, mais ce caract`re ne fait pas partie de lalphabet du code. e e En pratique, il faudra donc le supprimer. Nous verrons les contraintes que cela implique un peu plus tard dans ce chapitre. Exercice 1.1. Une image pixelise destine ` tre faxe contient beaucoup de e e ae e paires de pixels conscutifs 01. e Que pensez-vous du code fax prsent plus haut ? e e Solution page 279. Proposez un code plus ecace.

1.1.3

La dtection derreurs e

Tous nos lecteurs qui ont dj` utilis un canal tlphonique ne seront pas tonea e ee e ns dapprendre que sa abilit nest pas innie. Tout message est susceptible e e dtre altr, et il nest pas impossible que si 11011000000 0 est envoy sur e ee e le canal numrique, 11010000000 0 (altration dun bit) ou 1101000000 0 e e (destruction dun bit) soit reu. Habituellement, les canaux tlphoniques ont c ee un taux derreur variant de 104 ` 107 , selon leur nature, ce qui veut dire a

22

e Chapitre 1 : Thorie des codes

quils peuvent commettre en moyenne une erreur tous les 10000 bits. Cest loin dtre ngligeable, quand on envoie de longs messages, et cela peut videme e e ment en altrer le sens. Pour une image, si le 1728 envoy est devenu 1664 ` e e a cause de laltration dun seul bit, il va se produire un dcalage de limage ` e e a larrive qui rendra le rsultat inexploitable. e e Le code du fax permet de dtecter de telles erreurs de transmission. En cas e derreur dtecte sur une ligne, ceci permet de redemander la transmission de e e la mme ligne pour avoir une conrmation, et comme il est tr`s peu probable e e quune erreur se produise deux fois exactement au mme endroit, le message e pourra tre corrig. e e Le principe de la dtection derreur dans le code du fax est le suivant : on e fait prcder et suivre dans le message chaque ligne par une suite identiable. e e Mme si ce ne sont pas exactement ces nombres-l` qui sont utiliss en pratique, e a e mettons, pour expliquer le principe, que 0 est ajout au dbut de chaque e e ligne, et 1729 est ajout ` la n de chaque ligne. ea On peut alors, pour chaque ligne reue, vrier quelle est de la forme 0 n1 c e b1 . . . nk bk 1729, o` ni est un nombre entier qui donne le nombre de bits u conscutifs, et bi la couleur de ces bits. En particulier, on doit avoir n1 + e + nk = 1728, et les bi doivent tre alterns. Ainsi, on rep`re facilement e e e laltration ou la perte dun bit, d`s que ce format nest pas respect. e e e Les principes de dtection et correction derreur, tudis plus en dtail au e e e e chapitre 4, sont tous bass sur ce mme principe : ajouter de linformation e e pour vrier la cohrence du message reu. e e c

1.1.4

Le chirement

Supposons maintenant, apr`s avoir compress le message et apport un format e e e qui permette la dtection derreurs, que nous voulions garder le message secret e pour toute personne except son destinataire. Le canal tlphonique, comme e ee la plupart des canaux, ne permet pas le secret en lui-mme. Tout message qui e y transite peut tre facilement lu par un tiers. La mise en uvre du secret e consiste ` transformer le message, le mettre sous une forme incomprhensible, a e et ` le retransformer dans sa forme originelle ` larrive. a a e Cest une technique employe par les hommes depuis quils communiquent. e Dans les codes secrets employs dans lantiquit, le secret rsidait dans la e e e technique mise en uvre, quon appelle aujourdhui algorithme de chirement. Ainsi, les historiens ont retrouv des messages cods par les services de Jules e e Csar. Les messages taient des textes, et lalgorithme substituait chaque lettre e e du message initial M par celle situe 3 positions plus loin dans lalphabet. Pour e les deux derni`res lettres de lalphabet, il fallait renvoyer aux deux premi`res. e e Par exemple le mot T ROY EN devenait W U RBHQ. Ainsi, le texte navait

1.1 De Jules Csar ` la tlcopie e a ee

23

plus de signication immdiate. Cest ce quon appelle un principe de sube stitution mono-alphabtique, car chaque lettre est remplace par une autre, e e toujours la mme, dans le message. e Si Csar avait voulu envoyer un fax, il aurait adapt son code au format nue e mrique, ce qui aurait donn la fonction f (x) = x + 3 mod n pour tous les e e nombres envoys sur le canal. Le nombre n est la taille de lalphabet utilis, e e ici par exemple 1730, puisquaucun nombre suprieur ne peut thoriquement e e tre employ. e e Ces fonctions de codage et dcodage furent ensuite paramtres par une simple e e e clef K, un nombre entier choisi secr`tement entre les communiquants. Cela e revient ` construire une fonction fK (x) = x + K mod n. Les spartiates utilia saient eux un algorithme de chirement totalement dirent, le chirement par e transposition : la scytale tait un bton sur lequel tait enroul un parchemin. e a e e Le message tait crit sur le parchemin enroul mais le long du bton et non e e e a le long du parchemin. Ainsi les lettres successives du message apparaissait sur une circonvolution dirente du parchemin. Pour le dchirer, le destinataire e e devait possder un bton dun diam`tre identique ` celui utilis pour lencoe a e a e dage. Dautres syst`mes cryptographiques, plus labors, virent alors le jour e e e (chirements anes fa,b (x) = a.x + b mod n - tudis dans les exercices 1.2 e e et 3.1 ; chirements par substitution o` chaque lettre est remplace par un u e symbole dun autre alphabet comme le code morse etc. . .). Exercice 1.2. Marc-Antoine intercepte un message envoy par Csar, crype e t par chirement ane. Sans conna la clef (a, b), comment dcode-t-il le e tre e message ? Solution page 279.

1.1.5

Le dcodage e

Nous avons vu dans ce qui prc`de toutes les techniques pour coder un message e e et en assurer lecacit de transmission et le secret. Cette description ne serait e pas compl`te sans un mot pour prsenter les principes de lopration comple e e e mentaire, le dcodage. e Lattaque et le dchirement e Le message arrive crypt. Il sagit de le dcoder. Pour qui ne poss`de pas e e e la clef ou la mthode de chirement, on parle dattaque sur le code, ou de e cassage de code. La discipline qui consiste ` inventer des mthodes dattaque a e pour briser les codes existants ou pour construire des codes plus rsistants e est la cryptanalyse. Pour le destinataire du message qui conna la clef, il t sagit de dchirement. On parlera de lattaque bientt. Pour linstant, la e o mthode de dchirement est tr`s simple et consiste ` appliquer la fonction e e e a

24

e Chapitre 1 : Thorie des codes

inverse de la fonction de codage, ventuellement paramtre par une clef, soit e e e 1 fK (x) = x K mod n. Le message est alors dchir.Il reste ` appliquer toutes les autres transfore e a mations en sens inverse. Tout dabord, vrier le format de chaque ligne pour e dtecter dventuelles erreurs (en cas derreur, redemander une mission), puis e e e appliquer un algorithme de dcodage, qui, tant donne une suite de nombres, e e e renverra la suite de pixels initiale. Cest ce qui est formalis pour une ligne e dans lalgorithme 2. Algorithme 2 Dcodage fax. e Entres Une suite de nombres, sous la forme 0 n1 b1 . . . nk bk 1729 e Sorties La suite des 1728 pixels correspondants Pour un indice i de 1 ` k Faire a Dessiner ni pixels de couleur bi Fin Pour

La dcompression et les pertes e En appliquant cet algorithme pour toutes les lignes, on obtient une suite de pixels, qui est la mme que celle de dpart, en laquelle nous avions transform e e e limage. Il ne reste plus qu` restituer limage. Ou plutt une image semblable a o ` limage de dpart. En eet, la seule information dont nous disposons est a e la valeur des pixels, et la mthode consiste donc ` imprimer sur une feuille e a la suite de carrs noirs ou blancs correspondants. Limage de dpart sera de e e grade, puisque les carrs dorigine ntaient pas enti`rement noirs ou blancs, e e e e ce qui donne toujours aux fax un aspect peu esthtique, mais lessentiel de e linformation est conserv. e Quand, comme ici, linformation initiale nest pas enti`rement restitue, mais e e arrive sous une forme sen rapprochant, on parle de codage avec perte. On utilise souvent des codes qui permettent un certain niveau de perte, quand on estime que linformation importante nest pas altre. Cest souvent le cas ee pour les informations audiovisuelles (voir la section 2.5).

1.1.6

Les dfauts de ce code e

Nous avons enti`rement dcrit un procd de codage et son pendant, le de e e e e codage, en respectant les principales contraintes que nous rencontrerons en thorie des codes (lecacit de la compression, la dtection derreur, le see e e cret). Mais les principes utiliss dans ce code-l` ne sont gu`re utilisables en e a e pratique dans les communications numriques courantes, pour plusieurs raie sons :

1.1 De Jules Csar ` la tlcopie e a ee

25

La compression : le principe RLE tel quil est appliqu ici a plusieurs dfauts. e e Dabord, si le message est constitu de pixels blancs et noirs alterns, la e e taille du message compress sera plus grande que la taille du message e original. Le principe na donc aucune garantie de compression. De plus, inclure les bits bi est quasiment inutile puisquils sont alterns et que la e valeur du premier surait ` dterminer tous les autres. Le code du fax les a e limine. Il devient alors une suite de nombres n1 . . . nk . Mais cette suite, e code en bits (chaque nombre a sa traduction binaire) est plus dicile ` e a dcoder. En eet, en recevant une suite de bits 1001011010010, comme e savoir sil sagit dun nombre ni , ou de plusieurs nombres concatns ? e e On peut par exemple coder tous les nombres sur le mme nombre de bits e pour rsoudre ce probl`me, mais le principe de compression nest alors e e pas optimal. Il oblige ` coder 2 par 00000000010, ce qui augmente a la taille du message. Nous verrons dans la suite de ce chapitre comme sassurer de la dchirabilit, et dans le chapitre suivant comment en e e dduire de bons principes de compression. e La dtection derreurs : ce principe oblige ` demander un renvoi de linformae a tion ` chaque erreur dtecte, alors quon pourra concevoir des codes qui a e e corrigent automatiquement les erreurs du canal (chapitre 4). De plus, aucune garantie thorique ne vient assurer que ce codage est bien adapt e e au taux derreur des canaux tlphoniques. On ne sait pas quel est le ee taux derreur dtect par ce code, ni sil pourrait accomplir la mme e e e performance en ajoutant moins dinformation dans les messages. Lecacit de la transmission peut dpendre de la qualit des principes de e e e dtection et de correction derreurs. e Le secret : le code de Csar est cassable par un dbutant en cryptographie. e e Pour tous les principes de substitution mono-alphabtique, il est facile de e dcoder, mme sans conna la clef. Une cryptanalyse simple consiste e e tre a e ` tudier la frquence dapparition des lettres au sein du texte chir e e et den dduire la correspondance avec les lettres du texte clair. Le tae bleau 1.1 prsente par exemple la rpartition statistique des lettres dans e e ce manuscrit crit en LaTeX (les codes de mise en forme LaTeX sont e pris en compte en sus des mots du texte). Comme ce manuscrit est assez long, on peut supposer que ces frquences sont assez reprsentatives e e dun texte scientique franais crit en LaTeX. Il est bien sr possible c e u davoir des tables de frquences reprsentatives de textes littraires frane e e ais, scientiques anglais, etc. c Exercice 1.3. Scipion trouve un papier sur lequel se trouve le message chir e suivant : HJXFW FZWFNY JYJ HTSYJSY IJ ATZX! Aide Scipion ` dchirer ce message. a e Solution page 279.

26 E I T N R S A O L D U C M 14.90 % 7.82 % 7.52 % 7.49 % 6.91 % 6.76 % 6.28 % 5.88 % 4.86 % 4.75 % 4.72 % 4.71 % 3.33 %

e Chapitre 1 : Thorie des codes P F B G X H Q V Y K W J Z 3.20 1.82 1.60 1.59 1.47 1.20 0.97 0.89 0.51 0.37 0.16 0.15 0.14 % % % % % % % % % % % % %

Tab. 1.1: Rpartition des lettres dans ce manuscrit LaTeX. e

1.1.7

Ordres de grandeur et complexit des algorithmes e

Nous avons dcrit un code et expos ses qualits et ses dfauts. Il est une qualit e e e e e cruciale des codes que nous navons pas encore voque, celle de la rapidit ` e e ea coder et dcoder. Elle dpend de la vitesse des ordinateurs, et surtout de la e e complexit des algorithmes. e

Taille des nombres Nous considrons des nombres et leurs tailles, soit en chires dcimaux, soit en e e bits. Ainsi, un nombre m possdera log10 (m) chires et log2 (m) bits. Pour e xer les ides, 128 bits font 39 chires dcimaux ; 512 bits font 155 chires et e e 1024 bits sont reprsentables par 309 chires. e

La vitesse des ordinateurs Aujourdhui nimporte quel PC est cadenc ` au moins 1 GHz, cest-`-dire quil ea a ` eectue 1 milliard (109 ) doprations par seconde. A titre de comparaison, la e vitesse la plus fantastique de lunivers est celle de la lumi`re : 300000 km/s e = 3.108 m/s. Il ne faut que dix milliardi`mes de seconde ` la lumi`re pour e a e traverser une pi`ce de 3 m`tres ! Eh bien, pendant ce temps l`, votre ordinateur e e a a donc eectu 10 oprations ! ! ! On peut donc dire que les ordinateurs actuels e e calculent ` la vitesse de la lumi`re. a e

1.1 De Jules Csar ` la tlcopie e a ee Taille et ge de lunivers a

27

Cette vitesse de calcul est vritablement astronomique ; pourtant la taille des e nombres que lon manipule reste norme. En eet, rien que pour compter juse qu` un nombre de 39 chires il faut numrer 1039 nombres. Pour se convaincre a e e ` quel point cest norme, calculons lge de lunivers en secondes : a e a ge Univers a 15 milliards annes 365.25 24 60 60 5.1017 secondes. e

Ainsi, un ordinateur cadenc ` 1 GHz mettrait plus de deux millions de fois ea lge de lunivers pour simplement compter jusqu` un nombre de seulea a ment 39 chires ! Quant ` un nombre de 155 chires (ce quon utilise courama ment en cryptographie), cest tout simplement le carr du nombre dlectrons e e contenus dans lunivers. En eet, notre univers contiendrait environ 3.1012 galaxies chacune renfermant grosso modo 200 milliards dtoiles. Comme notre e soleil p`se ` la louche 2.1030 kg et quun lectron ne p`se que 0, 83.1030 kg, e a e e on obtient : Univers = (2.1030 /0, 83.1030 ) 200.109 3.1012 1084 lectrons. e Ce sont pourtant des nombres que nous aurons ` manipuler. Leur taille sera a lun des ds algorithmiques que nous aurons ` relever, en mme temps quune e a e assurance de secret de nos messages, si pour les dcoder sans en possder la clef, e e il faut des millions dannes de calcul en mobilisant le milliard dordinateurs e disponibles sur la Terre dont les plus rapides. Nous allons voir dans la suite comment construire des algorithmes capables de travailler avec de tels nombres entiers. Complexit des algorithmes e Malgr la puissance des ordinateurs, un algorithme mal conu pourra se rve c e e ler inexploitable. La complexit dun algorithme est une mesure du temps que e mettra un ordinateur, sur lequel on implmentera lalgorithme, pour terminer e son calcul. La vitesse des ordinateurs augmentant constamment, une bonne mesure pour estimer ce temps est de compter le nombre doprations arithe mtiques que ncessite lalgorithme. En gnral, il sagit donc de compter les e e e e quatre oprations classiques (addition, soustraction, multiplication, division, e mais parfois galement des oprations binaires comme les dcalages de bits) e e e et seulement celles-ci, par souci de simplication. Bien sr, ce nombre dopu e rations dpend de la taille des nombres quon fournit en entre, cest pourquoi e e lecacit est toujours une fonction de la taille de lentre de lalgorithme. e e Pour pouvoir calculer cette taille dans tous les cas, on suppose que lentre e est une suite de bits, et la taille de lentre est la longueur de cette suite. Ce e

28

e Chapitre 1 : Thorie des codes

qui suppose que pour calculer lecacit dun algorithme, on doit concevoir e un code qui transforme son entre en suite de bits. Cest une opration soue e vent assez simple. Par exemple, pour coder un entier a, il faut de lordre de log2 (a) bits (on les crit simplement en base 2). La taille dun entier est donc e son logarithme en base 2. La taille dune suite de pixels noirs et blancs est la longueur de cette suite. Comme il nest souvent pas possible de compter exactement toutes les oprae tions ralises lors de lexcution dun programme, on encadre la complexit e e e e dun algorithme par des majorants et minorants asymptotiques en utilisant la notation dite de Landau. Si k(n) est le nombre doprations arithmtiques e e eectues par lordinateur qui excute lalgorithme sur une entre de taille e e e n, et f une fonction quelconque, on dit que k(n) = O(f (n)) sil existe une constante c telle que pour tout n assez grand, k(n) c f (n). On peut alors dire que la complexit de lalgorithme est au plus de lordre de f (n). e Exercice 1.4. Quelle est la complexit du code fax, prsent plus haut ? e e e Solution page 279. Comme la notation de Landau permet de donner la complexit ` une constanea te pr`s, il est par exemple possible dcrire O(log(n)) sans donner la base du e e logarithme, puisque la base ne modiera la fonction que dune constante (le logarithme de la base). En pratique tous les algorithmes devront prsenter une complexit quasie e linaire O(n), o` n est la taille du message source, pour pouvoir prtendre e u e ` une ecacit temps-rel , cest-`-dire pour pouvoir tre utilis dans une a e e a e e transmission o` un temps dattente long nest pas acceptable (tlphonie, auu ee diovisuel. . .). Une partie de la cryptographie repose sur lhypoth`se quil existe des probl`mes e e pour lesquels on ne conna aucun algorithme dune telle complexit. Tous les t e algorithmes connus ncessitent des temps de calcul astronomiques qui rendent e lapproche du probl`me impossible. e Dans ce livre, nous considrons quun probl`me est impossible ` rsoudre (on e e a e emploie simplement parfois leuphmisme dicile ) si on ne conna pas e t dalgorithme qui le rsolvent en un temps humainement raisonnable, soit par e exemple si sa rsolution ncessiterait plus de 1050 opration. e e e

1.2

Codage par ot et probabilits e

An dobtenir des mthodes ecaces, cest-`-dire linaires en fonction de la e a e taille du message, on peut considrer le message comme un ot de bits, cest e ` dire une succession potentiellement innie de caract`res, quon codera un a e par un. Cette technique est notamment utilise en cryptographie, et permet e

1.2 Codage par ot et probabilits e

29

dobtenir des messages dits inconditionnellement srs, i.e. pour lesquels la u connaissance du message chir napporte aucune information sur le message e clair. On parle alors de chirement parfait. Ainsi, la seule attaque possible est la recherche exhaustive de clef secr`te. On utilise galement le mod`le du e e e codage par ot pour construire des principes de dtection et correction derreur e (voir les codes convolutifs dans le chapitre 4). Le code dit de Vernam, ou code ` clef jetable - en Anglais one-time-pad - est a un exemple de code par ot ` vise cryptographique dont on peut prouver a e la scurit inconditionnelle, moyennant lintroduction de quelques bases de e e probabilits et de thorie de linformation. e e

1.2.1

Le code de Vernam

En 1917, pendant la premi`re guerre mondiale, la compagnie amricaine AT&T e e avait charg le scientique Gilbert Vernam dinventer une mthode de chiree e ment que les Allemands ne pourraient pas casser. Le chirement jetable que celui-ci a conu est le seul code connu ` lheure actuelle comme mathmatic a e quement prouv sr. e u Le syst`me ` clef jetable est un syst`me cryptographique dit ` clef secr`te, e a e a e cest-`-dire que le secret rside dans un param`tre des fonctions de codage et a e e de dcodage connu uniquement de lmetteur et du destinataire. Cest aussi le e e cas du chirement de Csar, dans lequel le param`tre est la taille du dcalage e e e des lettres ou des nombres. Dans un syst`me ` clef jetable, cette clef nest utilise quune fois. Le secret e a e repose sur le fait quune clef est associe ` un seul message et est de mme e a e longueur que celui-ci. Le dcodage seectue grce ` la proprit que pour tous e a a ee messages M et clefs K de mme longueur, on a : e (M K) K = M o` (quon note aussi xor) dsigne lopration logique ou exclusif bit ` u e e a bit. Il sagit donc dune addition modulo 2 de chaque bit. Cest cette utilisation du ou exclusif qui a t brevete par Vernam 1919. Pour envoyer un message ee e M de n bits, il faut avoir une clef K secr`te de n bits. Le message chir M e e = M K. Pour dchirer, il sut de calculer M K. est donn par M e e Exercice 1.5. Pourquoi faut-il jeter la clef apr`s lavoir utilise, i.e. changer e e de clef pour chaque nouveau message ? Solution page 279. Sous rserve que la clef K ait bien t gnre de faon totalement alatoire, e ee e ee c e indpendamment de M et quelle nait jamais t utilise auparavant, un obe ee e servateur tiers nobtient aucune information sur le message clair sil intercepte le message chir (hormis la taille de M ). Cest Joseph Mauborgne, capitaine e

30

e Chapitre 1 : Thorie des codes

au service secret de larme amricaine qui le premier a propos dans les annes e e e e 1920 que la clef soit gnre alatoirement et cest ensuite, Claude Shannon e ee e qui a prouv la scurit inconditionnelle de ce code, comme nous le verrons e e e section 1.2.4. Exercice 1.6. Construire un protocole, ` base de clefs jetables, permettant ` a a un utilisateur de se connecter depuis un ordinateur quelconque sur internet ` a un serveur scuris. Le mot de passe doit tre crypt pour ne pas circuler de e e e e faon visible sur internet ni tre captur par la machine utilise. c e e e Solution page 280. Evidemment, il reste ` formaliser ce que veut dire gnrer un nombre alatoire, a e e e donner des bons moyens de le faire et, pour prouver que le syst`me est sr, e u prciser ce que veut dire obtenir de linformation sur le message clair. Pour e cela, nous introduisons maintenant les principes fondamentaux de la thorie e de linformation, qui servent galement de base aux principes de compression e des messages.

1.2.2

Un peu de probabilits e

Dans un syst`me cryptographique, si on utilise une clef gnre au hasard, e e ee toute dviance par rapport au vrai hasard sera un angle dattaque pour e la cryptanalyse. Le hasard a aussi sa part dans les mthodes de compression, e car d`s quil y a un ordre visible, une redondance, une organisation dans un e message, non seulement les casseurs de codes vont sen servir, mais les crateurs e de codes vont y voir un moyen dexprimer le message de faon plus dense. c Mais quappelle-t-on une dviance par rapport au hasard, et plus simplement e quappelle-t-on le hasard ? Par exemple, si les numros 1 2 3 4 5 6 tombent e au Loto, on doutera beaucoup quils aient t vraiment gnrs au hasard, ee e ee bien que stricto sensu cette combinaison ait autant de chance dtre gnre e e ee que nimporte quelle autre. Si nous nirons pas bien loin dans la philosophie, cette section apportera quelques moyens mathmatiques daborder le hasard e et ses eets, puis de crer quelque chose qui se rapprocherait du hasard. e e Ev`nements et mesure de probabilit e Un v`nement est le rsultat possible dune exprience alatoire. Par exemple, e e e e e si lexprience est un jet de d ` six faces, lobtention du nombre 6 est un e e a v`nement. Les oprateurs sur les ensembles (, , \) sont utiliss pour les e e e e v`nements (ils signient ou, et, sauf). e e On note lensemble de tous les v`nements possibles pour une exprience e e e donne. e

1.2 Codage par ot et probabilits e

31

Une mesure de probabilit P est une application dnie sur , ` valeur dans e e a [0, 1], qui vrie : e 1. P () = 1 et P () = 0 ; 2. quels que soient A, B des v`nements disjoints (A B = ), P (A B) = e e P (A) + P (B). Si lensemble des v`nements est un ensemble discret ou ni, on parle de e e probabilit discr`te. e e Par exemple, si lexprience alatoire est le jet dun d ` six faces non pip, e e ea e lensemble des v`nements est {1, 2, 3, 4, 5, 6}, et la probabilit doccurrence e e e de chacun 1/6. Lensemble des valeurs prises par la fonction de probabilit est la distribution e des probabilits, ou loi de probabilit. Une distribution est dite uniforme si tous e e les v`nements ont une mme probabilit doccurrence. e e e e Le lemme dit de Gibbs est un rsultat sur les distributions discr`tes qui nous e e sera utile plusieurs fois dans cet ouvrage. Lemme 1 (de Gibbs). Soient (p1 , . . . , pn ), (q1 , . . . , qn ) deux lois de probabilit discr`tes. e e n qi 0. pi log pi
i=1

Preuve. On sait que pour tout x R+ , ln(x)


n

x 1. Donc

pi ln
i=1

qi pi

pi (
i=1

qi 1) . pi
n i=1 pi q ( pi 1) = i n i=1 qi

Soit puisque n pi = i=1 n pi = 0 . Par suite, i=1

n i=1 qi = 1, alors n qi 0. i=1 pi log pi

Probabilits conditionnelles et Formule de Bayes e On dit que deux v`nements sont indpendants si P (A B) = P (A)P (B). On e e e appelle probabilit conditionnelle de lv`nement A par rapport ` lv`nement e e e a e e B, la probabilit que A se produise, sachant que B sest dj` produit. Elle est e ea note P (A|B) et dnie par : e e P (A|B) = P (A B) P (B)

Par rcurrence, on montre facilement que pour un ensemble dv`nements e e e A1 , . . . , An ,


P (A1 . . . An ) = P (A1 |A2 . . . An )P (A2 |A3 . . . An ) . . . P (An1 |An )P (An )

32

e Chapitre 1 : Thorie des codes

La formule dite de Bayes permet de calculer pour un ensemble dv`nements e e A1 , . . . , An , B les probabilits P (Ak |B) en fonction des P (B|Ak ). e P (Ak |B) = P (B|Ak )P (Ak ) P (Ak B) = P (B) i P (B|Ai )P (Ai )

Exercice 1.7. On propose le code secret suivant, permettant de coder deux caract`res a et b avec trois clefs direntes k1 , k2 et k3 : si la clef est k1 alors e e a 1 et b 2, si la clef est k2 alors a 2 et b 3, sinon a 3 et b 4. On suppose en outre que lon a des connaissances a priori sur le message M envoy et la clef K utilise : P (M = a) = 1/4 ; P (M = b) = 3/4 et e e P (K = k1 ) = 1/2 ; P (K = k2 ) = P (K = k3 ) = 1/4. Quelles sont les probabilits dobtenir les chires 1, 2 ou 3 ? Quelles sont les e probabilits conditionnelles que le message soit a ou b sachant la valeur du e chire ? Peut-on dire intuitivement si ce code secret est un chirement parfait ? Solution page 280. Ces brefs rappels tant faits sur la thorie de base permettant dtudier des e e e v`nements alatoires, voyons ce que lalatoire signie pour des ordinateurs. e e e e

1.2.3

Entropie

Source dinformation On appelle S lalphabet du message source. Un message est alors un lment de ee S + . Pour tout message, on peut calculer les frquences dapparition de chaque e lment de lalphabet, et construire ainsi une distribution de probabilits sur S. ee e Une source dinformation est constitue du couple S = (S, P) o` S = (s1 , . . . , e u sn ) est lalphabet source et P = (p1 , . . . , pn ) est une distribution de probabilits sur S, cest-`-dire que pi est la probabilit doccurrence de si dans une e a e mission. On peut construire une source dinformation ` partir de nimporte e a quel message, en construisant la distribution de probabilits ` partir de la e a frquence des caract`res dans le message. e e La source dinformation S = (S, P) est dite sans mmoire lorsque les v`nee e e ments (occurrences dun symbole dans une mission) sont indpendants et que e e leur probabilit reste stable au cours de lmission (la source est stationnaire). e e La source est dite markovienne si les probabilits doccurrence des caract`res e e dpendent des caract`res mis prcdemment. Dans le cas dun seul prdcese e e e e e e seur, P = {pij }, o` pij est la probabilit doccurrence de si sachant que sj u e vient dtre mis. On a alors pi = j pij . e e Par exemple, un texte en franais est une source, dont lalphabet est lenc semble des lettres latines et les probabilits doccurrence sont les frquences e e

1.2 Codage par ot et probabilits e

33

dapparition de chaque caract`re. Comme les probabilits dpendent dans ce e e e cas fortement des caract`res qui viennent dtre mis (un U est beaucoup plus e e e probable apr`s un Q quapr`s un autre U), le mod`le markovien sera plus e e e adapt. e Une image induit aussi une source, dont les caract`res de lalphabet sont des e niveaux de couleurs. Un son est une source dont lalphabet est un ensemble de frquences et dintensits. e e Une source S est dite sans redondance si sa distribution de probabilits est e uniforme. Ce qui nest videmment pas le cas pour les messages courants, o` e u certaines lettres ou certains mots sont beaucoup plus employs que dautres. e Ce sera langle dattaque des mthodes de compression mais aussi des pirates e qui chercheraient ` lire un message sans y tre autoriss. a e e Entropie dune source Lentropie est une notion fondamentale pour la manipulation dun code. Cest en eet une mesure, ` la fois de la quantit dinformation quon peut attribuer a e ` une source (ce qui sera utile pour la compression des messages), et du degr a e dordre et de redondance dun message, ce qui est une information cruciale pour la cryptographie. Lentropie dune source S = (S, P), S = (s1 , . . . , sn ), P = (p1 , . . . , pn ) est :
n n

H(S) = H(p1 , . . . , pn ) =
i=1

pi log2 (pi ) =
i=1

pi log2 (

1 ). pi

On dsigne par extension lentropie dun message comme lentropie de la source e induite par ce message, la distribution de probabilits tant calcule ` partir e e e a des frquences dapparition des caract`res dans le message. e e Proprit 1. Soit S = (S, P) une source. e e 0 H(S) log2 n .

1 Preuve. Appliquons le lemme de Gibbs ` la distribution (q1 , . . . , qn ) = ( n , a 1 . . ., n ), on obtient H(S) log2 n quelle que soit la source S. Enn, la positivit e est vidente puisque les probabilits pi sont infrieures ` 1. e e e a P Remarquons que pour une distribution uniforme, lentropie atteint donc son maximum. Elle baisse quand on sloigne de la distribution. Cest pour cette e raison quon lappelle mesure du dsordre , en supposant que le plus grand e dsordre est atteint par la distribution uniforme. e

Exercice 1.8. Quelle est lentropie dune source qui met un caract`re 1 avec e e une probabilit 0.1 et le caract`re 0 avec une probabilit 0.9 ? Pourquoi une e e e faible entropie est-elle un bon augure pour la compression ? Solution page 280.

34

e Chapitre 1 : Thorie des codes

Entropies conjointe et conditionnelle On tend facilement la dnition de lentropie ` plusieurs sources. Soient S1 = e e a (S1 , P1 ) et S2 = (S2 , P2 ) deux sources sans mmoire, dont les v`nements ne e e e sont pas forcment indpendants. On note S1 = (s11 , . . . , s1n ), P1 = (pi )i=1..n , e e S2 = (s21 , . . . , s2m ) et P2 = (pj )j=1..m ; puis pi,j = P (S1 = s1i S2 = s2j ) la probabilit doccurrence conjointe de s1i et s2j et pi|j = P (S1 = s1i |S2 = s2j ) e la probabilit doccurrence conditionnelle de s1i et s2j . e On appelle lentropie conjointe de S1 et S2 la quantit e
n m

H(S1 , S2 ) =
i=1 j=1

pi,j log2 (pi,j )

Par exemple, si les sources S1 et S2 sont indpendantes, alors pi,j = pi pj pour e tous i, j et donc dans cas on montre facilement que H(S1 , S2 ) = H(S1 )+H(S2 ). Au contraire, il peut arriver, si les v`nements de S1 et S2 ne sont pas ine e dpendants, quon veuille conna e tre la quantit dinformation contenue dans e une source, connaissant un v`nement de lautre. On calcule alors lentropie e e conditionnelle de S1 relativement ` la valeur de S2 , donne par a e
n

H(S1 |S2 = s2j ) =


i=1

pi|j log2 (pi|j )

Enn, on tend cette notion ` une entropie conditionnelle de S1 connaissant e a S2 , qui est la quantit dinformation restant dans S1 si la loi de S2 est connue : e
m

H(S1 |S2 ) =
j=1

pj H(S1 |S2 = s2j ) =


i,j

pi,j log2

pj pi,j

Cette notion est cruciale en cryptographie. En eet, il est tr`s important que e tous les messages crypts aient une entropie forte, pour ne pas que les traces e dorganisation dans un message donnent des informations sur la mani`re dont e il a t crypt. Mais il est aussi important que lentropie reste forte si on arrive ee e ` conna des informations dpendantes, par exemple mme la connaissance a tre e e dun message et de son cryptage ne devrait pas donner dinformation sur la clef utilise. e On a alors les relations simples mais importantes suivantes : H(S1 ) H(S1 |S2 )

avec galit si et seulement si S1 et S2 sont indpendantes ; et encore : e e e H(S1 , S2 ) = H(S2 ) + H(S1 |S2 )

1.2 Codage par ot et probabilits e

35

Mais lentropie dune source sans mmoire ` elle seule ne capture pourtant e a pas tout lordre ou le dsordre contenu dans un message. Par exemple, les e messages 1 2 3 4 5 6 1 2 3 4 5 6 et 3 1 4 6 4 6 2 1 3 5 2 5 ont la mme e entropie, et pourtant le premier est susamment ordonn pour quon puisse e le dcrire par une formule, du type 1. . .6 1. . .6, ce qui nest sans doute pas le e cas du second. Pour prendre en compte ce type dorganisation, on fait appel aux extensions de sources. Extension dune source
e Soit une source S sans mmoire. La k i`me extension S k de S est le doublet e (S k , P k ), o` S k est lensemble des mots de longueur k sur S, et P k est la u distribution de probabilit ainsi dnie : pour un mot s = si1 . . . sik S k , e e k (s) = P (s . . . s ) = p . . . p . alors P i1 ik i1 ik 1 3 Exemple : S = (s1 , s2 ), P = ( 4 , 4 ) alors S 2 = (s1 s1 , s1 s2 , s2 s1 , s2 s2 ) et 2 =( 1 , 3 , 3 , 9 ) . P 16 16 16 16 Si S est une source markovienne, on dnit de la mme faon S k , et pour un e e c mot s = si1 . . . sik S k , alors P k (s) = pi1 pi2 i1 . . . pik ik1 . e Proprit 2. Soient S une source, et S k sa k i`me extension. e e

H(S k ) = kH(S) . Autrement dit, cette proprit exprime que la quantit dinformation dune ee e source tendue ` k caract`res est exactement k fois celle de la source originelle. e a e Cela semble tout ` fait naturel. a Cependant, il faut distinguer une source dun message (un chier par exemple). Tout dabord, ` partir dun chier il est possible de dnombrer les occurrences a e des caract`res et de donner une entropie correspondant ` la source qui aurait e a les caractristiques probabilistes identiques. Cela permet dutiliser la thorie e e de linformation pour compresser des chiers, nous verrons cela plus en dtails e dans la section 2. Ensuite, dans le cas dun message, il est possible de regrouper les caract`res du message k par k. Attention, l` nous ne sommes plus du e a tout dans le cadre de la proprit 2 ! Au contraire, lentropie de la source ee correspondant ` cette extension de message est alors forcment infrieure a e e ` lentropie correspondant au message initial. a Exemple : Les messages 1 2 3 4 5 6 1 2 3 4 5 6 et 3 1 4 6 4 6 2 1 3 5 2 5 correspondent ` la mme entropie en prenant la premi`re extension de la a e e source : 6 caract`res de probabilit un sixi`me chacun, donnent une entropie e e e 1 de 6 6 log2 (6) = log2 (6) 2.585. Avec la deuxi`me extension de la source e i=1

36

e Chapitre 1 : Thorie des codes

1 1 1 1 1 1 ( 6 , 6 , 6 , 6 , 6 , 6 ), on obtient 36 groupes possibles chacun de probabilit 36 et e 1 dentropie conforme ` la proprit 2 : log2 (36) = log2 (62 ) = 2 log2 (6). a ee Toutefois, en regroupant les messages par exemple par blocs de deux caract`res, on obtient : e (12)(34)(56)(12)(34)(56) : trois couples distincts de probabilit un tiers chae cun correspondent ` une entropie de log2 (3) 1.585. a De mme (31)(46)(46)(21)(35)(25) donnent 5 couples distincts dentropie e 6 2 1 1 log2 (6) + 6 log2 ( 2 ) + 3 6 log2 (6) 2.252. 6 Dans les deux cas lentropie obtenue est bien infrieure ` deux fois celle du e a message initial. Nous prcisons ceci dans la proprit 3. e ee

Proprit 3. Soient M un message de taille n et SMk la source dont les e e probabilits correspondent aux occurrences des k-uplets conscutifs de M . Alors e e H(SMk ) log2 n k .

Preuve. Il y a n k-uplets dans le message M . En outre lentropie est maxik male pour le plus grand nombre de k-uplets distincts possibles doccurrences gales. Dans ce cas la source quivalente serait dau plus n caract`res tous e e e k 1 distincts et de probabilit doccurrence n . Ce qui donne une entropie de e P log2 n . k Ceci nous am`ne au probl`me du hasard et de sa gnration. Une suite de e e e e nombres gnre au hasard devra rpondre ` des crit`res forts, et en particulier e ee e a e avoir une haute entropie. On ne serait pas satisfait de la suite 1 2 3 4 5 6 1 2 3 4 5 6, qui prsente une forme dorganisation aisment dtectable. On e e e le serait plus si on rencontrait 3 1 4 6 4 6 2 1 3 5 2 5, qui a une entropie suprieure, mais parfois les modes dorganisation et les biais sont plus subtils, e et pourtant ils sont de bons angles dattaque pour les casseurs de codes.
k

1.2.4

Chirement parfait

Nous disposons maintenant de lattirail thorique pour prciser ce que nous e e entendons par chirement inconditionnellement sr, ou chirement parfait. Un u chirement est parfait si le message chir C ne fournit aucune information e sur le message initial M ; en terme dentropie, puisque cest la mesure de la quantit dinformation que nous avons adopte, on aura : e e H(M |C) = H(M ) Exercice 1.9 (Preuve de la perfection du code de Vernam). 1. Dmontrer que pour un code secret o` la clef K est gnre alatoirement e u e e e e pour chaque message M on a H(M |K) = H(M ).

1.3 Codage par blocs, alg`bre et arithmtique e e

37

2. En utilisant les entropies conditionnelles et la dnition du code de Vere nam, dmontrer que dans un code de Vernam (C = M K), on a e toujours H(M, K, C) = H(M, C) = H(M, K) = H(C, K) ; en dduire e des relations entre les entropies conditionnelles de M , C et K. 3. Dmontrer que le chirement ` clef jetable de Vernam est un chirement e a parfait. Solution page 280.

1.2.5

Mise en pratique du chirement parfait ?

On dispose dune mthode de cryptage dont on poss`de la preuve de la scue e e rit. Cest dailleurs la seule mthode connue pour laquelle on ait prouv son e e e caract`re parfait. e Mais pour se servir de cette mthode en pratique, il faut savoir gnrer des e e e clefs alatoires, et ce probl`me est loin dtre trivial. Dautre part, comme la e e e clef nest pas rutilisable, les protocoles dchange des clefs entre metteurs et e e e destinataires restent problmatiques. e Nous allons voir dans la section suivante comment construire des codes qui rutilisent une clef unique et rendent le protocole dchange moins fastidieux. e e Sans tre parfaits, ces codes tendent vers cette proprit. La premi`re ide e ee e e sera de dcouper le message en blocs et de chirer chaque bloc sparment. e e e La deuxi`me ide est de gnrer des nombres alatoires de bonne qualit, ou e e e e e e plus prcisment des nombres pseudo-alatoires. Cela permet de raliser un e e e e chirement bit ` bit (par ot) comme illustr sur la gure 1.1. a e
ki mn ... m i+1 m i ci ... c1 c0

Fig. 1.1: Chirement bit ` bit (par ot). a

1.3

Codage par blocs, alg`bre et arithmtique e e

Le chirement de Vernam est aujourdhui le seul algorithme cryptographique ` clef secr`te prouv inconditionnellement sr. Ainsi tous les autres syst`mes a e e u e sont thoriquement cassables. e Pour ces syst`mes, on utilise des chirements pratiquement srs : la connaise u sance du message chir (ou de certains couples message clair/message chir) e e

38

e Chapitre 1 : Thorie des codes

ne permet de retrouver ni la clef secr`te ni le message clair en un temps hue mainement raisonnable (voir les ordres de grandeur et les limites des machines ` la section 1.1.7). a On peut dcider par exemple, pour viter des protocoles dchange de clef e e e trop frquents, de choisir une clef unique, et de la rutiliser. Ceci impose le e e dcoupage des messages sources en blocs dune certaine taille, fonction de la e taille de la clef. Le chirement par blocs est un standard qui sera galement e largement utilis pour la dtection et la correction derreurs. e e Cest aussi le principe de lun des codes les plus cl`bres, le code ASCII (pour ee American Standard Code for Information Interchange ), pour la reprsene tation numrique des lettres et signes de lalphabet latin. Dans le code ASCII, e lalphabet source est lalphabet latin, et lalphabet du code est V = {0, 1}. Les mots de code sont tous les mots de longueur 8 sur V : C = {00000000, 00000001, . . . , 11111111} . Chacun des 28 = 256 caract`res (majuscules, minuscules, caract`res spciaux, e e e caract`res de contrle) est reprsent par un mot de longueur 8 sur V suivant e o e e une fonction de codage dont un extrait est donn par la table 1.2 ci-dessous. e A B C D E F G H I 01000001 01000010 01000011 01000100 01000101 01000110 01000111 01001000 01001001 J K L M N O P Q R 01001010 01001011 01001100 01001101 01001110 01001111 01010000 01010001 01010010 S T U V W X Y Z espace 01010011 01010100 01010101 01010110 01010111 01011000 01011001 01011010 00100000

Tab. 1.2: Un extrait du code ASCII.

Par exemple, le codage ASCII du message : UNE CLEF, est la cha : ne 0101010101001110010001010010000001000011010011000100010101000110.

1.3.1

Blocs et modes de cha nage

On peut coder chaque bloc dun message par un mme algorithme de faon e c indpendante pour chaque bloc. Cest ce qui est appel le mode de codage e e ECB, pour Electronic Code Book . Plus gnralement, cette indpendance e e e de codage entre les blocs nest pas requise et les direntes faons de combiner e c les blocs sont appels modes de chirement. e

1.3 Codage par blocs, alg`bre et arithmtique e e Le mode ECB : Electronic Code Book

39

Dans ce mode, le message M est dcoup en blocs mi de taille xe. e e Chaque bloc est alors crypt spae e ci = Ek (mi ) (1.1) rment par une fonction Ek , parae mtre par une clef k comme sur la e e ... m1 m2 mn gure 1.2. Ainsi un bloc de message donn mi e Ek Ek Ek sera toujours cod de la mme mae e ni`re. Ce mode de chirement est le e plus simple mais ne prsente donc e c1 c2 cn aucune scurit et nest normalee e ment jamais utilis en cryptogra- Fig. 1.2: Mode de chirement par blocs e phie. ECB.

Le mode CBC : Cipher Bloc Chaining Le mode CBC a t introduit pour quun bloc ne soit pas cod de la mme ee e e mani`re sil est rencontr dans deux messages dirents. Il faut ajouter une e e e valeur initiale C0 (ou IV pour initial value ), alatoire par exemple. Chaque e bloc est dabord modi par XOR avec le bloc crypt prcdent avant dtre e e e e e lui mme crypt conformment ` la gure 1.3 par : e e e a ci = Ek (mi ci1 )
m1 m2 ... mn

(1.2)

IV = c0

Ek

Ek

Ek

c1

c2

cn

Fig. 1.3: Mode de chirement par blocs CBC.

Cest le mode de chirement le plus utilis. Le dchirement ncessite linverse e e e 1 de la fonction de codage Dk = Ek pour dchirer : mi = ci1 Dk (ci ). e

40 Le mode CFB : Cipher FeedBack

e Chapitre 1 : Thorie des codes

Pour ne pas avoir besoin de la fonction inverse pour dcrypter, il est possible e de faire un XOR apr`s le cryptage, cest le principe du mode CFB, comme on e peut le voir sur la gure 1.4. ci = mi Ek (ci1 )
m1 m2 ... mn

(1.3)

IV = c0

Ek

Ek

Ek

c1

c2

cn

Fig. 1.4: Mode de chirement par blocs CFB.

Lintrt de ce mode est que le dchirement ne ncessite pas limplmentation ee e e e de la fonction Dk : mi = ci Ek (ci1 ). Ce mode est donc moins sr que le u CBC et est utilis par exemple pour les cryptages rseaux. e e Le mode OFB : Output FeedBack Une variante du mode prcdent permet davoir un codage et un dcodage e e e totalement symtrique, cest le mode OFB suivant la gure 1.5. e z0 = c0 ; zi = Ek (zi1 ) ; ci = mi zi
m1 m2 ... mn

(1.4)

IV = c0

1 Ek 0 1 0

1 Ek 0 1 0

1 Ek 0 1 0

c1

c2

cn

Fig. 1.5: Mode de chirement par blocs OFB.

Ce qui se dchire par : zi = Ek (zi1 ) ; mi = ci zi . Ce mode est utile dans les e satellites pour lesquels minimiser le nombre de circuits embarqus est crucial. e

1.3 Codage par blocs, alg`bre et arithmtique e e Le mode CTR : Counter-mode encryption

41

Ce mode est galement totalement symtrique, mais en outre facilement pae e ralllisable. Il fait intervenir le chirement dun compteur de valeur initiale T : e

ci = mi Ek (T + i)
T+1

(1.5)
T+n

m1

T+2

m2

...

mn

Ek

Ek

Ek

c1

c2

cn

Fig. 1.6: Mode de chirement par blocs CTR.

Le dchirement est identique : mi = ci Ek (T + i). Lintrt dun tel mode e ee est que les dirents calculs sont indpendants, comme pour le mode ECB, e e mais quun mme bloc nest a priori jamais cod de la mme faon. e e e c Exercice 1.10. Un message M est dcoup en n blocs M = M1 , . . . , Mn e e qui sont crypts dans un schma par blocs en C = C1 , . . . Cn . Bob reoit les e e c blocs Ci , mais malheureusement, il ne sait pas quun et un seul des blocs a t ee transmis incorrectement (par exemple, des 1 ont t changs en 0 et vice versa ee e durant la transmission du bloc C1 ). Montrer que le nombre de blocs du message mal dcrypts par Bob est gal ` e e e a 1 si lun des modes ECB, OFB ou CTR a t utilis et gal ` 2 si CBC ou ee e e a CFB a t utilis. ee e Solution page 281.

1.3.2

Structures algbriques des mots de codes e

Llaboration des codes par blocs ncessite de pouvoir faire des oprations et e e e des calculs sur les blocs. Par exemple, lopration sur un bloc de bits est e laddition modulo 2 de deux vecteurs de bits. Dautre part, les fonctions de codage doivent tre inversibles, ce qui ncessitera des structures o` lon peut e e u facilement calculer linverse dun bloc. Pour pouvoir faire ces calculs sur des bases algbriques solides, rappelons les structures fondamentales. e

42 Groupes

e Chapitre 1 : Thorie des codes

Un groupe (G, ) est un ensemble muni dun oprateur binaire interne vriant e e les proprits suivantes : ee 1. est associative : pour tous a, b, c G, a (b c) = (a b) c. 2. Il existe un lment neutre e G, tel que pour tout a G, on trouve ee a e = e a = a. 3. Tout lment a un inverse : pour tout a G, il existe a1 G tel que ee a a1 = a1 a = e. De plus, si la loi est commutative (a b = b a pour tous a, b G), alors G est dit ablien. On dit quun sous-ensemble H de G est un sous-groupe de e G lorsque les restrictions des oprations de G conf`rent ` H une structure de e e a groupe. Pour un lment a dun groupe G, on note an la rptition de la loi , ee e e a a, portant sur n termes gaux ` a pour tout n N . e a Si un lment g G est tel que pour tout a G, il existe i Z, tel que a = g i , ee alors g est un gnrateur du groupe (G, ) ou encore une racine primitive. Un e e groupe est dit cyclique sil poss`de un gnrateur. Par exemple, pour un entier e e e n x, lensemble des entiers Zn = {0, 1, . . . , n 1}, muni de la loi daddition e modulo n est un groupe cyclique gnr par 1 ; si n = 7, et si on choisit pour loi e ee de composition la multiplication modulo 7, lensemble {1, . . . , 6} est un groupe cyclique gnr par 3, car 1 = 30 , 2 = 32 = 9, 3 = 31 , 4 = 34 , 5 = 35 , 6 = 33 . e ee Soient un groupe (G, ) et a G. Lensemble {ai , i N} est un sous-groupe de G, not < a > ou Ga . Si ce sous-groupe est ni, son cardinal est lordre de e a. Si G est ni, le cardinal de tout sous-groupe de G divise le cardinal de G. Proprit 4. (Lagrange) Dans un groupe ni ablien (G, , e) de cardinal n, e e e pour tout x G : xn = e. Preuve. Soit a un lment du groupe G, alors a est inversible. Donc, lappliee cation fa : x ax dnie de G dans G est une bijection. Donc Im(fa ) = G ; e do` yIm(fa ) y = xG x. Or yIm(fa ) y = xG a x = an xG x (comu u P mutativit de ). Ainsi an xG x = xG x, do` an = e. e Anneaux Un anneau (A, +, ) est un ensemble muni de deux oprateurs binaires internes e vriant les proprits suivantes : e ee 1. (A, +) est un groupe ablien. e 2. est associative : pour tous a, b, c A, a (b c) = (a b) c. 3. est distributive sur + : pour tous a, b, c A, a(b+c) = (ab)+(ac) et (b + c) a = (b a) + (c a).

1.3 Codage par blocs, alg`bre et arithmtique e e

43

Si de plus poss`de un neutre dans A, A est dit unitaire. Si de plus est e commutative, A est dit commutatif. Tous les lments de A ont un oppos, ee e cest leur inverse pour la loi +. Ils nont cependant pas forcment un inverse e pour la loi . Lensemble des inversibles pour la loi est souvent not A . e Pour un lment a dun anneau A, on note n a (ou plus simplement na) la ee somme a + + a portant sur n termes gaux ` a pour tout n N . e a : k 1 = 0} nest pas vide, le plus petit lment de cet Si lensemble {k N ee ensemble est appel la caractristique de lanneau. Dans le cas contraire, on e e dit que lanneau est de caractristique 0. Par exemple, (Z, +, ) est un anneau e unitaire commutatif de caractristique 0. e Deux anneaux (A, +A , A ) et (B, +B , B ) sont isomorphes lorsquil existe une bijection f : A B vriant pour tous x et y dans A : e f (x +A y) = f (x) +B f (y) et f (x A y) = f (x) B f (y). (1.6)

Si E est un ensemble quelconque et (A, +, ) un anneau tel quil existe une bijection f de E sur A, alors E peut tre muni dune structure danneau : e x +E y = f 1 (f (x) + f (y)) et x E y = f 1 (f (x) f (y)) . (1.7)

Lanneau (E, +E , E ) ainsi dni est videmment isomorphe ` A. Lorsque e e a deux anneaux sont isomorphes, on peut identier lun ` lautre. Cest ce que a nous ferons le plus souvent. Un anneau commutatif est int`gre si il ne poss`de pas de diviseur de zro, e e e autrement dit si pour deux lments x et y vriant xy = 0 alors forcment ee e e lun deux au moins est nul. Un idal I est un sous-groupe dun anneau A pour e la loi + qui est absorbant pour la loi : pour g I, le produit a g reste dans I pour nimporte quel lment a de lanneau A. Pour tout x A la partie ee Ax = {ax; a A} est un idal de A appel idal engendr par x. Un idal I e e e e e de A est dit principal sil existe un gnrateur x (tel que I = Ax). Un anneau e e est principal si et seulement si tout idal y est principal. e Corps Un corps (A, +, ) est un ensemble muni de deux oprateurs binaires internes e vriant les proprits suivantes : e ee 1. (A, +, ) est un anneau unitaire. 2. (A \ {0}, ) est un groupe. Si (A, +, ) est commutatif, cest donc un corps commutatif ; linverse (ou oppos) de x par la loi + est not x ; linverse de x par la loi est not e e e x1 . La caractristique dun corps est sa caractristique en tant quanneau. e e Par exemple, (Q, +, ) est un corps commutatif de caractristique 0. e

44

e Chapitre 1 : Thorie des codes

Puisque tous les anneaux et corps qui nous intressent dans ce cours sont come mutatifs, nous dirons dsormais anneau (respectivement corps) pour dsigner e e un anneau unitaire commutatif (respectivement un corps commutatif). Deux corps sont isomorphes lorsquils sont isomorphes en tant quanneaux. On dit quun sous ensemble W dun corps V est un sous-corps de V lorsque les restrictions des oprations de V ` W conf`rent ` W une structure de corps. e a e a Espaces vectoriels Un ensemble E est un espace vectoriel sur un corps V sil est muni dune loi de composition interne + et dune loi externe ., telles que : 1. (E, +) est groupe commutatif. 2. Pour tout u E, alors 1V .u = u. 3. Pour tous , V et u E, alors .(.u) = ( ).u. 4. Pour tous , V et u E, alors .u + .u = ( + ).u. 5. Pour tous V et u, v E, alors .(u + v) = .u + .v. Un lment dun espace vectoriel est appel un vecteur, et les lments du ee e ee corps V sont des scalaires. Lensemble {0, 1} muni des oprations daddition e et de multiplication est un corps commutatif not F2 . Lensemble des tableaux e de bits de taille n peut donc tre muni dune structure despace vectoriel. e Lensemble des mots de code est alors Fn . 2 Selon la structure choisie, on peut manipuler les mots de code par des additions et des multiplications, enti`res ou vectorielles. Toutes ces structures sont e tr`s gnrales, et classiques en alg`bre. Une particularit des codes est quils e e e e e constituent des ensembles nis. Les groupes et corps nis ont des proprits ee additionnelles que nous utiliserons intensment au ls de cet ouvrage. e On note Z lensemble des entiers, Q le corps des rationnels, R le corps des rels, e N lensemble des entiers positifs ou nuls, Zn lensemble des entiers positifs ou nuls et strictement plus petits que n, pour n N \ {0, 1}. Lensemble Zn muni de laddition et de la multiplication modulo n est un anneau not Z/nZ, qui e sera tr`s utilis en thorie des codes. On dit quun anneau est euclidien sil est e e e muni de la division euclidienne, cest-`-dire que pour tout couple dlments a ee a et b (a b) de cet ensemble, il existe q et r tels que a = bq + r et |r| < |b|. Les nombres q et r sont respectivement le quotient et le reste2 de la division euclidienne, et nots q = a div b et r = a mod b (pour a modulo b). Or e tout anneau euclidien est principal. Ceci implique lexistence dun plus grand commun diviseur (pgcd) pour tout couple dlments (a, b). Ce pgcd est le ee gnrateur de lidal Aa + Ab. e e e
2 le reste r peut a priori tre ngatif, mais dans ce cas s = r + |b| vrie galement e e e e a = (q 1)b + s et s = |s| < |b| ; dans la suite, nous prenons donc toujours r positif.

1.3 Codage par blocs, alg`bre et arithmtique e e

45

Si p est un nombre premier, lanneau Z/pZ est un corps de caractristique e p. En eet, le thor`me classique de Bzout (voir page 48) nous apprend que e e e quels que soient deux entiers a et b, il existe des entiers x et y tels que ax + by = pgcd(a, b). Si p est premier et a est un lment non nul de Zp , cette identit applique ` ee e e a a et p donne ax + bp = 1, soit ax = 1 mod p, donc a est inversible et x est son inverse. On note Fp ce corps. Le corps des nombres rationnels Q et les corps Fp , sont appels corps premiers. e Alg`bre linaire e e Des rudiments dalg`bre linaire sont ncessaires ` la lecture dune grande partie e e a de ce livre. Sans prtention explicative, nous dnissions ici les concepts utiles e e et introduisons les notations principales. Un ensemble de vecteur x1 , . . . , xn est un ensemble indpendant si pour tous e scalaires 1 , . . . , n , n i xi = 0 implique 1 = = n = 0. i=1 La dimension dun espace vectoriel V , note dim(V ) est le cardinal du plus e grand ensemble de vecteurs indpendants de cet espace. e Par exemple, si V est un corps, V n est un espace de dimension n car les vecteurs (1, 0, . . . , 0), (0, 1, 0, . . . , 0), . . . , (0, . . . , 0, 1). sont indpendants. e Une application linaire est une application dune structure dans une autre, e qui prserve les lois de composition. Cest-`-dire, si (A, +) et (B, ) sont deux e a groupes, une application f est dite linaire si pour tous x, y de a, f (x + y) = e f (x) f (y). Si A et B sont des espaces vectoriels, on demande galement que e la loi de composition externe soit prserve, ` savoir f (.x) = .f (x). e e a Limage dune application linaire f dun espace vectoriel E sur un espace e vectoriel F, note Im(f ), est lensemble des vecteurs y F tels quil existe e x E, f (x) = y. Le noyau dune application linaire f dun espace vectoriel E sur un espace e vectoriel F, not Ker(f ), est lensemble des vecteurs x E tels que f (x) = 0. e Il est facile de vrier que Ker(f ) et Im(f ) sont des espaces vectoriels. e Si Im(f ) est de dimension nie, celle-ci est appele le rang de lapplication e linaire et est not Rg(f ) = dim (Im(f )). Si en outre, E est galement de e e e dimension nie alors on a dim(Ker(f )) + dim(Im(f )) = dim(E). Une matrice M de taille (m, n) est un lment de lespace vectoriel V mn , ee reprsent par un tableau de m lignes de taille n, ou n colonnes de taille e e m. Llment de la ligne i et e la colonne j de la matrice est not Mi,j . La ee e multiplication dun vecteur x de taille n par une telle matrice donne un vecteur y de taille m vriant yi = n Mi,k xk pour i de 1 ` m ; cette multiplication e a k=1 est note y = M x. e

46

e Chapitre 1 : Thorie des codes

` A toute matrice M correspond une application linaire f de V m dans V n , e dnie par f (x) = M x. Rciproquement, toute application linaire peut tre e e e e crite ainsi sous forme matricielle. Les procds de codage que nous verrons e e e tout au long de ce livre, et principalement au chapitre 4, font largement appel aux applications linaires, ce qui permet de montrer rigoureusement les e proprits de ces fonctions. ee

1.3.3

Codage bijectif dun bloc

Maintenant que nous disposons de structures dans lesquelles nos blocs peuvent tre additionns, multiplis, diviss (selon la division euclidienne), et possder e e e e e un inverse, nous donnons ici des exemples fondamentaux de calculs quil est possible de faire dans des ensembles qui poss`dent une bonne structure alge e brique. Les blocs tant de tailles nies, les ensembles manipuls dans cette e e section sont nis. Inverse modulaire : algorithme dEuclide Le thor`me de Bzout garantit lexistence des coecients et donc de linverse e e e dun nombre modulo un nombre premier, et cest lalgorithme dEuclide qui permet de les calculer ecacement. Dans sa version fondamentale, lalgorithme dEuclide calcule le pgcd (plus grand commun diviseur) de deux nombres entiers. Le principe est : en supposant que a > b, pgcd(a, b) = pgcd(a b, b) = pgcd(a 2b, b) = = pgcd(a mod b, b) o` a mod b est le reste de la division euclidienne de a par b. En eet, si a et u b ont un diviseur commun d alors a b, a 2b, . . . sont aussi divisibles par d. Un principe rcursif se dessine : e Algorithme 3 PGCD : algorithme dEuclide. Entres Deux entiers a et b, a b. e Sorties pgcd(a, b) Si b = 0 Alors Renvoyer a ; Sinon Calculer rcursivement pgcd(b, a mod b) et renvoyer le rsultat ; e e Fin Si

1.3 Codage par blocs, alg`bre et arithmtique e e

47

Exemple : Dterminons le pgcd de 522 et 453. On calcule successivement : e pgcd(522, 453) = pgcd(453, 522 mod 453 = 69) = pgcd(69, 453 mod 69 = 39) = pgcd(39, 69 mod 39 = 30) = pgcd(30, 39 mod 30 = 9) = pgcd(9, 30 mod 9 = 3) = pgcd(3, 9 mod 3 = 0) = 3. Le pgcd de 522 et 453 est gal ` 3. e a Algorithme dEuclide tendu. La version dite tendue de lalgorithme e e dEuclide, celle que nous emploierons tr`s souvent dans cet ouvrage, permet, en e plus du calcul du pgcd de deux nombres, de trouver les coecients de Bzout. e Il est tendu aussi parce quon veut le rendre un peu plus gnrique en lui e e e donnant la possibilit de lappliquer non seulement ` des ensembles de nombres e a mais aussi ` nimporte quel anneau euclidien. Ce sera le cas des polynmes, a o comme nous le verrons dans les sections suivantes. Le principe de lalgorithme est ditrer la fonction G suivante : e G : a b 0 1 1 (a div b) a b .

Exemple : Pour trouver x et y tel que x 522 + y 453 = pgcd(522, 453), on crit les matrices correspondant ` litration avec la fonction G, on a : e a e 3 0 = 0 1 0 1 1 3 1 3 0 1 522 1 1 453 46 53 522 151 174 453 0 1 1 1 0 1 1 1 0 1 1 6

On obtient ainsi 151522+174453 = 3. Do` d = 3, x = 151 et y = 174. u On donne une version de lalgorithme dEuclide tendu qui ralise ce calcul e e en ne stockant que la premi`re ligne de G. Il aecte les variables x, y et d de e faon ` vrier en sortie : d = pgcd(a, b) et ax + by = d. c a e Pour une rsolution ` la main , on pourra calculer rcursivement les quae a e e tions (Ei ) suivantes (en sarrtant lorsque ri+1 = 0) : e (E0 ) : 1a + 0b = a (E1 ) : 0a + 1b = b (Ei+1 ) = (Ei1 ) qi (Ei ) ui a + vi b = ri

48

e Chapitre 1 : Thorie des codes

Algorithme 4 PGCD : algorithme dEuclide tendu. e Entres Deux lments a et b dun ensemble euclidien, a b. e ee Sorties d = pgcd(a, b) et x,y tels que ax + by = d Si b = 0 Alors Renvoyer d = a, x = 1, y = 1 ; Sinon Appeler rcursivement Euclide tendu sur b, a mod b ; e e Soient d, x, y les lments du rsultat. ee e Calculer u = x (a div b) y ; Renvoyer d, y, u ; Fin Si Un exemple de rsolution par cette mthode est donn en solution de lexercice e e e suivant. Exercice 1.11 (Algorithme dEuclide tendu). On demande de trouver e les coecients de Bzout pour les nombres entiers suivants : e (a, b) = (50, 17) (a, b) = (280, 11) Solution page 281. (a, b) = (50, 35) Nous donnons maintenant la preuve que cet algorithme est correct, cela fournit galement une preuve constructive du thor`me de Bzout. e e e e Thor`me 1 (Bzout). Soient a et b deux entiers relatifs non nuls et d leur e e e pgcd. Il existe deux entiers relatifs x et y tels que |x| < |b| et |y| < |a| vriant e lgalit de Bzout ax + by = d et lalgorithme dEuclide tendu est correct. e e e e Preuve. Tout dabord, montrons que la suite des restes est toujours divisible par d = pgcd(a, b) : par rcurrence si rj2 = kd et rj1 = hd alors rj = e rj2 qj rj1 = d(k qj h) et donc pgcd(a, b) = pgcd(rj1 , rj ). Ensuite, la suite des restes positifs rj est donc strictement dcroissante et minore par 0 e e donc converge. Cela prouve que lalgorithme termine. En outre, la suite converge forcment vers 0, puisque sinon on peut toujours e continuer ` diviser le reste. Il existe donc un indice i tel que ri1 = qi+1 ri + 0. a Dans ce cas, pgcd(ri1 , ri ) = ri et la remarque prcdente indique donc que ri e e est bien le pgcd recherch. e Il reste ` montrer que les coecients conviennent. Nous procdons par ra e e currence. Clairement le cas initial a mod b = 0 convient et lalgorithme est correct dans cas. Ensuite, notons r = a mod b et q = a div b, alors a = bq + r. Par rcurrence, avec les notations internes de lalgorithme 4 on a e que d = xb + yr avec |x| < b et |y| < r. Cette relation induit immdiatement e

1.3 Codage par blocs, alg`bre et arithmtique e e que d = ya + (x qy)b avec |y| < r < b et |x qy| Ce qui prouve que lalgorithme est correct.

49 |x| + q|y| < b + qr = a. P

Exercice 1.12 (Calcul modulaire). Lalgorithme dEuclide Etendu permet aussi de rsoudre des quations linaires modulaires. Donner une mthode qui e e e e rsout les quations suivantes : e e 1. 17x = 10 mod 50 2. 35x = 10 mod 50 3. 35y = 11 mod 50 Solution page 281.

` Complexit de lalgorithme dEuclide. A chaque tape, le plus grand e e des nombres est au moins divis par deux, donc sa taille diminue dau moins 1 e bit. Le nombre dtapes est par consquent major par O(log2 (a) + log2 (b)). e e e ` A chaque tape, on fait aussi un calcul de reste de division euclidienne. Les e algorithmes appris ` lcole primaire pour eectuer une division euclidienne ont a e 2 un cot de O(log2 (a)). Le cot total est nalement major par O(log3 (a)), soit u u e 2 O(n3 ) si n est la taille des donnes. Une tude plus ne de lalgorithme peut e e toutefois prciser cette complexit. En eet, le cot de lalgorithme dEuclide e e u est plutt de lordre de O(log2 (a)) ! La preuve est technique, mais lide est o e 2 assez simple : soit il y a eectivement de lordre de O(log2 (a)) tapes, mais e alors chaque quotient est tr`s petit et alors chaque division et multiplication e peut se faire en seulement O(log2 (a)) oprations, soit les quotients sont grands e et chaque division et multiplication doit se faire en O(log2 (a)) oprations, mais e 2 alors le nombre dtapes est constant. e Exercice 1.13. Traduisez lalgorithme dEuclide tendu dans votre langage e de programmation prfr. ee e Solution (en C++) page 282. Lindicatrice dEuler et le thor`me de Fermat e e Soit n 2 un entier. On note Z lensemble des entiers strictement positifs n plus petits que n et premiers avec n : Z = {x N : 1 n x < n et pgcd(x, n) = 1}.

e e Le cardinal de Z est not (n). La fonction est appele indicatrice dEuler. n Par exemple, (8) = 4. De plus, si p est un nombre premier, (p) = p 1. Une formule plus gnrale fait lobjet de lexercice 1.16. e e ee Dans Z , tout lment x a un inverse : en eet, comme x est premier avec n, n lidentit de Bzout assure lexistence de deux entiers de signes opposs u et e e e

50 v (1 |u| < n et 1 |v| < x), tels que :

e Chapitre 1 : Thorie des codes

u.x + v.n = 1 On a alors u.x = 1 mod n, i.e. u = x1 mod n. On appelle u linverse de x modulo n. Le calcul de u se fait grce ` lalgorithme dEuclide tendu. a a e Thor`me 2 (Euler). Soit a un lment quelconque de Z . On a : a(n) = 1 e e ee n mod n. Preuve. Soit a un lment quelconque de Z . Lensemble des produits des ee n lments de Z par a, Ga = {y = ax mod n pour x Z } est gal ` Z . En ee e a n n n eet, quel que soit y Z , on peut poser x = a1 y puisque a est inversible et n rciproquement si a et x sont inversibles modulo n alors leur produit lest aussi e ((ax)1 = x1 a1 mod n). Ainsi, comme ces deux ensembles sont gaux, les e produits respectifs de tous leurs lments sont aussi gaux modulo n : ee e x=
xZ n yGa

y=
xZ n

ax mod n

Or, comme la multiplication est commutative dans Z , on peut alors sortir les n a du produit, et comme il y a (n) lments dans Z on obtient la formule ee n suivante modulo n : x = a(n)
xZ n xZ n

x mod n

La conclusion vient alors du fait que les lments de Z tant inversibles, leur ee n e produit lest aussi et donc, en simpliant, on obtient 1 = a(n) mod n. P Le thor`me de Fermat se dduit directement du thor`me dEuler dans le cas e e e e e o` n est un nombre premier. u Thor`me 3 (Fermat). Si p est premier, alors tout a Zp vrie : ap = a e e e mod p. Preuve. Si a est inversible, alors le thor`me dEuler nous donne ap1 = 1 e e mod p. En remultipliant par a on obtient la relation dsire. Le seul none e inversible de Zp si p est premier est 0. Dans ce cas, on a immdiatement e 0p = 0 mod p. P Le thor`me chinois, originellement formul par le mathmaticien chinois Qin e e e e i`me si`cle, permet de combiner plusieurs congruences moe Jiu-Shao au XIII e dulo des nombres premiers entre eux, pour obtenir une congruence modulo le produit de ces nombres.

1.3 Codage par blocs, alg`bre et arithmtique e e

51

Thor`me 4 (Thor`me chinois). Soient n1 , . . . , nk des entiers positifs e e e e premiers entre eux deux ` deux, et N = ni . Alors, pour tout ensemble de a nombres entiers a1 , . . . , ak , il existe une unique solution x N au syst`me e N dquations modulaires {x = ai mod mi , pour i = 1..k}. En posant Ni = ni , e cette unique solution est donne par : e
k k

x=
i=1

ai Ni Ni1 mod ni

mod
i=1

ni

Preuve. Nous procdons en deux temps : nous montrons dabord lexistence e de x puis lunicit. Comme les ni sont premiers entre eux, Ni et ni sont premiers e entre eux. Le thor`me dEuclide nous assure alors lexistence de linverse de e e Ni modulo ni , note yi = Ni1 mod ni . Nous posons ensuite x = n ai yi Ni e i=1 mod N et il est facile de vrier que x ainsi dni convient ! En eet, pout e e tout i, x = ai yi Ni mod ni puisque ni divise tous les Nj avec j = i. Mais alors la dnition de yi donne x = ai .1 = ai mod ni . e Il nous reste ` prouver lunicit de x. Supposons quil en existe deux, x1 et x2 . a e Alors x2 x1 = 0 mod n1 et x2 x1 = 0 mod n2 . Donc x2 x1 = k1 n1 = k2 n2 pour certains k1 et k2 . Donc n1 divise k2 n2 . Or n1 et n2 sont premiers entre eux, donc n1 doit diviser k2 ; ainsi x2 x1 = 0 mod n1 n2 . En procdant par e rcurrence, comme ni+1 est premier avec le produit n1 n2 . . . ni , on en dduit e e que x2 x1 = 0 mod N , ou encore que x2 = x1 mod N , ce qui montre bien lunicit de la solution. e P Exercice 1.14. Trouver tous les x entiers tels que x = 4 mod 5 et x = 5 mod 11. En dduire linverse de 49 modulo 55. e Solution page 282. Exercice 1.15. Trouver tous les x entiers dont les restes par 2, 3, 4, 5, et 6 sont respectivement 1, 2, 3, 4, 5. Solution page 282. Exercice 1.16 (Une formule pour lindicatrice dEuler). 1. On sait que si p est premier, (p) = p 1. Calculer (n) si n = pk avec p premier et k N . 2. Montrer que est multiplicative, i.e. si m et n sont premiers entre eux, alors (mn) = (m)(n). 3. En dduire la formule gnrale la formule dEuler, en utilisant la dcome e e e position dun nombre en facteurs premiers. Solution page 282.

52

e Chapitre 1 : Thorie des codes

Lexponentiation modulaire et le logarithme discret Lexponentiation modulaire est une fonction de codage dont le principe est tr`s largement utilis dans les mthodes modernes de chirement. e e e Ea : Zn b Zn ab mod n

Elle est associe ` sa fonction de dcodage. Pour c dans Zn , le plus petit entier e a e b = c mod n est appel le logarithme discret (ou encore positif b tel que a e lindex) en base a de b modulo n ; on note b = loga c mod n. Da : Zn c Zn loga c mod n

La fonction de codage est facile ` calculer. La mthode est appele lvation a e e ee rcursive au carr. Elle consiste en la dcomposition de b en carrs successifs. e e e e Par exemple : a11 = a a10 = a (a5 )2 = a (a a4 )2 = a (a ((a)2 )2 )2 Avec ce principe, le calcul de a11 ne ncessite que 5 multiplications : 3 lvae ee tions au carr et 2 multiplications. e De mani`re gnrale, la complexit de lalgorithme 5 est O(log2 n) multiplicae e e e tions modulo n. Algorithme 5 Puissance Modulaire. Entres Trois entiers a = 0, b et n 2. e Sorties ab mod n Si b = 0 Alors Renvoyer 1 ; Sinon Calculer rcursivement la puissance modulaire a e Soit d le rsultat e Calculer d = d d mod n ; Si b impair Alors Calculer d = d a mod n ; Fin Si Renvoyer d ; Fin Si

b/2

mod n

En eet, ` chaque appel, lexposant b est divis par 2. Il y a donc au plus log2 b a e appels rcursifs. Lors de chaque appel, on eectue au plus 2 multiplications : e

1.3 Codage par blocs, alg`bre et arithmtique e e

53

une lvation au carr et ventuellement une multiplication par a. Ces opraee e e e tions sont faites modulo n, donc sur des nombres de log2 n chires. Mme en e utilisant les algorithmes de multiplication na (ceux vus ` lcole primaire), fs a e 2 le cot dune telle multiplication est O(log2 n). u Le cot nal de lalgorithme est donc O(log2 b log2 n). Ce cot est raisonnable u u 2 par rapport ` O(log2 n) qui est le temps ncessaire pour la lecture de a ou a e lcriture du rsultat. e e Exercice 1.17 (Calculs dinverse). 1. Proposer un algorithme de calcul de linverse dans Z/nZ fond sur le e thor`me dEuler. e e Application : calculer (rapidement) 221 mod 63 et 52001 mod 24. On pourra utiliser : 222 mod 63 = 43; 224 mod 63 = 22. 2. Donner trois algorithmes dirents pour calculer linverse de y modulo e N = p1 .p2 . . . . pk , o` les pi sont des entiers premiers distincts. u 1 2 k Solution page 283. Le probl`me du logarithme discret (quon note DLP, pour Discrete Logarithm e Problem) est le calcul inverse de la puissance modulaire. Mais si la puissance modulaire est un calcul ralisable en temps raisonnable comme nous venons e de le voir, il nen est pas de mme pour le logarithme discret. On tirera de e cette dissymtrie des principes fondamentaux pour la cryptographie. e Le rsultat suivant est connu sous le nom de thor`me du logarithme discret. e e e Un gnrateur de lensemble Z est un nombre g tel que {g i , i N} = Z . e e n n Thor`me 5 (logarithme discret). Si g est un gnrateur de Z , alors e e e e n x = g y mod n si et seulement si x = y mod (n). pour tous x, y N : g Preuve. () Si x = y mod (n), on a x = y + k (n). Or g (n) = 1 mod n, do` g x = g y mod n. u () Comme la squence des puissances de g est priodique de priode (n), e e e alors g x = g y mod n = x = y mod (n). P Mais cela ne permet pas le calcul du logarithme discret avec une complexit e x = y. La seule raisonnable. Etant donn y, il est dicile de calculer x tel que g e mthode simple consiste en lnumration exhaustive de tous les x possibles, e e e et prend un temps O(n). Aucun algorithme polynomial en log2 n (la taille de lentre) nest connu pour ce probl`me. e e Ainsi, si n = 10100 , le calcul de la puissance modulaire demande moins de 108 oprations, soit moins de 1 seconde sur un PC. Par contre, lnumration e e e exhaustive pour calculer le logarithme discret demande 10100 oprations, ce e qui, nous lavons vu, est impensable en un temps raisonnable ! ! !

54

e Chapitre 1 : Thorie des codes

En pratique, on peut, pour tenter de rsoudre le logarithme discret, appliquer e des principes similaires aux algorithmes de factorisation. Ce sont des mthodes e qui trouvent les diviseurs des nombres composs, que nous verrons en n de e chapitre. Ce type de fonctions, quon peut calculer rapidement dans un sens et pas dans lautre, est crucial pour la thorie des codes, en particulier pour la cryptograe phie ` clef publique. a Fonctions ` Sens Unique a Dans des syst`mes cryptographiques dits ` clef publique, le syst`me de coe a e dage doit tre connu, tandis que le syst`me de dcodage doit tre inconnu. e e e e Dans cet exemple de codage par exponentiation modulaire et dcodage par loe garithme discret, le fait que la fonction de codage E soit connue et la fonction de dcodage D soit inconnue semble a priori contradictoire : si lon conna E, e t 1 . on conna forcment D puisque D = E t e En fait, en remplaant inconnu par extrmement long ` calculer sur un c e a ordinateur (i.e. plusieurs annes par exemple), les fonctions E et D dun e syst`me de cryptographie ` clef publique doivent vrier : e a e 1 pour garantir D(E(M )) = M ; D=E il est facile (i.e. tr`s rapide) de calculer M = E(M ) ` partir de M ; e a il est dicile (i.e. tr`s long) de retrouver M ` partir de M . e a Autrement dit, il faut trouver une fonction E de chirement qui soit rapide ` calculer mais longue ` inverser. On parle de fonction ` sens unique (parfois a a a abrg par FSU). Cest une notion tout ` fait cruciale en cryptographie, sur e e a laquelle sont fonds tous les codes modernes. Le principe est illustr dans la e e gure 1.7.
facile

y=f(x)

difficile

Fig. 1.7: Principe dune fonction ` sens unique. a

Le paramtrage par une clef ajoutera la facilit ` dcoder en possdant la clef, e ea e e et la dicult ` dcoder sans la clef. ea e De bonnes FSU sont des fonctions telles que la recherche de x ` partir de F (x) a soit un probl`me mathmatique rput dicile. e e e e

1.3 Codage par blocs, alg`bre et arithmtique e e

55

Lintrt de calculer en arithmtique modulaire est double. Dune part, les ee e calculs modulo n sont tr`s rapides : ils ont un cot O(log2 n) avec les e u algorithmes les plus na Dautre part, les itrations dune fonction F mme fs. e e simple calcules en arithmtique modulo n tendent ` avoir un comportement e e a alatoire. Ce type de calcul est dailleurs utilis dans la plupart des gnrateurs e e e e de nombres alatoires, comme nous le verrons ` la section 1.3.6. Connaissant e a F et n grand, il appara dicile de rsoudre lquation : trouver x tel que t e e F (x) = a mod n, donc dinverser la fonction F .

1.3.4

Construction des corps premiers et corps nis

Nous avons mentionn que nous chercherons le plus possible ` donner ` nos e a a codes des structures de corps, an de faciliter les oprations. Nous avons maine tenant une premi`re faon de gnrer un bon code : le corps premier. Il sut e c e e de choisir un nombre premier p, et de munir lensemble {0, . . . , p 1} de laddition et de la multiplication modulo p. Mais choisir un nombre premier nest pas une tche vidente. Cest un domaine dtude ` part enti`re, dont a e e a e nous donnons un aperu an de ne laisser aucun vide algorithmique dans nos c mthodes de codage. e Tests de primalit et gnration de nombres premiers e e e Si lon ne conna pas dalgorithme pour factoriser un entier n en temps polyt O(1) nomial log2 n, il est revanche possible de gnrer un nombre premier p rae e pidement. En thorie des codes, il est tr`s utile de savoir gnrer des nombres e e e e premiers, ` la fois pour construire des codes structurs comme des corps, et a e donc aisment manipulables pour la correction derreurs, ou encore pour fae briquer des syst`mes de cryptographie srs. Pour cela, on utilise des tests de e u primalit, cest-`-dire des algorithmes qui dterminent si un nombre donn est e a e e premier ou non. En prenant un grand nombre impair n, et en lui appliquant le test, on peut, sil est compos, recommencer avec n + 2 jusqu` trouver un e a nombre premier. Le nombre de nombres premiers infrieurs ` n est asymptotie a quement n/ ln(n). On en dduit que partant de n impair, en moyenne O(ln(n)) e itrations susent pour trouver un nombre premier en ajoutant 2 ` n ` chaque e a a itration. e Le test de primalit le plus utilis est un test propos par Miller, et rendu ee e e cace en pratique par Rabin. Pour cela, le test de Miller-Rabin est un algorithme qui dtermine si un nombre donn est probablement premier. La rponse done e e ne par le calcul est donc seulement probabiliste, cest-`-dire que celle-ci peut e a tre errone. Nanmoins, sil lon rp`te ce test susamment de fois et quil e e e e e donne constamment la mme rponse, la probabilit derreur devient de plus e e e en plus faible et nalement ngligeable. e

56

e Chapitre 1 : Thorie des codes

Test de Miller-Rabin. Soit n un nombre impair et soient s et t tels que n 1 = t2s avec t impair. Pour un entier a < n quelconque, on a a(n1) 1 = at
2s

1 = (at 1)(at + 1)(a2t + 1) . . . (a(2

s1 )t

+ 1).

Si n est premier, dapr`s le thor`me de Fermat, a(n1) 1 = 0 mod n ; donc e e e t 1 = 0 mod n ; soit a i soit at2 + 1 = 0 mod n avec 0 i < s. Le test de composition de Miller-Rabin est bas sur cette proprit. e ee Algorithme 6 Test de primalit de Miller-Rabin. e Entres Un entier n 4. e Sorties Soit n est compos, soit il est probablement premier. e Soient s et t tels que n 1 = t2s Soit a un nombre entier alatoire entre 0 et n 1. e Soit q at mod n Si q = 1 ou q = n 1 Alors Renvoyer n est compos e Fin Si Appliquer s fois q q q mod n, et ` chaque tape a e Si q = n 1 Alors Renvoyer n est compos e Fin Si Si on na pas trouv de preuve que n est compos, Alors e e Renvoyer n est probablement premier . Fin Si On dit que a russit le test de composition de Miller-Rabin pour n si at 1 = 0 e i mod n et si at2 + 1 = 0 mod n pour tout i = 0, . . . , s 1. En eet, dans ce cas, a(n1) 1 = 0 mod n ; en utilisant le thor`me de Fermat, on en dduit e e e que n nest pas premier (il est compos). e Si n est impair et non premier, moins de (n 1)/4 nombres a chouent au test e de composition de Miller-Rabin. En choisissant a au hasard dans {1, . . . , n1}, la probabilit dchouer est donc infrieure ` 4 . e e e a 1 Ce test peut tre utilis ecacement pour fabriquer un nombre premier avec e e une probabilit infrieure ` 4k de se tromper. On proc`de comme suit : e e a e 1. On tire au hasard un nombre impair n ; 2. On tire au hasard k nombres ai distincts, 1 < ai < n. On applique le test de composition Miller-Rabin pour chaque entier ai .

1.3 Codage par blocs, alg`bre et arithmtique e e

57

3. Si aucun ai ne russit le test de composition, on en dduit que n est e e premier ; la probabilit de se tromper est infrieure ` 4k ; e e a 4. Sinon, on recommence en remplaant n par n + 2. c La complexit dun test de Miller-Rabin est similaire ` celle de llvation ` e a ee a la puissance modulo, soit O(log3 n) ; et O(k log3 n) si lon veut une probabilit e 2 2 k . Le co t moyen de lalgorithme de gnration de derreur de lordre de 4 u e e nombre premier est donc major par O(k log4 n). En eet, puisquil y a environ e n e a ln(n) nombres premiers infrieurs ` n, il faudra en moyenne de lordre de ln(n) essais pour trouver un nombre premier. En pratique, avec ce test il est facile de gnrer un nombre premier de 1000 e e chires dcimaux avec une probabilit derreur arbitrairement faible. e e En outre, il est possible de rendre dterministe lalgorithme de Miller-Rabin e en testant susamment de nombres a. Par exemple, Burgess a prouv que e 0.134 tait susant pour obtenir tester tous les nombres a jusqu` seulement n a e une certitude. Toutefois, le test devient alors exponentiel en la taille de n. Finalement, un thor`me de 1990 montre quil sut de tester les 2 log2 n pree e miers entiers, en admettant lHypoth`se de Riemann Gnralise. Les tudes e e e e e thoriques montrent donc que ce test est tr`s ecace et sr. e e u Test AKS. Mentionnons enn pour tre complets un autre test de primalit e e tr`s rcent, le test AKS, d ` Agrawal, Kayal et Saxena, qui ont montr en 2002 e e ua e quil existe un algorithme dterministe polynomial pour tester si un nombre est e premier ou non, sans le recours de lhypoth`se de Riemann. Malgr ce rsultat e e e thorique important, on prfrera en pratique les algorithmes probabilistes, e ee nettement plus performants ` ce jour. a Lide est voisine de celle de Miller-Rabin : si n est premier, alors pour tout a e (X a)n = (X n a) mod n. Lalgorithme AKS vrie cette galit pour un certain nombre de tmoins a, e e e e en dveloppant explicitement (X a)n . Pour rendre le test polynomial, il faut e rduire la taille des polynmes (ce qui est fait en eectuant le test modulo e o r 1) pour r vriant certaines proprits3 ) et il faut susamment de (X e ee tmoins a, mais seulement de lordre de log O(1) (n). e On sait construire des grands corps premiers. Mais ce ne sont pas les seuls corps nis qui existent. Pour construire un corps ni de nimporte quelle taille (y compris si cette taille nest pas un nombre premier), pourvu quil en existe un, nous aurons besoin dintroduire lanneau des polynmes sur un corps quelo conque.
3

r doit tre premier avec n, le plus grand facteur premier q de r doit vrier q e e
r1 q

4 r log n,

et enn il faut que n

= 1 mod r.

58 Arithmtique des polynmes e o

e Chapitre 1 : Thorie des codes

Soit V un corps. Lanneau des polynmes ` coecients dans V est o a


d

V [X] =

P =
i=0

ai X i /d N, (a0 , . . . ad ) V d+1

On appelle degr du polynme P , et on note d = deg(P ) le plus grand entier e o naturel d tel que ad = 0. Par convention, le degr du polynme nul est not e o e deg(0) = . Un polynme est unitaire si son coecient de plus haut degr o e est llment neutre pour la multiplication de V . ee Dans cet anneau, on peut dnir une division euclidienne : pour tous A, B e V [X], il existe Q, R V [X] uniques avec deg(R) < deg(B) tels que : A = B.Q + R . Le polynme Q = A div B est le quotient dans la division euclidienne de A o par B ; le reste R est aussi not A mod B. e Lanneau V [X] est donc un anneau euclidien. La notion de pgcd est dnie ; lalgorithme dEuclide appliqu ` deux polye e a nmes non nuls A et B fournit un polynme de degr maximal (unique si on o o e le choisit unitaire) qui divise ` la fois A et B. Par ailleurs, lidentit de Bzout a e e est valide. Autrement dit, si A et B sont deux polynmes dans V [X] et si o D V [X] est leur pgcd, alors il existe deux polynmes S et T dans V [X] tels o que A.S + B.T = D . Lalgorithme dEuclide tendu permet de calculer eectivement deux polye nmes S et T dont les degrs respectifs sont strictement infrieurs ` ceux de o e e a A div D et B div D. Deux polynmes A et B sont dits premiers entre eux sils admettent le poo lynme 1 comme pgcd ; autrement dit, A et B nadmettent aucun facteur o commun de degr non nul. On dit quun polynme P de V [X] est un polye o nme irrductible sur V lorsque P est premier avec tout polynme de degr o e o e infrieur ` deg(P ). e a Tout comme un entier admet une dcomposition en facteurs premiers, tout e polynme de degr non nul admet une dcomposition unique en produit de o e e puissances de facteurs irrductibles sur V ; on dit que V [X] est un anneau e factoriel. Autrement dit, on peut dcomposer tout polynme de degr non nul e o e A de V [X] sous la forme d d A = P1 1 . . . Pk k o` les di sont des entiers non nuls et les polynmes Pi sont irrductibles sur u o e V . Si A est unitaire, les facteurs Pi peuvent tre choisis unitaires : la dcome e position est alors unique ` une permutation dindices pr`s. a e

1.3 Codage par blocs, alg`bre et arithmtique e e

59

Un lment de V est une racine de A V [X] si A() = 0. ee Si est une racine de A, alors (X ) divise A. Soit B le polynme tel que o A = (X ).B. On dit que est racine simple de A si nest pas racine de B, i.e. B() = 0. Sinon, dans le cas o` B() = 0, on dit que est racine multiple u de A. Exemple : Dans F2 [X] le polynme X 3 1 se dcompose en : o e X 3 1 = (X 1) (X 2 + X + 1) . On vrie aisment que X 2 + X + 1 est irrductible (les seuls polynmes e e e o de F2 [X] de degr non nul et infrieur ` 2 sont X et X 1 et aucun e e a dentre eux ne divise X 2 + X + 1). Lanneau V [X]/P et les corps nis Soit (V, +, ) un corps et soit P un polynme de degr d o e 1 . On note V [X]/P lensemble des polynmes de degr infrieur strictement ` d muni des o e e a oprations arithmtiques daddition et de multiplication modulo P , ` savoir, e e a pour tous polynmes A, B de V [X], avec deg(A) < d et deg(B) < d : o A +V [X]/P B = (A +V [X] B) mod P A V [X]/P B = (A V [X] B) mod P Cest un anneau commutatif unitaire. qui admet les polynmes 0 et 1 comme o lments neutres respectivement pour les lois + et . Cet anneau est appel ee e anneau quotient de V [X] par P . Si P est un polynme irrductible, alors V [X]/P est un corps. En eet, si Q o e est un polynme non nul de degr infrieur ` deg P , Q est P sont premiers o e e a entre eux et lidentit de Bzout scrit : AQ + BP = 1, soit AQ = 1 mod P , e e e autrement dit, Q est inversible dans lanneau quotient V [X]/P . Exemple : Sur le corps V = F2 : Si P = (X + 1)(X 2 + X + 1) (non irrductible), lanneau V [X]/P est : e V [X]/P = 0, 1, X, 1 + X, X 2 , 1 + X 2 , X + X 2 , 1 + X + X 2 .

Cet anneau nest pas un corps car (1 + X)(1 + X + X 2 ) = 0 montre que 1 + X nest pas inversible. Au contraire, si lon prend P = X 2 + X + 1 (irrductible), e lanneau V [X]/P est : V [X]/P = {0, 1, X, 1 + X}. Cet anneau est un corps puisque X(X + 1) = 1. On dispose donc dune classe de corps nis plus tendue que les corps premiers, e puisque ce dernier exemple nous fournit un corps ` 4 lments, qui nest pas a ee un corps premier.

60

e Chapitre 1 : Thorie des codes

Les corps nis sont appels corps de Galois. Ils sont nots Fq , o` q est le e e u cardinal du corps. La proprit suivante nous permet de caractriser tous les ee e corps nis et de justier la notation Fq pour le corps ni de cardinal q. Proprit 5. Deux corps nis de mme cardinal sont isomorphes. e e e Pour construire un corps ni, il faut donc disposer dun polynme irrductible o e dun degr x. Comme pour la gnration de nombres premiers, cest l` un e e e e a sujet ` part enti`re, dont nous donnons un aperu. a e c Polynmes irrductibles o e Pour fabriquer des corps nis, nous allons avoir besoin de polynmes irrduco e tibles, comme nous avions besoin des nombres premiers pour construire les corps premiers. De la mme faon que pour les tests de primalit des nombres e c e vus ` la section 1.3.4, nous commenons par donner un test permettant de a c reconna les polynmes irrductibles. tre o e Un premier test facile ` raliser est de sassurer que le polynme est sans carr, a e o e cest-`-dire quil ne contient pas comme diviseur le carr dun autre polynme. a e o Cela se fait sur un corps ni comme dans tout autre corps en examinant sa drive terme ` terme. e e a Proprit 6. Un polynme P est sans carr si et seulement si e e o e pgcd(P, P ) = 1 Preuve. Si P est divisible par un carr alors P = g 2 h pour certains polynmes e o h et g. Il sen suit que P = 2g gh + g 2 h = g(2g h + gh ) et donc g divise le pgcd de P et P . Rciproquement, si g = pgcd(P, P ), prenons un facteur e irrductible de g de degr au moins 1. Alors P = f et P = avec f e e et deux polynmes. En drivant P on obtient f = + , ou encore o e (f ) = . Le polynme tant irrductible et de degr strictement o e e e infrieur au degr de , et sont premiers entre eux. Alors divise forcment e e e et donc 2 divise P . P Ensuite, le principe du test dirrductibilit est donn par la proprit suivante. e e e ee Proposition 1. Pour p premier et d 1, dans Fp [X], le polynme X p X est o le produit de tous les polynmes unitaires irrductibles dont le degr divise d. o e e Pour prouver cette proposition, nous avons tout dabord besoin du lemme suivant : Lemme 2. r > 0 divise d > 0 si et seulement si pr 1 divise pd 1.
d

1.3 Codage par blocs, alg`bre et arithmtique e e

61

Preuve. Si r divise d, alors pd = (pr )k = 1 mod pr 1. Rciproquement, e on a pd 1 = 0 mod pr 1. Supposons que d = qr + s, avec s < r, on a alors pd 1 = pqr ps 1 = ps 1 mod pr 1. Or, 0 s < r, on obtient donc ps 1 = 0 sur les entiers, ce qui implique que s = 0. Donc r divise d. P Preuve. [de la proposition 1] Soit P irrductible de degr r divisant d. Alors e e V = Fp [X]/P est un corps. Dans V , lordre de tout lment divise le cardinal ee du groupe de ses inversibles, ` savoir pr 1 (voir la section 1.3.2). On applique a r cette proprit ` X V , ce qui nous certie que X p 1 = 1. Or, pr 1 divise eea d 1 d pd 1 grce au lemme, donc X p a = 1 mod P , et P divise donc X p 1 1. d Rciproquement, soit P un diviseur irrductible de X p X de degr r. Si e e e d 1 r = 1, r divise forcment d. Sinon, X p e = 1 mod P . Or, Fp [X]/P est un r corps de cardinal pr et donc X p 1 = 1 dans ce corps par le thor`me dEuler, e e r 1 p d 1 = (pr 1)q+s, avec 0 ou encore, X = 1 mod P . Posons p s < pr 1. s = 1 mod P . Or, s est infrieur au degr r de P , donc X s = 1, On a donc X e e ce qui nest possible que si s = 0. Le lemme permet de conclure que r divise d bien s. Il reste ` montrer quaucun carr ne divise X p X. En eet, son a e d polynme driv est pd X p 1 1 = 1 mod P et le polynme 1 est premier o e e o avec tout autre polynme. o P pd X sont donc tous les polynmes irrductibles unitaires Les facteurs de X o e de degr divisant d. Si un polynme de degr d na aucun facteur commun e o e i avec X p X pour 1 i d/2, il est irrductible. On peut construire ` partir e a de cette proprit le test dit de Ben-Or (voir algorithme 7). ee Algorithme 7 Test dirrductibilit de Ben-Or. e e Entres Un polynme, P Fp [X]. e o Sorties P est rductible ou P est irrductible . e e Soit P le polynme driv de P . o e e Si pgcd (P, P ) = 1 Alors Renvoyer P est rductible . e Fin Si Soit Q X Pour i 1 ` deg(P ) Faire a 2 Q Qp mod P Si pgcd(Q X, P ) = 1 Alors Renvoyer P est rductible (arrt de lalgorithme). e e Fin Si Fin Pour Renvoyer P est irrductible . e Ainsi, en utilisant ce test, il est possible de tirer des polynmes au hasard et o davoir une bonne chance de tomber sur un polynme irrductible. On note o e

62

e Chapitre 1 : Thorie des codes

mr (p) le nombre de polynmes unitaires irrductibles de degr r dans Fp [X]. o e e r Comme X p X est le produit de tous les polynmes irrductibles de degr o e e divisant r, on obtient 1 r (p p r
r 2

+1

mr (p)

1 r p r

(1.8)

e rmr (p). En eet, pr est le degr de X p X, donc pr = d|r dmd (p) r /r. Dun autre ct, pr = Donc mr (p) p oe rmr (p) implique d|r dmd (p) r rm d d . Cette derni`re est une srie gomtrique p e e e e r d|r p d r/2 p qui vaut
p
r/2 +1 1

p1

<p

r/2 +1 .

Finalement, 1 (pr p r

r 2

+1

mr (p).

Cela montre que parmi les polynmes de degr r, environ un sur r est irro e e ductible. Pour construire un polynme irrductible, on peut donc en premi`re o e e approche choisir un polynme au hasard, tester son irrductibilit, et recomo e e mencer jusqu` tomber sur un polynme irrductible. En moyenne il faudra a o e r tirages pour trouver un polynme adquat. Cependant, pour faciliter les o e calculs avec ces polynmes, il est intressant dobtenir des polynmes creux, o e o cest-`-dire avec tr`s peu de coecients non nuls. Dans ce cas, la recherche a e systmatique peut savrer plus ecace en pratique. e e Nous proposons lalgorithme hybride 8 produisant de prfrence un polynme ee o irrductible creux, et un polynme irrductible au hasard ` laide du test de e o e a Ben-Or, si le prcdent sav`re trop dicile ` calculer. Il est fond sur lide e e e a e e de prendre des polynmes du type X r + g(X) avec g(X) au hasard de faible o degr par rapport ` r. e a Algorithme 8 Recherche dun polynme irrductible creux. o e Entres Un corps ni Fp , un entier r > 0. e Sorties Un polynme irrductible de Fp [X], de degr r. o e e Pour d = 2 ` r 1 Faire a Pour tout a, b Fq , a = 0 Faire Si (X r + bX d + a) est irrductible Alors e r + bX d + a Renvoyer X Fin Si Fin Pour Fin Pour Rpter e e Slectionner P , unitaire de degr r, au hasard dans Fq [X]. e e Jusqu` ce que P soit irrductible a e Renvoyer P .

1.3 Codage par blocs, alg`bre et arithmtique e e Constructions des corps nis

63

Nous disposons de tous les lments pour construire un corps ni de taille pn , ee o` p est un nombre premier. La mthode de construction des corps nis est la u e preuve du rsultat suivant : e Thor`me 6. Pour tout nombre premier p et tout entier d > 0, il existe un e e corps K ` pd lments et ce corps est unique ` un isomorphisme pr`s. a ee a e Preuve. Soit p un nombre premier et Fp [X] lanneau des polynmes ` coefo a cients dans Fp . Dapr`s lquation (1.8), il existe au moins un polynme P e e o irrductible de degr d dans Fp [X]. Lanneau quotient V = Fp [X]/P est alors e e un corps. Puisque P est de degr d et que |Fp | = p, alors il y a pd restes possibles et par e d. consquent |V | = p e Dapr`s la proposition proposition 5 de la page 60, tout corps de cardinal pd e est isomorphe ` V . a P Remarque 1. Lisomorphisme entre V [X]/P et V deg(P ) conf`re ` V deg(P ) e a une structure de corps. En eet, ` tout vecteur u = [u0 , . . . , ud1 ] de lespace vectoriel V d , on peut a associer de mani`re bijective le polynme (u) = d1 ui X i et en plus, on a e o i=0 la proprit suivante : ee Pour tous u, v V d , V, (u + v) = (u) + (v) . Ainsi, est un isomorphisme entre V d et (V d ) = V [X]/P . Ceci conf`re ` e a d une structure de corps dans laquelle la multiplication est dnie par : V e Pour tous u, v V d , u v = 1 ((u) (v)) .

On peut ainsi utiliser une structure de corps avec les vecteurs de V deg(P ) . ` Exercice 1.18. Soit K un corps ni de cardinal q > 0. A laide de lapplication : Z K, dnie par : e Pour tout n Z, (n) = 1K + 1K + . . . + 1K = n.1K ,
n

fois

e montrer quil existe un unique nombre premier p, dit caractristique de K, tel que pour tout x K, px = 0. Solution page 284. Exercice 1.19. Suite de lexercice prcdent e e En dduire que le cardinal de K est une puissance de p, en se servant du e fait que K est un espace vectoriel sur ses sous-corps. Indication : exhiber un sous-corps de K isomorphe ` Fp . a Solution page 284.

64

e Chapitre 1 : Thorie des codes

Exercice 1.20 (Construction du corps F4 ). 1. Donner une condition ncessaire et susante pour quun polynme dans e o F2 [X] de degr 2 n 3 soit irrductible. En dduire tous les polynmes e e e o irrductibles de degr 2 et 3. e e 2. En dduire les polynmes irrductibles de degr 4. e o e e 3. Soit F4 = {e0 , e1 , e2 , e3 }, avec la convention e0 lment neutre pour ladee dition et e1 lment neutre pour la multiplication. En utilisant la preee mi`re question, expliciter les tables doprations (+, , inverse) dans F4 . e e Solution page 284.

1.3.5

Implmentations des corps nis e

Oprations sur les polynmes e o Une construction classique de larithmtique dans un corps ni est donc, pour e un nombre premier p, dimplmenter Fp , de chercher un polynme irrductible e o e P dans Fp [X] de degr d, puis de reprsenter les lments de Fq = Fp [X]/P par e e ee des polynmes, ou des vecteurs, et dimplmenter les oprations arithmtiques o e e e comme des oprations modulo p et P . e Exemple : Construction du corps F16 . Il existe un corps ` 16 lments, puisque 16 = 24 . Pour construire le corps F16 , a ee on cherche dabord un polynme P irrductible de degr 4 dans F2 [X], puis o e e on tablit les r`gles de calcul dans F2 [X]/P . e e Dtermination de P . e Le polynme irrductible P scrit P = X 4 + aX 3 + bX 2 + cX + 1 avec a, o e e b et c dans F2 . Pour dterminer P , examinons les direntes valeurs pose e sibles pour le triplet (a, b, c). On ne peut avoir (a, b, c) {(0, 1, 1), (1, 0, 1), (1, 1, 0), (0, 0, 0)} puisque dans chacun de ces cas, 1 est racine de P . Le triplet (a, b, c) est donc ` chercher dans {(0, 0, 1), (0, 1, 0), (1, 0, 0), (1, 1, 1)}. a Les seuls polynmes irrductibles sur F2 de degr au plus gal ` deux sont o e e e a X, 1 + X et X 2 + X + 1. Pour chacun des quatre cas restants, il sut de chercher le pgcd de P et (1 + X)(X 2 + X + 1). Le calcul (par lalgorithme dEuclide par exemple) de ces pgcd montre que les seules valeurs de (a, b, c) pour lesquelles P est irrductible sont (0, 0, 1), (1, 0, 0) et (1, 1, 1). Donc, e 4 + X 3 + 1 est un choix possible de P . Faisons ce choix. P =X Oprations sur les polynmes. e o Les lments du corps sont alors X, X 2 , X 3 , 1 + X 3 , 1 + X + X 3 , 1 + X + ee X 2 + X 3, 1 + X + X 2, X + X 2 + X 3, 1 + X 2, X + X 3, 1 + X 2 + X 3, 1 +

1.3 Codage par blocs, alg`bre et arithmtique e e

65

X, X + X 2 , X 2 + X 3 , 1. Les oprations se font alors modulo P et modulo 2. e Par exemple, (X 2 )(X + X 3 ) = 1 + X. Utilisation des gnrateurs e e Il existe dautres possibilits pour implmenter les oprations dans les corps e e e nis, avec lesquelles la multiplication pourra tre ralise beaucoup plus rapie e e dement. Lide consiste ` utiliser la proprit des corps nis selon laquelle le groupe e a ee multiplicatif des inversibles dun corps ni est cyclique, cest-`-dire quil existe a au moins un gnrateur et que le corps est gnr par les puissances de ce e e e ee gnrateur. Ainsi, si g est un gnrateur du groupe multiplicatif dun corps e e e e ni Fq , tous les inversibles peuvent scrire g i . e On peut choisir dimplmenter chaque lment inversible g i simplement par e ee son indice i, et zro par un indice spcial. Cette construction o` lon reprsente e e u e les lments par leurs logarithmes est appele reprsentation exponentielle ou ee e e reprsentation cyclique ou encore construction de Zech. Les oprations arithe e mtiques classiques sont alors grandement simplies, en utilisant la proposie e tion suivante :
Proposition 2. Soient Fq un corps ni et g un gnrateur de Fq . Alors e e

g q1 = 1Fq . En outre, si la caractristique de Fq est impaire, alors g e et dans le cas contraire, 1F2n = 1F2n .

q1 2

= 1Fq

Preuve. Lordre de g divise q 1 donc g q1 = 1Fq . Si le corps est de caractristique 2, alors, comme dans F2 [X], 1 = 1. Sinon q1 Z et donc e 2 e e g 2 Fq . Or comme on est dans un corps, lquation X 2 = 1 poss`de au plus deux racines, 1 et 1. Or g est un gnrateur donc lordre de g est q 1 et e e q1 P non pas q1 . La seule possibilit restante est g 2 = 1. e 2 Cela donne le codage suivant pour un lment x Fq si Fq est gnr par g : ee e ee 0 si x = 0 q 1 si x = 1 i si x = g i En particulier, dans notre codage, notons q = q 1 le reprsentant de 1Fq . e q1 e Nous notons aussi i1 lindice de 1Fq ; il vaut 2 si Fq est de caractristique impaire et q 1 sinon. Ce qui donne la possibilit dcrire simplement les e e oprations arithmtiques. e e La multiplication et la division dinversibles sont respectivement une addition et une soustraction dindices modulo q 1.
q1

66

e Chapitre 1 : Thorie des codes

La ngation est donc simplement lidentit en caractristique 2 et laddition e e e de q1 modulo q 1 en caractristique impaire. e 2 Laddition est lopration la plus complexe. Il faut limplmenter en utilisant e e les autres oprations, par exemple de cette mani`re : si g i et g j sont deux e e lments non nuls dun corps ni, g i + g j = g i (1 + g ji ). En construisant ee une table, t plus1[], de taille q, des successeurs de chaque lment du corps, ee laddition est implmente par une soustraction dindice, un acc`s ` une e e e a table et une addition dindices. Opration e Multiplication Division Ngation e Addition Soustraction e Elments gi gj g i /g j g i gi gi + gj gj Indices +/i + j (q) i j (+q) i i1 (+q) k = j i (+q) i + t plus1[k] (q) k = j i + i1 (q) i + t plus1[k] (q) 1.5 1.5 1.5 3 3.75 Cot u e Tests Acc`s 1 1 1 2 2.75 0 0 0 1 1

Tab. 1.3: Oprations sur les inversibles avec gnrateur en caractristique impaire. e e e e

Dans le tableau 1.3, nous montrons le calcul de ces oprations sur les indices, e en considrant une seule table de taille q, celle des successeurs. Nous nous e intressons ici ` la complexit du calcul en utilisant le moins de mmoire e a e e possible, en considrant des lments alatoires. Nous indiquons le cot des e ee e u calculs en nombre moyen dadditions et de soustractions (+/-), en nombre de tests et en nombre dacc`s dans une table. e Racines primitives Pour mettre en uvre cette implmentation, et de la mme faon que nous e e c avons eu besoin de gnrateurs de nombres premiers pour construire les corps e e premiers, nous devons maintenant donner un moyen de trouver des gnrateurs e e des corps nis. Gnrateurs des corps premiers. Un gnrateur du groupe des invere e e e sibles de Z/nZ est appel racine primitive de n. La plus petite racine primitive e de m est note (m). e Si p est un nombre premier, alors il poss`de toujours exactement (p 1) e racines primitives. Il faut maintenant en calculer au moins une. On utilise

1.3 Codage par blocs, alg`bre et arithmtique e e

67

pour cela le test suivant, qui teste si lordre dun lment pris au hasard est ee bien p1. La principale dicult est de factoriser p1, au moins partiellement, e nous verrons comment faire cela en section 1.4.3. Algorithme 9 Test Racine Primitive. Entres Un entier premier p > 0. e Entres Un entier a > 0. e Sorties Oui, si a est une racine primitive de p ; Non dans le cas contraire. Pour tout q, premier et divisant p 1, Faire {Factorisation de p 1} Si a q = 1 mod p Alors Renvoyer Non . Fin Si Fin Pour Renvoyer Oui .
p1

Thor`me 7. Lalgorithme Test Racine Primitive est correct. e e Preuve. On utilise le rsultat de la section 1.3.2 : soit un entier a, dordre k e modulo p, alors ah = 1 mod p si et seulement si k|h. On en dduit que si lordre de a est plus petit que p 1, comme il doit diviser e p 1, ncessairement lune des valeurs p1 sera un multiple de lordre de a. e q Dans le cas contraire, la seule valeur possible pour lordre de a est p 1. P Une premi`re mthode pour trouver une racine primitive est alors dessayer e e un ` un tous les entiers plus petits que p, qui ne soient ni 1, ni 1, ni une a puissance sur les entiers, et de trouver ainsi la plus petite racine primitive de p. De nombreux rsultats thoriques existent prouvant quen gnral, il ne faut e e e e pas trop dessais pour la trouver, de lordre de (p) = O r4 (log(r) + 1)4 log2 (p) avec r le nombre de facteurs premiers distincts de p Une autre mthode est de tirer alatoirement des entiers plus petits que p et e e de tester si ceux-ci sont une racine primitive ou non. Etant donn quil y a e (p1) racines primitives, la probabilit den trouver une est de (p1) et donc e p1 lesprance du nombre de tirages pour tomber sur une racine primitive est de e p1 (p1) . Ce qui nous donne une meilleure chance que la force brute (essayer toutes les possibilits). e Gnrateurs des corps nis. Nous savons maintenant trouver un gnrae e e e teur pour un corps premier. Nous nous intressons maintenant aux corps nis : e

68

e Chapitre 1 : Thorie des codes

les Fpk . Pour les construire, rappelons quil faut dabord construire Fp , puis un polynme de degr k irrductible sur ce corps. Il sagit maintenant de trouver o e e un polynme gnrateur de ce corps pour pouvoir coder les lments non plus o e e ee par des polynmes, mais par leurs indices. Le codage et les oprations sont o e alors les mmes que ceux des corps premiers. e Nous utilisons ` nouveau un algorithme probabiliste. Nous montrons tout a dabord un algorithme testant si un polynme est gnrateur dans Fp [X]. Cet o e e algorithme est similaire ` celui dvelopp pour les racines primitives dans Fp . a e e Algorithme 10 Test Polynme Gnrateur. o e e Entres Un polynme A Fp [X]. e o Entres Un polynme F irrductible de degr d dans Fp [X]. e o e e Sorties Oui, si A est gnrateur du corps Fp [X]/F ; Non dans le cas contraire. e e Pour tout q, premier et divisant pd 1 Faire {Factorisation de pd 1} Si A q = 1 mod F Alors {Calcul rcursif par carrs} e e Renvoyer Non . Fin Si Fin Pour Renvoyer Oui . Un algorithme cherchant au hasard un gnrateur, une fois le corps construit, e e est alors ais. En outre, on peut restreindre lensemble de recherche ` des e a polynmes de faible degr (O(log(n))). Toutefois, toujours par souci dobtenir o e des polynmes creux, nous montrons quil est possible de trouver rapidement, o sur un corps premier, un polynme irrductible pour lequel X est une racine o e primitive. Un tel polynme est appel X-Irrductible, ou primitif. En pratique, o e e pour les corps nis de taille comprise entre 4 et 232 , il est possible de montrer que plus dun polynme irrductible sur 12 est X-Irrductible ! Un algorithme o e e recherchant un polynme X-irrductible au hasard ncessite ainsi moins de 12 o e e essais en moyenne. Lalgorithme pour trouver un polynme irrductible ayant o e X comme gnrateur est donc une simple modication de lalgorithme 8 ne e e slectionnant pas le polynme irrductible trouv si lalgorithme 10 rpond e o e e e que X nest pas un gnrateur. e e Exemple : Reprenons lexemple du corps F16 , construit avec le polynme o 4 + X 3 + 1. gnrateur X e e Lalgorithme 10 test avec X rpond que X est un gnrateur. On peut donc e e e e mener les calculs avec les puissances de X. Identication des lments de F16 et r`gles pour les oprations. ee e e Le calcul des puissances successives de X donne
pd 1

1.3 Codage par blocs, alg`bre et arithmtique e e

69

X 1 = X mod P ; X 2 = X 2 mod P ; X 3 = X 3 mod P ; X 4 = 1 + X 3 mod P ; X 5 = 1 + X + X 3 mod P ; X 6 = 1 + X + X 2 + X 3 mod P ; X 7 = 1 + X + X 2 mod P ; X 8 = X + X 2 + X 3 mod P ; X 9 = 1 + X 2 mod P ; X 10 = X+X 3 mod P ; X 11 = 1+X 2 +X 3 mod P ; X 12 = 1+X mod P ; X 13 = X + X 2 mod P ; X 14 = X 2 + X 3 mod P ; X 15 = 1 mod P . Il en rsulte que X est un lment gnrateur du groupe multiplicatif F16 . e ee e e Donc : F16 = {0, 1, X, X 2 , X 3 , X 4 , X 5 , X 6 , X 7 , X 8 , X 9 , X 10 , X 11 , X 12 , X 13 , X 14 }. Avec F16 donn sous cette forme, la multiplication et le calcul de linverse dans e F16 se font plus aisment. Laddition sen trouve aussi simplie si lon tient e e k + X t = X t (1 + X kt ) pour tout k et t dans {1, . . . , 14} compte du fait que X tels que k > t.

1.3.6

Gnrateurs pseudo-alatoires e e e

La gnration de nombres au hasard est employe tr`s souvent dans toutes les e e e e mthodes que nous venons de voir, et souvent encore dans ce livre. En pare ticulier, gnrer des nombres alatoirement est une condition de la perfection e e e du code ` clef jetable de Vernam (voir page 29). Il est temps maintenant de a sattaquer ` ce probl`me qui mrite un petit dveloppement. a e e e Les dnitions du hasard sont cruciales pour la thorie des codes. En eet, tout e e message qui prsente un mode dorganisation descriptible par une formule plus e courte que le message lui-mme est un angle dattaque pour la compression, e aussi bien que pour le cassage des codes. On a donc tout intrt ` se parer ee a dune thorie solide concernant le hasard et lala pour concevoir des codes e e ecaces et sr. u La production dun v`nement vraiment alatoire est insoluble par des ordie e e nateurs, qui ne rpondent par dnition qu` des procdures dtermines et e e a e e e prvisibles. Pour obtenir des valeurs qui seraient la production du vrai e hasard (mme si cette notion nest pas tout ` fait absolue, et fait rfrence ` e a ee a ce quon peut en observer et en prdire), il faut faire appel ` des phnom`nes e a e e physiques rputs imprvisibles, comme le bruit thermique, la description du e e e mouvement brownien des lectrons dans une rsistance. e e Mais il est possible que cette production ne soit appele hasard que parce que e nous sommes incapables, tant donn ltat de nos connaissance, den explie e e quer le fonctionnement, et seule les thories probabilistes permettent de lape prhender. Avec les ordinateurs, on tente de procder de mme pour gnrer e e e e e des nombres alatoires. On applique des procdures qui rendent imprvisible le e e e rsultat en pratique. Cest ce quon appelle les gnrateurs pseudo-alatoires. e e e e La production de nombres alatoires est une tche tr`s complexe, qui a sollie a e

70

e Chapitre 1 : Thorie des codes

cit depuis plusieurs dizaines dannes, ` la fois les concepteurs de machines e e a (production matrielle hardware , comme le bruit thermique) que de logie ciels (production logicielle software , comme nous allons en voir quelques exemples). Si on naccorde pas assez dattention ` ce probl`me crucial, des ma e e thodes ecaces (nous en verrons quelques-unes) existent pour reprer toutes e les composantes non alatoires dans une squence suppose ltre, reconstie e e e tuer ainsi la mthode qui la produite, et casser une clef gnre au hasard. e e ee Si la machine qui gn`re la combinaison gagnante du loto nobit pas ` un e e e a bon processus de gnration du hasard, on pourra aussi prdire la prochaine e e e combinaison gagnante. On gn`re souvent une squence de nombres pseudo-alatoires en calculant e e e e chaque nombre ` partir du prcdent (ce qui bien sr rend le processus coma e e u pl`tement dterministe et donc limine tout hasard), dune faon susamment e e e c complique pour quen examinant la squence sans conna la mthode, on e e tre e puisse croire au hasard. Un gnrateur doit vrier certaines proprits pour tre quali de pseudoe e e ee e e alatoire. Tous les nombres gnrs doivent tre indpendants les uns des e e ee e e autres, avoir une grosse entropie, et aucune r`gle ne doit pouvoir tre reconse e titue ` partir de la suite des nombres gnrs. Il y a plusieurs faons de tester e a e ee c si un gnrateur est acceptable. Dabord, lui faire passer des tests statistiques e e pour vrier que la distribution quil produit ne di`re pas signicativement e e de celle qui est attendue par un mod`le thorique du hasard. Ou alors, on e e peut aussi employer des principes de complexit algorithmique : il est possible e de prouver quen temps raisonnable, aucun algorithme ne pourra prdire le e fonctionnement du gnrateur. e e Par exemple, un gnrateur peut tre construit sur le mod`le de la suite de Fie e e e bonacci, en produisant les nombres xn = xn1 +xn2 mod m, m tant lentier e maximum pouvant tre produit. Cette mthode a lavantage dtre tr`s simple e e e e ` implmenter, tr`s rapide ` excuter, et le modulo permet un comportement a e e a e dicilement prvisible. Mais ce gnrateur, comme la plupart des gnrateurs e e e e e simples et classiques, a des dfauts, et il est possible de reconstituer leur come portement ` partir danalyses statistiques. a Les proprits requises pour un gnrateur pseudo-alatoire ressemblent foree e e e tement aux proprits quon attend dun message crypt. En eet, il doit tre ee e e impossible en recevant un message, ou un nombre, de reconstituer la mani`re dont il a t produit, sans en conna la clef. Cest pourquoi certaines e ee tre mthodes de gnration de nombres alatoires ressemblent aux mthodes de e e e e e cryptographie, ou les utilisent.

1.3 Codage par blocs, alg`bre et arithmtique e e Les gnrateurs congruentiels e e

71

On appelle gnrateur congruentiel linaire un gnrateur qui suit le principe e e e e e suivant : si xi , i N est la suite de nombres alatoires gnrs, on calcule e e ee xi ` partir de son prdcesseur : xi = axi1 + b mod m, o` m est un grand a e e u nombre, et a, b Zm . Le gnrateur est dit multiplicatif si b = 0. e e Une telle squence est toujours priodique. il faudra choisir a, b, m de faon ` e e c a ce que la priode soit susamment grande. Par exemple, pour m = 10, x0 = e a = b = 7, la priode est 4, et ce gnrateur nest pas du tout satisfaisant. e e e La priode maximale est videmment m. Il existe un rsultat dcrivant tous e e e e les gnrateurs de priode m avec b = 0 : e e e Thor`me 8. Le gnrateur congruentiel linaire dni par a, b = 0, m, x0 e e e e e e est de priode m si et seulement si x0 est premier avec m et a est une racine e primitive de m. On choisit habituellement pour m le plus grand nombre premier descriptible par une machine (on a vu comment gnrer ce nombre dans cette section ` la e e a page 55). Evidemment, une grande priode nest pas un crit`re susant pour les gne e e e rateurs alatoires, en tmoignent les choix a = 1, b = 1. e e Lexercice 1.32, page 94 est une approche des mthodes dattaque des gnrae e e teurs congruentiels linaires. e Les registres ` dcalage linaire a e e Une gnralisation des gnrateurs congruentiels linaires consiste ` ne plus e e e e e a utiliser seulement la prcdente valeur pour fabriquer llment suivant de la e e ee squence, mais plusieurs des prcdentes valeurs, cest-`-dire que xn est calcul e e e a e par des combinaisons linaires de xn1 , . . . xnk . Autrement dit : e xn = (a1 xn1 + . . . + ak xnk ) mod m Ces gnrateurs sont particuli`rement intressants si m est un nombre premier e e e e car leur priode maximale est alors mk 1. Ainsi il est possible, mme avec e e un petit modulo, davoir de tr`s grandes priodes. e e Par exemple, pour gnrer des suites alatoires de bits, on choisit m = 2. Dans e e e ce cas, les oprations peuvent tre ralises tr`s rapidement sur machine par des e e e e e ou exclusifs (xor) pour laddition modulo 2 et par des dcalages des bits xi e pour gnrer les bits suivants. Il existe mme des puces spcialises ralisant les e e e e e e oprations ncessaires. On parle alors de registres ` dcalage linaire, abrg e e a e e e e par LF SR (de langlais Linear Feedback Shift Registers). La gure 1.8 en rsume le fonctionnement. e

72

e Chapitre 1 : Thorie des codes

...

a1

a2

...

ak

x n

x n1

x n2

...

x nk

nk1

; ... ; x 0

Fig. 1.8: Schma de fonctionnement dun LFSR. e

Pour certains calculs, il est intressant dcrire LFSR par une forme polynoe e k a X k1 . . . a . miale : soit (X) = X 1 k Ainsi, LF SR (x0 , . . . , xk1 ) dsigne la squence innie des xi linairement e e e gnre par le polynme avec pour k valeurs initiales les x0 , . . . , xk1 . e ee o Exercice 1.21. Produire les 8 premi`res valeurs gnres par le registre ` e e e e a dcalage linaire LF SRX 4 +X 3 +X 2 +1 (0, 1, 1, 0). e e Solution page 285. Enn, nous avons lquivalent du thor`me 8 des gnrateurs congruentiels e e e e e linaires o` la racine primitive est remplace par un polynme primitif. e u e o Thor`me 9. Pour un polynme de degr k, le LF SR modulo un nombre e e o e premier p est de priode maximale pk 1 si et seulement si est primitif dans e Fp . Ces gnrateurs sont tr`s rapides et poss`dent en outre une tr`s grande priode. e e e e e e Nous verrons cependant en section 1.4.3 que lalgorithme de Berlekamp-Massey permet de prvoir les bits suivants sans conna e tre le polynme gnrateur, o e e pourvu que 2k valeurs successives aient t interceptes. ee e Ces gnrateurs sont utiliss en pratique pour gnrer rapidement des bits e e e e e avec de bonnes proprits statistiques mais doivent tre combins ` dautres ee e e a gnrateurs pour tre cryptographiquement srs. e e e u Exemple : Scurisation du protocole Bluetooth e Bluetooth est une technologie radio courte distance destine ` simplier les e a connexions entre les appareils lectroniques. Elle a t conue dans le but de e ee c remplacer les cbles entre les ordinateurs et leurs priphriques comme les a e e

1.3 Codage par blocs, alg`bre et arithmtique e e

73

imprimantes, les scanners, les souris, les tlphones portables, les PC de poche ee ou encore les appareils photos numriques. e La scurisation de ce protocole utilise un schma de type chirement de Vere e nam (voir page 1.2.1) mais avec un gnrateur pseudo-alatoire ` base de e e e a LF SR : lalgorithme de chirement utilise quatre LFSR de longueurs respectives 25, 31, 33 et 39, pour un total de 25 + 31 + 33 + 39 = 128 bits. Les 128 bits de la valeur initiale reprsentent la clef secr`te du chirement Bluetooth. e e La gure 1.9 indique le schma de fonctionnement de ce chirement. e
X 25 + X 20 + X 12 + X 8 + 1 a

X 31 + X 24 + X 16 + X 12 + 1

b f z

X 33 + X 28 + X 24 + X 4 + 1

X 39 + X 36 + X 28 + X 4 + 1

Fig. 1.9: Chirement Bluetooth.

Nous voyons que les quatre polynmes utiliss sont : o e 39 + X 36 + X 28 + X 4 + 1 ; X X 33 + X 28 + X 24 + X 4 + 1 ; X 31 + X 24 + X 16 + X 12 + 1 ; X 25 + X 20 + X 12 + X 8 + 1. Ces quatre polynmes sont primitifs modulo 2 pour une priode totale de o e 39 1, 233 1, 231 1, 225 1) = 7 23 31 79 89 601 1801 8191 ppcm(2 121369 599479 2147483647 2125 . Les 4 bits {a; b; c; d} produits par ces 4 LFSR successifs sont ensuite combins e par une fonction discr`te non-linaire f qui produit le prochain bit de sortie zt , e e ` partir de son seul tat initial ({cl1 ; ch1 ; cl0 ; ch0 } = IV {0, 1}4 ) et des a e valeurs successives des LFSR, par lalgorithme suivant : 1. zt = at bt ct dt clt ; 2. st+1 =
at +bt +ct +dt +2cht +clt 2

[0, 3], cod sur deux bits (slt+1 , sht+1 ) ; e

3. clt+1 = slt+1 clt clt1 cht1 ; 4. cht+1 = sht+1 cht clt1 .

74

e Chapitre 1 : Thorie des codes

Gnrateurs cryptographiquement s rs e e u On peut utiliser le principe de la fonction ` sens unique, cest-`-dire une fonca a tion facile ` calculer, mais dicile ` inverser (temps de calcul trop important) a a pour dcider de la qualit dun gnrateur. e e e e Si, pour un gnrateur donn, et tant donne une squence produite, il est e e e e e e possible, sans conna tre la mthode, de prdire avec une bonne probabilit e e e (signicativement suprieure ` la probabilit de la distribution attendue), et e a e en un temps de calcul raisonnable, le nombre suivant dans la squence, alors e il ne peut pas tre considr comme alatoire. e ee e Si on peut prouver quil nexiste aucun algorithme ecace qui permettra cette prdiction, alors le gnrateur est dit cryptographique, ou cryptographiquement e e e sr. u Par exemple, le gnrateur dit de Blum et Micali fonctionne de la faon suie e c vante : Gnrer un grand nombre premier p. e e Soit une racine primitive de p (un gnrateur du groupe des inversibles e e de Fp ). Soit f la fonction dexponentiation modulaire f (x) = x mod p. Soit B la fonction ` valeurs dans {0, 1} : a B(x) = 1 si 0 log x (p 1)/2 ; B(x) = 0 si log x > (p 1)/2. La squence de bits pseudo-alatoire b1 . . . bk est alors calcule suivant la se e e e quence x0 x1 . . . xk , o` x0 est un lment non nul quelconque de Fp , xi u ee f (xi1 ) pour i > 0. On a alors bi = B(xi ). Cette fonction est facile ` calculer : on a vu dans les paragraphes prcdents a e e comment gnrer un nombre premier, trouver une racine primitive et calculer e e une exponentiation modulaire. Enn, au moment de calculer B, on dispose de la valeur de log x, car on vient de calculer f (x) = x mod p. Par contre, en ne disposant pas de la suite x0 x1 . . . xk , on peut prouver que trouver B(xi ) est aussi dicile que de calculer le logarithme discret. Cest donc un probl`me e dicile, car on ne conna aucun algorithme ecace pour le logarithme discret, t et le gnrateur est cryptographiquement sr. e e u Quelques tests statistiques Les mthodes prcdentes taient fondes sur la rputation de dicult ale e e e e e e gorithmique de certains probl`mes, qui rendaient impossible la prdiction du e e comportement des gnrateurs. Pour mesurer la qualit dun gnrateur, on e e e e e peut aussi examiner les squences produites, et tester si elles scartent de ce e e quon attend dun gnrateur vraiment alatoire. Cest une tche dicile, car e e e a les crit`res sont nombreux et pas forcment triviaux. e e

1.3 Codage par blocs, alg`bre et arithmtique e e

75

Les statistiques nous fournissent ici loutil adquat pour ces tests. Par exemple, e le test du 2 (khi-deux) permet de mesurer la dviance par rapport ` une loi e a discr`te uniforme attendue. e Pour tout caract`re vi de lalphabet V , on a une probabilit attendue pi , e e et un eectif observ ei sur la squence gnre, de taille n. Les frquences e e e ee e attendues ne seront jamais exactement gales aux frquences observes, il faut e e e donc dcider ` partir de quel degr de divergence le gnrateur nest plus e a e e e considr comme alatoire. ee e Il faut garder ` lesprit quavec un gnrateur alatoire, toute squence est a a e e e e priori possible, mme celles dont la distribution est compl`tement dirente de e e e celle attendue, puisque prcisment le gnrateur est alatoire. Ces squences e e e e e e seront seulement tr`s peu probable. Si on les obtient, on considrera donc e e comme tr`s peu probable quelles aient t gnres par un bon gnrateur e ee e ee e e (mme si ce nest pas impossible). Voici comment fonctionne le test du 2 . e On mesure lcart entre la distribution attendue et observe avec le param`tre : e e e
n

K=
i=1

(ei npi )2 npi

Il reste ` dcider quelles sont les valeurs acceptables pour le param`tre K. a e e 2 , dont nous donnons un extrait Elles sont donnes par des tables dites du e ici dans le tableau 1.4. 9 10 11 12 15 20 30 p = 0, 75 11,39 12,55 13,70 14,85 18,25 23,83 34,80 p = 0, 95 16,92 18,31 19,68 21,03 25,00 31,41 43,77 p = 0, 99 21,67 23,21 24,72 26,22 30,58 37,57 50,89

Tab. 1.4: Extrait de table du 2 .

Dans ce tableau, la premi`re colonne donne le nombre de degrs de libert . e e e On choisit ce nombre gal ` |V | 1. Soit, pour un alphabet de taille 21, la e a ligne note 20. La premi`re ligne donne la probabilit que la valeur K soit e e e infrieure ` la valeur du tableau. Par exemple, la probabilit que K dpasse e a e e 24,72 pour un alphabet de taille 12 est 0,01. Exercice 1.22 (Test du 2 ). Un gnrateur pseudo-alatoire cens gnrer e e e e e e des nombres entre 0 et 10 selon une loi uniforme donne la squence : 0 0 5 2 e

76

e Chapitre 1 : Thorie des codes

3 6 4 2 0 2 3 8 9 5 1 2 2 3 4 1 2. Faites le test du 2 sur cette squence. Que e pensez-vous de ce gnrateur ? Que pensez-vous ce ce test ? Solution page 285. e e Il est vident quun test de ce type, sil est utile, et sil peut tre susant e e pour rejeter un gnrateur, nest pas susant pour laccepter. Par exemple, il e e ne permettra pas de rejeter la squence 123456123456123456, alors quun il e mme peu exerc y verra la rgularit (bien quil faille se mer de limpression e e e e e de rgularit quon peut soi-mme avoir en regardant une squence, souvent e e e e largement biaise par de fausses intuitions sur ce quest vraiment lalatoire). e e On peut par exemple renforcer ce test en lappliquant aux extensions de la source induite par le message. Il existe de nombreux tests statistiques qui renforcent la conance quon pourra avoir en un gnrateur. Il est important e e de noter que chaque test permet de rejeter un gnrateur, mais seul lensemble e e de tous les tests permettra de laccepter, et encore, sans rigueur mathmatique. e Il nest pas garanti quayant pass x tests, le gnrateur ne se rv`le fragile au e e e e e e x + 1i`me .

1.4

Dcoder, dchirer, attaquer e e

Pour terminer ce chapitre dintroduction, nous allons dvelopper des mthodes e e de codage en adoptant le point de vue de lopration inverse, le dcodage. Nous e e avons dj` vu ` plusieurs reprises que le dcodage nest pas une entreprise triea a e viale consistant ` inverser les fonctions de codage, et ce pour plusieurs raisons : a si, comme dans le codage fax dtaill en dbut de chapitre, le message cod e e e e est une suite de bits, reconstituer sans ambigu e le message source en redt e coupant la suite selon les blocs dont elle est constitue requiert une forme e particuli`re du code ; e le dcodage exact nest parfois mme pas totalement possible, si le codage e e ninclut pas toute linformation de dpart, lors dune compression par exeme ple ; on a vu que limage fax perdait en qualit ; il existe de nombreuses e mthodes de codage avec pertes , qui rendent codage et dcodage dissye e mtriques ; e on a vu que le principe des fonctions ` sens unique rend le calcul de la a fonction de codage et celui de la fonction de dcodage totalement dirents ; e e il se peut quil existe un algorithme ecace pour lune et pas pour lautre. Nous allons dvelopper tous ces points, en employant le mot dcodage comme e e un terme gnral permettant de retrouver la source ` partir dun message cod, e e a e dchirement pour le dcodage cryptographique, cassage ou attaque pour le e e dchirement non autoris, cest-`-dire ne disposant pas des informations dont e e a ne jouit que le destinataire.

1.4 Dcoder, dchirer, attaquer e e

77

1.4.1

Dcoder sans ambigu e e t

La premi`re qualit que doit avoir un code est de pouvoir tre dcod. Cest e e e e e une vidence, mais pas forcment un probl`me trivial. e e e Supposons que le code est une fonction bijective, qui transforme le message compos par lmetteur en message qui est transmis par le canal. Pour un e e message source a1 ...an , cha sur un alphabet source quelconque, et pour un ne alphabet de code V , appelons f la fonction de codage. On a alors le message cod c1 ...cn = f (a1 )...f (an ), avec ci V + pour tout i. Le code, en tant quene semble des mots de codes, est alors limage de la fonction de codage f . Le fait que f soit bijective ne sut cependant pas pour que le message puisse tre e dcod sans ambigu e par le rcepteur. e e t e Prenons lexemple du codage des lettres de lalphabet S = {A, . . . , Z} par les entiers C = {0, . . . , 25} crits en base 10 : e f (A) = 0, f (B) = 1, . . . , f (J) = 9, f (K) = 10, f (L) = 11, . . . , f (Z) = 25 . Le mot de code 1209 peut alors correspondre ` dirents messages : par exema e ple, BUJ ou MAJ ou BCAJ. Il est donc ncessaire dajouter des contraintes sur le code pour quun message e quelconque puisse tre dchir sans ambigu e. Un code C sur un alphabet e e e t V est dit non ambigu (on dit parfois uniquement dchirable) si, pour tout e x = x1 . . . xn V + , il existe au plus une squence c = c1 . . . cm C + telle que e c1 . . . cm = x1 . . . xn . La proprit suivante est une simple reformulation : ee Proprit 7. Un code C sur un alphabet V est non ambigu si et seulement e e si pour toutes squences c = c1 . . . cn et d = d1 . . . dm de C + : e c = d = (n = m et ci = di pour tout i = 1, . . . , n) .

Exemple : Sur lalphabet V = {0, 1}, le code C = {0, 01, 001} nest pas uniquement dchirable. e le code C = {01, 10} est uniquement dchirable. e le code C = {0, 10, 110} est uniquement dchirable. e La contrainte de dchirabilit implique une longueur minimale aux mots de e e code. Le thor`me de Kraft donne une condition ncessaire et susante sur e e e la longueur des mots de code pour assurer lexistence dun code uniquement dchirable. e

78

e Chapitre 1 : Thorie des codes

Thor`me 10 (Kraft). Il existe un code uniquement dchirable sur un e e e alphabet V dont les n mots sont de longueur l1 , . . . , ln si et seulement si
n i=1

1 |V |li

1.

Preuve. () Soit C un code uniquement dchirable, darit q (le vocabulaire e e du code comporte q caract`res). Soit m la longueur du plus long mot de C. e Pour 1 k m, soit rk le nombre de mots de longueur k. Nous dveloppons e lexpression suivante, pour un entier quelconque u, avec u 1 :
n i=1

1 q li

=
k=1

rk qk

.
r ...r

i Une fois dveloppe, chaque terme de cette somme est de la forme qi11 iuu . e e +...+i Et en regroupant pour chaque valeur s = i1 + . . . + iu , on obtient les termes ri1 ...riu . Soit N (s) = i1 +...+iu =s ri1 . . . riu . Lexpression initiale i1 +...+iu =s qs

mu N (s) scrit : ( n q1i )u = e s=u q s , N(s) est le nombre de combinaisons de i=1 l mots de C de longueur totale s. Comme C est uniquement dchirable, deux e combinaisons de mots de C ne peuvent tre gales au mme mot sur lalphabet e e e de C. Comme C est darit q, et que N (s) est infrieur au nombre total de e e messages de longueur s sur cet alphabet, alors N (s) q s . Cela donne n i=1

1 q li

mu u + 1

mu .

(mu)1/u , puis n q1i 1 quand u tend vers linni. Et donc n q1i i=1 l i=1 l () La rciproque est une consquence du thor`me de McMillan, que nous e e e e verrons plus loin dans ce chapitre. P Proprit du prxe e e e On dit quun code C sur un alphabet V a la proprit du prxe (on dit parfois ee e quil est instantan , ou irrductible) si et seulement si pour tout couple de e e mots de code distincts (c1 , c2 ), c2 nest pas un prxe de c1 . e Exemple : a = 101000, b = 01, c = 1010 : b nest pas un prxe de a mais e c est un prxe de a. e Grce ` la proprit du prxe, on peut dchirer les mots dun tel code d`s a a ee e e e la n de la rception du mot (instantanit), ce qui nest pas toujours le cas e e e

1.4 Dcoder, dchirer, attaquer e e

79

pour les codes uniquement dchirables : par exemple, si V = 0, 01, 11, et si on e reoit le message m = 001111111111 . . ., il faut attendre loccurrence suivante c dun 0 pour pouvoir dchirer le second mot (0 ou 01 ?). e Proprit 8. Tout code possdant la proprit du prxe est uniquement de e e ee e e chirable. Preuve. Soit un code C sur V qui nest pas uniquement dchirable. Alors e il existe une cha a V n telle que a = c1 . . . cl = d1 . . . dk , les ci et di tant ne e des mots de C et ci = di pour au moins un i. Choisissons le plus petit i tel que ci = di (pour tout j < i, cj = dj ). Alors l(ci ) = l(di ), sinon, vu le choix de i, on aurait ci = di , ce qui est en contradiction avec la dnition de i. Si e l(ci ) < l(di ), ci est un prxe de di et dans le cas contraire di est un prxe e e de ci . C na donc pas la proprit du prxe. ee e P La rciproque e est fausse : le code C = {0, 01} est uniquement dchirable, mais ne poss`de e e pas la proprit du prxe. La proprit suivante est vidente, mais assure la ee e ee e dchirabilit dune catgorie de code tr`s usite. e e e e e Proprit 9. Tout code dont tous les mots sont de mme longueur poss`de la e e e e proprit du prxe. ee e Exercice 1.23. Soit S la source dalphabet {a, b, c, d} et de probabilits : e U P (U ) s1 = a s2 = b s3 = c s4 = d 0.5 0.25 0.125 0.125 a b c d 0 10 110 111

On code S avec le code suivant :

1. Coder adbccab. Dcoder 1001101010. e 2. Est-ce un code instantan ? e 3. Calculer lentropie de la source. Solution page 285. Exercice 1.24. On veut construire un code compresseur binaire sur une source S = (S, P) (suppose innie) o` S = (0, 1) est lalphabet source et P = e u (P (0) = p, P (1) = 1 p) est la loi de probabilit de S. e On propose le code suivant : on compte le nombre doccurrences de 0 avant lapparition dun 1. Les deux r`gles de codage sont : e Une cha de quatre 0 conscutifs (sans 1) est code par 0. ne e e Si moins de quatre 0 apparaissent avant un symbole 1, on code la cha ne par le mot de code 1e1 e2 , o` e1 e2 est la reprsentation binaire du nombre u e de 0 apparus avant le 1.

80

e Chapitre 1 : Thorie des codes

Par exemple, lapparition de quatre zros conscutifs 0000 est code par 0, e e e tandis que loccurrence 001 est cod par 110 car deux 0 sont apparus e avant le 1 et que 10 est la reprsentation binaire de deux. e 1. Expliciter les 5 mots de code. Le code poss`de-t-il la proprit du prxe ? e ee e 2. Sachant que la probabilit dapparition de deux symboles successifs s1 et e s2 est, dans notre cas o` lon suppose la source sans mmoire, p(s1 ) u e p(s2 ), calculer la probabilit doccurrence dans S dune cha de k 0 e ne suivis dun 1. 3. Pour chaque mot du code, calculer le nombre de bits de code ncessaires e par bit de source. En dduire le taux de compression de ce code, cest ` e a dire la longueur moyenne par bit de source. Solution page 285. Larbre de Human Larbre de Human est un objet permettant de reprsenter facilement tous les e codes qui ont la proprit du prxe, et cette reprsentation facilite grandeee e e ment leur manipulation. On donne ici les dnitions dans le cas binaire, mais e elles sont gnralisables pour des codes darit quelconque. e e e On appelle arbre de Human un arbre binaire tel que tout sous-arbre a soit 0 soit 2 ls (il est localement complet). Dans ce dernier cas, on assigne le symbole 1 ` larte reliant la racine locale au ls gauche et 0 au ls droit. a e
1 0

0 10

0 010

111

110 1 0

001 1 0

0111

0110

0001

0000

Fig. 1.10: Exemple darbre de Human.

` A chaque feuille dun arbre de Human, on peut associer un mot de {0, 1}+ : cest la cha des symboles marquant les artes dun chemin depuis la racine ne e jusqu` la feuille. a

1.4 Dcoder, dchirer, attaquer e e

81

Le maximum sur lensemble des longueurs des mots dun arbre de Human est appel hauteur de cet arbre. On appelle code de Human lensemble des e mots correspondant aux chemins dun arbre de Human ; la hauteur de cet arbre est appele aussi hauteur du code C. e Exemple : le code correspondant ` larbre de la gure 1.10 est : a {111, 110, 10, 0111, 0110, 010, 001, 0001, 0000} . Reprsentation des codes instantans e e Lintroduction des arbres de Human est justie par les deux proprits suie ee vantes, qui assurent que tous les codes instantans pourront tre manipuls e e e avec de tels arbres. Proprit 10. Un code de Human poss`de la proprit du prxe. e e e ee e Preuve. Si un mot de code c1 est un prxe de c2 , alors le chemin reprsentant e e c1 dans larbre de Human est inclus dans le chemin reprsentant c2 . Comme e c1 et c2 sont, par dnition, associs ` des feuilles de larbre, c1 = c2 . Il nexiste e e a donc pas deux mots dirents dont lun est le prxe de lautre, et le code de e e Human a la proprit du prxe. ee e P Proprit 11. Tout code qui poss`de la proprit du prxe est contenu dans e e e ee e un code de Human. Preuve. Soit un arbre de Human complet (toutes les feuilles sont ` distance a constante de la racine) de hauteur l, la longueur du plus long mot de C. Chaque mot ci de C est associ ` un chemin depuis la racine jusqu` un nud. On e a a peut alors laguer le sous-arbre dont ce nud est racine (tous les mots pouvant e tre reprsents dans les nuds de ce sous-arbre ont ci pour prxe). Tous les e e e e mots de C sont toujours dans les nuds de larbre rsultant. On peut eectuer e la mme opration pour tous les mots. On a nalement un arbre de Human e e contenant tous les mots de C. P Thor`me de McMillan e e On a vu que les arbres de Human permettaient de reprsenter tous les codes e instantans. Mais ils ne permettent pas de reprsenter tous les codes uniquee e ment dchirables. Le thor`me de McMillan certie que les codes uniquement e e e dchirables (non ambigus ) nayant pas la proprit du prxe ne sont pas e ee e indispensables. En eet, il existe toujours un autre code qui a la proprit du ee prxe avec les mmes longueurs de mots. Ne pas considrer les codes ambigus e e e ne fait donc rien perdre en compression.

82

e Chapitre 1 : Thorie des codes

Thor`me 11 (McMillan). Sur un alphabet V , il existe un code qui poss`de e e e la proprit du prxe dont les mots {c1 , . . . , cn } sont de longueur l1 , . . . , ln si ee e et seulement si n 1 1. |V |li
i=1

` Exercice 1.25. A laide de la reprsentation des codes instantans par des e e arbres de Human, donner une preuve du thor`me de McMillan. e e Solution page 285. Corollaire 1. Sil existe un code uniquement dchirable dont les mots sont e de longueur l1 , . . . , ln , alors il existe un code instantan de mmes longueurs e e de mots. Cest une consquence des thor`mes de Kraft et McMillan. Les codes de e e e chiffrables qui ne poss`dent pas la proprit du prxe ne produisent pas de e ee e code aux mots plus courts que les codes instantans, auxquels on peut donc e se restreindre pour la compression dinformation (leurs proprits les rendent ee plus maniables).

1.4.2

Les codes non injectifs

Tous les codes nassurent pas ainsi le dcodage non ambigu, ni mme bijece e tif. Il peut arriver, pour des raisons diverses, que des fonctions de codage ne codent quune empreinte dun message, ou alors seulement linformation juge e susante aux besoins de la transmission. Les empreintes sont par exemple utilises pour la dtection derreur : en envoyant un message et son empreinte, e e le destinataire peut vrier en recalculant lempreinte que lempreinte reue e c est bien lempreinte du message reu, et ainsi vrier que la transmission na c e pas altr le tout. ee La compression avec perte est utilise par exemple pour les images ou les sons. e Ne sont codes que les informations qui permettront de reconstituer non pas e le message entier, mais limage ou le son avec des dirences qui ne seront pas e perceptibles. Lempreinte de vrication e Le principe le plus simple de la dtection derreur est un exemple de calcul e dempreinte. On a vu un exemple de codage de ce type pour le code du fax, bien que le code ajout ` chaque ligne ne dpendait pas du contenu de la ligne. ea e Cela nassurait dailleurs quune ecacit de dtection tr`s limite. e e e e Le premier principe dajout dune empreinte pour la dtection derreurs est e lajout dun simple bit de parit aux blocs cods. Pour le mot m = s1 . . . sk , e e

1.4 Dcoder, dchirer, attaquer e e

83

le bit de parit vaut b(m) = ( k si ) mod 2. Il est vident que cette dere e i=1 ni`re galit devient fausse lorsque des bits en nombre impair dans lensemble e e e message+empreinte changent de valeurs. Ainsi, lajout dun bit de parit e permet de dtecter une erreur portant sur un nombre impair de bits. Nous e verrons plus en dtails ce mcanisme dans le chapitre 4 en particulier sur la e e gure 4.2 page 220. Les fonctions de hachage La fonction de hachage suit le mme principe, mais code une empreinte plus e volue, car elle est cense identier le message. Cest la dnition dun rsum e e e e e e du message qui permettra, non de le reconstituer, mais de lidentier si on dispose au pralable dune table de correspondance. Cela fonctionne comme une e empreinte digitale qui ne permet pas de reconstituer dautres caractristiques e dun individu, mais qui permet de lidentier. Les fonctions de hachage sont particuli`rement utiles en cryptographie. Elles e permettent notamment de diminuer la quantit dinformation ` crypter. Si e a limage de x par la fonction de hachage est appele lempreinte de x, on peut e par exemple ne crypter que lempreinte. Dautre part, elles permettent de mettre au point des protocoles de signature lectronique et dauthentication e des messages (voir la section 3.5.2), ainsi que de vrier lintgrit dun doe e e cument, au mme titre que le bit de parit, qui lui-mme est une fonction de e e e hachage particuli`re. e Formellement, une fonction de hachage H : {0, 1} {0, 1}n est une application qui transforme une cha de taille quelconque en une cha de taille ne ne xe n, comme illustr sur la gure 1.11. e
Taille quelconque

Chaine dentre

Taille fixe

Fonction de hachage

n bits

empreinte

Fig. 1.11: Principe dune fonction de hachage.

84

e Chapitre 1 : Thorie des codes

On parle de collision entre x et x lorsque x=x H(x) = H(x ) Dans la mesure ou lentre dune fonction de hachage peut avoir une taille e quelconque (en particulier > n), les collisions sont invitables. Si y est tel que e y = H(x), alors x est appele antcdent ou primage de y (on rappelle que y e e e e est lempreinte de x). Une des contraintes de base dans llaboration dune fonction de hachage est e lecacit : une empreinte doit tre facile ` calculer. En outre, les fonctions e e a de hachage ont une proprit naturelle de compression. ee Dautres proprits peuvent tre souhaites : ee e e Rsistance ` la primage : tant donn y, on ne peut pas trouver en e a e e e temps raisonnable un x tel que y = H(x). Rsistance ` la seconde primage : tant donn x, on ne peut pas e a e e e trouver en temps raisonnable x = x tel que H(x) = H(x ) ; Rsistance aux collisions : on ne peut pas trouver en temps raisonnable e x et x tels que H(x) = H(x ) ; Une fonction de hachage ` sens unique est une fonction de hachage qui vrie a e les proprits de rsistance ` la primage et ` la seconde primage. ee e a e a e Exercice 1.26 (Scurit des fonctions de hachage). Montrer, par contrae e pose, que la rsistance aux collisions implique la rsistance ` la seconde pre e e a e image qui implique la rsistance ` la primage. e a e Solution page 286. Exercice 1.27 (Une mauvaise fonction de hachage). Soit f : Fm 2 Fm une fonction quelconque. On propose comme fonction de hachage ` itrer a e 2 g : F2m Fm , la fonction telle que pour un x de 2m bits, dcoup en deux e e 2 2 blocs xh et xl , on ait g(x) = g(xh ||xl ) = f (xh xl ). Montrer que g nest pas rsistante ` la seconde primage. e a e Solution page 287. Les fonctions de hachage peuvent tre utilises pour : e e les codes de dtection de manipulation (MDC pour Manipulation Detection e Code) qui permettent de sassurer de lintgrit dun message, ` linstar des e e a bits de parit ; e les codes dauthentication de messages (MAC pour Message Authentication Code) qui g`rent ` la fois lintgrit et lauthentication de la source e a e e dune donne. e Nous verrons plusieurs exemples de telles utilisations au chapitre 3.

1.4 Dcoder, dchirer, attaquer e e

85

Construction de fonction de hachage de Merkle-Damg ard. Lune des constructions les plus connues de fonction de hachage fait intervenir une fonction de compression h : {0, 1}b {0, 1}n {0, 1}n Une telle fonction est illustre dans la gure 1.12. e
b bits

n bits

h
i1

n bits

Fig. 1.12: Fonction de compression dune fonction de hachage.

Le message M est dcoup en blocs de b bits M1 , . . . , Mk (il faut ventuellement e e e rajouter des bits ctifs an que la taille de M divise exactement b). On it`re la fonction de compression h selon le mod`le prsent dans la e e e e gure 1.13.
M1 M2 Mk |M|

h
IV
(de taille n)

h
H(M)
(de taille n)

Fig. 1.13: Construction de Merkle-Damg ard.

IV (Initial Value) est une cha (de taille n) xe par lalgorithme ou limplne e e mentation. Un thor`me prouv indpendamment par Ralph Merkle et Ivan e e e e Damg permet de circonscrire les proprits thoriques dune telle construcard ee e tion : Thor`me 12 (Merkle-Damg e e ard). Si h est rsistante aux collisions, alors e H lest aussi.

86

e Chapitre 1 : Thorie des codes

Cest ce rsultat qui fait de Merkle-Damg la construction la plus utilise e ard e dans les calculs dempreintes. Exercice 1.28. Prouver le thor`me de Merkle-Damg par la contrapose. e e ard e Solution page 287. Exercice 1.29 (Construction par composition). Soit f : F2m Fm 2 2 une fonction de hachage. Soit maintenant une deuxi`me fonction de hachage e dnie par h : F4m Fm telle que pour x1 , x2 F2m , alors h(x1 ||x2 ) = e 2 2 2 f (f (x1 )||f (x2 )), o` || dsigne lopration de concatnation. u e e e 1. Montrez que si f est rsistante aux collisions alors h lest galement. e e 2. Quel est linconvnient de cette construction ? e Solution page 287. Il reste ` expliciter la construction des fonctions de compression h rsistantes a e aux collisions. Par exemple, la construction de Davies-Meyer (voir gure 1.14) dnit hi = EMi (hi1 ) hi1 , EMi tant une fonction de cryptographie ` clef e e a secr`te par blocs. e
b bits Mi

K n bits n bits x
i1

E K(x)

Fig. 1.14: Construction de Davies-Meyer.

Mais une attaque de la rsistance ` la primage fut conue en 1999 par Drew e a e c Dean qui exploitait la dnition de point xe sur cette construction. Aussi les e fonctions de compression utilisant cette construction sont moins robustes. La construction de Miyaguchi-Preneel (voir gure 1.15) est une amlioration e de la construction prcdente, particuli`rement robuste dun point de vue crype e e tographique. La fonction g est une fonction dadaptation ` la taille de clef de la fonction de a chirement E. On a ainsi hi = Eg(hi1 ) (Mi ) hi1 Mi .

1.4 Dcoder, dchirer, attaquer e e


b bits Mi

87

K n bits n bits h
i1

E K(x)

Fig. 1.15: Construction de Miyaguchi-Preneel.

Transformations avec perte Dautres procds de transformation aboutiront ` un message cod avec perte, e e a e et un dcodage intgral impossible. Par exemple, le fax nest quune mauvaise e e copie de loriginal, mais on estime quelle remplit son devoir de faire passer linformation contenue dans la feuille. On peut aussi coder une image ou un son sans en garder toutes les informations, pourvu que la perte ne soit pas visible ` lil ou ` loreille. a a Les informations numriques sont par essence des informations discr`tes. On e e a vu que des donnes continues ou analogiques, comme par exemple les sons e ou les images, pouvaient facilement tre numrises. Pour les sons, on peut e e e coder ` chaque instant une frquence et une amplitude. Pour les images, on a e les dcompose en pixels et on peut coder une couleur pour chaque pixel. e Il se peut pourtant que cette numrisation naturelle ne soit pas le meilleur e mod`le pour bien des codes. Souvent, pour les images par exemple les coue leurs de deux pixels voisins ne sont pas indpendantes, et il sera plus judicieux e de coder un ensemble de pixels comme une fonction que chacun indpendame ment comme une valeur. On code alors par blocs de pixels, par une fonction priodique ou presque priodique. e e Il arrive donc que le codage agisse sur des fonctions plutt que sur des entits o e discr`tes ou numriques, et cest le principe de cette section. Le codage sera e e alors une fonction particuli`re, qui sapplique elle-mme sur des fonctions, et e e quon appellera alors plutt transforme, ou transformation. o e Transforme de Fourier et transforme discr`te e e e Supposons quun message, ou une partie de ce message, puisse sexprimer comme une fonction priodique h, variant avec le temps not t, de priode e e e

88

e Chapitre 1 : Thorie des codes

2. Cest le cas par exemple des sons. Puisquon fait lhypoth`se que h est e priodique, le mme message peut sexprimer comme une amplitude H, variant e e en fonction dune frquence f . e La transforme de Fourier est un procd de codage permettant de passer dune e e e reprsentation ` une autre. Comme tout procd de codage, il est associ ` e a e e e a son inverse, le dcodage, et est exprim par les formules suivantes. e e Transforme de Fourier e

Codage : H(f ) =

h(t)e2if t dt H(f )e2if t dt

Dcodage : h(t) = e

Pour un son, si le codage naturel et immdiat est plutt h(t), souvent, H(f ), e o qui code exactement la mme information puisque le codage est rversible, e e est beaucoup plus conomique, puisquil tire parti de la priodicit de h. La e e e transforme est donc directement ecace pour la compression. e La transforme de Fourier dite discr`te suit le mme principe, mais avec des e e e fonctions discr`tes. Elle nous sera videmment tr`s utile, puisque par essence, e e e nos messages numriques doivent tre cods par des informations discr`tes. e e e e Supposons maintenant que nos fonctions h(t) et H(f ) soient des fonctions discr`tes, cest-`-dire des vecteurs h0 , . . . , hn1 et H0 . . . Hn1 de variables e a 2i discr`tes. On exprime alors ainsi la transformation en notant = e n une e
e e e racine ni`me de lunit. vrie par exemple 1 e 2i e n 1
2in n

n1 k k=0

n1 k=0

2i n

= 0. e e Transforme de Fourier Discr`te (DFT) 1 Codage : Hk = n 1 e Dcodage : hj = n


n1

hj kj
j=0 n1

Hk kj
k=0

ou encore, si h(X) =

n1 j j=0 hj X

alors (1.9)

1 DF T (h) = [H0 , . . . , Hn1 ] = [h( 0 ), . . . , h( n1 )] n

1.4 Dcoder, dchirer, attaquer e e Le dcodage est correct car e


1 hj = n
n1 k=0

89

1 n

n1

hi ki kj =
i=0

1 n

n1

n1

hi
i=0 k=0

( ij )k =

1 n

n1

hi
i=0

0 si i = j n sinon

e e e La transforme discr`te en cosinus (DCT) drive directement de la transforme de Fourier discr`te, pour une fonction h discr`te, mais au lieu dtre une e e e e fonction du temps (ce qui est par exemple un bon mod`le pour un son), est e une fonction de lespace (ce qui permet de coder une image). cest donc une fonction ` deux variable discr`tes h(x, y). Cest par exemple la couleur dun a e pixel aux coordonnes x et y. De la mme faon, il est possible de reprsene e c e ter la mme information diremment, par une fonction H de deux variable e e discr`tes i, j, reprsentant une analyse spectrale de limage. e e Transforme en Cosinus Discr`te (DCT) e e Codage : H(i, j) = 1 n
n1 n1

h(x, y) cos(
x=0 y=0 n1 n1

(2x + 1)i (2y + 1)j ) cos( ) 2n 2n (2x + 1)i (2y + 1)j ) cos( ) 2n 2n

1 Dcodage : h(x, y) = e n

H(i, j) cos(
i=0 j=0

La DCT est galement un bon principe de compression pour les images, ainsi e que pour tout signal priodique, ou quasi-priodique. e e Toutes ces transformations sont rversibles. Elles peuvent dj` se rvler de e ea e e bons procds de compression en elles-mmes, mais leur intrt est aussi dans e e e ee la facilit ` choisir des informations importantes et ` ne garder que celles-l`. En ea a a eet, il est possible lors dun tel codage de ne garder que certains coecients de la DFT ou DCT, ce qui rduit la taille de linformation ` coder, et ne e a change pas forcment le rsultat audiovisuel obtenu. Nous allons dtailler ces e e e principes dans le chapitre 2. Algorithme de la DFT On peut crire la transformation DFT sous forme matricielle e 1 H = h n
1 o` k,j = kj . La transformation inverse scrit alors (1 )k,j = n kj . u e e e Un algorithme immdiat pour le calcul de la transforme utilise le produit matrice-vecteur et a donc une complexit O(n2 ). e

90

e Chapitre 1 : Thorie des codes

Un algorithme de type diviser pour rgner diminue la complexit, ce qui e e sera extrmement important pour le codage. Le principe de diviser pour e rgner est de couper le probl`me en sous-probl`mes quivalents de taille e e e e infrieure. Ici, on spare lexpression de la transforme en deux parties. En e e e supposant que n est pair, m = n 2
m1 n1

Hk =
j=0 m1

hj

kj

+
j=m

hj kj
nm+1

=
j=0 m1

hj kj +
j=0 m1

hj+m k(j+m) hj+m kj km


j=0

=
j=0 m1

hj kj +

=
j=0

(hj + km hj+m ) kj

e Or, comme est racine ni`me de lunit, km vaut 1 ou 1 selon la parit de e e k. - Si k est pair, alors on dnit le vecteur e

hp = (h0 + hm , . . . , hm1 + hn1 ) et les coecients pairs de la transforme H de h sont les coecients de la e transforme H p de hp , qui a une taille de la moiti de h. e e - De mme, si k est impair, on dnit le vecteur e e hi = (h0 hm , . . . , hm1 hn1 ) et les coecients impairs de la transforme H de h sont les coecients de la e transforme H i de hi , qui a une taille de la moiti de h. e e On obtient lalgorithme 11. La complexit de cet algorithme est C(n) = e 2C(n/2) + n, soit C(n) = O(n log n). Cest une complexit quasiment linaire, e e et donc un gain important par rapport ` lalgorithme immdiat. a e
e DFT et racines ni`mes de lunit dans un corps ni e

On consid`re dans un corps Fq le polynme X n 1, avec n < q. Une racine e o e ni`me de lunit dans Fq est une racine simple, sil y en a, du polynme X n 1. e o Lordre dune racine de lunit est le plus petit entier o tel que o = 1. e

1.4 Dcoder, dchirer, attaquer e e

91

Algorithme 11 Transforme de Fourier Discr`te Rapide. e e Entres Le vecteur h dont la taille est une puissance de 2 e Sorties Sa transforme le vecteur H e Si h est de taille 1 Alors retourner h Sinon Calculer les vecteurs hi et hp . i et H p , les DFT de hi et hp . Calculer rcursivement H e Les coecients pairs de H sont les coecients de H p et les coecients i. impairs de H sont les coecients de H Fin Si Puisque est une racine de X n 1, clairement o < n. En outre o divise n, car en posant n = ob + r on obtient r = 1 et donc r = 0. e e Une racine primitive ni`me de lunit est une racine ni`me de lunit dordre n. e e Cest cette derni`re notion qui est essentielle au fonctionnement de la DFT. e e Pour le calcul de la DFT dans le corps C, nous avons utilis une racine ni`me e 2i particuli`re, e n , qui est primitive dans C. e e Autant dans C des racines primitives ni`me sont disponibles pour tout n, autant dans un corps ni on nest mme pas assur de leur existence. En eet, dans e e e Fq , une racine primitive (q 1)i`me de lunit est ce que nous avons simplement e appel racine primitive dans la section 1.3.5. De la mme faon que pour ces e e c derni`res, le thor`me suivant nous permet de savoir dans quels corps il est e e e possible deectuer des calculs rapides pour des vecteurs de taille n donne : e Thor`me 13. Soient q une puissance dun nombre premier et n un entier e e e premier avec q. Le corps ni Fq contient une racine primitive ni`me de lunit e si et seulement si n divise q 1.
e Dmonstration. Si a est une racine primitive ni`me alors an = 1 et n est lordre e de a. Mais comme a est un lment du corps ` q lments, son ordre divise ee a ee forcment q 1. Rciproquement, on utilise un gnrateur g du corps (une e e e e e racine primitive (q 1)i`me ) dont on est assur de lexistence par lalgorithme e e de la section 1.3.5. Ainsi, si q 1 = kn alors g k est une racine primitive ni`me de lunit. e

On dit quun corps supporte la DFT ` lordre n sil existe des racines primia i`me de lunit dans ce corps. Les corps supportant la DFT pour n des e tives n e puissances de 2 sont bien entendu particuli`rement intressants pour applie e quer lalgorithme rapide diviser pour rgner. Par exemple, le corps ` 786433 e a lments permet de multiplier des polynmes de degr jusqu` 218 par lalgoee o e a rithme rapide car 786433 1 = 218 3.

92

e Chapitre 1 : Thorie des codes

e Il nous reste ` calculer de telles racines primitives ni`me de lunit. Il est possible a e dutiliser un gnrateur, ou plutt directement une variante de lalgorithme de e e o e la section 1.3.5 : tirer au hasard une racine ni`me (une racine du polynme o n 1 dans F ) et tester si son ordre est bien n. Le corollaire suivant nous X q donne la probabilit de bien tomber : (n) chances sur n. e e Corollaire 2. Si un corps ni poss`de une racine primitive ni`me de lunit e e alors il en poss`de exactement (n). e

Dmonstration. On note q 1 = kn. Soit g un gnrateur du corps. Alors e e e e g k est une racine primitive ni`me , de mme que tous les g tk pour t entre 1 e et n 1 premier avec n. Tous ces g tk sont distincts sans quoi g ne serait pas un gnrateur ; et ce sont les seuls car g tk avec t non premier avec n e e e est dordre strictement plus petit que n. Enn les racines primitives ni`me tk : si g u est une racine primitive ni`me , e scrivent forcment sous la forme g e e alors g un = 1 et donc un = t(q 1) car g est un gnrateur. Cela prouve que e e u est de la forme tk.
e Exercice 1.30. Trouver une racine primitive 6i`me de lunit modulo 31. e Solution page 287.

Il est noter quil y a une solution pour travailler nanmoins avec des racines e e ` primitives ni`me dans un corps qui nen contient pas. A la faon de C par c rapport ` R, on peut toujours se placer dans un corps contenant Fq et dans a lequel le polynme X n 1 se factorise compl`tement en polynmes de degr o e o e 1. Ce corps est une extension du corps Fq et est appel le corps de scindage de e X n 1.
e Exercice 1.31. Trouver une racine primitive 4i`me de lunit dans un corps e de caractristique 31. e Solution page 288.

Produit rapide de polynmes par la DFT o De la mme faon que pour la transforme de Fourier discr`te, le produit e c e e de deux polynmes, que nous utilisons frquemment en thorie des codes (en o e e tmoignent toutes les constructions ` base de polynmes dans ce chapitre), a e a o un algorithme immdiat de complexit O(n2 ). e e La transforme de Fourier discr`te et lalgorithme de calcul que nous venons e e de voir permettent de faire ce calcul en temps O(n log(n)). Etant donns deux polynmes P = a0 + a1 X + + am X m et Q = b0 + b1 X + e o n , on note A = DF T (P ) et B = DF T (Q) les transformes de Fourier +bn X e discr`tes respectives des vecteurs a = a0 . . . am 0 . . . 0 et b = b0 . . . bn 0 . . . 0, e o` les coecients des polynmes sont tendus par des zros jusquau degr u o e e e

1.4 Dcoder, dchirer, attaquer e e

93

n + m (degr du produit). La dnition de la transforme nous donne alors e e e n+m immdiatement chacun des coecients comme Ak = i=0 ai ki = P ( k ) et e Bk = Q(k ). En multipliant simplement ces deux scalaires on obtient alors, simplement en utilisant larithmtique des polynmes, la valeur du produit e o PQ valu en k : Ck = Ak Bk = P ( k )Q( k ) = (P Q)( k ) ; autrement dit e e C = DF T (P Q). Cette proprit permet de construire lalgorithme 12 calculant le produit de ee deux polynmes en temps seulement O(n log(n)). o Algorithme 12 Produit rapide de deux polynmes. o Entres Deux polynmes P = a0 + a1 X + + am X m et Q = b0 + b1 X + e o + bn X n . Sorties Le polynme produit P Q. o On tend les polynmes par des zros jusquau degr m + n (degr du proe o e e e duit). Calculer DF T (P ) et DF T (Q) les transformes de Fourier discr`tes des vece e teurs de coecients de P et Q. Par multiplication terme ` terme, calculer le vecteur DF T (P ).DF T (Q). a Calculer la transforme e inverse pour obtenir PQ = DF T 1 (DF T (P ).DF T (Q)). La complexit est bien O(n log n), puisque le produit terme ` terme est linaire, e a e et que la transforme, aussi bien que son inverse, sont de complexit O(n log n). e e

1.4.3

Cryptanalyse

Nous avons explor certaines dissymtries entre le codage et le dcodage. Lune e e e dentre elles, la plus importante sans doute en cryptographie, est celle qui direncie le dchirement (par le destinataire) du cassage (par un tiers). e e Nous consacrons un petit dveloppement ` des techniques dattaques qui se e a basent sur des faiblesses de codes trop rapidement conus. c Les codes cryptographiques utilisent des gnrateurs pseudo-alatoires pour la e e e gnration de clef secr`te, les fonctions de hachage pour lauthentication, et e e e les fonctions ` sens unique pour les techniques ` clef publique. Nous exposons a a sparment des attaques connues de chacune de ces tapes. Conna les teche e e tre niques dattaques est indispensable pour gnrer des codes qui puissent leur e e rsister. e Attaque des gnrateurs congruentiels linaires e e e Les gnrateurs congruentiels linaires ont t abords en section 1.3.6. Un e e e ee e nombre alatoire xi est gnr en fonction du nombre prcdent gnr xi1 , e e ee e e e ee

94 par la formule xi = axi1 + b mod m.

e Chapitre 1 : Thorie des codes

Exercice 1.32 (Attaque des gnrateurs congruentiels linaires). e e e Si m est premier, quelle est la priode maximale dun gnrateur congruene e e tiel linaire ? En particulier, Fishman et Moore ont tudi en 1986 les ge e e e nrateurs modulo 231 1 = 2147483647 et ont dtermin que celui pour e e e a = 950706376 est de priode maximale et prsente de bonnes proprits e e ee statistiques. Que pouvez-vous dire de 950706376 ? Pour m = pe avec p premier impair, quelle est la priode maximale dun e gnrateur congruentiel linaire ? e e e Enn, il est possible de dmontrerque si (m) est la priode maximale, alors e e e ) = 2e2 pour e > 2 et que (m) = ppcm((pe1 ) . . . (pek )) si m = (2 1 k e p11 . . . pek avec p1 . . . pk premiers distincts. k En supposant que m est connu, comment rcuprer a et b ? e e Maintenant m est inconnu et lon supposera tout dabord que b = 0. Comment casser le gnrateur ? Indication : on pourra tudier xn+1 xn . Que e e e se passe-t-il si b = 0 ? Quel entier est le suivant dans la liste : 577,114,910,666,107 ? Solution page 288. Algorithme de Berlekamp-Massey pour la synth`se de registres ` e a dcalage linaire e e Lalgorithme de Berlekamp-Massey permet de dtecter, pour une squence e e innie (Si ), i N dlments dun corps F, la proprit qu` partir dun certain ee ee a rang, ses lments sont une combinaison linaire des prcdents lments. Cest ee e e e ee ce quon appelle une suite rcurrente linaire. e e Cet algorithme est tr`s utile en thorie des codes, notamment pour cryptanae e lyser des gnrateurs alatoires et des clefs cryptographiques, ou encore pour e e e corriger les erreurs dun code correcteur cyclique (voir 4.4.4). En particulier il permet de retrouver le polynme gnrateur dun LFSR (voir 1.3.6) en ne o e e connaissant que les premiers termes de la squence gnre par ce LFSR. e e ee Il sagit, pour la suite (Si ), i N, de trouver les 0 . . . d F telles que 0 St = St1 1 + St2 2 + ... + Std d pour tout t d. Si lon utilise ces constantes pour dnir un polynme, (X) = 0 X d 1 X d1 2 X d2 ... d , ce e o polynme est appel un polynme annulateur de la squence. Lensemble des o e o e polynmes annulateurs est un idal de lensemble F[X] des polynmes sur F. o e o Comme cet ensemble est un anneau principal, il existe un polynme annulateur o unitaire de degr minimal, appel polynme minimal de la squence. e e o e Comment trouver ce polynme ` partir des seuls coecients de la squence ? Si o a e lon conna le degr d de ce polynme, il faut poser d quations linaires cort e o e e respondant ` la proprit de rcurrence linaire pour 2d coecients et rsoudre a ee e e e

1.4 Dcoder, dchirer, attaquer e e le syst`me linaire antisymtrique ainsi produit : e e e S0 S1 . . . Sd1 S1 . . . Sd1 S2 . . . Sd . . .. . .. . . Sd . . . S2d1 . d d1 . . . 1 = Sd Sd+1 . . . S2d

95

(1.10)

Il reste ` dterminer le degr du polynme minimal. Une premi`re ide est a e e o e e dessayer ` la suite chaque degr possible par degrs croissants et tester chaque a e e polynme produit sur la suite de la squence pour voir sil est annulateur. Si o e la suite est rellement innie, cela peut ne jamais se terminer. e Si, au contraire, la suite est nie, on voit sur le syst`me que le degr maximal e e du polynme minimal est la moiti du nombre dlments de la suite. Cet o e ee algorithme ncessite de rsoudre plusieurs syst`mes linaires ` la suite. En e e e e a pratique, il est possible de tirer parti de la structure antisymtrique du syst`me e e pour le rsoudre directement, tout en ajoutant des lments de la squence e ee e au fur et ` mesure. Cela donne lalgorithme de Berlekamp-Masseysuivant de a complexit simplement O(d2 ). e Algorithme 13 Algorithme de Berlekamp-Massey. Entres S0 , . . ., Sn une squence dlments dun corps K. e e ee Sorties Le polynme minimal de la squence. o e b 1 ; e 1 ; L 0 ; 1 F[X] ; 1 F[X] Pour k de 0 ` n Faire a Sk + L i Ski i=1 Si ( = 0) Alors ee+1 Sinon, si 2L > k Alors X e b ee+1 Sinon X e b L k + 1 L; b ; e 1 Fin Si Si e > T erminaisonAnticipee Alors Arrter lalgorithme e Fin Si Retourner (X) Fin Pour

96

e Chapitre 1 : Thorie des codes

Lide de lalgorithme est de calculer explicitement les coecients du polye nme. La mise ` jour de se fait donc en deux tapes. Lastuce du test o a e 2L > k permet de faire chacune de ces deux tapes alternativement. Droulons e e lalgorithme sur les trois premiers termes de la suite. Le degr du polynme e o minimal augmente donc dau plus un tous les ajouts de deux coecients de la squence. Les sont appels dfauts (discrepancy en anglais). Le premier e e e dfaut est le premier terme de la suite, 0 = S0 et (X) devient 1 S0 X. e Les dfauts correspondent ` la valeur que prend le polynme sur la suite de e a o la squence. Si le dfaut est nul, alors le polynme que lon avait est annulae e o teur dune partie supplmentaire de la squence. Le deuxi`me dfaut est donc e e e e 2 1 S0 X appliqu ` la squence S0 , S1 , soit 1 = S1 S0 . La mise ` jour de ea e a est donc
1 0 X

= (1 S0 X)

2 S1 S0 S0 X,

soit = 1

S1 S0 X

qui est bien


S2

annulateur de la squence S0 , S1 . Le troisi`me dfaut vaut ensuite 2 = S2 S1 e e e 0 S1 et les deux polynmes et valent alors respectivement 1 S0 X S2 X 2 o 0 et 1 S1 X. Ainsi, est annulateur de S0 , S1 , S2 et annulateur de S0 , S1 . S0 Ainsi, comme la multiplication par X de ces annulateurs revient ` dcaler de a e 1 leur application sur la squence initiale, on obtient 3 = [S1 , S2 , S3 ] et e 2 = [S1 , S2 ] = (X)[S1 , S2 , S3 ]. Il est alors possible de combiner ces deux 3 polynmes pour annuler galement la squence S1 , S2 , S3 , par 2 X, ce qui o e e est prcisment ce que ralise lalgorithme. Par la suite, tant que les dfauts e e e e suivants sont nuls, cela veut dire que le polynme dj` obtenu est annulateur o ea de la suite de la squence. On peut alors continuer jusqu` tre sr dobtenir e ae u le polynme minimal des n + 1 termes de la squence ou terminer lalgorithme o e de mani`re anticipe sans vrier les derniers dfauts. e e e e Pour la complexit, la boucle termine apr`s 2d + T erminaisonAnticipee et au e e plus n + 1 itrations. Dans chaque itration, le calcul du dfaut ncessite 2 k e e e e 2 k oprations, la mise ` jour du polynme 2 2 oprations galement, soit un total e a o e e de (2d + T A)(2d + T A + 1) oprations. e Il est possible dutiliser un algorithme rapide pour encore rduire cette come plexit, au moins asymptotiquement. Lide est de voir la squence galement e e e e comme un polynme. Alors le polynme minimal de la squence poss`de la o o e e 2 + . . .) na quun nombre ni proprit que le produit (X)(S0 + S1 X + S2 X ee de termes non nuls, les termes de degr au plus d. Il est possible de rcrire e ee ceci de la faon suivante : c (x) (S0 + S1 X + ... + S2n1 X 2n1 ) Q(x) X 2n = R(x) (1.11)

Ainsi, on voit que calculer , Q et R peut se faire par lalgorithme dEuclide arrt au milieu, cest-`-dire d`s que le degr de R est plus petit que n. La ee a e e complexit du calcul est alors celle de lalgorithme dEuclide, en O(dlog(d)). e En pratique, toutefois, lalgorithme de Berlekamp-Massey reste plus ecace

1.4 Dcoder, dchirer, attaquer e e pour des valeurs de d jusqu` des dizaines de milliers. a Le paradoxe des anniversaires

97

Le paradoxe des anniversaire est un rsultat de probabilits, appel paradoxe e e e parce quil semble contraire ` la premi`re intuition quon pourrait avoir. Il est a e utilis dans plusieurs mthode dattaque en cryptanalyse. Il apprend galement e e e ` se mer des intuitions en ce qui concerne les probabilits. a e e Il y a 365 jours dans lanne, et pourtant dans un groupe de plus de 23 pere sonnes il y a plus dune chance sur deux pour quau moins deux dentre elles aient leur anniversaire le mme jour ! e En eet, prenons une population de k personnes, sachant que le nombre de jours dans lanne est n, le nombre de combinaisons de k anniversaires die e n! e rents est Ak = nk! . Donc la probabilit que toutes les personnes aient des n
n anniversaires dirents est Ak . Donc la probabilit pour que deux personnes e e n au moins aient leur anniversaire le mme jour est e k

Ak n . nk

Ainsi, en considrant 365 jours, cette probabilit est environ dune chance sur e e 10 dans un groupe de 9 personnes, de plus dune chance sur deux dans un groupe de 23 personnes et de 99.4% dans un groupe de 60 personnes. Plus gnralement, nous avons le thor`me suivant : e e e e e Thor`me 14. Dans un ensemble de 1.18 n lments choisis alatoirement e e ee parmi n possibilits, la probabilit de collision est suprieure ` 50%. e e e a Preuve. Nous avons vu que le nombre de collisions sur un espace de taille k k n n e n = 2m , avec k tirages est 1 Ak . Il faut estimer cette probabilit : 1 Ak = n n 2 1 1 (1 n )(1 n ) . . . (1 k1 ). Or, 1 x < ex , pour x positif, donc n 1 Ak n >1 nk
k1 i=1

e n = 1 e

k(k1) 2n

Alors, pour que cette probabilit vaille , il faut que k(k 1) = 2n ln(1 ), e 1 1 soit, comme k est positif, k = 2 + n 4n 2 ln(1 ). Ainsi, pour = 0.5, k 1.18 n (on retrouve pour n = 365, k 22.5). P Ce type de probabilits de collision, quon penserait plus faible si on se laissait e faire par son intuition, permet de construire des attaques contre des syst`mes e dont la mme intuition minimiserait les chances de russir. e e

98

e Chapitre 1 : Thorie des codes

Attaque de Yuval sur les fonctions de hachage La rsistance ` la collision des fonctions de hachage peut se mesurer : il faut e a dterminer la probabilit dobtenir des collisions, ce qui ressemble fort ` la e e a probabilit des collisions des dates danniversaires (les dates danniversaire e jouent le rle des empreintes des individus). o Cest pourquoi on appelle lattaque des fonctions de hachage de Yuval lattaque a par anniversaires. Il sagit de faire passer un message corrompu M ` la place dun message lgitime M , de faon ` ce que la corruption ne soit pas dtectable e c a e , tels que h(M ) = par une fonction de hachage h. On cherche alors M et M h(M ). On pourra alors par exemple changer frauduleusement M en M , ou , ce contre quoi devrait protger h ! envoyer M et prtendre avoir envoy M e e e Algorithme 14 Attaque des anniversaires de Yuval. Entres h : {0, 1} {0, 1}m une fonction de hachage. e M lgitime, M frauduleux, une fonction de hachage h, sur m bits. e Sorties M M et M M tels que h(M ) = h(M ). m m modications mineures de M , notes M . Gnrer t = 2 2 = 2 e e e Pour tout t, calculer h(M ). Gnrer des M , modications mineures de M , jusqu` collision avec un M . e e a En consquence du thor`me 14, erance du nombre de tirages de M dans e e e lesp m ). lattaque de Yuval est O(t) = O( 2 Si on utilise lattaque de Yuval pour envoyer M , puis le rpudier plus tard en e avait en fait t envoy, on a plus dune chance sur deux de soutenant que M ee e russir en 2m essais. Ceci dmontre que la force brute peut tre ecace si e e e une fonction de hachage nest pas protge contre la collision. e e Est-ce que cette attaque est vraiment ralisable ? Un calcul simple permet de e sen convaincre : pour une empreinte numrique sur 128 bits, il faudra eectuer e de lordre de O(264 ) essais, ce qui est ralisable sur des machines grand public e aujourdhui : un ordinateur tournant ` 3 GHz eectue 3 109 24 3600 248 a oprations par jour, donc il faudrait un peu plus de deux mois sur les 1000 PC e dune entreprise pour trouver une collision. Mais si lon utilise des fonctions de hachage sur 160 bits, le cot est multipli u e par 216 = 65536, ce qui reste pour linstant inatteignable. Factorisation des nombres composs e On sait relativement facilement reconna tre un nombre premier ou un nombre compos. Mais savoir par quels nombres il est compos est un probl`me e e e apparemment nettement plus dicile. Cest le probl`me de la factorisation. e

1.4 Dcoder, dchirer, attaquer e e

99

Bien quil puisse sexprimer de mani`re relativement simple, il na pas, juse qu` prsent, de solution vraiment ecace (le cl`bre crible dEratosth`ne, a e ee e par exemple, est inutilisable pour des nombres de plus de 10 chires). La dicult de ce probl`me et lecacit des mthodes dattaque sont tr`s e e e e e importantes, car beaucoup de fonctions ` sens unique reposent sur la dicult a e de la factorisation, ou alors sur la dicult dun autre probl`me quivalent, e e e comme le logarithme discret. Chercher de bons algorithmes de factorisation est donc quasiment en soi une mthode de cryptanalyse. e De nombreux algorithmes tr`s dirents existent, le but de cette section nest e e pas de les numrer tous mais plutt de donner une ide de ceux qui sont les e e o e plus ecaces pour direntes tailles de nombres ` factoriser. e a Le Rho de Pollard (Nombres de quelques chires). La premi`re cae tgorie de nombres ` factoriser est celle des nombres composs de tous les e a e jours , cest-`-dire les nombres qui ont moins de 20 chires. Un algorithme a tr`s ecace est celui de Pollard.Lalgorithme ne ncessite que quelques lignes e e de code (une quarantaine seulement au total) et est tr`s simple ` programe a mer. Soit le nombre m compos, donc on veut trouver les facteurs. Il faut tout e dabord calculer une suite du type uk+1 = f (uk ) mod m de grande priode, e de sorte que les uk soient distincts le plus longtemps possible. 0 1 2 ui ... ul p p+1 uk p+2 ... kp uh kp+1 kp+2 uj ... m-1

Tab. 1.5: Distribution des multiples de p modulo m.

Ensuite, lide est que si p est un facteur de m, les uk distincts modulo m le e seront moins souvent modulo p (voir Tableau 1.5). Dans ce cas, si ui = uj mod p alors le pgcd de m et de ui uj vaut kp et est donc un facteur non trivial de m. Si les ui sont bien tous distincts, le calcul se termine alors en au plus p tapes. Une premi`re version de lalgorithme consiste ` produire des ui e e a et ` chaque nouvel lment de calculer les pgcd avec tous les prcdents uk . a ee e e Cette version prsente deux dfauts : tout dabord il faut stocker de lordre e e de p lments ; en outre, il faut faire j 2 calculs de pgcd si i et j > i sont les ee plus petits indices tels que ui = uj mod p. La deuxi`me astuce de Pollard est e dutiliser la dtection de cycle de Floyd.Il sagit de stocker uniquement les uk e tels que k soit une puissance de 2. En eet, puisque les uk sont gnrs par e ee une fonction, si ui = uj , alors pour tout h 0, ui+h = uj+h et un cycle se cre e modulo p, mme si il nest pas visible directement. e En ne stockant que des puissances de 2, le cycle sera donc dtect seulement e e pour u2a = u2a +ji avec 2a1 < i 2a , comme on en voit lillustration sur la gure 1.16.

100

e Chapitre 1 : Thorie des codes


X4 = X10 Xj = Xi

X5 X2 X8 X6 X1 X7

X0

Fig. 1.16: Dtection de cycle de Floyd, sous forme de rho. e

Or, 2a + j i < 2i + j i = i + j < 2j. Donc on eectue au plus le double dtapes ncessaires. Un seul pgcd est calcul ` chaque tape et un seul lment e e ea e ee supplmentaire est stock au long de lalgorithme. Cela donne lalgorithme e e extrmement simple donn dans lalgorithme 15. e e Algorithme 15 Factorisation de Pollard. Entres Un entier m, compos. e e Sorties p, un facteur non trivial de m. p 1; Gnrer alatoirement y ; e e e k 0; Tant que (p 1) Faire Si k est une puissance de 2 Alors x y; Fin Si y f (y) mod m ; p pgcd(y x, m) ; Incrmenter k ; e Fin Tant que Renvoyer p. Si on prend f (u) = u2 + 1, de sorte que les ui soient bien tous distincts modulo m par exemple, il faudra au pire 2p itrations si p est le plus petit facteur de e m, mais beaucoup moins en gnral : e e Thor`me 15. Lalgorithme Rho de Pollard a plus dune chance sur deux de e e se terminer en O( p) tapes. e Preuve. La preuve est encore du type de celle du cl`bre paradoxe des anniee

1.4 Dcoder, dchirer, attaquer e e

101

versaires. Si k valeurs distinctes ui sont tires au hasard, il y a Ak combinaisons e p qui ne donnent pas de collisions entre les ui sur un total de pk . Pour que la probabilit de trouver un facteur soit plus grande que 1/2 il faut donc dapr`s e e P le thor`me 14 que k > 0.5 + 1.18 p. e e En pratique, cet algorithme factorise en quelques secondes les nombres de 1 ` a environ 25 chires (avec des facteurs de 12 ou 13 chires, cela donne environ 10 millions ditrations !) et devient tr`s rapidement inutilisable pour des facteurs e e au-del` de 15 chires. a Courbes elliptiques (Nombres de quelques dizaines de chires). Pour aller plus loin, la mthode des courbes elliptiques de Pollard et Lenstra est une e solution. Celle-ci utilise des courbes elliptiques (courbes du type y 2 = x3 +ax+ b) dont ltude dpasse le cadre de ce livre. Nanmoins, sa programmation reste e e e simple (environ 150 lignes de code) et nous pouvons donner quelques ides des e proprits de cet algorithme : il est conjectur que pour factoriser un entier m, ee e de plus petit facteur p, cet algorithme ncessite un nombre moyen doprations e e de lordre de O (ln m)2 e 2 ln p ln(ln p) En pratique, cet algorithme factorise en quelques secondes les nombres de 25 ` 40 chires (avec deux facteurs de tailles semblables). En outre, si lon a a de la chance et si lon choisit une courbe elliptique particuli`re, celle-ci peut e permettre de factoriser tr`s rapidement : le projet ECMNET (Elliptic Curve e Method on the Net) consiste ` fournir une implmentation de cet algorithme, a e disponible sur internet Ce projet a permis de factoriser des nombres avec des facteurs jusqu` 58 chires Le probl`me est que les bonnes courbes elliptiques a e varient pour chaque nombre ` factoriser et quil nexiste pas encore de moyen a de trouver la bonne courbe pour un nombre donn. Toutefois, cette rapidit e e de calcul lorsque lon a une bonne courbe elliptique est ` lorigine du a programme de factorisation sur internet : en eet, de nombreux internautes peuvent rcuprer le programme ECM et le lancer pour quil essaye direntes e e e courbes elliptiques. Ainsi, un nombre tr`s important de courbes elliptiques e peuvent tre explores dans le mme temps et acclrer potentiellement la e e e ee recherche de facteurs premiers. Cribles de corps de nombre (Le champion du monde). Enn, le champion actuel pour la factorisation des clefs RSA (produits de deux grands nombres premiers, voir la section 3.4.2) est lalgorithme Number Field Sieve, crible de corps de nombre ou parfois crible algbrique en franais, qui, pour face c toriser un nombre m compos de deux facteurs de tailles respectives similaires, e

102

e Chapitre 1 : Thorie des codes

semble ncessiter un nombre moyen doprations de lordre de e e O e 3


(7.11112) ln(m) ln(ln(m))2

Un corps de nombre est la gnralisation des extensions de corps au corps e e des rationnels (on travaille dans un corps inni Q[X]/P ). Le crible de corps de nombre est une gnralisation du crible quadratique pour lequel le corps e e considr est lensemble des entiers modulo m. Par souci de simplication, ee nous ne presentons que lide de ce dernier. e Il sagit de trouver des couples de nombres tels que leurs carrs soient congrus e 2 = y 2 mod m. Alors, x2 y 2 = (xy)(x+y) est un multiple de modulo m : x m et, avec de la chance, lun de ces deux nombres permet donc de dcomposer e m. Exemple : Cherchons ` factoriser 7429. Nous calculons au hasard certains a carrs : 872 = 7429 + 140 et 882 = 7429 + 315. Or 140 et 315 sont petits par e rapport ` 7429 et donc plus faciles ` factoriser, par exemple avec la mthode a a e 2 5 7 et 315 = 32 5 7 et lon peut donc de Pollard. On obtient 140 = 2 crire (227)2 = (87 88)2 = (2 3 5 7)2 = (210)2 mod 7429. Nous avons donc e une relation du type x2 = y 2 mod 7429 qui nous donne un facteur de 7429 : (227210) = 17, et 7429 = 17347. Toute la dicult de lalgorithme consiste e ` trouver de tels entiers x et y. Pour cela, il faut calculer des carrs de nombres a e et conserver ceux dont les restes modulo m sont susamment petits pour tre e factoriss par une autre mthode. Ensuite, il faut trouver une combinaison e e linaire de ces carrs qui donne un autre carr : dans une matrice mettons en e e e colonne les exposant et en ligne les carrs comme dans la table 1.6. e
832 872 882 . . . Exposant de 2 2 2 0 Exposant de 3 3 0 2 de 5 1 1 1 de 7 0 1 1 de . . . ... ... ...

Tab. 1.6: Crible quadratique pour 7429.

Dapr`s cette table, (87 88)2 est un carr si et seulement si la ligne de 872 e e ajoute ` la ligne de 882 ne donne que des exposants pairs. Autrement dit, si e a M est la matrice des exposants, il faut trouver un vecteur binaire x tel que xM est pair, ou encore trouver une solution modulo 2 au syst`me linaire associ : e e e x tel que xM = 0 mod 2.

1.4 Dcoder, dchirer, attaquer e e

103

Si lide de base est relativement simple, la programmation est un peu plus e dlicate que pour les prcdents algorithmes mais cet algorithme dtient les e e e e records actuels. Il permit en particulier la factorisation en 2005 dune cl RSA e de 200 chires (665 bits). Le temps de calcul ncessaire pour cette derni`re e e factorisation a t gigantesque : plus dun an et demi de calcul sur plus de 80 ee machines !

Nombres premiers robustes La cryptographie RSA (voir le chapitre 3) est fonde sur lutilisation de deux e nombres premiers p et q, et de la dicult ` factoriser leur produit m. An de ea rsister aux mthodes de factorisations diverses (dont certaines sont prsene e e tes dans les exercices du chapitre 3, page 174), les nombres premiers utiliss e e doivent vrier un certain nombre de proprits : e ee Pour rsister ` la factorisation par courbes elliptiques, p et q doivent tre e a e de tailles similaires et susamment grands. Par exemple, pour travailler sur 1024 bits ils devraient tous les deux tre de taille environ 512 bits. e p q doit tre relativement grand, sinon il sut dessayer pour p ou q les e e entiers proches de m (attaque par racines carres de Fermat). Pour rsister aux algorithmes p 1 et p + 1 de Pollard (qui exploitent la e factorisation de p 1 et p + 1 si elle est faisable), p et q doivent tre des e nombres premiers robustes, cest ` dire quils doivent chacun vrier : a e p 1 poss`de un grand facteur, not r. e e p + 1 poss`de un grand facteur. e r 1 poss`de un grand facteur. e Lalgorithme 16 dit de Gordon permet de gnrer des nombres premiers roe e bustes. Algorithme 16 Algorithme de Gordon. Entres Un nombre de bits b. e Sorties Un nombre premier robuste dau moins 2b + 1 bits. Gnrer deux nombres premiers s et t de b bits. e e Chercher r premier de la forme 2kt + 1. Calculer l (2sr2 mod r)s 1. Retourner p le plus petit premier de la forme l + 2hrs.

Exercice 1.33. Montrer que la sortie de lalgorithme de Gordon est un nombre premier robuste. Solution page 288.

104 Rsolution du logarithme discret e

e Chapitre 1 : Thorie des codes

Apr`s lexponentiation modulaire, lautre grande classe de fonctions ` sens e a unique repose sur le probl`me du logarithme discret. e Soit G un groupe de taille n, possdant un gnrateur. On pourra considrer e e e e par exemple le groupe des inversibles modulo un nombre premier p, Z . p Le probl`me consiste, tant donn une racine primitive g et un lment b de e e e ee G, ` trouver le logarithme discret de b en base g, cest-`-dire trouver x tel que a a x. b=g Lalgorithme na pour rsoudre ce probl`me est dessayer un ` un tous les x f e e a possibles jusqu` trouver le bon. La complexit au pire et en moyenne est en a e O(n), donc exponentielle par rapport ` la taille de n. a Les meilleurs algorithmes connus ` ce jour pour rsoudre ce probl`me sont a e e e e de complexit O( n) dans le cas gnral. Ces algorithmes sont la plupart e du temps drivs des algorithmes de factorisation : nous allons voir que des e e variantes du rho de Pollard - O( n) -, et des calculs dindex - O(n1/3 ) - sont applicables dans certains groupes. Mais les complexits sont leves au carr e e e e par rapport ` la factorisation. En eet, si lon travaille modulo un nombre a compos de deux nombres premiers n = pq, les algorithmes de factorisation ont e une complexit qui dpend du plus petit facteur premier : O(p1/3 ) = O(n1/6 ). e e Cest pourquoi le logarithme discret permet de travailler sur des nombres deux fois plus petits avec la mme scurit. e e e Pas de bb, pas de gant. Cette mthode, dveloppe par Shanks, se e e e e e e x en g x+1 pour tous les droule en deux phases : la phase des bbs, tests de g e e e x sur un certain intervalle, et la phase des gants, sauts de g x n en g (x+1) n . e Lide est de dcomposer x en deux morceaux x = i n + j, avec i et j e e n . Ainsi, on peut crire b = g x = (g n )i g j , ou encore compris entre 1 et e n )i = g j . Il faut alors calculer tous les g j possibles (pas de bb), e e b(g n )i possibles pour essayer de voir sil ny en a pas deux et tous les b(g qui correspondent (pas de gant). Si fabriquer toutes ces valeurs ne ncessite e e que 2 n multiplications, chercher les correspondances par une mthode na e ve ncessite de tester n n possibilits dans le pire cas. e e Lastuce qui fait diminuer cette complexit consiste ` trier dabord les g j e a en ordre croissant (complexit O( n log( n))) pour pouvoir faire ensuite les e comparaisons par recherche dichotomique en seulement n log2 ( n) tests ! La complexit en temps est donc amliore, malheureusement la complexit e e e e en espace est telle que cet algorithme est impraticable : il faut stocker les n entiers. Mme pour un nombre doprations abordable (autour de n = e e 2128 aujourdhui) lespace mmoire ncessaire est alors de lordre de plusieurs e e milliards de Gigaoctets.

1.4 Dcoder, dchirer, attaquer e e

105

Le retour du rho de Pollard. Lalgorithme rho de Polard va nous permettre de modier la mthode pas de bb, pas de gant pour y introduire e e e e la dtection de cycles de Floyd. Celle-ci permet de conserver la complexit en e e temps O( n log(n)), tout en rduisant drastiquement la complexit en me e e moire ` seulement O(log(n)) octets. Par rapport ` lalgorithme de factorisaa a tion, il faut modier la fonction gnratrice de la squence de la faon suivante : e e e c Construire trois sous ensembles S1 , S2 , S3 de G de tailles semblables (par exemple dans Fp , on peut prendre S1 = {u = 1 mod 3}, S2 = {u = 2 mod 3} et S3 = {u = 0 mod 3}). On dnit alors la fonction gnratrice f par e e e uk+1 buk si uk S1 u2 si uk S2 = f (uk ) = k guk si uk S3

Ainsi, tout lment de la suite peut scrire sous la forme uk = g ik bjk pour un ee e certain ik et un certain jk . Or, comme pour la factorisation par la mthode e rho, les uk sont rpartis modulo p et donc une collision uk = ul arrive en e e moyenne apr`s p tirages, mme si jk = jl et ik = il . La fonction f assure, e toujours comme pour la factorisation, que cette collision va tre reproduite e constamment apr`s k et donc il est possible de trouver y tel que uy = u2y grce e a ` lalgorithme de Floyd en une complexit mmoire de seulement quelques a e e entiers de taille O(log(n)). Nous avons alors uk = g ik bjk = g il bjl = ul et en mme temps jk = jl . Dans e ce cas on obtient bjk jl = g il ik , ce qui veut dire, puisque b = g x , que dans lespace des indices on obtient directement x : x = (il ik ) (jk jl )1 mod n

Attention, dans Z par exemple, n = p1 et jk jl , bien que non nul, nest pas p forcment inversible. Si ce nest pas le cas, il faudra recommencer lalgorithme. e Calcul dindex de Coppersmith. Tout comme nous venons de modier lalgorithme de Pollard pour ladapter au calcul du logarithme discret, il est possible de modier les algorithmes de crible. Nous montrons lide de lalgoe rithme sur un exemple. Exemple : Comment trouver x, tel que 17 = 11x mod 1009 ? On sait que 1009 est premier et que 11 est une racine primitive , soit Z1009 = {11i , pour i = 1 . . . (1009) = 1008}. Lide consiste ` tirer au hasard des valeurs de i e a de sorte que vi = 11i mod 1009 soit facilement factorisable (i.e. compos de e petits facteurs premiers).

106

e Chapitre 1 : Thorie des codes

En pratique, on se donne une base de facteurs premiers, par exemple B = {2, 3, 5, 7, 11}. Ensuite, pour chaque nombre premier pj B, on divise vi par la plus grande puissance de pj divisant vi . Si ` la n de ce processus, on obtient a la valeur 1, vi sera dcomposable selon les facteurs de B. e Apr`s quelques tirages alatoires, 104, 308, 553 et 708 ont t retenus : e e ee 11104 = 363 = 3 112 11 11
308 553

mod 1009 mod 1009 mod 1009 mod 1009

= 240 = 2 3 5 = 660 = 2 3 5 11
2

11708 = 1000 = 23 53

En passant au logarithme, on obtient un syst`me linaire dans lespace des e e exposants, dont les inconnues sont les logarithmes discrets de 2, 3 et 5 : 104 = log11 (3) + 2 308 = 4 log11 (2) + log11 (3) + log11 (5) 553 = 2 log11 (2) + log11 (3) + log11 (5) + 1 708 = 3 log11 (2) + 3 log11 (5) mod 1008 mod 1008 mod 1008 mod 1008

Cela donne log11 (3) = 102 mod 1008 ou encore 11102 = 3 mod 1009, puis log11 (2) = (308553+1)/2 = 886 mod 1008 et log11 (5) = 3084886102 = 694 mod 1008. Il reste alors ` trouver un nombre de la forme 17 11y dont le reste se factorise a dans la base B = {2, 3, 5, 7, 11}. Toujours avec la mme mthode, on trouve e e par exemple apr`s quelques essais alatoires :17 11218 = 2 3 5 11 mod 1009, e e et donc x = 886 + 102 + 694 + 1 218 = 457 mod 1008 vrie bien 17 = 11457 e mod 1009. Les algorithmes dindex ainsi obtenus sont les plus performants dans certains corps particuliers. Le record est dtenu par une quipe franaise qui, en noe e c vembre 2005, russit ` calculer un logarithme discret dans le corps F2613 ) en e a seulement 17 jours sur les 64 processeurs du supercalculateur Teranova de Bull. Nous disposons ` la n de ce chapitre dun arsenal susant pour commencer a ` nous spcialiser. Nous savons construire les objets dont nous nous servirons a e tout au long de ce livre, et nous avons dcrit les algorithmes courants qui e font les fondements de la thorie des codes. Chacun des chapitres suivants y e fera rfrence, selon les besoins des objectifs spciques auquel il sattaque : ee e compression, cryptage ou correction.

Chapitre 2

Thorie de linformation et e compression


Nous avons vu dans le chapitre prcdent quelques principes de codes pour la e e compression : le code du fax, les codes instantans, le principe de lentropie. . . e Le but de ce chapitre est de faire une tude plus pousse et plus exhaustive de e e ces principes, et de donner des exemple de codes compresseurs couramment utiliss en informatique. e Lobjectif est une optimisation du temps de transit de chaque message, et de ` lespace de stockage. A cette n, il faut construire des codes qui optimisent la taille des messages. Nous supposons ici que le canal nest pas soumis aux perturbations (on parle de codage sans bruit), la gestion des erreurs est tudie e e au dernier chapitre. Nous allons construire des techniques dencodage permettant de choisir des codes ecaces ainsi quune thorie importante permettant e de quantier linformation contenue dans un message, de calculer la taille minimale dun schma de codage, et de conna ainsi la valeur dun code e tre donn. Nous nous intressons principalement ` la compression de donnes sans e e a e perte, cest-`-dire que la compression suivie dune dcompression ne modie a e pas le chier initial. Au contraire, en n de chapitre nous introduirons quelques techniques pour compresser des images ou du son, qui peuvent autoriser des pertes sur la qualit visuelle ou sonore. e Exercice 2.1 (De limpossibilit de compresser sans perte TOUS les e chiers). 1. Combien y-a-t-il de chiers distincts de taille exactement N bits ? 2. Combien y-a-t-il de chiers distincts de taille strictement infrieure ` N e a bits ? 3. Conclure. Solution page 289.

108

e Chapitre 2 : Thorie de linformation et compression

2.1

Thorie de linformation e

La thorie de linformation donne le cadre mathmatique aux codes comprese e seurs. On rappelle quun alphabet est un ensemble ni qui sert ` former les a messages contenant linformation ` coder ou linformation code. Lensemble a e des lettres du message source est lalphabet source et lensemble des lettres du code lalphabet du code. Par exemple, lalphabet latin est lensemble des lettres que nous utilisons pour crire ce texte, ou {0, 1} est lalphabet qui sert e ` crire les messages qui doivent transiter dans la plupart des canaux numae e riques. Lensemble des squences sur un alphabet V est not V + , et limage e e de lalphabet source par la fonction de codage est un sous-ensemble de V + appel lensemble des mots de code, ` qui on donne parfois le nom de code, e a tout simplement, surtout en thorie de linformation. e Un code C sur un alphabet V est alors un sous-ensemble ni de V + . Le code est constitu des briques de base ` partir desquelles les messages transmis seront e a construits. Un lment m de C est appel mot de code. Sa longueur est note ee e e l(m). Larit du code est le cardinal de V . Un code darit 2 est dit binaire. e e Par exemple, C = {0, 10, 110} est un code binaire darit 2, sur lalphabet e V = {0, 1}.

2.1.1

Longueur moyenne dun code

Dans toute cette partie, dans un souci de simplicit et de part leur importance e pratique en tlcommunications, on sintresse plus particuli`rement aux codes ee e e binaires. La plupart des rsultats sont cependant gnralisables ` des codes e e e a quelconques. Tous les mots de code ntant pas toujours de la mme longueur, on utilise e e une mesure dpendant des frquences dapparition pour estimer la longueur des e e messages qui coderont une source. On rappelle quune source dinformation est constitue dun alphabet S et dune distribution de probabilits P sur S. Pour e e un symbole si dune source S = (S, P), P (si ) est la probabilit doccurrence e de si , et l(m) dsigne la longueur dun mot m (de source ou de code). e Soient S = (S, P) o` S = {s1 , . . . , sn }, et C un code de S, dont la fonction u de codage est f (C est limage de S par f ). La longueur moyenne du code C est :
n

l(C) =
i=1

l(f (si ))P (si )

1 1 1 1 Exemple : S = {a, b, c, d}, P = ( 2 , 4 , 8 , 8 ), V = {0, 1}. Si C = {f (a) = 00, f (b) = 01, f (c) = 10, f (d) = 11}, la longueur moyenne du schma est 2. e

2.1 Thorie de linformation e

109

Si C = {f (a) = 0, f (b) = 10, f (c) = 110, f (d) = 1110}, la longueur moyenne 1 1 1 1 du schma est : 1 2 + 2 4 + 3 8 + 4 8 = 1.875 . e Nous utilisons la longueur moyenne dun schma de codage pour mesurer son e ecacit. e

2.1.2

Lentropie comme mesure de la quantit dinformation e

Nous arrivons aux notions fondamentales de la thorie de linformation. Soit e une source S = (S, P). Nous ne connaissons de cette source quune distribution de probabilit, et nous cherchons ` mesurer quantitativement ` quel point e a a nous ignorons le comportement de S. Par exemple, cette incertitude est plus grande si le nombre de symboles dans S est plus grand. Elle est faible si la probabilit doccurrence dun symbole est proche de 1, et plus forte en cas e dquiprobabilit. e e Lentropie dune source sera utilise comme mesure de la quantit moyenne e e dinformation contenue dans cette source. Par exemple, imaginons un jet de d dont la valeur ne nous est commue nique que par des comparaisons ` un nombre que nous pouvons choisir, e a combien faut-il de questions pour dterminer quelle est la valeur obtenue ? e En procdant par dichotomie, il sut de 3 = log2 (6) questions. Suppoe sons maintenant que le d est pip, le 1 sort une fois sur deux et les cinq e e autres une fois sur 10. Si la premi`re question est : est-ce 1 ? dans la e moiti des cas une question aura sut, dans lautre moiti il faudra 3 quese e tions supplmentaires. Ainsi le nombre moyen de questions ncessaires sera e e 1 1 1 1 1 1 2 1 + 2 4 = 2 log2 ( 2 ) 5 10 log2 ( 10 ) = 2.5. En fait, il est encore possible daner ce rsultat en remarquant quil nest pas toujours ncessaire de poser e e 3 questions pour dterminer lequel de 2, 3, 4, 5, 6 a t tir : si la dichotomie e ee e spare ces 5 possibilits en deux groupes 2, 3 et 4, 5, 6, deux questions supple e e mentaires seulement seront ncessaires pour trouver 2 ou 3, et seuls 5 et 6 ne e pourront tre dpartags quen trois questions. Sur un grand nombre de tirage, e e e il est encore possible de faire mieux si les questions ne sparent pas toujours de e la mme faon, par exemple en 2, 3, 5 et 4, 6, pour que deux questions soient e c alternativement ncessaires, etc. Pouss ` linni, ce raisonnement implique e e a que la moyenne des questions ncessaires pour les 5 possibilits vaut log2 (10) ! e e La quantit dinformation contenue dans ce jet de d (facilement gnralie e e e sable ` toute source) est ainsi dnie intuitivement par le nombre moyen de a e questions. Il est ainsi naturel de choisir lentropie pour mesure, ` savoir, pour une source a (S, P), P = (p1 , . . . , pn ),
n

H(S) =
i=1

pi log2 (

1 ). pi

110

e Chapitre 2 : Thorie de linformation et compression

Cest une mesure de lincertitude lie ` une loi de probabilits, ce qui est toue a e jours illustr par lexemple du d : On consid`re la variable alatoire (source) e e e e issue du jet dun d ` n faces. Nous avons vu quil y a plus dincertitude dans ea le rsultat de ce jet si le d est normal que si le d est biais. Ce qui se traduit e e e e 1 1 par : pour tous p1 , . . . , pn , H(p1 , . . . , pn ) H( n , . . . , n ) = log2 n, comme nous la appris la proprit 1 du chapitre 1. ee

2.1.3

Thor`me de Shannon e e

Ce thor`me fondamental de la thorie de linformation est connu sous le nom e e e de thor`me de Shannon ou thor`me du codage sans bruit. e e e e Nous commenons par noncer le thor`me dans le cas dune source sans mc e e e e moire. Thor`me 16. Soit une source S sans mmoire dentropie H. Tout code e e e uniquement dchirable de S sur un alphabet V de taille q (i.e. q = |V |), de e longueur moyenne l, vrie : e H . l log2 q De plus, il existe un code uniquement dchirable de S sur un alphabet de e taille q, de longueur moyenne l, qui vrie : e l< H + 1. log2 q

Preuve. Premi`re partie : Soit C = (c1 , . . . , cn ) un code de S uniquement e dchirable sur un alphabet de taille q, et (l1 , . . . , ln ) les longueurs des mots e n 1 1 dapr`s le thor`me de Kraft (voir ` la e e e a de C. Soit K = i=1 q li , K page 78). Soient (q1 , . . . , qn ) tels que qi = qK pour tout i = 1, . . . , n. On a qi [0, 1] pour tout i, et n qi = 1, donc (q1 , . . . , qn ) est une distribution de i=1 probabilits. Le lemme de Gibbs (voir page 31) sapplique, et on obtient e
n
li

pi log2
i=1

q li Kpi

0 ; autrement dit
i=1

pi log2

1 pi

pi li log2 q + log2 K.
i=1

Or, comme log2 K 0, on a donc H(S) l log2 q ; do` le rsultat. u e 1 1 1 (car q li Seconde partie : Soient li = logq pi . Comme n q1i i=1 l pi ), il existe un code de S sur un alphabet de taille q, uniquement dchirable, e avec des longueurs de mots gales ` (l1 , . . . , ln ) et donc de longueur moyenne e a n l = pi li . La proprit de partie enti`re suprieure nous donne ensuite ee e e i=1 1 1 logq pi + 1 > li et, par suite, n pi log2 pi > n pi li log2 q log2 q. Ce qui i=1 i=1 scrit H(S) > log2 q (( n pi li ) 1) log2 q(l 1) et prouve le thor`me. P e e e i=1

2.2 Codage statistique


e On en dduit le thor`me pour la k i`me extension de S : e e e

111

Thor`me 17. Soit une source S sans mmoire dentropie H. Tout code e e e uniquement dchirable de S k sur un alphabet de taille q, de longueur moyene ne lk , vrie : e H lk . k log2 q De plus, il existe un code uniquement dchirable de S k sur un alphabet de e taille q, de longueur moyenne lk , qui vrie : e H 1 lk < + . k log2 q k Preuve. La preuve de ce thor`me est immdiate dapr`s la proprit 2 de e e e e ee k ) = k H(S). la page 35 selon laquelle H(S P Pour une source stationnaire quelconque, le thor`me peut snoncer : e e e Thor`me 18. Pour toute source stationnaire dentropie H, il existe un proe e cd de codage uniquement dchirable sur un alphabet de taille q, et de lone e e gueur moyenne l, aussi proche que lon veut de sa borne infrieure H/ log2 (q). e En thorie, il est donc possible de trouver un code sapprochant indniment e e de lentropie. En pratique pourtant, si le procd de codage consiste ` coder les e e a mots dune extension de la source, on est limit videmment par le nombre de ee ces mots (|S k | = |S|k , ce qui peut reprsenter un tr`s grand nombre de mots). e e Nous allons voir dans la suite plusieurs procds de codage et leur relation e e avec cette borne thorique. e

2.2

Codage statistique

Les codages statistiques utilisent la frquence de chaque caract`re de la source e e pour la compression et, en codant les caract`res les plus frquents par des mots e e plus courts, se positionnent proches de lentropie.

2.2.1

Algorithme de Human

Cette mthode permet de trouver le meilleur schma dencodage dune source e e sans mmoire S = (S, P). Lalphabet de codage est V , de taille q. Il est e ncessaire ` loptimalit du rsultat de vrier que q 1 divise |S| 1 (an e a e e e dobtenir un arbre localement complet). Dans le cas contraire, il est facile de rajouter des symboles ` S, de probabilits doccurrence nulle, jusqu` ce que a e a q 1 divise |S| 1. Les mots de codes associs (les plus longs) ne seront pas e utiliss. e

112

e Chapitre 2 : Thorie de linformation et compression

Algorithme 17 Description de lalgorithme de Human. On construit avec lalphabet source S un ensemble de nuds isols auxquels e on associe les probabilits de P. e
p1 s1 p2 s2 p3 s3 pn sn

Fig. 2.1 : Algorithme de Human : dpart. e Soient pi1 , . . . , piq les q symboles de plus faibles probabilits. On construit un e arbre (sur le mod`le des arbres de Human), dont la racine est un nouveau e nud et auquel on associe la probabilit pi1 + . . . + piq , et dont les branches e sont incidentes aux nuds pi1 , . . . , piq . La gure 2.2 montre un exemple de cette opration pour q = 2. e
p1 s1 1 pi si 0 sj pj pi+pj pn sn

Fig. 2.2 : Algorithme de Human : premi`re tape (q = 2). e e On recommence ensuite avec les q plus petites valeurs parmi les nuds du plus haut niveau (les racines), jusqu` nobtenir quun arbre (` chaque itration, il y a a e a q 1 lments en moins parmi les nuds de plus haut niveau), dont les mots ee de S sont les feuilles, et dont les mots de code associs dans le schma ainsi e e construit sont les mots correspondant aux chemins de la racine aux feuilles.

Exemple :

Soit la source ` coder sur V = {0, 1} a Symbole a b c d e f Probabilit e 0,35 0,10 0,19 0,25 0,06 0,05

Les tapes successives de lalgorithme sont dcrites par la gure 2.3. e e Le code de Human construit est alors :

2.2 Codage statistique

113

0.05 f

0.06 e

0.10 b

0.19 c

0.25 d

0.35 a

tri dans lordre croissant 0.10 b 0.05 f 0.06 e construction de larbre et tri du niveau le plus haut 0.19 c 0.10 b 0.05 f 0.06 e tape suivante 0.25 d 0.35 a 0.19 c 0.10 b 0.05 f tape suivante 0.06 e 0.11 0.21 0.41 0.11 0.21 0.25 d 0.35 a 0.11 0.19 c 0.25 d 0.35 a

0 0.40

1 0.60

0 0.19 c 0 0.10 b

1 0.21 1 0.11 0 0.05 f 1 0.06 e

0 0.25 d

0.35

1 a

arbre final

Fig. 2.3: Exemple de construction dun code de Human.

114

e Chapitre 2 : Thorie de linformation et compression Symbole a b c d e f Mot de code 11 010 00 10 0111 0110

Exercice 2.2. Cet exercice introduit des lments thoriques sur la valeur ee e du code gnr par lalgorithme de Human. Soit la source S = (S, P), o` e e e u S = (0, 1), et P (0) = 0.99 et P (1) = 0.01. 1. Calculer lentropie de S. 2. Donner le code gnr par lalgorithme de Human sur la troisi`me exe e e e tension S 3 . Quel est son taux de compression ? 3. Que pouvez-vous dire de loptimalit de lalgorithme de Human en come parant les taux de compression obtenus avec ceux de lexercice 1.24, page 79 ? Cela est-il conforme au thor`me de Shannon ? e e Solution page 289. Exercice 2.3 (Pile ou Face pour jouer au 421). On dsire jouer au lanc e e de d, avec pour unique moyen une pi`ce de monnaie. On va donc chercher ` e e a coder un d non pip ` 6 faces avec une pi`ce non pipe ` deux faces. e ea e e a 1. Quelle est lentropie dun d ? e 2. Proposer un algorithme de codage. 3. Calculer la longueur moyenne de ce codage. 4. Ce codage est-il optimal ? Solution page 289. Lalgorithme de Human est optimal Thor`me 19. Le code issu de lalgorithme de Human est optimal parmi e e tous les codes instantans de S sur V . e Preuve. On suppose dans la preuve pour allger les notations que q = 2, e mais on peut ` toutes les tapes gnraliser automatiquement. a e e e On sait quun code instantan peut tre reprsent par un arbre de Human. e e e e Soit A larbre reprsentant un code optimal, et H larbre reprsentant le code e e issu de lalgorithme de Human.

2.2 Codage statistique

115

Remarquons que dans A, il nexiste pas de nud avec un seul ls dont les feuilles contiennent des mots du code (en eet, on remplace un tel nud par son ls et on obtient un meilleur code). Remarquons maintenant que dans A, si pour des mots c1 , c2 , les probabilits e dapparition respectives p1 , p2 satisfont p1 < p2 , alors les hauteurs respectives des feuilles reprsentant c1 , c2 : l1 , l2 satisfont l1 e l2 (en eet, dans le cas contraire, on remplace c1 par c2 dans larbre et on obtient un code meilleur). On peut donc supposer que A reprsente un code optimal pour lequel les deux e mots de plus faibles probabilits sont deux feuilles surs (elles ont le mme e e p`re). e On raisonne maintenant par rcurrence sur le nombre de feuilles n dans A. e Pour n = 1, le rsultat est vident. Pour n 2 quelconque, on consid`re les e e e deux feuilles surs correspondant aux mots c1 , c2 de plus faibles probabilits e dapparition p1 , p2 dans A. Dapr`s le principe de construction de Human, c1 e et c2 sont des feuilles surs dans H. On dnit alors H = H \ {c1 , c2 }. Cest e un codage de Human pour le code C = C \ {c1 , c2 } {c}, c tant un mot de e probabilit dapparition p1 + p2 . H reprsente par le principe de rcurrence le e e e meilleur code instantan sur C , donc de longueur moyenne infrieure ` A = e e a A \ {c1 , c2 }. Donc, et dapr`s les premi`res remarques, la longueur moyenne de e e H est infrieure ` la longueur moyenne de A. e a P Il faut bien comprendre la signication de ce thor`me : il ne dit pas que e e lalgorithme de Human est le meilleur pour coder une information dans tous les cas ; mais quen xant pour mod`le une source S sans mmoire sur un e e alphabet V , il ny a pas de code plus ecace qui a la proprit du prxe. ee e Dans la pratique (voir ` la n de ce chapitre), les codes jouent sur le mod`le a e en choisissant un mod`le de source adapt. En particulier, on peut obtenir des e e codes plus ecaces ` partir des extensions de la source, comme on peut le voir a sur lexemple suivant : Soit S = (S, P), S = (s1 , s2 ), P = (1/4, 3/4). Un codage de Human pour S donne videmment s1 0 et s2 1, et sa longueur moyenne est 1. e Un codage de Human pour S 2 = (S 2 , P 2 ) donne : s1 s1 010 s1 s2 011 s2 s1 00 s2 s2 1
9 27 1 3 3 et sa longueur moyenne est 3 16 + 3 16 + 2 16 + 16 = 16 = 1, 6875 La longueur moyenne de ce code est donc l = 1, 6875, et en comparaison avec le code sur S (les mots de S 2 sont de longueur 2), l = 1, 6875/2 = 0, 84375, ce

116

e Chapitre 2 : Thorie de linformation et compression

qui est meilleur que le code sur la source originelle. Nous pouvons encore amliorer ce codage en examinant la source S 3 . Il est e aussi possible daner le codage par une meilleure modlisation de la source : e souvent, loccurrence dun symbole nest pas indpendante des symboles pre e cdemment mis par une source (dans le cas dun texte, par exemple). Dans ce e e cas, les probabilits doccurrence sont conditionnelles et il existe des mod`les e e (le mod`le de Markov, en particulier) qui permettent un meilleur codage. Mais e ces procds ne conduisent pas ` des amliorations innies. Lentropie reste e e a e un seuil pour la longueur moyenne, en-de` duquel on ne peut pas trouver de ca code. Exercice 2.4. On cherche ` coder des jets successifs (en nombre suppos a e inni) dun d fauss. Les symboles de la source sont nots (1,2,3,4,5,6), et e e e suivent la loi de probabilit dapparition (0.12,0.15,0.16,0.17,0.18,0.22). e 1. Quelle est lentropie de cette source ? 2. Proposer un code ternaire (sur un alphabet ` trois chires) issu de lalgoa rithme de Human pour cette source. Quelle est sa longueur moyenne ? Quelle longueur moyenne minimale peut-on esprer pour un tel code tere naire ? 3. Mme question pour un code binaire. e Solution page 290. Exercice 2.5. (Suite de lexercice prcdent) Lalgorithme de Human conse e truit un code o` des mots de source de longueur xes sont cods par des mots u e de code de longueur variable. Lorganisation de la mmoire o` lon stocke le e u code impose parfois une longueur xe aux mots de code, et on code alors des squences de longueur variable des chires de la source. e Les codes dits de Tunstall sont les codes optimaux qui suivent ce principe. En voici la mthode de construction dans le cas dun alphabet binaire. Si la lone gueur choisie des mots de code est k, il faut trouver les 2k squences de chires e de source quon va choisir de coder. Au dpart, lensemble des candidats est e lensemble des mots de longueur 1 (ici, {1,2,3,4,5,6}). Soit dans cet ensemble le mot le plus probable (ici, 6). On construit toutes les squences ralisables en e e rajoutant un chire ` ce mot, et on remplace ce mot par ces squences dans a e lensemble des candidats (ici, on obtient alors {1,2,3,4,5,61,62,63,64,65,66}). On recommence alors cette opration tant que la taille de lensemble des cane didats nest pas strictement suprieure ` 2k (on arrte avant davoir dpass e a e e e cette valeur). On code alors toutes ces squences par des mots de longueur k. e 1. Sur un alphabet binaire, construire un code de Tunstall pour le d, pour e des longueurs de mots de code k = 4. 2. Comment est code la squence 6664 par Tunstall ? par Human ? e e

2.2 Codage statistique

117

3. Pour chaque mot de code, calculer le nombre de bits de code ncessaires e par caract`re de source. En dduire la longueur moyenne par bit de e e source du code de Tunstall Solution page 290.

2.2.2

Codage arithmtique e

Le codage arithmtique est une mthode statistique souvent meilleure que le e e codage de Human ! Or nous avons vu que Human tait optimal, quelle ope timisation est donc possible ? En codage arithmtique, chaque caract`re peut e e tre cod sur un nombre non entier de bits : des cha e e nes enti`res de caract`res e e plus ou moins longues sont encodes sur un seul entier ou rel machine. Par e e exemple, si un caract`re appara avec une probabilit de 0.9, la taille optimale e t e 9/10 log2 (10/9)+1/10log2 (10/1) H du codage de ce caract`re pourrait tre de log Q = e e log2 10 2 soit environ 0.14 bits alors quun algorithme de type Human utiliserait su rement 1 bit entier. Nous allons donc voir comment le codage arithmtique e permet de faire mieux. Arithmtique ottante e Lide du codage arithmtique est dencoder les caract`res par intervalles. La e e e sortie dun code arithmtique est un simple rel entre 0 et 1 construit de la e e mani`re suivante : ` chaque symbole on associe une portion de lintervalle [0, 1[ e a qui a pour taille sa probabilit doccurrence. Lordre dassociation nimporte e pas pourvu que soit le mme pour le codage et le dcodage. Par exemple, une e e source et les intervalles associs sont donns dans le tableau suivant. e e Symbole Probabilit e Intervalle a 0,1 [0,0.1[ b 0,1 [0.1,0.2[ c 0,1 [0.2,0.3[ d 0,2 [0.3,0.5[ e 0,4 [0.5,0.9[ f 0,1 [0.9,1[

Un message sera cod par un nombre choisi dans un intervalle dont les bornes e contiennent linformation du message. A chaque caract`re du message, on ane e lintervalle, en attribuant la portion qui correspond au caract`re. Par exemple, e si lintervalle courant est [0.15, 0.19[ et quon code le caract`re b, on attribue e la portion [0.1, 0.2[ relative ` [0.15, 0.19[, soit [0.15 + (0.19 0.15) 0.1 = a 0.154, 0.15 + (0.19 0.15) 0.2 = 0, 158[. Si le message ` coder est bebecafdead, cela donne lintervalle rel de la table a e 2.1 : tous les rels entre 0.15633504384 et 0.15633504640 correspondent ` la e a cha bebecafdead, choisissons par exemple 0.15633504500. Le programme ne de codage est donc tr`s simple et peut scrire schmatiquement par lalgoe e e rithme 18.

118

e Chapitre 2 : Thorie de linformation et compression Symbole b e b e c a f d e a d Borne infrieure e 0.1 0.15 0.154 0.1560 0.15632 0.156320 0.1563344 0.15633488 0.156335040 0.156335040 0.15633504384 Borne suprieure e 0.2 0.19 0.158 0.1576 0.15648 0.156336 0.1563360 0.15633520 0.156335168 0.1563350528 0.15633504640

Tab. 2.1: Codage arithmtique de bebecafdead. e

Algorithme 18 Codage arithmtique. e Soit borneInf 0.0 Soit borneSup 1.0 Tant que il y a des symboles ` coder Faire a C symbole ` coder a Soient x, y les bornes de lintervalle correspondant ` C dans la table 2.1 a taille borneSup borneInf ; borneSup borneInf + taille y borneInf borneInf + taille x Fin Tant que Retourner borneSup

Pour le dcodage, il sut alors de reprer dans quel intervalle se trouve e e 0.15633504500 : cest [0.1, 0.2[, donc la premi`re lettre est un b. Il faut e ensuite se ramener au prochain intervalle, on retire la valeur infrieure et on e divise par la taille de lintervalle de b, ` savoir (0.15633504500 0.1)/0.1 = a 0.5633504500. Ce nouveau nombre nous indique que la valeur suivante est un e. La suite du dcodage est indiqu table 2.2, et le programme est dcrit dans e e e lalgorithme 19. En rsum, lencodage rduit progressivement lintervalle proportionnellement e e e aux probabilits des caract`res. Le dcodage fait linverse en augmentant cet e e e intervalle.

2.2 Codage statistique Rel e 0.15633504500 0.5633504500 0.158376125 0.58376125 0.209403125 0.09403125 0.9403125 0.403125 0.515625 0.0390625 0.390625 Intervalle [0.1,0.2[ [0.5,0.9[ [0.1,0.2[ [0.5,0.9[ [0.2,0.3[ [0.0,0.1[ [0.9,1.0[ [0.3,0.5[ [0.5,0.9[ [0.0,0.1[ [0.3,0.5[ Symbole b e b e c a f d e a d Taille 0,1 0,4 0,1 0,4 0,1 0,1 0,1 0.2 0,4 0,1 0.2

119

Tab. 2.2: Dcodage arithmtique de 0.15633504500. e e

Algorithme 19 Dcodage arithmtique. e e Soit r le nombre en entre ` dcoder e a e Tant que r = 0.0 Faire Soit C le symbole dont lintervalle correspondant dans la table 2.1 contient r Acher C Soient a, b les bornes de lintervalle correspondant ` C dans la table 2.1 a taille b a r ra r r/taille Fin Tant que Arithmtique enti`re e e Le codage prcdent est dpendant de la taille de la mantisse dans la repre e e e sentation informatique des rels et nest donc pas forcment tr`s portable. Il e e e nest donc pas utilis tel quel avec de larithmtique ottante. Les dcimales e e e sont plutt produites une ` une, et adapt au nombre de bits du mot machine. o a e Une arithmtique enti`re plutt que ottante est alors plus naturelle : au lieu e e o dun intervalle [0,1[ ottant, cest un intervalle du type [00000,99999] entier qui est utilis. Ensuite, le codage est le mme. Par exemple, une premi`re e e e apparition de b (avec les frquences de la table 2.1) donne [10000,19999], e puis e donnerait [15000,18999]. On peut alors remarquer que d`s que le chire le plus signicatif est idene tique dans les deux bornes de lintervalle, il ne change plus. Il peut donc tre e

120

e Chapitre 2 : Thorie de linformation et compression

ach en sortie et supprim des nombres entiers reprsentant les bornes, ce e e e qui permet de ne manipuler que des nombres relativement petits pour les bornes. Pour le message bebecafdead, la premi`re occurrence de b donne e [10000,19999], on ache 1 que lon retire et lintervalle devient [00000,99999]. Le e donne ensuite [50000,89999], et la suite est dans le tableau 2.3. Le re sultat est 156335043840.
Symbole b shift 1 e b shift 5 e c shift 6 a shift 3 f shift 3 d e shift 5 a shift 0 d Borne infrieure e 10000 00000 50000 54000 40000 60000 63200 32000 32000 20000 34400 44000 48800 50400 04000 04000 40000 43840 Borne suprieure e 19999 99999 89999 57999 79999 75999 64799 47999 33599 35999 35999 59999 51999 51679 16799 05279 52799 46399 Sortie 1

6 3 3

5 0 43840

Tab. 2.3: Codage arithmtique entier de bebecafdead. e

Le dcodage suit quasiment la mme procdure en ne lisant quun nombre xe e e e de chires ` la fois : ` chaque tape, on trouve lintervalle (et donc le caract`re) a a e e contenant lentier courant. Ensuite, si le chire de poids fort est identique pour lentier courant et les bornes, on dcale le tout comme dans le tableau 2.4. e En pratique Ce schma dencodage rencontre un probl`me si les deux chires de poids fort e e ne deviennent pas gaux au fur et ` mesure du codage. La taille des entiers qui e a bornent lintervalle augmente, mais ne peut augmenter indniment ` cause e a des limitations de toute machine. On est confront ` ce probl`me si lon obtient ea e un intervalle de type [59992, 60007]. Apr`s quelques itrations supplmentaires, e e e lintervalle converge vers [59999, 60000], et plus rien nest ach ! e

2.2 Codage statistique


Dcalage e 1 Entier 15633 56335 56335 56335 63350 63350 63350 33504 33504 35043 35043 50438 50438 50438 04384 04384 43840 43840 Borne infrieure e > 10000 00000 > 50000 > 54000 40000 > 60000 > 63200 32000 > 32000 20000 > 34400 44000 > 48800 > 50400 04000 > 04000 40000 > 43840 Borne suprieure e < 19999 99999 < 89999 < 57999 79999 < 75999 < 64799 47999 < 33599 35999 < 35999 59999 < 51999 < 51679 16799 < 05279 52799 < 46399 Sortie b e b e c a f d e a d

121

6 3 3

5 0

Tab. 2.4: Dcodage arithmtique entier de 156335043840. e e

Pour pallier ce probl`me, il faut, outre comparer les chires de poids fort, come parer galement les suivants si les poids forts di`rent seulement de 1. Alors, e e si les suivants sont 9 et 0, il faut dcaler ceux-ci et conserver en mmoire e e que le dcalage est au niveau du deuxi`me chire de poids fort. Par exemple, e e [59123, 60456] est dcal en [51230, 64569]1 ; lindice 1 indiquant quon a de e e cal le deuxi`me chire. Ensuite, lorsque les chires de poids fort deviennent e e gaux (apr`s k dcalages de 0 et de 9), il faudra acher ce chire suivi de k e e e zros ou k neufs. En format dcimal ou hexadcimal, il faudrait stocker un bit e e e supplmentaire indiquant si lon a converg vers le haut ou le bas ; en format e e binaire, cette information se dduit directement. e Exercice 2.6. Avec les probabilits ( a : 4/10; b : 2/10; c : 4/10), le codage e de la cha bbbbba est donn ci-dessous : ne e
Symbole b b b b b a Intervalle [40000; 59999] [48000; 51999] [49600; 50399] [49200; 50799]1 [48400; 51599]2 [48400; 49679]2 Dcalage e Sortie

shift 0 et 9 : [46000; 53999]1 shift 0 et 9 : [42000; 57999]2 shift 4 : [84000; 96799] 499, puis 84000

Avec les mmes probabilits, dcoder la cha 49991680. Solution page 291. e e e ne

122

e Chapitre 2 : Thorie de linformation et compression

2.2.3

Codes adaptatifs

Le codage prsent par arbre de Human (avec paramtrage de lextension e e e de source) ou le codage arithmtique sont des codages statistiques qui fonce tionnent sur le mod`le de source introduit au chapitre 1, ` savoir sur la connaise a sance a priori de la frquence dapparition des caract`res dans le chier. Ces e e codages ncessitent en outre une table de correspondances (ou un arbre) entre e les mots de source et les mots de code an de pouvoir dcompresser. Cette e table peut devenir tr`s grande dans le cas dextensions de sources. e Exercice 2.7. Soit un alphabet sur 4 caract`res (a,b,c,d), de loi de proe babilit dapparition (1/2,1/6,1/6,1/6). e 1. Donner la table de correspondances de lalgorithme de Human statique pour cette source. 2. En supposant que les caract`res a, b, c et d sont crits en ASCII (8 bits), e e quel espace mmoire minimal est ncessaire pour stocker cette table ? e e 3. Quel serait lespace mmoire ncessaire pour stocker la table de correse e pondances de lextension de source ` 3 caract`res ? a e 4. Quelle est la taille du chier ASCII contenant la squence aaa aaa aaa e bcd bcd bcd non compresse ? e 5. Compresser cette squence par Human statique. Donner la taille toe tale du chier compress. Est-il intressant dutiliser une extension de e e source ? Solution page 291. En pratique, il existe des variantes dynamiques (` la vole) qui permettent de a e saranchir ` la fois du pr-calcul des frquences et des tables de correspona e e dances. Ce sont ces variantes qui sont les plus utilises dans les utilitaires de e compression. Elles utilisent la frquence des caract`res, mais la calculent au e e fur et ` mesure de loccurrence des symboles. a Algorithme de Human dynamique pack Lalgorithme de Human dynamique permet de compresser un ot ` la vole a e en faisant une seule lecture de lentre ; ` la dirence de lalgorithme statique e a e dHuman, il vite de faire deux parcours dun chier dentre (un pour le e e calcul des frquences, lautre pour le codage). La table des frquences est e e labore au fur et ` mesure de la lecture du chier ; ainsi larbre de Human e e a est modi ` chaque fois quon lit un nouveau caract`re. ea e La commande pack de Unix implmente cet algorithme dynamique. e

2.2 Codage statistique Compression dynamique

123

La compression est dcrite par lalgorithme 20. On suppose quon doit coder e un chier de symboles binaires, lus ` la vole par blocs de k bits (k est souvent a e ` un param`tre) ; on appelle donc caract`re un tel bloc. A linitialisation, e e on dnit un caract`re symbolique (not @ dans la suite) et cod initialement e e e e par un symbole prdni (par exemple comme un 257`me caract`re virtuel du e e e e code ASCII). Lors du codage, ` chaque fois que lon rencontre un nouveau a caract`re pas encore rencontr, on le code sur la sortie par le code de @ suivi e e des k bits du nouveau caract`re. Le nouveau caract`re est alors entr dans e e e larbre de Human. Pour construire larbre de Human et le mettre ` jour, on compte le noma bre doccurrences de chaque caract`re et le nombre de caract`res dj` lus ; e e ea on conna donc, ` chaque nouvelle lecture, la frquence de chaque caract`re t a e e depuis le dbut du chier jusquau caract`re courant ; les frquences sont donc e e e calcules dynamiquement. e Apr`s avoir crit un code (soit celui de @, soit celui dun caract`re dj` rene e e ea contr, soit les k bits non compresss dun nouveau caract`re), on incrmente e e e e de 1 le nombre doccurrences du caract`re crit. En prenant en compte les moe e dications de frquence, on met ` jour larbre de Human ` chaque itration. e a a e Algorithme 20 Algorithme de Human dynamique : compression. Soit nb(c), le nombre doccurrence dun caract`re c e Initialiser larbre de Human (AH) avec le caract`re @, nb(@) 1 e Tant que on nest pas ` la n de la source Faire a Lire un caract`re c de la source e Si cest la premi`re occurrence de c Alors e nb(c) 0 nb(@) nb(@) + 1 Acher en sortie le code de @ dans AH suivi de c. Sinon Acher le code de c dans AH Fin Si nb(c) nb(c) + 1 Mettre ` jour AH avec les nouvelles frquences a e Fin Tant que Larbre existe donc pour la compression (et la dcompression) mais na pas e besoin dtre envoy au dcodeur. e e e Enn, il y a plusieurs choix pour le nombre doccurrences de @ : dans lalgorithme 20 cest le nombre de caract`res distincts (cela permet davoir peu de e

124

e Chapitre 2 : Thorie de linformation et compression

bits pour @ au dbut), il est aussi possible de lui attribuer par exemple une e valeur constante tr`s proche de zro (dans ce cas le nombre de bits pour @ e e volue comme la profondeur de larbre de Human, en laissant aux caract`res e e tr`s frquents les codes les plus courts). e e Dcompression dynamique e ` Elle est dcrite par lalgorithme 21. A linitialisation, le dcodeur conna un e e t seul code, celui de @ (par exemple 0). Il lit alors 0 qui est le code associ ` ea @. Il en dduit que les k bits suivants contiennent un nouveau caract`re. Il e e recopie sur sa sortie ces k bits et met ` jour larbre de Human, qui contient a dj` @, avec ce nouveau caract`re. ea e Il faut bien noter que le codeur et le dcodeur maintiennent chacun leur propre e arbre de Human, mais utilisent tous les deux le mme algorithme pour le e mettre ` jour ` partir des occurrences (frquences) des caract`res dj` lus. a a e e ea Ainsi, les arbres de Human calculs sparment par le codeur et le dcodeur e e e e sont exactement les mmes. e Algorithme 21 Algorithme de Human dynamique : dcompression. e Soit nb(c), le nombre doccurrence dun caract`re c e Initialiser larbre de Human (AH) avec le caract`re @, nb(@) 1 e Tant que on nest pas ` la n du message cod Faire a e Lire un mot de code c du message (jusqu` une feuille de AH) a Si c = @ Alors nb(@) nb(@) + 1 Lire dans c les k bits du message et les acher en sortie. nb(c) 0 Sinon Acher le caract`re correspondant ` c dans AH e a Fin Si nb(c) nb(c) + 1 Mettre ` jour AH avec les nouvelles frquences a e Fin Tant que Puis, le dcodeur lit le code suivant et le dcode via son arbre de Human. Sil e e sagit du code de @, il lit les k bits correspondants ` un nouveau caract`re, les a e crit sur la sortie et ajoute le nouveau caract`re ` son arbre de Human (le e e a nouveau caract`re est dsormais associ ` un code). Sinon, il sagit du code e e ea dun caract`re dj` rencontr ; via son arbre de Human, il trouve les k bits e ea e du caract`re associ au code, et les crit sur la sortie. Il incrmente alors de 1 e e e e le nombre doccurrences du caract`re quil vient dcrire (et de @ si cest un e e

2.2 Codage statistique

125

nouveau caract`re) et met ` jour larbre de Human. e a Cette mthode dynamique est un peu moins ecace que la mthode statique e e pour estimer les frquences. Il est probable que le message cod sera donc un e e peu plus long. Mais elle vite le stockage de larbre et de la table des frquences, e e ce qui rend le rsultat nal souvent plus court. Ceci explique son utilisation e en pratique dans des utilitaires courants. Exercice 2.8. Nous reprenons la squence aaa aaa aaa bcd bcd bcd. e 1. Quel serait le codage de Human dynamique de cette squence ? e 2. Quel serait le codage de Human dynamique de lextension ` 3 caract`res a e de cette squence ? e Solution page 291. Codage arithmtique adaptatif e Lide gnrale du codage adaptatif qui vient dtre dveloppe pour lalgoe e e e e e rithme de Human, est la suivante : ` chaque tape le code courant correspond au code statique que lon aurait a e obtenu en utilisant les occurrences dj` connues comme frquences. ea e apr`s chaque tape, lencodeur met ` jour sa table doccurrence avec le noue e a veau caract`re quil a reu et cre un nouveau code statique correspondant. e c e Ceci doit tre fait toujours de la mme mani`re an que le dcodeur puisse e e e e faire de mme ` son tour. e a Cette ide simplmente tr`s bien galement dans le cadre du codage arithe e e e mtique : le code est construit essentiellement comme le code arithmtique, e e sauf que la distribution de probabilits est calcule au vol par lencodeur sur e e les symboles qui ont dj` t traits. Le dcodeur peut faire les mmes calea ee e e e culs et reste ainsi synchronis. Le codeur arithmtique adaptatif travaille en e e arithmtique ottante : ` la premi`re itration, lintervalle [0, 1[ est divis en e a e e e segments de longueurs gales. Chaque fois quun symbole est reu, lalgorithme e c calcule la nouvelle distribution de probabilits et le segment du symbole reu e c est lui-mme re-divis en nouveaux segments. Cependant, ces nouveaux sege e ments sont maintenant de longueurs correspondantes aux probabilits, mises e ` jour, des symboles. Plus le nombre de symboles reus est grand, plus la proa c babilit calcule sera proche de la probabilit relle. Comme pour Human e e e e dynamique, il ny a aucun surcot d ` lenvoi prliminaire de la table des u u a e frquences et pour des sources variables lencodeur est capable de sadapter e dynamiquement aux variations de probabilits. e Enn, outre la compression souvent meilleure par un codage arithmtique, il e est ` noter que si les implmentations de Human statique sont plus rapide a e que celles du codage arithmtique statique, cest en gnral linverse dans le e e e cas adaptatif.

126

e Chapitre 2 : Thorie de linformation et compression

2.3

Heuristiques de rduction dentropie e

En pratique, lalgorithme de Human (ou ses variantes) est utilis en conjonce tion avec dautres procds de codage. Ces autres procds ne sont pas toujours e e e e optimaux en thorie mais ils font des hypoth`ses raisonnables sur la forme des e e chiers ` compresser (ce sont des mod`les de source) pour diminuer lentroa e pie ou accepter une destruction dinformation suppose sans consquence pour e e lutilisation des donnes. e Nous donnons ici trois exemples de rduction dentropie. Le principe est de e transformer un message en un autre, par une transformation rversible, de e faon ` ce que le nouveau message ait une entropie plus faible, et soit donc c a compressible plus ecacement. Il sagit donc dun codage pralable ` la come a pression, charg de rduire lentropie. e e

2.3.1

RLE Run Length Encoding

Le codage statistique tire parti des caract`res apparaissant souvent, mais abe solument pas de leur position dans le texte. Si un mme caract`re appara e e t souvent rpt plusieurs fois dale, il peut tre utile de coder simplement le e ee e e nombre de fois o` il appara Par exemple, pour transmettre une page par fax, u t. le codage statistique codera le 0 par un petit mot de code, mais chaque 0 sera crit, ce qui le rendra beaucoup moins ecace que le code du fax prsent au e e e chapitre 1, spcialement pour les pages contenant de grandes parties blanches. e Le codage RLE est une extension de ce codage fax. Il lit chaque caract`re ` la e a suite mais, lorsque au moins 3 caract`res identiques successifs sont rencontrs, e e il ache plutt un code spcial de rptition suivi du caract`re ` rpter et du o e e e e a e e nombre de rptitions. Par exemple, avec @ comme caract`re de rptition, e e e e e la cha aabbbcddddd@ee est code par @a2@b3c@d5@@1@e2 (il est nne e e cessaire demployer une petite astuce si le caract`re spcial est rencontr pour e e e rendre le code instantan). e Exercice 2.9. 1. Quel serait le codage RLE de limage suivante ?

2. Y-a-t-il un gain ?

2.3 Heuristiques de rduction dentropie e

127

3. Quel serait le codage sur blocs de 5 bits en 16 niveaux de gris ? Et le gain ? Peut-on compresser plus avec ce syst`me ? e 4. Et en 255 niveaux de gris (avec au plus 16 pixels identiques conscutifs) ? e 5. Et en colonnes ? Solution page 292. Pour ne pas avoir le probl`me du caract`re spcial de rptition qui se code e e e e e forcment comme une rptition de taille 1, les modems utilisent une variante e e e de RLE appele MNP5. Lide est que lorsque 3 ou plus caract`res identiques e e e sont rencontrs, ces trois caract`res sont achs suivis dun compteur indie e e quant le nombre dapparitions supplmentaires du caract`re. Il faut bien sr e e u convenir dun nombre de bits xe ` attribuer ` ce compteur. Si le compteur a a dpasse son maximum, la suite sera code par plusieurs blocs des 3 mmes e e e caract`res suivi dun compteur. Par exemple, la cha aabbbcddddd est coe ne de par aabbb0cddd2. Dans ce cas, si une cha de n octets contient m e ne rptitions de longueur moyenne L, le gain de compression est nm(L4) si le e e n e compteur est sur un octet. Ce type de codage est donc tr`s utile par exemple pour des images noir et blanc ou des pixels de mme couleur sont tr`s souvent e e accols. Enn, il est clair quune compression statistique peut tre eectue e e e ultrieurement sur le rsultat dun RLE. e e

Le code du fax (suite et n) Revenons au code du fax, avec lequel nous avons commenc notre expos de e e thorie des codes (chapitre 1), pour le complter et donner son principe de e e compression en entier. Rappelons que linformation scanne est un ensemble de pixels noirs ou blancs e qui subissent un RLE par lignes de 1728 caract`res. Les pixels noirs et blancs e sont alterns, le message ` coder est donc une suite de nombres entre 1 et 1728. e a Ils seront cods par leur traduction en bits, selon le principe suivant. Un code e uniquement dchirable contient le codage de tous les nombres entre 1 et 63, e puis quelques nombres suprieurs, de faon ` ce que pour tout nombre supe c a e rieur ` n, il existe un grand nombre m dans la table, tel que 0 n m 64. a n rptitions sont alors reprsentes par deux codes successifs : m rptitions, e e e e e e puis n m rptitions. Des extraits de tables montrant les nombres codant e e les pixels blancs sont reproduits sur la gure 2.4. Les nombres compris entre 1 et 64 sont appels Terminating White Codes et les nombres suprieurs e e Make Up White Codes . Les mmes tables existent pour les noirs, avec e dirents codes, le tout formant un code uniquement dchirable. e e

128

e Chapitre 2 : Thorie de linformation et compression | | | | | | | | | | | | Make Up White Codes Code Run --------------------------11011 64 10010 128 010111 192 0110111 256 00110110 320 ... ... 010011010 1600 011000 1664 010011011 1728

Terminating White Codes Code Run --------------------------00110101 0 000111 1 0111 2 1000 3 1011 4 ... .. 00110010 61 00110011 62 00110100 63

Fig. 2.4: Code du fax.

2.3.2

Move-to-Front

Un autre pr-calcul est possible lorsque que lon transforme un caract`re ASCII e e en sa valeur entre 0 et 255 : en modiant ` la vole lordre de la table. Par a e exemple, d`s quun caract`re appara dans la source, il est dabord cod par e e t e sa valeur, puis il passe en dbut de liste, et sera dornavant cod par 0, tous e e e les autres caract`res tant dcals dune unit. Ce Move-to-front permet e e e e e davoir plus de codes proches de 0 que de 255. Ainsi, lentropie est modie. e Par exemple, la cha aaaa peut tre modlise par une source dentropie ne e e e 1, si la table est (a,b,c,d,e,f). Elle est alors code par 00005555. Lentropie e du code (considr lui-mme comme source) est 1. Cest aussi lentropie de ee e la source. Mais le code dun Move-to-front sera 00005000, dentropie H = 7/8 log2 (8/7)+log2 (8)/8 0.55. Le code lui-mme est alors compressible, cest e ce quon appelle la rduction dentropie. Dans ces conditions, on peut coder e beaucoup plus ecacement le message obtenu, et donc le message de dpart. e Une variante de cette mthode peut tre de dplacer le caract`re dans la e e e e liste dun nombre xe de caract`res vers le dbut, au lieu de le placer en e e premi`re position. Ainsi, les caract`res les plus frquents vont se retrouver e e e vers le dbut de la liste. Cette ide prgure les codages adaptatifs et les e e e codages par dictionnaires des sections suivantes. Exercice 2.10. Soit A lalphabet sur 8 symboles suivant : A = (a, b, c, d, m, n, o, p). 1. On associe ` chaque symbole un numro entre 0 et 7, selon leur posia e tion alphabtique. Quels nombres reprsentent abcddcbamnopponm et e e abcdmnopabcdmnop?

2.3 Heuristiques de rduction dentropie e

129

2. Codez les deux cha nes prcdentes en utilisant la technique Move-toe e Front . Que constatez-vous ? 3. Combien de bits sont ncessaires pour coder les deux premiers nombres, e par Human par exemple ? 4. Combien de bits sont ncessaires pour coder les deux nombres obtenus e apr`s Move-to-Front ? Comparer les entropies. e 5. Que donne Human tendu ` deux caract`res sur le dernier nombre ? e a e Quelle est alors la taille de la table des frquences ? e 6. Comment pourrait-on qualier lalgorithme compos dun Move-toe Front suivi dun code statistique ? 7. Le Move-ahead-k est une variation du Move-to-Front o` le caracu t`re est seulement avanc de k positions au lieu du sommet de la pile. e e Encoder les deux cha nes prcdentes avec k = 1 puis k = 2 et comparer e e les entropies. Solution page 292.

2.3.3

BWT : Transformation de Burrows-Wheeler

Lide de lheuristique de Michael Burrows et David Wheeler est de trier les e caract`res dune cha an que le Move-to-front et le RLE soient les plus e ne ecaces possible. Le probl`me est bien sr quil est impossible de retrouver la e u cha initiale ` partir dun tri de cette cha ! Lastuce est donc de trier la ne a ne cha ne, mais denvoyer plutt une cha intermdiaire, de meilleure entropie o ne e que la cha initiale, et qui permette cependant de retrouver la cha initiale. ne ne Prenons par exemple, la cha COMPRESSE. Il sagit de crer tous les ne e dcalages possibles comme sur la gure 2.5, puis de trier les lignes dans lordre e alphabtique et lexicographique. La premi`re colonne F de la nouvelle matrice e e des dcalages est donc la cha trie de toutes les lettres du mot source. La e ne e derni`re colonne sappelle L. Seules la premi`re et la derni`re colonne sont e e e crites, car elles sont seules importantes pour le code. Sur la gure et dans le e texte nous mettons des indices pour les caract`res qui se rp`tent ; ces indices e e e permettent de simplier la vision de la transformation mais ninterviennent pas dans lalgorithme de dcodage : en eet lordre des caract`res est forcment e e e conserv entre L et F. e Bien sr, pour calculer F (la premi`re colonne) et L (la derni`re colonne), u e e il nest pas ncessaire de stocker toute la matrice des dcalages, un simple e e pointeur se dplaant dans la cha est susant. Cette premi`re phase est e c ne e donc assez simple. Mais si seule la colonne F est envoye, comment eectuer e la rciproque ? e

130

e Chapitre 2 : Thorie de linformation et compression


F C E2 E1 M O P R S2 S1 L E2 S2 R O C M P S1 E1

D0 D1 D2 D3 D4 D5 D6 D7 D8

C O M P R E1 S1 S2 E2

O M P R E S S E C

M P R E S S E C O

P R E S S E C O M

R E S S E C O M P

E1 S S E C O M P R

S1 S E C O M P R E

S2 E C O M P R E S

E2 C O M P R E1 S1 S2

tri

D0 D8 D5 D2 D1 D3 D4 D7 D6

...

Fig. 2.5: BWT sur COMPRESSE.

La solution est alors denvoyer la cha L au lieu de la cha F : si L nest ne ne pas trie, elle est cependant issue du tri dune cha quasiment semblable, e ne simplement dcale dune lettre. On peut donc esprer quelle conserve des e e e proprits issues du tri et que lentropie en sera rduite. La magie du dcodage ee e e vient de ce que la connaissance de cette cha ne, conjugue ` celle de lindex e a primaire (le numro de ligne contenant le premier caract`re de la cha e e ne initiale, sur lexemple 2.5, cest 4 en numrotant de 0 ` 8) permet de rcuprer e a e e la cha initiale. Il sut de trier L pour rcuprer F. Ensuite, on calcule un ne e e vecteur de transformation H contenant la correspondance des indices entre L et F, cest-`-dire lindice dans L de chaque caract`re pris dans lordre tri a e e de F. Pour lexemple 2.5, cela donne H = {4, 0, 8, 5, 3, 6, 2, 1, 7}, car C est en position 4, lindex primaire, dans L, puis E2 est en position 0 dans L, puis E1 est en position 8, etc. Ensuite, il faut se rendre compte quen plaant c L avant F en colonnes, dans chaque ligne deux lettres se suivant doivent se suivre dans la cha initiale : en eet, par dcalage, la derni`re lettre devient ne e e la premi`re et la premi`re devient la deuxi`me. Ceci se traduit galement par e e e e le fait que pour tout j, L[H[j]] = F [j]. Il ne reste plus alors qu` suivre cet a encha nement de lettres deux ` deux pour retrouver la cha initiale, comme a ne dans lalgorithme 22. Algorithme 22 Rciproque de la BWT. e On dispose de la cha L et de lindex primaire index. ne F tri de L ; Calculer le vecteur de transformation H tel que L[H[j]] = F [j] pour tout j. Pour i de 0 ` Taille de L Faire a Acher L[index] index H[index] Fin Pour

2.3 Heuristiques de rduction dentropie e Exercice 2.11 (Analyse du code BWT).

131

1. La derni`re colonne L de la matrice trie de la transformation BWT e e contient des concentrations de caract`res identiques, cest pourquoi L se e compresse bien. Toutefois, la premi`re colonne F se compresserait encore e mieux puisquelle est totalement trie. Pourquoi slectionner L plutt que e e o F comme code ? 2. Soit la cha S=sssssssssh. Calculer L et sa compression Move-tone front. 3. Implmentation pratique : BWT est ecace sur de longues cha e nes S de taille n. En pratique il est donc impensable de stocker toute la matrice n n des permutations. En fait il faut seulement trier ces permutations et pour les trier, il sut dtre capable de comparer deux permutations. e (a) Donner un indice qui soit capable de dsigner et direncier les e e permutations de la cha de dpart. ne e (b) Construire un algorithme comparer_permutations, calculant une fonction boolenne qui a pour entre une cha S et deux entiers e e ne i et j. Cet algorithme doit dcider si la cha dcale i fois est e ne e e avant la cha dcale j fois, dans lordre obtenu en triant toutes ne e e les permutations par ordre alphabtique. e (c) Conclure sur lespace mmoire ncessaire pour calculer la BWT. e e (d) Comment calculer L et lindex primaire ` partir du tableau des pera mutations ? Solution page 293. En sortie de la transformation BWT, on obtient donc en gnral une cha e e ne dentropie plus faible, bien adapte ` un Move-to-front suivi dun RLE. Lutie a litaire de compression bzip2 dtaill sur la gure 2.6 utilise cette suite de e e rductions dentropie avant deectuer un codage de Human. Nous verrons e section 2.4.2 que cette technique est parmi les plus ecaces actuellement.

BWT

Move tofront

RLE

Huffman

Fig. 2.6: bzip2.

132

e Chapitre 2 : Thorie de linformation et compression

2.4

Codes compresseurs usuels

Comme nous venons de le voir pour Lutilitaire de compression bzip2 les implmentations usuelles combinent plusieurs algorithmes de compression. Cela e permet de tirer parti des avantages de chacun et de minimiser les cas de mauvaise compression. Parmi les techniques les plus rpandues, les techniques par e dictionnaire de Lempel et Ziv, permettent de compter des groupes entiers de caract`res. e

2.4.1

Algorithme de Lempel-Ziv et variantes gzip

Lalgorithme invent par Lempel et Ziv est un algorithme de compression par e dictionnaire (ou encore par substitution de facteurs) ; il consiste ` remplacer a une squence de caract`res (appele facteur) par un code plus court qui est e e e lindice de ce facteur dans un dictionnaire. Lide est de faire de la rduce e tion dentropie, non plus par caract`re, mais par mots entiers. Par exemple, e dans la phrase un gars bon est un bon gars , on peut associer dynamiquement des numros aux mots dj` rencontrs, et le codage devient alors : e ea e un,gars,bon,est,1,3,2. Il est ` noter que, comme pour les algorithmes dynaa miques, les mthodes par dictionnaire ne ncessitent quune seule lecture du e e chier. Il existe plusieurs variantes de cet algorithme ; parmi celles-ci, LZ77 et LZ78 sont libres de droits. LZ77. (publi par Lempel et Ziv en 1977) est le premier algorithme de type e dictionnaire. Alternative ecace aux algorithmes de Human, il a relanc les e recherches en compression. LZ77 est bas sur une fentre qui coulisse sur le e e texte de gauche ` droite. Cette fentre est divise en deux parties : la prea e e mi`re partie constitue le dictionnaire ; la seconde partie (tampon de lecture) e rencontre le texte en premier. Initialement, la fentre est situe de faon ` ce e e c a que le tampon de lecture soit positionn sur le texte, et que le dictionnaire ny e ` soit pas. A chaque itration, lalgorithme cherche dans le dictionnaire le plus e long facteur qui se rp`te au dbut du tampon de lecture ; ce facteur est cod e e e e par le triplet (i, j, c) o` : u i est la distance entre le dbut du tampon et la position de la rptition e e e dans le dictionnaire ; j est la longueur de la rptition ; e e c est le premier caract`re du tampon dirent du caract`re correspondant e e e dans le dictionnaire. Apr`s avoir cod cette rptition, la fentre coulisse de j + 1 caract`res vers e e e e e e la droite. Dans le cas o` aucune rptition nest trouve dans le dictionnaire, u e e e le caract`re c qui a provoqu la dirence est cod alors (0, 0, c). e e e e

2.4 Codes compresseurs usuels Exercice 2.12 (Codage dune rptition par LZ77). e e 1. Coder la squence abcdefabcdefabcdefabcdef avec LZ77. e

133

2. Coder cette squence avec LZ77 et une taille de fentre de recherche e e tenant sur 3 bits. Solution page 294. Une des implmentations les plus connues de LZ77, est la biblioth`que LZMA e e (pour Lempel-Ziv-Markov chain-Algorithm) qui combine donc une compression LZ77 avec un dictionnaire de taille variable (adaptatif) suivi par un codage arithmtique entier. e LZ78. est une amlioration qui consiste ` remplacer la fentre coulissante e a e par un pointeur qui suit le texte et un dictionnaire indpendant, dans lequel e on cherche les facteurs situs au niveau du pointeur. Supposons que, lors du e codage, on lit la cha sc o` s est une cha qui est ` lindex n dans le ne u ne a dictionnaire et c est un caract`re tel que la cha sc nest pas dans le dictione ne naire. On crit alors sur la sortie le couple (n, c). Puis, le caract`re c concatn e e e e au facteur numro n nous donne un nouveau facteur qui est ajout au dice e tionnaire pour tre utilis comme rfrence dans la suite du texte. Seules deux e e ee informations sont codes au lieu de trois avec LZ77. e LZW. (Lempel-Ziv-Welch) est une autre variante de Lempel-Ziv propose e par Terry Welch. LZW a t brevete par Unisys. Il consiste ` ne coder que ee e a lindice n dans le dictionnaire ; de plus le chier est lu bit par bit. Enn, il est ncessaire davoir un dictionnaire initial (par exemple, la table ASCII). e La compression, dcrite par lalgorithme 23, est alors immdiate : on reme e place chaque groupe de caract`re dj` connu par son code et on ajoute au e ea dictionnaire un nouveau groupe form par ce groupe et le prochain caract`re. e e Algorithme 23 LZW : compression. Soit chaine la cha courante ne Tant que on nest pas ` la n de la source Faire a Lire un caract`re c de la source e Si chaine|c est dans le dictionnaire Alors chaine chaine|c Sinon Acher le code de cha ne Ajouter chaine|c au Dictionnaire chaine c Fin Si Fin Tant que

134

e Chapitre 2 : Thorie de linformation et compression

La dcompression est un plus complexe, car il faut traiter un cas particulier e o` la mme cha est reproduite deux fois de suite. Lalgorithme 24 dcrit u e ne e ce fonctionnement : on part du mme dictionnaire initial que lon augmente e au fur et ` mesure de la mme mani`re que pour la compression, mais avec a e e un dcalage car il faut connaitre le prochain caract`re. Ce dcalage induit un e e e probl`me si la mme cha est reproduite deux fois de suite. En eet, dans ce e e ne cas le nouveau code nest pas encore connu ` la dcompression. Nanmoins, a e e comme cest le seul cas o` lon recontre ce type de probl`me, on sait que cest u e le mme dbut de cha qui se prsente et lon peut donc deviner la valeur e e ne e du groupe. Algorithme 24 LZW : dcompression. e Lire un octet prec du message cod e Tant que on nest pas ` la n du message cod Faire a e Lire un octet cour du message cod e Si cour est dans le dictionnaire Alors chaine la traduction de cour dans le dictionnaire Sinon chaine la traduction de prec dans le dictionnaire chaine chaine|c Fin Si Acher chaine Soit c le premier caract`re de chaine e Soit mot la traduction de prec dans le dictionnaire Ajouter mot|c au dictionnaire prec cour Fin Tant que Lexercice suivant illustre ce principe. Exercice 2.13. En utilisant la table ASCII hexadcimale (7bits) ci-dessous e comme dictionnaire initial, compresser et dcompresser la cha BLEBLBLe ne BA avec LZW.
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP ! " # \$ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ 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 { | } ~ DEL

2.4 Codes compresseurs usuels

135

Dcompresser le rsultat sans le traitement du cas particulier, que constateze e vous ? Solution page 294. Enn, plusieurs variantes ont t proposes, par exemple LZMW o` cha ee e u ne + prochain mot est ajout au dictionnaire au lieu de seulement cha + e ne prochain caract`re ou encore LZAP dans laquelle tous les prxes de cha e e ne + prochain mot sont ajouts au dictionnaire. e La commande compress de Unix implmente LZ77. Lutilitaire gzip est bas e e sur une variante ; il utilise deux arbres de Human dynamiques : un pour les cha nes de caract`res, lautre pour les distances entre occurrences. Les dise tances entre deux occurrences dune cha sont bornes : lorsque la distance ne e devient trop grande, on rinitialise la compression en redmarrant une come e pression ` partir du caract`re courant, indpendamment de la compression a e e dj` eectue jusqu` ce caract`re. ea e a e Cette particularit fait quil ny a pas de dirence structurelle entre un seul e e chier compress par gzip et une squence de chiers compresss. Ainsi, soient e e e f1.gz et f2.gz les rsultats associs ` la compression de deux chiers sources e e a f1 et f2, que lon concat`ne dans un chier f3.gz. En dcompressant avec e e gunzip f3.gz, on obtient en rsultat un chier dont le contenu est identique e ` la concatnation de f1 et f2. a e Exercice 2.14 (gzip). 1. Encoder la cha abbarbarbbabbarbaa par LZ77. ne 2. Dcouper le codage prcdent en trois cha e e e nes (distances, longueurs et caract`res), et appliquer gzip, le codage du @ de Human dynamique e tant x ` un seul bit, 1. En outre, dans gzip, le premier @ nest pas e ea omis. 3. On suppose que la cha prcdente est en deux morceaux, abbarbarb ne e e et babbarbaa, dans deux chiers distincts f1 et f2. Donner le contenu de f1.gz et f2.gz, les compressions de f1 et f2 par gzip. 4. On concat`ne les deux chiers f1.gz et f2.gz dans un chier f3.gz e (par exemple par la commande unix cat f1.gz f2.gz > f3.gz, puis lon dcompresse le chier f3.gz par gunzip. Quel est le rsultat ? En e e dduire lutilit de ne pas omettre le premier @. e e 5. Comment gzip peut-il tre paramtr par un niveau de compression (par e e e ex. gzip -1 xxx.txt ou gzip -9 xxx.txt) ? Solution page 294.

136

e Chapitre 2 : Thorie de linformation et compression

2.4.2

Comparaison des algorithmes de compression

Nous comparons dans le tableau 2.5 les taux de compression et les vitesses de codage et dcodage des utilitaires classiques sous unix/linux sur lexemple e dun chier de courriels (contenant donc texte, images, chiers binaires).
Algorithme 7-Zip-4.42 (LZMA+ ?) RAR-3.51 ( ?) rzip-2.1 -9 (LZ77+Go) ppmd-9.1 (Prdictif) e bzip2-1.0.3 (BWT) gzip-1.3.5 -9 (LZ77) gzip-1.3.5 -2 (LZ77) WinZip-9.0 (LZW+ ?) compress (LZW) lzop-1.01 -9 (LZW+ ?) lzop-1.01 -2 (LZW+ ?) pack (Human) Fichier compress e 5.96 Mo 6.20 Mo 6.20 Mo 6.26 Mo 6.69 Mo 7.68 Mo 8.28 Mo 7.72 Mo 9.34 Mo 9.35 Mo 10.74 Mo 11.11 Mo Taux 62.57% 61.07% 61.09% 60.71% 57.96% 51.77% 47.99% 51.55% 41.31% 41.32% 32.54% 30.21% codage 23.93s 14.51s 9.26s 11.26s 7.41s 2.00s 1.14s 5s 1.11s 6.73s 0.45s 0.33s dcodage e 6.27s 0.46s 2.94s 12.57s 3.16s 0.34s 0.34s 5s 0.32s 0.09s 0.09s 0.27s

Tab. 2.5: Comparaison de la compression dun chier de courriels (15.92 Mo de texte, images, excutables, etc.) par dirents algorithmes, sur un PIV 1.5GHz. e e

Les programmes gzip et compress utilisent des variantes de Lempel-Ziv et sont dcrits ` la section prcdente. bzip2 utilise des rductions dentropies e a e e e comme la BWT avant de faire un codage entropique et est dcrit section 2.3.3. e 7-Zip utilise la variante LZMA de LZ77, associe ` un codage arithmtique, et e a e un certain nombre dheuristiques supplmentaires suivant le type de chier en e entre. WinZip utilise galement plusieurs variantes suivant le type de chier e e pour nir par un codage LZW. rzip est spcialis pour les gros chiers et utilise e e donc LZ77 avec une tr`s large fentre. ppmd utilise un mod`le probabiliste e e e de Markov pour prvoir le prochain caract`re grce ` la connaissance des e e a a caract`res qui le prc`dent immdiatement. pack, enn, implmente un codage e e e e e de Human simple. En conclusion le comportement pratique re`te la thorie : LZ77 compresse e e mieux que LZW, mais plus lentement. Les algorithmes par dictionnaires compressent mieux que les codages entropiques simples, mais moins bien quun codage entropique avec une bonne heuristique de rduction dentropie. Les logie ciels gnraux essayent en gnral plusieurs mthodes pour trouver la meilleure e e e e e compression. Si le taux de compression est donc amlior, le temps de come e pression en soure fortement en gnral. e e

2.5 La compression avec perte

137

2.4.3

Formats GIF et PNG pour la compression dimages

Les formats de donnes compacts usuels tiennent compte de la nature des done nes ` coder. Ils sont dirents sil sagit dun son, dune image ou dun texte. e a e Parmi les formats dimages, le format GIF (Graphic Interchange Format) est un format de chier graphique bitmap propos par la socit Compuserve. e ee Cest un format de compression pour une image pixellise, cest-`-dire dcrite e a e comme une suite de points (pixels) contenus dans un tableau ; chaque pixel a une valeur qui dcrit sa couleur. e Le principe de compression est en deux tapes. Tout dabord, les couleurs e pour les pixels (initialement, il y a 16,8 millions de couleur codes sur 24 e bits RGB) sont limites ` une palette contenant de 2 ` 256 couleurs (2, 4, e a a 8, 16, 32, 64, 128 ou 256 qui est le dfaut). La couleur de chaque pixel est e donc approche par la couleur la plus proche gurant dans la palette. Tout en e gardant un nombre important de couleurs direntes avec une palette de 256, e ceci permet davoir un facteur 3 de compression. Puis, la squence de couleurs e des pixels est compresse par lalgorithme de compression dynamique LZW e (Lempel-Ziv-Welch). Il existe deux versions de ce format de chier dveloppes e e respectivement en 1987 et 1989 : GIF 87a permet un achage progressif (par entrelacement) et la possibilit e davoir des images animes (les GIFs anims) en stockant plusieurs images e e au sein du mme chier. e GIF 89a permet en plus de dnir une couleur transparente dans la palette e et de prciser le dlai pour les animations. e e Comme lalgorithme de dcompression LZW a t brevet par Unisys, tous e ee e les diteurs de logiciel manipulant des images GIF auraient pu payer une ree devance ` Unisys. Cest une des raisons pour lesquelles le format PNG est de a plus en plus plbiscit, au dtriment du format GIF. Le format PNG est un e e e format analogue ; mais lalgorithme de compression utilis est LZ77. e

2.5
2.5.1

La compression avec perte


Dgradation de linformation e

Nous avons vu que les compresseurs sans perte ne permettent pas de compresser au-del` du seuil de lentropie, et que les heuristiques de rduction de a e lentropie permettaient dabaisser ce seuil en changeant le mod`le de la source. e Mais aucune de ces mthodes ne tenait compte du type de chier ` compresser, e a et de son utilisation. Prenons lexemple dun image numrique. Les compresseurs sans perte transe mettront le chier sans utiliser linformation quil sagit dun image, et le chier

138

e Chapitre 2 : Thorie de linformation et compression

pourra toujours tre restitu dans son intgralit. Mais il peut exister des fore e e e mats beaucoup plus ecaces pour lesquels, si une partie de linformation est perdue, la dirence ne soit jamais visible. Les chiers ne pourront donc pas e tre restitus dans leur tat initial, mais leur tat permettra de visualiser des e e e e images daussi bonne qualit. Ce qui veut dire que la qualit qui tait code e e e e dans le chier de dpart tait superue, puisquelle ninduit aucune dirence e e e visuelle. Les compresseurs avec perte sont donc spciques du type de donnes ` transe e a mettre ou ` stocker (images, son et vido pour la plupart), et utilisent cette a e information en codant le rsultat visuel du chier plutt que le chier luie o mme. e Ce type de compression est obligatoire pour les formats vido, par exemple, e o` la taille des donnes et les calculs sont tr`s importants. u e e Les compresseurs avec perte vont permettre de dpasser le seuil de lentropie e et obtenir des taux de compression tr`s importants. Ils tiennent compte non e plus seulement de linformation brute, mais aussi de la mani`re dont elle est e peru par des tres humains, ce qui ncessite une modlisation de la persistance c e e e rtinienne ou auditive par exemple. e On pourra mesurer lecacit de ces compresseurs avec le taux de compression, e mais la qualit des images produites nest value que grce ` lexprience des e e e a a e utilisateurs. Nous prsentons donc les formats standards, largement prouvs. e e e En outre, pour les informations audiovisuelles, un autre crit`re important viene dra se greer au taux de compression : la rapidit de la dcompression. En e e particulier pour les sons ou les vidos, la visualisation ncessite des calculs e e extrmement rapides pour lire les chiers compresss. La complexit algoe e e rithmique des dcompresseurs est donc une contrainte aussi importante que la e taille des messages compresss lorsquon traite des informations audiovisuelles. e

2.5.2

Transformation des informations audiovisuelles

Les formats compacts de stockage dimages, de sons ou de vido utilisent toue jours des sources tendues. Ils codent non pas pixel par pixel, mais prennent e en compte un pixel et son entourage, pour observer des param`tres globaux, e comme lapparition des contours, les rgularits, ou lintensit des variations. e e e Ces donnes seront traites sous la forme de signaux pseudo-priodiques. Par e e e exemple, si un morceau dune image est un dgrad doux, la frquence du e e e signal sera faible, tandis que la frquence dune partie dont les couleurs, les e textures varient beaucoup sera leve. Cela permettra un codage tr`s ecace e e e des zones de basse frquence. En outre, une suppression pure et simple des e zones de tr`s haute frquence sera souvent invisible ou inaudible, donc parfaie e tement acceptable.

2.5 La compression avec perte

139

2.5.3

Le format JPEG

Le codage au format JPEG (pour Joint Photographic Experts Group) compresse des images xes avec perte dinformation. Lalgorithme de codage est complexe, et se droule en plusieurs tapes. Le principe de base est que les e e couleurs des pixels voisins dans une image di`rent peu en gnral. De plus, e e e une image est un signal : plutt que les valeurs des pixels, on calcule les fro e quences (transforme de Fourier DFT ou transforme en cosinus discr`te DCT e e e dans le cas de JPEG). En eet, on peut considrer quune image est une e matrice de couleurs des pixels ; et il se trouve que les images numriques sont principalement come poses de basses frquences DCT quand on ree e garde la luminance des couleurs (dans le codage dune image en mode luminance / chrominance, YUV par exemple) plutt quen mode rouge / o vert / bleu (RGB). Il existe plusieurs formules pour passer du mode RGB au mode YUV selon Fig. 2.7: Image 8 8 en les mod`les physiques de la lumi`re. Une formule rouge, vert et bleu sur fond e e classique pour trouver la luminance est celle-ci : blanc (ici en niveaux de gris). Y = 0.299 R + 0.587 G + 0.114 B. Lide est donc dappliquer la DCT de la section 1.4.2 sur la matrice des e luminances. Or, la DCT va transformer cette matrice en une matrice contenant les hautes frquences en haut ` droite et les basses frquences en bas ` gauche. e a e a Ainsi, la luminance de limage 2.7 est transforme par DCT de L D de la e faon suivante : c L= D=
76 255 255 255 255 255 255 255 76 76 76 76 255 255 255 255 76 255 255 255 255 255 255 255 255 255 150 150 150 150 255 255 255 255 150 255 255 150 255 255 255 255 255 150 150 255 255 255 255 255 255 255 29 29 29 29 255 255 255 255 29 255 255 29


32 86 130 92 50 7 54 29

1631 71 6 348 39 81 49 3 101 43 25 166 64 34 73 48

83 49 123 10 111 62 54 48

49 2 27 25 55 50 11 28

94 26 28 19 4 50 69 27

36 185 0 126 3 2 0 33

201 60 43 33 120 9 26 23

140

e Chapitre 2 : Thorie de linformation et compression

Enn, lil humain donne plus dimportance ` la luminosit quaux couleurs. a e En ne gardant que les premiers termes de la dcomposition en luminance e DCT (les plus importants), on perd un peu dinformation mais limage reste visible. Cette opration est appele quantication et cest la seule tape de e e e tout le codage JPEG qui soit avec perte dinformation. Lopration consiste ` e a arrondir la valeur C(i, j) = DCT (i,j) o` Q est une matrice de quantication u Q(i,j) Q= 16 12 14 14 18 24 49 72 11 12 13 17 22 35 64 92 10 14 16 22 37 55 78 95 16 24 40 19 26 58 24 40 57 29 51 87 56 68 109 64 81 104 87 103 121 98 112 100 51 61 60 55 69 56 80 62 103 77 113 92 120 101 103 99

C=

102 6 8 3 4 1 4 1 1 29 4 0 1 3 1 2 3 6 8 1 1 0 1 2 4 0 0 1 0 1 0 1 6 2 3 1 0 0 1 1 1 5 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0

On voit sur lexemple quapr`s quantication, beaucoup de valeurs sont idene tiques et proches de zro. Le choix de la matrice de quantication respece tivement avec valeurs proches de 1 ou loin de 1 permet daugmenter ou de diminuer le niveau de dtails. e Limage est nalement code comme une suite de nombres (une valeur quantie e de DCT suivie du nombre de pixels ayant cette valeur qui sont conscutifs e e selon le balayage en zigzag la gure 2.8). Les faibles valeurs obtenues permettent desprer que lentropie obtenue apr`s ce RLE a t considrablement e e ee e rduite. Lalgorithme JPEG se termine alors par un codage statistique, par e exemple Human. Enn, il est ` noter que le standard JPEG, ou encore DCT-JPEG, tend ` a a tre remplac par le nouveau standard JPEG-2000 o` la transformation en e e u cosinus et la quantication sont remplaces par une transforme en ondelettes e e dans laquelle ne sont conservs que certains niveaux. Le nombre de niveaux e ou bandes conservs inue directement sur le taux de compression dsir. e e e

2.5 La compression avec perte

141

Fig. 2.8: Balayage en zigzag de JPEG.

Image

Blocs 8x8

DCT

Quantification

RLE zigzag

Huffman ou Arith.

Fig. 2.9: Compression JPEG.

2.5.4

Le format MPEG

Le format MPEG (pour Motion Picture Experts Group) dnit la compression e dimages animes. Lalgorithme de codage utilise JPEG pour coder une image e mais prend en compte le fait que deux images conscutives dans une squence e e vido sont tr`s voisines. Une des particularits des normes MPEG est de chere e e cher ` compenser le mouvement (un zoom par exemple etc..) dune image ` la a a suivante. Une sortie MPEG-1 contient 4 sortes dimages : des images au format I (JPEG), des images P codes par dirences avec limage prcdente (par e e e e compensation du mouvement deux images conscutives sont tr`s voisines), e e des images bidirectionnelles B codes par dirence avec limage prcdente e e e e et la suivante (en cas de dirences moins importantes avec une image future e quavec une image prcdente), enn des images basse rsolution utilises pour e e e e lavance rapide sur un magntoscope. En pratique, avec les images P et B, il e sut dune nouvelle image compl`te I toutes les 10 ` 15 images. e a Un lm vido tant compos dimages et de son, il faut galement compresser e e e e le son. Le groupe MPEG a dni trois formats : les MPEG-1 Audio Layer I, e II et III, le troisi`me tant le fameux MP3. Le MPEG-1 est la combinaison de e e compressions dimages et de son, associes ` une synchronisation par marquage e a temporel et une horloge de rfrence du syst`me comme indiqu sur la gure ee e e 2.10.

142

e Chapitre 2 : Thorie de linformation et compression


Codeur Audio

Signal audio

Horloge

Multiplexage

MPEG1

Signal vido

Codeur Vido

Fig. 2.10: Compression MPEG-1.

Depuis 1992, le format MPEG ` volu passant de MPEG-1 (320240 pixels et ae e un dbit de 1.5 Mbits/s), ` MPEG-2 en 1996 (avec quatre rsolutions de 352 e a e 288 ` 1920 1152 pixels plus un ux de sous-titres et de langues multiplexs, a e celui-ci est lactuel format des DVD) ou encore ` MPEG-4 en 1999 (format a des vidos confrences et du DivX o` la vido est devenue une sc`ne oriente e e u e e e objet). Enn, le son est dcompos en trois couches, MP1, MP2 et MP3, suivant les e e taux de compression (et donc les pertes) dsirs. En pratique, les taux de e e compression par rapport ` lanalogique sont dun facteur 4 pour le MP1, de 6 a ` 8 pour le MP2, utilis par exemple dans les vidos CD et de 10 ` 12 pour le a e e a MP3. Nous donnons une ide de la transformation MP3 sur la gure 2.11 : le son e analogique est dabord ltr et modi par des transformes de Fourier ( avec e e e perte) et simultanment en cosinus (DCT ). e
Son Filtrage non audible DCT Controle distorsion Quantification non uniforme Controle taux info. suppl. Huffman

Formatage

FFT

Modle psycho accoustique

Fig. 2.11: Compression du son MP3.

Ensuite, la combinaison de ces deux transformations permet de faire une quantication et de contrler le rsultat obtenu pour ne conserver que la partie auo e dible principale. Au nal, une compression statistique est bien sr applique, u e pour rduire le chier au niveau de son entropie nale. e

Chapitre 3

Cryptologie
Il sagit maintenant dtendre le codage au cas o` on souhaite cacher une e u information. On doit supposer que les routes ne sont pas contrles, et que oe le message transmis est lisible par tous. Mais seul le destinataire doit pouvoir reconstituer le message dorigine. Les applications sont videmment tr`s e e nombreuses, quelles soient commerciales ou militaires. Littralement science du secret , la cryptologie comporte deux composantes e complmentaires que sont la cryptographie (qui consiste ` tudier et concevoir e ae des procds de chirement des informations) et la cryptanalyse (qui analyse e e ` des textes chirs pour retrouver les informations dissimules). A noter quil e e ne faut pas confondre la cryptographie avec la stganographie qui, elle, consiste e ` dissimuler lexistence mme de linformation secr`te (par lutilisation dune a e e encre sympathique par exemple). Nous allons systmatiser les approches vues e au chapitre 1, et pour cela, reprendre depuis le dbut les principes et protocoles e associs ` la cryptologie. e a

3.1
3.1.1

Principes gnraux et terminologie e e


Terminologie

Lobjectif fondamental de la cryptographie est de permettre ` deux personnes, a appeles traditionnellement Alice et Bob de communiquer ` travers un canal e a peu sr de telle sorte quun opposant, Oscar, qui a acc`s aux informations qui u e circulent sur le canal de communication, ne puisse pas comprendre ce qui est chang. Le canal peut tre par exemple une ligne tlphonique ou tout autre e e e ee rseau de communication. e Linformation quAlice souhaite transmettre ` Bob est appele texte clair. Il a e peut sagir dun texte en franais, dune donne numrique ou de nimporte c e e quoi dautre, de structure arbitraire. Le codage, cest-`-dire le processus de a

144

Chapitre 3 : Cryptologie

transformation dun message M de mani`re ` le rendre incomprhensible est e a e appel chirement. On gn`re ainsi un message chir C obtenu ` partir dune e e e e a fonction de chirement E par C = E(M ). Le processus de reconstruction du message clair ` partir du message chir est appel dchirement et utilise une a e e e fonction de dchirement D. Il est donc requis que : D(C) = D(E(M )) = M . e Donc E est injective (ou encore un chir poss`de au plus un message source e e associ) et D est surjective (un chir poss`de toujours un message source e e e associ). e Un algorithme cryptographique est un algorithme qui calcule la valeur des fonctions mathmatiques utilises pour le chirement et le dchirement. En e e e pratique, la scurit des messages est toujours assure par ce quon appelle des e e e clefs. Ce sont des param`tres des fonctions E et D, quon notera Ke et Kd , e qui peuvent prendre lune des valeurs dun ensemble appel espace des clefs. e On aboutit ainsi ` la relation fondamentale de la cryptographie (illustre dans a e la gure 3.1) : EKe (M ) = C DKd (C) = M (3.1)

Ke

E F

Coucou! Texte clair

zgk&$qw Texte chiffr

Kd

Fig. 3.1: Relation fondamentale de la cryptographie.

Le type de relation qui unit les clefs Ke et Kd utilises dans le chirement e et le dchirement permet de dnir deux grandes catgories de syst`mes e e e e cryptographiques : les syst`mes ` clef secr`te dune part : la clef est un secret partag entre e a e e metteur et destinataire ; ces syst`mes sont dcrits dans la section 3.3 ; e e e les syst`mes ` clef publique dautre part : aucune information secr`te nest e a e partage a priori par plusieurs protagonistes ; ces syst`mes sont dcrits dans e e e la section 3.4.

3.1 Principes gnraux et terminologie e e

145

3.1.2

` A quoi sert la cryptographie ?

Les communications changes entre Alice et Bob sont sujettes ` un certain e e a nombre de menaces (elles sont dveloppes un peu plus loin, voir la sece e tion 3.2.2). La cryptographie apporte un certain nombre de fonctionnalits e permettant de pallier ces menaces, rsumes dans le sigle CAIN, pour Cone e dentialit, Authentication, Intgrit, Non-rpudiation : e e e e 1. Condentialit des informations stockes ou manipules par le biais des e e e algorithmes de chirement. La condentialit consiste ` empcher lacc`s e a e e aux informations qui transitent ` ceux qui nen sont pas les destinataires. a Ils peuvent lire les messages crypts transmis sur le canal mais ne peuvent e pas les dchirer. e 2. Authentication des protagonistes dune communication (ou plus ge nralement de ressources). Il faut pouvoir dtecter une usurpation didene e tit. Par exemple, Alice peut sidentier en prouvant ` Bob quelle cone a na un secret S quelle est la seule ` pouvoir conna t a tre. 3. Intgrit des informations stockes ou manipules. Il sagit de vrier e e e e e que le message na pas subi daltrations lors de son parcours (voir e gure 3.2). Cette vrication ne se place pas au mme niveau que celle e e que nous verrons au chapitre 4. Elle concerne plutt une modication o volontaire et malicieuse e linformation provoque par un tiers lors du e transfert sur le canal. Ces modications sont en gnrales masques par e e e le tiers pour tre dicilement dtectables. Sur la gure 3.2, par exeme e ple, le contrle dintgrit sur un message M se fait grce ` une fonction o e e a a f telle quil doit tre tr`s dicile de trouver deux messages M1 et M2 e e ayant la mme image A par f . e
M M

ALICE

BOB

A = f(M) ?

Fig. 3.2: Principe dun algorithme de contrle dintgrit. o e e

4. Non-rpudiation des informations. Cest une protection des protagoe nistes dun change entre eux, et non plus contre un tiers. Si Alice envoie e un message M , elle ne doit pas pouvoir prtendre ensuite devant Bob e quelle ne la pas fait, ou alors quelle a envoy M et que le message a e

146

Chapitre 3 : Cryptologie t mal compris. On associe pour cela des algorithmes de type signature. ee Cet aspect sera plus dtaill ` la section 3.5. e ea

Jusqu` une priode rcente, le chirement ne tenait compte que de la cona e e dentialit, et seules les mthodes ` clefs secr`tes taient dveloppes. Les trente e e a e e e e derni`res annes ont vu merger ltude de nouvelles tendances : e e e e lauthentication devient aussi voire plus importante que le secret. Cest particuli`rement vrai dans le commerce lectronique : il faut pouvoir prouver e e que la commande vient bien de la personne ` qui la livraison est destine a e pour viter les contestations ; e une partie de la clef doit tre publique, an de ne pas provoquer une exe plosion du nombre de clefs ncessaires pour communiquer avec un grand e nombre de personnes. Un dernier crit`re est primordial, cest la rapidit des calculs de chirement et e e dchirement, et la taille des messages chirs. Les oprations portant sur de e e e grandes quantits de donnes, le crit`re decacit est tr`s important an de e e e e e pouvoir chirer ` la vole des ux audio ou vido par exemple en utilisant a e e au minimum la bande passante. Un syst`me de chirement idal devrait rsoudre tous ces probl`mes simule e e e tanment : utiliser des clefs publiques, assurer le secret, lauthentication et e lintgrit, le tout le plus rapidement possible. Malheureusement, il nexiste e e pas encore de technique unique qui satisfasse tous ces crit`res. Les syst`mes e e conventionnels comme le DES (voir la section 3.3.3) sont ecaces mais utilisent des clefs prives ; les syst`mes ` clef publique peuvent assurer lauthenticae e a tion mais sont inecaces pour le chirement de grandes quantits de donnes e e car trop coteux. Cette complmentarit a motiv le dveloppement de prou e e e e tocoles cryptographiques hybrides, ` linstar de PGP (Pretty Good Privacy) a (section 3.6.6), qui sont bass ` la fois sur des clefs publiques et des clefs e a secr`tes. e

3.2

Attaques sur les syst`mes cryptographiques e

Pour construire un bon syst`me cryptographique, il faut tudier les die e e rents types dattaques que peut employer Oscar pour comprendre les messages changs. Une bonne connaissance de tous les types de menaces qui p`sent sur e e e le secret permettra de le garantir.

3.2.1

Principes de Kerckhos

Longtemps, la scurit dun syst`me cryptographique a repos sur le secret qui e e e e entoure les algorithmes utiliss dans ce syst`me. On citera comme exemple le e e chirement de Csar (voir la section 1.1) ou, plus rcemment, le code ADFVGX e e

3.2 Attaques sur les syst`mes cryptographiques e

147

utilis durant la Premi`re Guerre Mondiale par les forces allemandes. La se e e curit est illusoire car tt ou tard, les dtails de lalgorithme seront connus et e o e sa faiblesse ventuelle pourra alors tre exploite. Dautre part, les syst`mes e e e e publics sont souvent meilleurs car ils font lobjet dattaques continuelles, et sont donc soumis ` rude slection. Un syst`me cryptographique dont les ma e e e canismes internes sont librement diuss et qui rsiste aux attaques continues e e de tous les cryptanalystes pourra tre considr comme sr. e ee u Le premier ` avoir formalis ce principe est Auguste Kerckhos en 1883 dans a e larticle La cryptographie militaire paru dans le Journal des Sciences Militaires . Son article comporte en ralit six principes, connus depuis sous e e le nom de principes de Kerckhos . On en rsumera ici que trois, les plus e utiles aujourdhui : 1. La scurit repose sur le secret de la clef et non sur le secret de lalgoe e rithme. Ce principe est notamment utilis au niveau des cartes bleues et e dans le chirement des images et du son sur Canal+ ; 2. Le dchirement sans la clef doit tre impossible (en temps raisonnable) ; e e 3. Trouver la clef ` partir du clair et du chir est impossible (en temps a e raisonnable). Ainsi, toute attaque doit tre envisage en supposant que lattaquant e e conna tous les dtails du cryptosyst`me. Bien que connues depuis longt e e temps, on dplore malgr tout un certain nombre dindustriels qui continuent e e dignorer (volontairement ou non) ces r`gles. Parmi les exemples rcents les e e plus mdiatiques, on citera le cas des algorithmes de chirement A5/0 et A5/1 e utiliss sur GSM et surtout le logiciel de protection anti-copie de DVD CSS e (Content Scrambling System) introduit en 1996 qui savra tre contourn en e e e quelques semaines en dpit du secret entour autour de lalgorithme de chife e frement utilis. e

3.2.2

Les grands types de menaces

Attaques passives/actives On distingue dj` les attaques passives, o` Oscar se contente dcouter les ea u e messages changs entre Alice et Bob, et les attaques actives, dans lesquelles e e Oscar peut modier le message au cours de sa transmission. Le premier type menace la condentialit des informations, tandis que le second peut entra e ner laltration des informations ou des usurpations didentit. e e Cryptanalyse et attaques sur un chirement On suppose gnralement quOscar conna le syst`me cryptographique utie e t e lis (selon les principes de Kerckhos). On distingue les niveaux dattaques e

148 possibles :

Chapitre 3 : Cryptologie

Texte chir connu. Oscar ne conna que le message chir C. e t e Texte clair connu. Oscar dispose ` la fois dun texte clair M et de sa cora respondance chire C. e Texte clair choisi. Oscar peut choisir un texte clair M et obtenir le texte chir associ C. e e Texte chir choisi. Oscar peut choisir un texte chir C et obtenir le texte e e dchir associ M . e e e Dans tous les cas, garantir la condentialit des communications entre Alice e et Bob signie quOscar ne peut pas : trouver M ` partir de E(M ) ; le syst`me de chirement doit tre rsistant a e e e aux attaques sur le message cod, e trouver la mthode de dchirement D ` partir dune squence {E(Mi )} e e a e pour une squence quelconque de messages clairs {M1 ,M2 ,M3 ,. . . }, le syse t`me doit tre sr vis-`-vis des attaques avec du texte en clair. e e u a Les fonctions de chirement sont paramtres par des clefs. Pour casser e e un algorithme de chirement, on cherche le plus souvent ` dcouvrir la valeur a e de ces clefs. On peut par exemple dire quune clef est bonne si son entropie (voir la dnition au chapitre 1) est leve car cela signie quelle ne contient e e e pas de motifs rpts qui donnent des informations sur sa forme. e ee Parall`lement aux niveaux dattaques dnis prcdemment, il existe un cere e e e tain nombre dalgorithmes gnraux quOscar va pouvoir utiliser : e e Attaque par force brute. Elle consiste en lnumration de toutes les vae e leurs possibles de la clef, cest-`-dire ` une exploration compl`te de lesa a e pace des clefs. La complexit de cette mthode appara immdiatement : e e t e une clef de 64 bits oblige ` essayer 264 combinaisons direntes. a e Pour une clef de 64 bits, il existe 1.844 1019 combinaisons direntes, e sur un ordinateur essayant un milliard de clefs par seconde il faudra 584 ans pour tre sr de trouver la clef1 . e u Attaque par squences connues. Ce type dattaque consiste ` supposer e a connue une certaine partie du message en clair (par exemple les enttes e standards dans le cas dun message transmis par courrier lectronique) e et de partir de cette connaissance pour essayer de deviner la clef. Cette attaque peut russir si lalgorithme de chirement laisse appara e tre les mmes rgularits que le message original. e e e Attaque par squences forces Cette mthode, base sur la prcdente, e e e e e e consiste ` faire chirer par la victime un bloc dont lattaquant conna a t le contenu.
1

ou un an avec 584 ordinateurs tournant en parall`le. e

3.3 Syst`me cryptographique ` clef secr`te e a e

149

Attaque par analyse direntielle Cette attaque utilise les faibles diffe e rences existant entre des messages successifs (par exemple des identiant (logs) de serveur) pour essayer de deviner la clef.

3.3
3.3.1

Syst`me cryptographique ` clef secr`te e a e


Principe du chirement ` clef secr`te a e

En reprenant les notations de lquation (3.1), le chirement ` clef secr`te ree a e pose sur le principe Ke = Kd = K. Autrement dit, Alice et Bob conviennent secr`tement dune clef secr`te K qui est donc utilise ` la fois pour le chiree e e a ment et le dchirement. Ils conviennent galement dun algorithme cryptoe e graphique de chirement et dchirement. Le principe gnral de lutilisation e e e dun algorithme de chirement ` clef secr`te est illustr dans la gure 3.3. a e e On utilise souvent lanalogie au core-fort pour caractriser les syst`mes e e cryptographiques ` clef secr`te : seul celui qui poss`de la clef (Alice et Bob a a e e priori) est capable douvrir le core. Oscar, qui ne la poss`de pas, devra forcer e le core sil veut accder ` son contenu. Evidemment, si Oscar parvient par un e a moyen quelconque ` obtenir cette clef, il pourra dchirer tous les messages a e changs entre Alice et Bob. e e
ALICE
Cl secrte K Connue seulement de Alice et bob Cl secrte K

BOB

Chiffrement

Dchiffrement

salut
Texte clair

rzh!k
Texte chiffr

Canal non scuris

rzh!k
Texte chiffr

salut
Texte clair

Fig. 3.3: Principe du chirement ` clef secr`te. a e

Notons quon emploie galement lexpression chirement symtrique pour e e mentionner un chirement ` clef secr`te (par opposition aux chirements asya e mtriques). De tels syst`mes ont lavantage principal dtre ecaces en terme e e e de temps de calcul, tant pour le chirement que pour le dchirement. En e revanche, la faiblesse de ce syst`me vient du secret absolu qui doit entourer e la clef K. Il sagit historiquement du premier type de chirement utilis. Plue sieurs exemples de ce type (le chirement de Csar et le chirement parfait e de Vernam) ont t dvelopps au chapitre 1. Voyons dautres exemples de ce ee e e type sous la forme dun exercice.

150

Chapitre 3 : Cryptologie

Exercice 3.1 (Chirement ane). On a vu en page 19 le cas du chirement de Csar dni sur un alphabet A de n caract`res. Il sagit dun cas particulier e e e du chirement ane. Etant donne une bijection entre A et Zn , et notant e Z lensemble des inversibles de Zn , on peut crire la fonction de chirement e n ane dun message M Zn ` partir dune clef K = (a, b) Z Zn : a n E(a,b) : Zn Zn x E(a,b) (x) = ax + b mod n | et Z . 1. Expliciter |Z26 26 2. Toujours pour n = 26, et en utilisant la clef K = (15, 7) (quon justiera), donner le chirement de x {0, 1, 2}. 3. Expliciter la fonction de dchirement ane D(a,b) . e 4. Si le texte chir par le chirement ane semble incomprhensible, il ne e e modie pas pour autant la frquence dapparition des direntes lettres e e qui composent le texte. La rpartition statistique des lettres dans un texte e crit en franais, ainsi que la bijection lettre par lettre qui sera utilise e c e dans la suite, est fournie dans le tableau 3.1.
A0 B1 C2 D3 E4 F5 G6 H7 I8 8.11 % 0.81 % 3.38 % 4.28 % 17.69 % 1.13 % 1.19 % 0.74 % 7.24 % J9 K 10 L 11 M 12 N 13 O 14 P 15 Q 16 R 17 0.18 0.02 5.99 2.29 7.68 5.20 2.92 0.83 6.43 % % % % % % % % % S 18 T 19 U 20 V 21 W 22 X 23 Y 24 Z 25 8.87 7.44 5.23 1.28 0.06 0.53 0.26 0.12 % % % % % % % %

Tab. 3.1: Frquence dapparition des lettres en franais. e c

Alice envoie ` Bob le message texte suivant o` par convention, les caraca u t`res qui ne sont pas dans A ne sont pas chirs. Vous avez intercept e e e ce message :
mcahbo isbfock, ekb kp cbfbo vobixo, hopcah op esp foi kp rbsmcuo. mcahbo bopcbl, vcb jslokb cjjoixo jka haph c vok vboe io jcpucuo : "xo ! fspdskb, mspeaokb lk isbfock, yko nske ohoe dsja ! yko nske mo eomfjoz fock ! ecpe mophab, ea nshbo bcmcuo eo bcvvsbho ` nshbo vjkmcuo, a nske ohoe jo vxopat loe xshoe lo ioe fsae."

On compte les occurrences de chaque lettre de lalphabet dans le texte chir. On obtient ainsi le tableau 3.2. e

3.3 Syst`me cryptographique ` clef secr`te e a e


Dans le texte chir e o 14 18.11% b1 9.05% c2 7.82% e4 . . . 7.41% . . . Rfrence (texte franais) ee c e4 17.69% s 18 8.87% a0 8.11% . . . . . .

151

Tab. 3.2: Analyse de frquence du texte chir et comparaison aux rfrences. e e ee

` (a) A partir de ce rsultat, dduire la clef utilise par Alice. e e e (b) En dduire la clef de dchirement et le message clair. e e Solution page 296.

3.3.2

Classes de chirements symtriques e

Comme on la vu au chapitre 1, sections 1.2 et 1.3, on distingue deux types de codes qui se traduisent en autant de types de chirements. Les chirement symtriques par ot e Ceux-ci eectuent un traitement ` la vole pour se rapprocher du mod`le de a e e Vernam (prsent section 1.2.1). Leur utilisation repose sur un gnrateur de e e e e nombres pseudo-alatoires (1.3.6) et un mcanisme de substitution bit-`-bit e e a rapide comme lopration ou exclusif (XOR ) utilise dans Vernam. Ce e e principe est illustr dans la gure 3.4. e
K Gnrateur de nombres pseudoalatoires

Substitution bitbit

Fig. 3.4: Chirement symtrique par ot (Stream cypher). e

On peut tout de suite remarquer en consquence des principes de Kerckhos e que la scurit dun algorithme de chirement symtrique par ot repose sur e e e la qualit du gnrateur de clef. e e e Parmi les exemples les plus connus (pas forcment les plus srs) de chirement e u par ot, on citera LFSR (voir le fonctionnement du gnrateur page 71), RC4 e e

152

Chapitre 3 : Cryptologie

(notamment utilis dans le protocole SSL pour protger les communications e e Internet ou encore dans le protocole WEP utilis pour scuriser les connexions e e WiFi), Py, E0 (utilis dans les communications par Bluetooth) et A5/3 (utilis e e dans les communication par GSM). Les chirements symtriques par blocs e Ceux-ci dcoupent le message M de n bits en s blocs de r = n bits (on ajuste e s initialement la taille du message en ajoutant des caract`res sans signication e an que sa taille soit un multiple de r). Un algorithme de chirement par blocs op`re sur des blocs de r bits, pour produire en gnral un bloc de r bits an e e e dassurer la bijectivit du code. La combinaison avec un mode de chirement e (ECB, CBC, CFB, OFB ou CTR - voir la section 1.3.1) dcrit compl`tement e e le chirement du message M comme illustr dans la gure 3.5. e
n bits r bits

M M1 M2

Ms

r bits

Fonction de chiffrement + mode de chiffrement

C1
r bits

C2

Cs

Fig. 3.5: Chirement symtrique par bloc (Bloc cypher). e

Les syst`mes classiques comme les DES et AES dcrits plus loin utilisent le e e chirement par blocs. Chirement inconditionnellement s r u On rappelle quun chirement est dit inconditionnellement sr ou parfait si la u connaissance du message chir napporte aucune information sur le message e clair. Ainsi, la seule attaque possible sera la recherche exhaustive de la clef ` secr`te. A lheure actuelle, le seul chirement prouv inconditionnellement sr e e u est le chirement de Vernam, qui utilise une clef aussi longue que le texte clair (voir la section 1.2.1), sous rserve que la clef secr`te soit totalement e e alatoire et utilise une seule fois. En particulier, tous les autres syst`mes sont e e e thoriquement cassables. e

3.3 Syst`me cryptographique ` clef secr`te e a e

153

On consid`re donc aujourdhui des algorithmes de chirement pratiquement e srs dans lesquels un message chir ne permet de retrouver ni la clef secr`te u e e ni le message clair en un temps humainement raisonnable, ce qui permet dutiliser des clefs de plus petite taille. Nous allons maintenant prsenter les deux e standards les plus importants pour les chirements symtriques par blocs. e

3.3.3

Le syst`me DES (Data Encryption Standard) e

Prsentation exhaustive du syst`me DES e e Ce syst`me de chirement ` clef secr`te est le plus connu et fut propos comme e a e e standard de chirement par le NIST en 1977. Il fonctionne par blocs de texte clair de 64 bits en utilisant une clef K de 56 bits2 . Il permet dobtenir des blocs de texte chir de 64 bits. Lalgorithme se droule en trois tapes : e e e 1. Soit x un bloc de texte clair de 64 bits. On lui applique une permutation initiale IP xe pour obtenir une cha x0 . On a donc : x0 = IP (x) = e ne L0 R0 o` L0 contient les 32 premiers bits de x0 et R0 les 32 restants. u 2. On eectue 16 itrations (quon appelle e tours de chirement ou encore rondes par analogie sonore avec le terme anglais round) dune certaine fonction f de pendant de la clef K. La fonction f sera dtaille plus loin. On calcule Li Ri , 1 e e i 16 suivant la r`gle : e Li = Ri1 Ri = Li1 f (Ri1 , Ki ) (3.2)

L i1

R i1

Ki

Li

Ri

Fig. 3.6: Un tour de DES. La gure 3.6 prsente un tour de chiree ment. La fonction f est une fonction ` a deux variables, lune de 32 bits (correspondant ` Ri1 ` la ieme itration) a a e et lautre de 48 bits (il sagit de Ki ). Les lments Ki sont obtenus par ce ee quon appelle la diversication des bits de la clef initiale K, dveloppe un e e peu plus bas.

3. La permutation inverse IP 1 est applique ` R16 L16 pour obtenir un bloc e a de texte chir y = IP 1 (R16 L16 ) (` noter linversion de L16 et de R16 ). e a Le mme algorithme, avec la mme clef mais en ralisant les tours de chiree e e ment dans lordre inverse, est utilis pour dchirer. e e La sret du DES vient de la fonction f . Cette fonction prend deux arguments : u e
2 La clef compte en fait 64 bits mais parmi ceux-ci 1 bit sur 8 est utilis comme contrle e o de parit, voir section 4.1.2. e

154

Chapitre 3 : Cryptologie

une cha A de 32 bits (la partie droite du bloc ` chirer) ; ne a une cha J de 48 bits (une clef diversie). ne e Le calcul de f (A, J) se droule en plusieurs tapes, illustres dans la gure 3.7 : e e e 1. A est augmente en une cha de 48 bits par une fonction dexpansion E. e ne 2. B = E(A) J est calcul et dcoup en 8 sous-cha e e e nes conscutives de 6 e bits chacune : B = B1 .B2 . . . B8 . Chacune des sous-cha nes Bi est ensuite passe en entre ` une bo de substitution Si (les fameuses bo e e a te tes-S ou SBox) pour fournir un bloc de 4 bits Ci en sortie. 3. La cha de 32 bits C = C1 .C2 . . . C8 est ensuite rordonne suivant une ne e e permutation xe P . Le rsultat P (C) dnit f (A, J). e e e

A
32 bits 48 bits

fonction dexpansion

E(A)
48 bits

6 bits

B1 S1

B2 S2

B3 S3

B4 S4

B5 S5

B6 S6

B7 S7

B8 S8

C1 C2 C3 C4 C5 C6 C7 C8
4 bits

P
32 bits

f (A, J)

Fig. 3.7: La fonction f de DES.

Exercice 3.2 (Dchirement du DES). Montrer quil nest pas ncessaire e e dinverser f pour inverser un tour de DES et en dduire lalgorithme de de e chirement du syst`me DES. e Solution page 297.

3.3 Syst`me cryptographique ` clef secr`te e a e Diversication de la clef dans DES

155

On a vu que le second argument de la fonction f pour le tour i est une clef Ki extraite de la clef initiale K. Ce paragraphe dtaille lalgorithme utilis pour e e obtenir les 16 sous-clefs {Ki }1 i 16 . 1. La clef K de 64 bits est rordonne dans une permutation initiale PCe e 1 qui supprime les bits de parits (ceux situs en position 8,16,. . . ,64). e e On note PC-1(K) = C0 .D0 , o` C0 est compos des 28 premiers bits de u e PC-1(K) et D0 des 28 restants. 2. Ci , Di et Ki (1 vante : i 16) sont calculs rcursivement de la faon suie e c Ci = LSi (Ci1 ) D = LSi (Di1 ) i Ki = PC-2(Ci .Di )

(3.3)

LSi est une rotation circulaire vers la gauche dune ou deux positions selon la valeur de i et PC-2 une autre permutation des bits. Toutes ces tapes sont illustres dans la gure 3.8. e e
K
1 8 16 24 32 40 48 56 64 bits

suppression des bits de parit bits de parit

PC1
28 bits 28 bits

C0 LS 1 C1 LS 2

D0 LS 1 D1 LS 2 PC2
48 bits

K1

LS 16 C 16

LS 16 D 16 PC2
48 bits

K 16

Fig. 3.8: La diversication de clef dans DES.

156 Avantages et applications de DES

Chapitre 3 : Cryptologie

Apr`s 16 tours, le rsultat de DES est statistiquement plat , cest-`-dire e e a que les caractristiques gnrales du message source (la frquence des carace e e e t`res, le nombre despaces, . . . ) seront indtectables. De plus il dispose dune e e caractristique tr`s importante pour viter les attaques par analyse direne e e e tielle : une lg`re modication de la clef ou du texte ` chirer provoque des e e a changements importants dans le texte chir. e Le gros avantage du DES est quil repose, tant pour le chirement que pour le dchirement, sur des oprations facilement implmentables au niveau mae e e triel, il est donc possible dobtenir des vitesses de chirement tr`s leves, e e e e de lordre de 40Mo/s il y a une dizaine dannes, avec du matriel spcique. e e e Aujourdhui, avec une puce spcique bas de gamme (de lordre de 60 euros), e on arrive ` des dbits de lordre de 190 Mo/s. a e Le syst`me DES est actuellement utilis pour chirer les paiements par cartes e e de crdit (par exemple UEPS pour Universal Electronic Payment System), des e protocoles dauthentication dans les rseaux tels que Kerberos et la messagerie e lectronique avec par exemple PEM pour Privacy-Enhanced Mail. Voir le livre e de Bruce Schneier (en bibliographie) pour plus de dtails. e Exercice 3.3 (Condentialit de D.E.S). e 1. Montrer quun chirement parfait (le chir ne donne aucune informae tion sur le message, ou encore, en terme dentropie, H(M |C) = H(M ) ; voir la section 1.2.4) vrie |K| |M |. e 2. Discuter de la condentialit parfaite du DES pour un bloc. e Solution page 297. Cryptanalyse de DES D`s sa parution, de nombreux eorts de recherche furent investis dans la crype tanalyse de DES, dabord sur un nombre rduit de tours puis sur la version e compl`te. Des avances signicatives (notamment dans les techniques utilises) e e e apparurent au dbut des annes 90. On peut aujourdhui distinguer quatre me e e thodes de cryptanalyse de DES : Recherche exhaustive. Cette mthode peut videmment tre applique quel e e e e que soit le syst`me. e Prcalcul exhaustif. Il sagit de stocker le rsultat du chirement de DES e e sur un texte choisi pour toutes les clefs K possibles. Ainsi, en obtenant un chir de ce texte, on peut facilement remonter ` la clef utilise (en cot e a e u constant). Cela suppose quon soit capable de stocker 256 blocs de 64 bits, ce qui est aujourdhui possible avec les capacits actuelles des disques durs. e

3.3 Syst`me cryptographique ` clef secr`te e a e

157

Cryptanalyse direntielle. Cette attaque marqua une avance signie e cative dans la cryptanalyse de DES. Il sagit dtudier des dirences de e e chirement entre des textes similaires pour slectionner un sous-ensemble e de clefs probables. Cryptanalyse linaire. Ce fut une autre tape majeure dans la cryptae e nalyse gnrale des chirements par blocs. Il sagit dutiliser des relations e e linaires sur certains bits du message chir et du message clair pour intere e poler des bits de la clef. Le tableau 3.3 rsume les complexits des attaques sur DES. e e Mthode dattaque e Recherche exhaustive Prcalcul exhaustif e Crypta. linaire e Crypta. direntielle e Texte connu 1 247 puis 255 236 247 Texte choisi 1 Stockage Calculs 255 1 tableau 47 puis 236 2 247

256 Textes Textes

Tab. 3.3: Complexit des cryptanalyses sur DES. e

Avec les progr`s raliss dans le domaine de la cryptanalyse et la progression e e e de la puissance de calcul des processeurs, une tude fut demande en 1996 e e pour estimer le cot et les performances des attaques sur DES pour un budget u donn. Le rsultat de cette tude est fourni dans le tableau 3.4. e e e Attaquant Hacker PME Grande Entreprise Multinationale Gouvernement Budget 300 e 7500 e 225 Ke 7,5 Me 225 Me Outil Logiciel Circuit Circuit ASIC ASIC ASIC Clef 56 bits 38 ans 18 mois 19 j. 3 h 6 min 12 s

Tab. 3.4: Cot et performance des attaques sur DES en 1996. u

Aujourdhui, le DES avec sa longueur de clef xe de 56 bits nest plus considr ee comme pratiquement sr. Un petit calcul simple peut en donner une ide : il u e y a 256 clefs possibles cest-`-dire moins de 1017 = 108 109 ; en supposant que a lon dispose de 1000 PC tournant ` 1GHz = 109 Hz, il faut 105 secondes, soit a 30 heures pour donc eectuer 1000 109 105 = 1017 oprations ; le cassage e par force brute nest donc pas impossible en un temps raisonnable ! Pour amliorer la scurit de DES, une premi`re solution consistait ` come e e e a biner deux clefs. On obtient ainsi le syst`me double DES pour lequel C = e E2 (E1 (M )) et M = D1 (D2 (C)). Il apparut rapidement que le cassage eectif

158

Chapitre 3 : Cryptologie

de ce syst`me ntait quenviron 100 fois plus dicile que le cassage de DES e e (et non 256 fois plus dicile comme on aurait pu sy attendre en prenant deux clefs). En eet, lattaque Meet-in-the-middle utilise un tri rapide pour casser le double DES ` peine plus dicilement que le simple DES : a 1. Eectuer les 256 cryptages possibles Xi dun message M . 2. Trier ces Xi avec un tri rapide en O(n log(n)) tapes, soit approximatie 56 oprations. vement 56 2 e 3. Eectuer tous les dcryptages Yj possibles de C par une seule clef j : , e 1 Yj = DESj (C) ; comparer au fur et ` mesure les Yj avec les Xi (ces a derniers tant tris ceci ne ncessite quau pire log(n) tapes par Yj en e e e e procdant par dichotomie). e 4. Quand Xi0 = Yj0 , les clefs recherches sont i0 et j0 . e La taille quivalente de clef dun double DES est donc aux alentours de 64 bits e seulement. On proposa donc lutilisation de triple DES avec cette fois-ci une clef eective de 112 bits mais le temps de calcul est tripl. Cela peut tre ralis avec e e e e 3 clefs et un cryptage C = E3 (E2 (E1 (M ))), ou DES EEE ; dans ce cas lattaque prcdente donne une clef quivalente plutt aux alentours de 120 e e e o bits. On prf`re donc souvent utiliser seulement deux clefs et un cryptage ee C = E1 (D2 (E1 (M ))), ou DESEDE, qui donne une scurit de 112 bits mais e e permet dtre compatible avec le cryptage DES simple en prenant K1 = K2 . e Finalement, un nouveau standard plus rapide a pris sa place depuis 2000. Il sagit de lAES, Advanced Encryption Standard.

3.3.4

Le nouveau standard AES (Rijndael)

Rijndael est le chirement ` clef secr`te qui a t retenu par le NIST (National a e ee Institute of Standards and Technology) comme le nouveau standard amricain e de chirement (AES : Advanced Encryption Standard).Ce syst`me a t choisi e ee apr`s une comptition organise par le NIST. Des cinq nalistes (Rijndael, e e e Serpent, Twosh, RC6, Mars), cest Rijndael qui sest avr le plus rsistant ee e et est donc devenu le nouveau standard amricain, remplaant le DES. Cest e c un code par blocs encodant 128 bits avec des clefs de 128, 192 ou 256 bits. Il est important de noter que Rijndael tait parmi les propositions les plus rapides, e comme on peut le voir dans la table 3.5 issue du rapport NESSIE-D21. Toutes les oprations dAES sont des oprations sur des octets considrs e e ee 8 lments, F comme des lments du corps ni ` 2 e e ee a 256 . On rappelle que pour p premier, Fpm est isomorphe ` Fp [X]/g(X), o` g(X) est un polynme irrduca u o e tible sur Fp [X] de degr m (voir la section 1.3.4). e

3.3 Syst`me cryptographique ` clef secr`te e a e


Algorithme IDEA Khazad Misty1 Safer++ CS-Cipher Hierocrypt-L1 Nush DES 3-DES kasumi RC5 Skipjack Camellia RC6 Safer++ Anubis Grand cru Hierocrypt-3 Nush Q SC2000 Rijndael Serpent Mars Twosh Taille de clef 128 128 128 128 128 128 128 56 168 128 64 80 256 256 256 256 128 260 256 256 256 256 256 256 256 Cycles/octet Cryptage Dcryptage e 56 56 40 41 47 47 152 168 156 140 34 34 48 42 59 59 154 155 75 74 19 19 114 120 47 47 18 17 69 89 48 48 1250 1518 69 86 23 20 60 123 43 46 34 35 68 80 31 30 29 25

159

Tab. 3.5: Vitesses compares de quelques mthodes de chirements par blocs. e e

Pour AES, p = 2 et m = 8 et g(X) = X 8 + X 4 + X 3 + X + 1 qui est bien un polynme irrductible sur F2 [X]. Ainsi, loctet b7 b6 b5 b4 b3 b2 b1 b0 sera vu o e comme le polynme b7 X 7 + b6 X 6 + b5 X 5 + b4 X 4 + b3 X 3 + b2 X 2 + b1 X + b0 . o Par extension, le polynme g(X) scrira 0x11B, qui est loctet correspondant o e en notation hexadcimale. e Laddition de deux polynmes est laddition terme ` terme des coecients o a (laddition dans F2 = Z/2Z ) et correspond ` lopration ou exclusif (XOR a e ) sur les octets. La multiplication est une multiplication de polynmes modulo g(X). o Exercice 3.4 (Oprations sur F256 ). e 1. On consid`re les octets a = 0x57 et b = 0x83 (en notation hxadcimale, e e e ou encore nots a = [57] et b = [83] si il ny a pas dambigu e) vus comme e t des lments de F256 . ee

160 (a) Calculer a + b (b) Calculer a b

Chapitre 3 : Cryptologie

2. On utilise cette fois une notation polynomiale. Soit a(X) F256 . (a) Donner un algorithme permettant de calculer llment de F256 coree respondant ` X.a(X). a (b) En dduire un algorithme calculant llment de F256 X i a(X). e ee 3. Soit w(X) un gnrateur de F256 . Dans ce cas, tout lment non nul de e e ee F256 se reprsente de mani`re unique par w(X)i mod g(X), 0 e e i < 255. En dduire un moyen ecace deectuer la multiplication de deux e lments dans F256 . Remarque : Pour AES, w(X) = X + 1 = 0x03. ee Solution page 298. Des blocs doctets sont organiss sous forme matricielle, selon un mod`le illuse e tr dans la gure 3.9. Cette matrice aura ncessairement 4 lignes et un nombre e e de colonnes fonction de la taille choisie du bloc. On note Nb le nombre de colonnes dans une matrice pour crire un bloc doctets, et Nk ce mme nombre e e pour une clef.
128 bits = 16 octets

a0
8 bits

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

a11

a12

a13

a14

a15

Flux de donnes

Reprsentation matricielle

a0
4 lignes

a4 a5 a6 a7

a8 a9 a10 a11

a12 a13 a14 a15

a1 a2 a3

N colonnes

Fig. 3.9: Reprsentation matricielle dun bloc de 16 octets. e

Par exemple, pour les ux dentre/sortie qui, dans AES, correspondent ` e a des squences de 16 octets, on obtiendra des matrices de 4 lignes et Nb = 4 e colonnes. De mme : e la matrice associe ` une clef de 128 bits aura 4 lignes et Nk = 4 colonnes ; e a avec une clef de 192 bits, la matrice aura 4 lignes et Nk = 6 colonnes ; pour une clef de 256 bits, la matrice aura 4 lignes et Nk = 8 colonnes ;

3.3 Syst`me cryptographique ` clef secr`te e a e

161

Pour tre tout ` fait exact, lalgorithme AES nest pas stricto sensu celui e a de Rijndael. Ce dernier supporte des tailles de blocs plus nombreux quAES. AES xe la taille de blocs ` 128 bits (Nb = 4), alors que lalgorithme de a Rijndael utilise des clefs de 128, 192 ou 256 bits. Principe de lalgorithme Comme DES, AES excute une squence de tours qui seront dtaills dans la e e e e suite. On note Nr le nombre de tours qui doivent tre eectus. Ce nombre e e dpend des valeurs de Nb et de Nk . Les direntes congurations possibles e e sont dtailles dans le tableau 3.6. e e AES-128 AES-192 AES-256 Nk 4 6 8 Nb 4 4 4 Nr 10 12 14

Tab. 3.6: Dtail des congurations possibles. e

Comme on la vu prcdemment, AES op`re sur des blocs vus comme une e e e matrice 4Nb dlments de F256 . Le chirement AES consiste en une addition ee initiale de clef(AddRoundKey), suivie par Nr 1 tours, chacun divis en quatre e tapes : e 1. SubBytes est une substitution non-linaire lors de laquelle chaque octet e est remplac par un autre octet choisi dans une table particuli`re (une e e Bo te-S ). 2. ShiftRows est une tape de transposition o` chaque lment de la mae u ee trice est dcal cycliquement ` gauche dun certain nombre de colonnes. e e a 3. MixColumns eectue un produit matriciel en oprant sur chaque colonne e de la matrice, vue comme un vecteur. 4. AddRoundKey combine par addition chaque octet avec loctet correspondant dans une clef de tour obtenue par diversication de la clef de chiffrement. Enn, un tour nal FinalRound est appliqu (il correspond ` un tour dans e a lequel ltape MixColumns est omise). La clef de tour pour ltape i sera noe e te RoundKeys[i], et RoundKeys[0] rfrencera un des param`tres de lade ee e dition initiale de clef. La drivation de la clef de chirement K dans le tae bleau RoundKeys[] est note KeyExpansion et sera dtaille plus loin. Lalgoe e e rithme 25 dcrit le chirement AES. e

162

Chapitre 3 : Cryptologie

Algorithme 25 Chirement AES. Entres Une matrice State correspondant au bloc clair, une clef K e Sorties Une matrice State correspondant au bloc chir e KeyExpansion(K, RoundKeys) AddRoundKey(State, RoundKeys[0]) ; // Addition initiale Pour r = 1 ` Nr 1 Faire a SubBytes(State) ; ShiftRows(State) ; MixColumns(State) ; AddRoundKey(State, RoundKeys[r]) ; Fin Pour // Tour nal SubBytes(State) ; ShiftRows(State) ; AddRoundKey(State, RoundKeys[Nr ]) ; Etape SubBytes(State). Cette tape correspond ` la seule transformation e a non-linaire de lalgorithme. Dans cette tape, chaque lment de la matrice e e ee State est permut selon une table de substitution inversible note SBox. La e e gure 3.10 illustre par exemple la transformation de llment a2,2 en llment ee ee b2,2 = S[a2,2 ].
a 0,0 a 0,1 a 0,2 a 0,3 a 1,0 a 1,1 a 1,2 a 1,3 a 2,0 a 2,1 a 2,2 a 2,3 a 2,2 a 3,0 a 3,1 a 3,2 a 3,3 S SubBytes b0,0 b0,1 b0,2 b0,3 b1,0 b1,1 b1,2 b1,3 b2,0 b2,1 b2,2 b2,3 b2,2 b3,0 b3,1 b3,2 b3,3

Fig. 3.10: Etape SubBytes dans AES.

Remarque : la table SBox drive de la fonction inverse t : a a1 sur e F256 . Cette fonction est connue pour ses bonnes proprits de non-linarit (0 ee e e nayant pas dinverse, il est envoy sur 0 pour cette tape). An dviter des e e e attaques bases sur de simples proprits algbriques, la bo e ee e te-S est construite en combinant cette fonction inverse avec une transformation ane inversible f . On a donc : SBox[a] = f (t(a)) , pour tout a F256 Les concepteurs ont galement fait en sorte que cette bo e te-S nadmette pas

3.3 Syst`me cryptographique ` clef secr`te e a e de point xe, ni de point xe oppos : e SBox[a] + a = 00, SBox[a] + a = FF, pour tout a F256 pour tout a F256 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 a7 a6 1 1 1 a5 1 1 a4 0 + 0 a3 0 0 a2 0 0 a1 1 a0 1 1

163

Enn, la fonction ane f est dnie par : e b7 1 0 0 0 b6 1 1 0 0 b5 1 1 1 0 b 1 1 1 1 b = f (a) 4 = b3 1 1 1 1 b2 0 1 1 1 b1 0 0 1 1 b0 0 0 0 1

Exercice 3.5 (InvSubBytes). Dtailler lopration inverse de cette tape. e e e Solution page 299. Exercice 3.6 (Oprations autour de SubBytes). On pose a = 0x11 F256 e (notation hexadcimale) avec les conventions de reprsentation utilises dans e e e AES. Calculer SBox[a]. Solution page 299. Etape ShiftRows(State). Cette tape op`re sur les lignes de la matrice e e State et eectue pour chaque lment dune ligne un dcalage cyclique de ee e n lments vers la gauche. Le nombre doctets dcals dpend de la ligne ee e e e considre. La ligne i est dcale de Ci lments, si bien que llment en ee e e ee ee position j de la ligne i est dplac en position (j Ci ) mod Nb . Les valeurs e e de Ci dpendent de la valeur de Nb et sont dtailles dans la table 3.7. e e e
Nb 4 5 6 7 8 C0 0 0 0 0 0 C1 1 1 1 1 1 C2 2 2 2 2 3 C3 3 3 3 4 4

Tab. 3.7: ShiftRows : dcalage des lignes en fonction de Nb dans lalgorithme Rijne dael.

Evidemment, cette table nest fournie qu` titre indicatif dans la mesure o` a u AES xe la taille de bloc ` Nb = 4. Ltape ShiftRows est illustre dans la a e e gure 3.11. Exercice 3.7 (InvShiftrows). Dtailler lopration inverse de cette tape. e e e Solution page 300.

164

Chapitre 3 : Cryptologie
Dcalage:

a e i m

b f j n

c g k o

d h l p ShiftRows

0 1 2 3

a f k p

b g l m

c h i n

d e j o

Fig. 3.11: Opration ShiftRows dans AES. e

Etape MixColumns(State). La transformation MixColumns op`re sur les e colonnes c de la matrice State en les considrant chacune comme un polye nme a(X) de degr 3 ` coecients dans F256 . Elle consiste ` eectuer pour o e a a chaque colonne une multiplication par c(X) = 03X 3 + X 2 + X + 02, modulo le polynme X 4 + 1 (les coecients des polynmes sont des lments de F256 o o ee nots comme des nombres hexadcimaux). Dans MixColumns, on ralise donc e e e 3 + X 2 + X + 02) a(X) mod (X 4 + 1) Matriciellement, lopration : (03X e cette opration (illustre dans la gure 3.12) scrit : e e e b0 02 b1 01 4 mod (X + 1) = b2 01 b3 03 03 02 01 01 01 03 02 01 01 a0 01 a1 03 a2 02 a3

b(X) = c(X) a(X)

a a 0,0 a 0,1 a 0,2 a 0,3 0,1 a a 1,0 a 1,1 a 1,2 a 1,3 1,1 a 2,0 a 2,1 a 2,2 a 2,3 a
2,1 3,1

b b0,0 b0,1 b0,2 b0,3 0,1 MixColumns b b1,0 b1,1 b1,2 b1,3 1,1 b2,0 b2,1 b2,2 b2,3 b
2,1 3,1

a 3,0 a 3,1 a 3,2 a 3,3 a

b3,0 b3,1 b3,2 b3,3 b

02 01 01 03

03 02 01 01

01 03 02 01

01 01 03 02

Fig. 3.12: Opration MixColumns dans AES. e

En outre, comme c(X) et X 4 + 1 sont premiers entre eux, c(X) est bien inversible modulo X 4 + 1 et la transformation MixColumn est galement inversible, e ce qui permet de dcrypter. e

3.3 Syst`me cryptographique ` clef secr`te e a e

165

Exercice 3.8 (Retour sur F256 et InvMixColumns). On reprend la repre sentation des lments de F256 utilise dans AES. Les lments sont crits sous ee e ee e forme de deux chires hexadcimaux encadrs. Par exemple, X 7 +X 6 +X 2 +1 e e scrit en binaire 11000101 et [C5] en hexadcimal. e e 1. Calculer [0B] + [A2], [03], [F D] [F 0], [F D] + [F 0], [23] + [45]. 2. Quel est le rsultat de la division euclidienne de g(X) par X + 1 sur e F2 [X] ? 3. En dduire linverse de [03] dans F256 . e 4. Donner un algorithme de multiplication par X en binaire dans F256 . En dduire les valeurs binaires de X 8 , X 9 , X 10 , X 11 , X 12 , X 13 et X 14 . e Quest-ce que la multiplication par [02] ? 5. Que vaut (a+b)2 modulo 2 ? En dduire lexpression de (a1 +a2 +. . .+an )2 e modulo 2. 6. Dduire des deux questions prcdentes la valeur de [F 6]2 . e e e 7. Dans lAES, ltape MixColumn est ralise par la multiplication dune e e e colonne par le polynme c(Y ) = [03]Y 3 + Y 2 + Y + [02], le tout modulo o le polynme M = Y 4 + [01]. Calculer le polynme Q tel que M = cQ + R o o avec R(Y ) = [A4]Y 2 + [A5]Y + [A5]. 8. En supposant connus deux polynmes U et V tels que U c + V R = 1, o donner une relation de Bzout entre c et M . e 9. Application : U = [A0]Y + [F E] et V = [1D]Y 2 + [1C]Y + [1D] sont donns, expliciter la fonction rciproque de MixColumn dans lAES. Cette e e fonction sera note InvMixColumns dans la suite. On pourra se servir des e rsultats suivants : [F 6][1D] = [0B], [F 6][1C] = [F D], [52][1D] = [F 0], e [52][1C] = [A2], [52][F 6] = [C7]. Solution page 300. Etape AddRoundKey(State,Ki). Il sagit dune simple addition des deux matrices State et Ki. Laddition oprant sur des lments de F256 , cest une e ee opration ou exclusif bit ` bit sur les octets. e a Exercice 3.9 (InvAddRoundKey). Dtailler lopration inverse de cette tape. e e e Solution page 300. La diversication de la clef dans AES Cette tape, note KeyExpansion, permet de diversier la clef de chirement e e K (de 4Nk octets) dans une clef tendue W de 4Nb (Nr + 1) octets. On disposera e ainsi de Nr + 1 clefs de tours (chacune de 4N b octets - voir gure 3.13).

166

Chapitre 3 : Cryptologie
Nb

W
Nk

W[0] W[1]

KeyExpansion K
W[Nr]

Fig. 3.13: Opration KeyExpansion dans AES. e

Les tableaux K et W peuvent tre vus comme une succession de colonnes, chae cune constitue de 4 octets, comme lillustre la gure 3.14. Dans la suite, on e e notera c[i] (respectivement k[i]) la (i + 1)`me colonne de W (respectivement de K).
(Nr+1)*Nb colonnes

W
W[0] W[Nr] c[6] : 7me colonne de W

Fig. 3.14: Vision de la clef tendue W comme une succession de colonnes. e

Lalgorithme utilis pour la diversication de clef di`re lg`rement selon e e e e que Nk 6 ou Nk > 6. Dans tous les cas, les Nk premi`res colonnes de K e sont recopies sans modications aux Nk premi`res colonnes de W. Les coe e lonnes suivantes sont dnies rcursivement ` partir des colonnes prcdentes. e e a e e KeyExpansion utilise notamment les deux fonctions et le tableau de constantes suivants : SubWord qui est une fonction prenant en entre un mot de 4 octets et ape plique la bo te-S SBox sur chacun des octets. La fonction RotWord qui prend en entre un mot de 4 octets a = [a0 , a1 , a2 , e a3 ] et eectue une permutation circulaire de faon ` renvoyer le mot [a1 , a2 , c a a3 , a0 ].

3.3 Syst`me cryptographique ` clef secr`te e a e

167

Le tableau de constantes de tours Rcon[i], indpendant de Nk , qui est dni e e rcursivement par : e Rcon[i] = [xi1 , 00, 00, 00], i 1

Lalgorithme 26 rsume la diversication des clefs dans AES. e Algorithme 26 Diversication des clefs dans AES. Entres Une clef K de 4Nk octets. e Sorties Une clef tendue W de 4Nb (Nr + 1) octets e Pour i = 0 ` Nk 1 Faire a W[i] = K[i] Fin Pour Pour i = Nk ` Nb (Nr + 1) 1 Faire a tmp = W[i-1] Si i mod Nk = 0 Alors tmp = SubWord(RotWord(tmp)) + Rcon[i/Nk] Sinon, si (Nk > 6) ET (i mod Nk = 4) Alors tmp = SubWord(tmp) ; Fin Si W[i] = W[i-Nk ] + tmp Fin Pour

Exercice 3.10 (Dchirement A.E.S). Dtailler lalgorithme de dchiffree e e ment du syst`me AES. e Solution page 300. Exercice 3.11 (Tailles de blocs et collisions). On rappelle que les die rents modes de chirement ont t introduits section 1.3.1. ee 1. Mode ECB : Dcrire un scnario illustrant la faiblesse de ce mode. e e 2. Mode CBC : (a) En supposant que lon chire un disque dur de 32Go de donnes e avec Triple-DES en mode CBC, quel est le nombre de blocs crypts e et quelle est la probabilit dobtenir une collision entre deux blocs e crypts Yi et Yj ? e (b) Comment exploiter cette faille ? (c) Quen est-il avec lAES ? Conclure sur limportance de la taille des blocs. Solution page 301.

168 Scurit de AES e e

Chapitre 3 : Cryptologie

La S-box a t construite pour tre rsistante ` la cryptanalyse. En particuee e e a lier, elle ne poss`de pas de point xe S(a) = a, ni de point oppos S(a) = a, ni e e 1 (a). Ensuite, loprateur ShiftRows permet de de point xe inverse S(a) = S e diuser largement les donnes en sparant les octets originellement conscutifs. e e e Enn, combine avec MixColumn, elle permet quapr`s plusieurs tours chaque e e bit de sortie dpende de tous les bits en entre. Par ailleurs, MixColumn est e e un code linaire de distance maximale (voir section 4.4.1). e Il ny a actuellement aucune attaque signicative sur AES. Il convient cependant de temprer notre propos dans la mesure o` ce standard est encore e u relativement rcent et nest donc soumis ` la cryptanalyse mondiale que depuis e a un peu plus de 7 ans.

3.4
3.4.1

Syst`me cryptographique ` clef publique e a


Motivations et principes gnraux e e

Nous avons vus que les syst`mes cryptographiques ` clef secr`te peuvent tre e a e e pratiquement srs et ecaces en termes de temps de calcul. Nanmoins, d`s u e e le milieu des annes 1970, de nouvelles interrogations furent souleves : e e Avant dutiliser un syst`me de chirement ` clef secr`te, comment convenir e a e dune clef ? Comment tablir une communication scurise entre deux entits sans aucun e e e e change pralable de clef ? e e Cest pour rpondre ` ces questions quen 1976, Die et Hellman pos`rent les e a e bases des syst`mes cryptographiques ` clef publique, par analogie avec une e a bo aux lettres dont Bob est le seul ` possder la clef : te a e toute personne peut envoyer du courrier ` Bob ; a seul Bob peut lire le courrier dpos dans sa bo aux lettres. e e te Pour comparaison, un syst`me de chirement ` clef secr`te tait vu comme un e a e e core-fort dont la clef est partage par Alice et Bob. e Dans le cadre dun tel syst`me et toujours pour reprendre les notations de e lquation (3.1), on a cette fois Ke = Kd . Pour tre plus prcis, Ke est une clef e e e publique qui est publie dans une sorte dannuaire (en fait sous la forme dun e certicat : voir la section 3.6.5) de telle sorte que nimporte qui pourra rcue prer cette clef, en tester lorigine et chirer un message avec. Kd est une clef e prive et secr`te que Bob garde pour lui et qui lui servira ` dchirer. Comme e e a e les deux clefs sont distinctes, le chirement ` clef publique est galement appel a e e chirement asymtrique. e

3.4 Syst`me cryptographique ` clef publique e a

169

"ANNUAIRE" Bob > Cle publique de Bob

ALICE
Cl Publique de Bob Cl prive de Bob

BOB

Chiffrement

Dchiffrement

salut
Texte clair

rzh!k
Texte chiffr

Canal non scuris

rzh!k
Texte chiffr

salut
Texte clair

Fig. 3.15: Principe du chirement ` clef publique. a

Peut-on caractriser un tel syst`me de chirement ` laide des outils de la e e a thorie de linformation ? Dans ce cadre, la mesure du secret consiste ` calculer e a linformation restant ` trouver sur la clef prive, sachant que la clef publique a e est connue :H(Kd |Ke ). Par ailleurs, un algorithme asymtrique doit vrier e e 1 DKd = EKe o` les fonctions D et E sont parfaitement connues. Cela induit u que la clef Kd est parfaitement dtermine d`s que la clef publique Ke est e e e galement connue : il sut dinverser la fonction EKe . En thorie du moins, cela e e implique que H(Kd |Ke ) = 0 et donc quun syst`me asymtrique ne prsente e e e aucun secret. En pratique, les deux clefs Ke et Kd sont donc lies mais choisies e de telle sorte quil soit trop dicile de calculer la valeur de la clef Kd ` partir a de Ke . On utilise pour cela le principe des fonctions ` sens unique, introduit ` la a a section 1.3.3. Le secret dun cryptosyst`me ` clef publique ne peut donc pas e a tre caractris par la thorie de linformation de Shannon ; ce secret ne vient e e e e pas de lincertitude sur la clef prive Kd mais sur la dicult intrins`que ` e e e a calculer Kd ` partir de la seule connaissance de la clef Ke et de C. Loutil a mathmatique permettant de caractriser cette dicult est la thorie de la e e e e complexit algorithmique. e Lexemple le plus connu et le plus utilis dalgorithme de chirement ` clef e a publique, principalement en raison de sa simplicit, est le syst`me RSA, du e e nom de ses concepteurs, Rivest, Shamir et Adleman. La dicult de RSA est e base sur la dicult de factoriser un nombre entier. e e

3.4.2

Chirement RSA

En combinant le thor`me dEuler et le thor`me chinois (page 49), on peut e e e e obtenir une relation de congruence commune ` tous les lments de Zn lorsque a ee

170

Chapitre 3 : Cryptologie

n est le produit de deux nombres premiers. Cest un rsultat de Rivest, Shamir e et Adleman, de 1978, ` lorigine de la cryptographie ` clef publique RSA. a a Thor`me 20 (Thor`me RSA). Soit n = pq un produit de deux nombres e e e e premiers. Soit a un lment quelconque de Zn . Quel que soit lentier positif k, ee ak(n)+1 = a mod n. Preuve. Il y a deux cas : si a est inversible dans Zn , alors on applique directement le thor`me dEuler et donc a(n) = 1 mod n. En levant ` la e e e a puissance k et en remultipliant par a, on obtient la relation dsire. e e Dans le deuxi`me cas, si a est nul, la relation modulo n est immdiate, et sinon e e on utilise deux fois le thor`me de Fermat modulo chacun des deux nombres e e premiers p et q. En eet, si a est non nul modulo p premier, alors ap1 = 1 mod p. En levant e ` la puissance k(q 1) et en remultipliant par a, on obtient ak(n)+1 = a a mod p. Si au contraire a = 0 mod p, on a galement forcment ak(n)+1 = 0 = e e a mod p. De la mme mani`re on obtient une relation similaire modulo q : e e ak(n)+1 = a mod q. Comme p et q sont premiers entre eux, il sut maintenant dappliquer lunicit e du thor`me chinois, pour avoir ak(n)+1 = a mod pq. e e P Nous en dduisons le syst`me de codage RSA, dans lequel un utilisateur cre e e e son couple (clef publique, clef prive) en utilisant la procdure suivante : e e 1. Choisir deux grands nombres premiers p et q. Il faut que p et q contiennent au moins 150 chires dcimaux chacun. e 2. Calculer n = pq 3. Choisir un petit entier e premier avec (n) = (p 1)(q 1) 4. Calculer d, linverse de e par la multiplication modulo (n). 5. Publier la paire Ke = (e, n) comme sa clef publique RSA. 6. Garder secr`te la paire Kd = (d, n) qui est sa clef prive RSA. e e On a alors : Chirement RSA : E(M ) = M e mod n Dchirement RSA : D(M ) = M d mod n e On vrie aisment que, pour 0 M < n, on a : DKd (EKe (M )) = M . En eet, e e e e e DKd (EKe (M )) = M ed mod n = M 1+(n) mod n = M , dapr`s le thor`me RSA. Exercice 3.12 (Chirement RSA). 1. Dterminer la cl publique et la cl prive pour p = 47 et q = 59. On e e e e prendra e = 17 (et on justiera la possibilit de ce choix). e

3.4 Syst`me cryptographique ` clef publique e a

171

2. Chirer la lettre B en syst`me ASCII (66) avec la cl publique et vrier e e e que la cl prive permet bien de retrouver le message initial. e e Solution page 302. Exercice 3.13 (Chirement/Dchirement RSA). On consid`re la clef e e publique RSA Ke = (e, n) = (11, 319). 1. Quel est le chirement avec cette cl du message M = 100 ? e 2. Calculer d la cl prive correspondant ` la cl publique e. e e a e 3. Dchirer le message C = 133. On pourra se servir du rsultat : 13325 = e e 133 (mod 319). 4. Le message cod 625 peut-il rsulter dun codage avec la cl publique ? e e e Mme question avec la cl prive. e e e Solution page 302. Exercice 3.14 (Chirement de Vigen`re et RSA). On consid`re un e e syst`me de chirement oprant sur lalphabet {A, B, C, . . . , Z, } dont chaque e e symbole est dsign par un nombre compris entre 0 et 26 : e e
A B C D E F G H I 0 1 2 3 4 5 6 7 8 J 9 K L M N O P Q R S T U V W X Y Z 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Etant donns une cl K = K0 K1 . . . Kk et un message clair M = M0 M1 . . . e e Mk , le chir C = C0 C1 . . . Ck est donn par : e e Pour tout i [0, k], Ci = Mi + Ki mod 27

Cest ce quon appelle le chirement de Vigen`re. Voici un texte franais chir e c e quOscar a intercept pour vous : e HWQIO QVPIF TDIHT Y_WAF NGY_F COMVI CGEVZ CVIAF JDFZK YLYHG YGEHR SHMMX CVHBF AJYKN ZIXHP ZHEQY YJRHT YWMUK YKPBY YGEHA G_DY_ YWDTF MHFZK YZYHX CISVI CHIVZ 1. Fournir une mthode de cryptanalyse dun chirement de Vigen`re en e e commenant par dterminer la taille de la clef. c e 2. Oscar et Eve travaillent aussi sur la cryptanalyse de ce texte quils ont galement intercept. Oscar envoie ` Eve la longueur de la clef quil a e e a russit ` dterminer. Pour cela, il utilise la clef publique RSA de Eve e a e (n, e) = (35, 5). Ivan intercepte le message chir RSA de la longueur e de la clef : il obtient 10. Quelle est la longueur de la clef ? 3. Eve a russi ` dchirer la deuxi`me et la troisi`me clef de chirement. e a e e e Elle les envoie ` Oscar en utilisant la clef publique RSA de ce dernier a (n, e) = (65, 7). Ivan intercepte ainsi le chir de K1 (il obtient 48) et e

172

Chapitre 3 : Cryptologie de K2 (4). Quelles taient les valeurs de K1 et de K2 ? e Note : on pourra utiliser les rsultats suivants : e 482 = 29 mod 65 et 485 = 3 mod 65

4. Maintenant que vous disposez de la longueur de la clef, dchirez le e texte. Prciser la clef utilise pour le chirement et le dchirement e e e (sous forme de cha de caract`res). La rpartition (en %) des symboles ne e e utiliss dans un texte en franais est rsume dans le tableau 3.8. e c e e
E S A N ... 18,35% 14,86% 6,97% 6,40% 6,23% ...

Tab. 3.8: Rpartition frquentielle des symboles dans un texte franais. e e c

Solution page 302. Ecacit et robustesse de RSA. e Grce aux algorithmes vus dans les sections prcdentes : a e e Il est facile de gnrer des grands nombres premiers, tout au moins en accepe e tant un taux derreur (voir le test de Miller-Rabin, section 1.3.4, page 56). Dans le cas de RSA, lerreur nest pas trop grave : en eet, si lon commet une erreur en croyant que p et q sont premiers, le destinataire se rendra rapidement compte que les nombres ne sont pas premiers : soit la clef d nest pas inversible, soit certains blocs du message dcrypt sont incomprhensibles. e e e Dans ce cas, on peut procder ` un changement de syst`me RSA (recalcul e a e de p et q). le calcul du couple (e, d) est extrmement facile : il sut dappliquer lalgoe rithme dEuclide tendu ; e enn chirement et dchirement sont raliss par exponentiation modue e e laire. Nous avons vu que cette exponentiation pouvait tre ralise assez e e e ecacement. La scurit fournie par RSA repose essentiellement sur la dicult ` factoriser e e ea de grands entiers. En eet, si un attaquant peut factoriser le nombre n = pq de la clef publique, il peut alors dduire directement (n) = (p 1)(q 1) et e donc calculer la clef prive Kd ` partir de la clef publique Ke par lalgorithme e a dEuclide tendu. Donc, si lon dispose dun algorithme rapide pour factoriser e de grands entiers, casser RSA devient facile aussi.

3.4 Syst`me cryptographique ` clef publique e a

173

Apr`s 20 ans de recherche, aucun moyen plus ecace que la factorisation de e n na t publi pour casser RSA. Cependant, la rciproque : si factoriser ee e e de grands entiers est dur alors casser un message crypt par RSA est dur na e pas t prouve. Autrement dit, on ne sait pas aujourdhui si casser RSA est ee e aussi dicile que factoriser n. On peut cependant montrer lquivalence entre dterminer d ` partir de (n, e) e e a et factoriser n. Un sens est trivial : connaissant p et q, on peut facilement calculer d puisque cest ce qui est fait dans le cadre de la gnration de clef. e e Rciproquement, calculer p et q ` partir de (n, e, d) peut tre obtenu : e a e par un algorithme dterministe si e est petit (e log n typiquement - voir e exercice 3.15) ; par un algorithme probabiliste (une variante de lalgorithme de MillerRabin) dans le cas gnral (exercice 3.16). e e Exercice 3.15 (Factorisation de n ` partir de n,e et d pour e petit). a On suppose disposer dans un syst`me RSA de (n, e, d) avec e petit. e 1. Montrer quil existe k Z, tel que ed 1 = k mod n (p + q) + 1. 2. On suppose p et q dirents de 2 et 3. Montrer que k 2e. e 3. Proposer alors un algorithme permettant de factoriser n. Solution page 304. Exercice 3.16 (Factorisation de n ` partir de n, e et d). On suppose a disposer dans un syst`me RSA de (n, e, d). Soit s = max{v N, tel que 2v e divise ed 1} (Autrement dit : ed 1 = t2s ). 1. Montrer quune variante de Miller-Rabin permet de factoriser n, i.e de dterminer p et q. On prcisera lalgorithme qui eectue un seul tirage e e et renvoie soit les facteurs de n, soit une erreur. 2. Combien dappels ` cet algorithme sont en moyenne ncessaires pour a e aboutir ` la factorisation de n ? a Solution page 305. Ainsi, il est aussi dicile de casser RSA en cherchant ` calculer la clef prive a e d ` partir de la clef publique (e, n) que de factoriser n (un probl`me rput a e e e dicile si p et q sont tr`s grands). Cest sur ce point que rside la conance e e porte ` RSA. Les limites actuelles de factorisation concernent des nombres e a de 200 chires environ (au moment ou ce livre est rdig, le record actuel3 fut e e tabli par Bahr, Boehm, Franke et Kleinjung en mai 2005 dans le cadre du e challenge RSA200). On consid`re donc aujourdhui un modulo n de 2048 voire e seulement 1024 bits comme sr. u
3 voir http://www.loria.fr/~zimmerma/records/factor.html pour les derniers records de factorisation.

174 Attaques sur RSA

Chapitre 3 : Cryptologie

La gnration des clefs prsente plus haut est simplie, et il convient en e e e e e pratique de prendre quelques prcautions. Ces prcautions rsultent dattaques e e e qui exploitent telle ou telle relation sur les param`tres dun chirement RSA. e Certaines attaques seront prsentes dans la suite sous forme dexercices. e e Les recommandations concernant limplmentation de syst`mes cryptograe e phiques bass sur RSA (gnrations des clefs etc...) sont rsumes dans la e e e e e norme PKCS#1. Cette norme est rguli`rement mise ` jour (en fonction des e e a avances dans la cryptanalyse de RSA). e Exercice 3.17 (Attaque RSA par exposant commun). William, Jack et Averell ont respectivement les clefs RSA publiques (nW , 3), (nJ , 3) et (nA , 3). Joe envoie en secret ` chacun deux le mme message x avec 0 a e x < min(nW , nJ , nA ). Montrer que Lucky Luke, qui voit passer sur le rseau cW = x3 mod nW , e cJ = x3 mod nJ et cA = x3 mod nA peut facilement calculer x. Indication. On rappelle (ou on admettra !) que pour a et k entier, la mthode e a 1 de Newton-Raphson (faire converger la suite ui+1 = ui (1 k ) k1 ) permet de calculer tr`s rapidement e a1/k , en temps O(log a).
2 kui

Solution page 307.

Exercice 3.18 (Attaque RSA par module commun). Une implmentae tion de RSA donne ` deux personnes (Alice et Bob) le mme nombre n (produit a e de deux nombres premiers) mais des clefs (eA , dA ) et (eB , dB ) direntes. On e suppose de plus que eA et eB sont premiers entre eux (ce qui est le plus gnral). e e Supposons alors que Alice et Bob chirent un mme message M et que Oscar e intercepte les deux messages cA = M eA mod nA et cB = M eB mod nB quil sait tre deux chirements du mme message M . e e Montrer quOscar peut alors tr`s facilement dcouvrir le message M . e e Solution page 307. Exercice 3.19 (Attaque RSA par texte chir bien choisi). Eve intere cepte le message c chir envoy par Bob ` Alice : c = meA mod nA . Pour e e a dchirer c, Eve proc`de comme suit : e e 1. Eve choisit un entier 0 < r < nA au hasard et calcule x :=reA mod nA ; 2. Eve calcule y = x.c mod nA ; 3. Eve demande ` Alice de signer y avec sa clef prive ; Alice renvoie ` Eve a e a dA mod n . u=y A Montrer que Eve peut alors facilement dcouvrir le message m mis par Bob e e 1 mod n ). Moralit ? (on calculera u.r e Solution page 307. A

3.4 Syst`me cryptographique ` clef publique e a

175

Exercice 3.20 (Attaque factorielle ou p-1 de Pollard). Soit p et q les deux nombres premiers secrets utiliss pour la construction du modulo n = pq e dune clef publique RSA. Lentier p 1 est pair ; soit B un entier tel que B! (factorielle de B) est multiple de p 1. Autrement dit, il existe un entier tel que : (p 1) = B! 1. Soit p1 un facteur premier de (p 1). Montrer que p1 B. 2. Soit a un entier < n. Montrer que aB! = 1 mod p. 3. Soit A = aB! mod n ; en dduire que (A 1) est un multiple de p. e 4. Soit k un entier ; quel est le cot du calcul de ak mod n ? u 5. En dduire une borne sur le cot du calcul de A = aB! mod n en fonction e u de B et log n. 6. Si (p-1) est un diviseur de B! avec B petit, alors un attaquant qui conna t n mais pas p ni q peut faire lattaque suivante : il prsuppose un majorant e C petit de B (C B) puis il calcule : A = 2C! mod n et G = pgcd(A 1, n). Montrer que si G est dirent de 1 et n alors lattaquant a forcment e e cass RSA avec n comme modulo. e 7. On suppose que p 1 est un diviseur de B! avec B = log n ; on suppose de plus petit (par exemple 1000). Montrer que cette attaque permet de casser RSA : on donnera un majorant du cot de cette attaque. u 8. Quelle est la parade ? Solution page 307.

3.4.3

Chirement El Gamal

Si RSA est bas sur le probl`me de la factorisation dentiers, le chirement e e El Gamal exploite le probl`me du logarithme discret (DLP) abord dans la e e section 1.3.3. La gnration des clefs sop`re de la faon suivante : e e e c Soit p un nombre premier tel que le probl`me du logarithme discret est e dicile dans Z . p Soit g Z une racine primitive. p Soit s un nombre et = g s . La clef publique est alors le triplet Ke = (p, g, ). La clef prive correspond ` Kd = s. e a Chirement El Gamal : Soit M le texte clair ` chirer et k Zp1 un a nombre alatoire secret. e y1 = g k mod p EKe (M ) = (y1 , y2 ) avec y2 = M. k mod p

176

Chapitre 3 : Cryptologie

Dchirement El Gamal : Pour y1 , y2 Z , on dnit : e e p


s DKd (y1 , y2 ) = y2 .(y1 )1 s En eet, y2 .(y1 )1 = M. k .(g k.s )1 = M.g s.k .(g k.s )1 = M .

Il est donc possible de coder facilement un message par exponentiation modulaire. Le dchirement sans la clef prive est quivalent au logarithme discret. e e e Mais en possdant la clef, une exponentiation modulaire, suivie de lalgorithme e dEuclide tendu pour trouver linverse dun nombre dans Z est susant. Le e principal intrt de ce chirement est que pour un niveau de scurit x, ee e e e il ncessite de travailler avec de plus petits entiers, et donc plus rapidement e que le chirement RSA. En eet, la complexit des attaques sur RSA est en e O( 3 (p)) = O( 6 (n)), avec p un facteur du modulo n, alors quelle est au mieux en O( 3 (p)), ou p est le modulo, pour le logarithme discret. La taille du modulo ncessaire pour RSA est donc au moins deux fois plus importante. e En outre, de mme que DLP peut sexprimer dans tout groupe, on peut tendre e e El Gamal sur dautres groupes o` le probl`me du logarithme discret est encore u e plus dicile. Cest le cas notamment pour les groupes de points dune courbe elliptique dans lesquels les attaques par calcul dindex ne fonctionnent pas. Ltude de ces groupes particuliers dpasse nanmoins le cadre de cet ouvrage. e e e

3.5

Authentication, Intgrit, Non-rpudiation e e e

En plus du secret, on demande aujourdhui aux codes cryptographiques dassurer une fonction dauthentication des messages. Le destinataire doit pouvoir tre certain que le message a t mis par lmetteur qui prtend lavoir mis. e eee e e e Pour cela, on assure aussi une fonction dintgrit, ` savoir la vrication e e a e que le message arrive bien tel quil a t mis. On utilise pour cela les fonceee tions de hachage. La section 1.4.2 page 83 a permis dintroduire ces fonctions. On fournit maintenant quelques analyses plus spciques, notamment sur les e fonctions de hachage les plus connues. On introduira galement la construce tion de codes dauthentication, ou MAC pour Message Authentication Code, qui permettent de vrier ` la fois lintgrit et lauthentication de la source e a e e dune donne. Enn, le concept de signature lectronique sera prsent avec e e e e les principaux schmas de signature utiliss aujourdhui. e e

3.5.1

Fonctions de hachage cryptographiques

Les fonctions de hachage ont dj` t introduites au chapitre 1, page 83. La eaee gure 3.16 dresse un rapide historique des principales fonctions de hachages en explicitant les drivation de construction. e

3.5 Authentication, Intgrit, Non-rpudiation e e e

177

1990 1991 1992 1993 1994 HAVAL

MD4 MD5

ExtendedMD4

RIPEMD SHA SHA1

1996

RIPEMD128,160

1999

Whirlpool0

2002 2003 2004

SHA256,384,512 SHA224

WhirlpoolT

Whirlpool

Fig. 3.16: Historique des principales fonctions de hachages.

Les fonctions de hachage cryptographiques les plus connues sont MD5, SHA1, SHA-256 et Whirlpool. Elles sont toutes sans clefs et non prdictibles (les e entres et les sorties sont pratiquement indpendantes). La proprit de re e ee e sistance aux collisions (page 84) est particuli`rement recherche pour assurer e e des schmas de signature ou de chirement cryptographiquement sr. Ainsi, e u une fonction de hachage sera considre comme casse lorsquil existera un ee e algorithme permettant de trouver des collisions pour cette fonction avec une n complexit meilleure que lattaque de Yuval (en O(2 2 ) calculs dempreintes e successifs o` n est la taille dempreinte - voir la section 1.4.3). u Exercice 3.21 (Construction dune fonction de compression rsise tante aux collisions). On se propose de construire une fonction de compression h : {0, 1}2m2 {0, 1}m rsistante aux collisions. On utilise pour cela une fonction ` sens unique (ici, le e a logarithme discret pour m = 1024 bits = 64 octets typiquement). Une construction de type Merkle-Damg fournira alors une fonction de hachage rsistante ard e aux collisions. On proc`de comme suit : e

178

Chapitre 3 : Cryptologie

1. On choisit p et q deux nombres premiers tels que q = p1 . Autrement 2 dit, p = 2q +1. On suppose que p comporte m bits (ainsi q en comportera m 1). 2. On consid`re alors les groupes multiplicatifs Z et Z . Soient et deux e p q gnrateurs de Z ( = ). Autrement dit : e e p Z = {0 , 1 , 2 , . . . , p2 } = { 0 , 1 , 2 , . . . , p2 } p On pose = log () (donc = mod p). On suppose que nest pas connu et extrmement coteux ` calculer. e u a 3. On suppose , et p connus publiquement et on dnit : e h : Zq Zq Zp (x1 , x2 ) x1 x2 mod p

a. Application numrique : pour p = 83, q = 41, = 15 et = 22, calculer e lempreinte de (12, 34). Sur quel calcul repose la rsistance aux collisions de e la fonction h ? Pour montrer que h est rsistante aux collisions, on raisonne par labsurde : e On suppose disposer dune collision. Autrement dit, on suppose disposer de x = (x1 , x2 ) Z2 et y = (y1 , y2 ) Z2 avec x = y tel que h(x) = h(y) q q On montre quon peut alors facilement calculer . Dans toute la suite, on pose d = pgcd(y2 x2 , p 1). b. Quels sont les diviseurs de p 1 ? En dduire que d {1, 2, q, p 1}. e c. Montrer que q < y2 x2 < q et en dduire que d = q. e d. Montrer que x1 y1 = y2 x2 mod p. e. On suppose que d = p 1. Montrer que x = y. En dduire que d = p 1. e f. On suppose que d = 1. Montrer que = (x1 y1 )(y2 x2 )1 mod p 1. g. On suppose que d = 2 = pgcd(y2 x2 , 2q). On en dduit donc e 1 mod q. pgcd(y2 x2 , q) = 1 et on pose u = (y2 x2 ) 1. Montrer que q = 1 mod p. En dduire : u(y2 x2 ) = mod p. e 2. Montrer que soit = u(x1 y1 ) mod p 1 soit = u(x1 y1 ) + q mod p 1. h. Conclure en donnant un algorithme qui prend en entre une collision x = e u (x1 , x2 ) Z2 et y = (y1 , y2 ) Z2 et renvoie . Majorer le cot de cet q q algorithme et en dduire que h est rsistante aux collisions. e e Solution page 308. On dtaille maintenant les fonctions de hachage les plus connues avec notame ment un tat des lieu sur leur cryptanalyse. e

3.5 Authentication, Intgrit, Non-rpudiation e e e MD5

179

MD5 fut propos par Rivest en 1991. On sintresse ici ` la fonction de come e a pression utilise dans MD5. Celle-ci utilise des blocs B de b = 512 bits pour e produire une empreinte de n = 128 bits (en reprenant les notations de la gure 1.12 page 85). Chaque bloc B est dabord dcoup en 16 sous-blocs {Bi }0 i 15 de 32 bits e e chacun. MD5 utilise galement 64 constantes {Ki }0 i 63 xes. Lalgorithme e e travaille avec un tat sur 128 bits qui est lui-mme divis en 4 mots de 32 e e e bits : A, B, C et D (initialiss au dbut avec des constantes). 64 tours sont e e alors eectues (et fournissent en sortie lempreinte rsultat de la fonction de e e compression). Le dtail dun tour MD5 est donn dans la gure 3.17. Les tours sont diviss e e e en 4 paquets de 16 sous-tours o` la fonction F prendra les valeurs successives u suivantes : 1. F = (B AND C) OR (B AND D) 2. F = (D AND B) OR (D AND C) 3. F = B C D 4. F = C (B OR D))
A F
j=i mod 16

Bj Ki

Fig. 3.17: Le i-`me tour dans MD5 (0 e

63).

Scurit de MD5. La taille dempreinte dans MD5 est de 128 bits. La ree e cherche de collisions par force brute (attaque de Yuval) a donc une complexit e de 264 calculs dempreintes. Pourtant, plusieurs algorithmes ont t proposs ee e rcemment pour trouver des collisions avec MD5 en seulement 242 oprations, e e voire 230 . Cest pourquoi MD5 nest plus considr comme s r aujoure e u dhui.

180 SHA-1

Chapitre 3 : Cryptologie

SHA-1 fut publi en 1995 par le NIST sous la forme dune norme. La fonction e de compression utilise dans SHA-1 utilise des blocs B de b = 512 bits pour e produire une empreinte de n = 160 bits (en reprenant les notations de la gure 1.12 page 85). Comme pour MD5, le bloc B est dabord dcoup en e e 16 sous-blocs {Bi }0 i 15 de 32 bits chacun, qui sont ensuite tendus en 80 e nouveaux blocs {Wi }0 i 79 . En outre, 4 constantes {Ki }1 i 3 sont xes. e Lalgorithme travaille donc sur un tat de 160 bits subdiviss en 5 mots de 32 e e bits chacun : A, B, C, D et E (initialiss au dbut avec des constantes). 64 e e tours sont eectues (et fournissent en sortie lempreinte rsultat de la fonction e e de compression). Le dtail dun tour SHA-1 est fourni dans la gure 3.18. e
A B C D E

F <<5 <<30 Wi Kj
j=i/20

Fig. 3.18: Le i-`me tour dans SHA-1 (0 e

79).

Les tours sont divises en 4 paquets de 16 sous-tours o` la fonction F prendra e u les valeurs successives suivantes : 1. F = (B AND C) OR (B AND D) 2. F = B C D 3. F = (B AND C) (B AND D) (C AND D) 4. F = B C D Scurit de SHA-1. La taille dempreinte dans SHA-1 est de 160 bits. e e La recherche de collisions par force brute (attaque de Yuval) a donc une complexit en 280 calculs dempreintes. Rcemment, une technique similaire ` celle e e a utilise contre MD5 a permis dobtenir des collisions en seulement O(263 ) cale culs dempreinte. On consid`re donc que SHA-1 est cass, mme si lattaque e e e

3.5 Authentication, Intgrit, Non-rpudiation e e e

181

reste dicile. De part sa popularit, cette fonction de hachage est encore lare gement utilise (notamment au niveau des schmas de signature). e e SHA-256 SHA-256 est une amlioration plus robuste (et supportant une taille deme preinte plus grande) que SHA-1 publie en 2000. Elle se base sur un chiree ment ` clef secr`te par bloc (SHACAL-2) et utilise des blocs B de b = 512 bits a e pour produire une empreinte de n = 256 bits (cf gure 1.12 page 85). Nous nentrerons pas ici dans les dtails du fonctionnement interne de SHA-256. e Scurit de SHA-256. La taille dempreinte dans SHA-256 est de 256 bits. e e La recherche de collisions par force brute (attaque de Yuval) ncessite 2128 cale ` culs dempreintes. A lheure actuelle, il ny a pas dattaque ecace connue contre SHA-256 qui est donc considre comme encore sre. ee u Whirlpool Whirlpool est lune des fonctions de hachage recommande par le projet NESe SIE (en 2004), dont la fonction de hachage est base sur une construction de e Miyaguchi-Preneel (voque ` la section 1.4.2). Le chirement ` clef secr`te e e a a e par blocs sous-jacent utilis est W , une variante de Rijndael (on rappelle que e Rijndael est le nom du chirement ` clef secr`te ` la base du standard AES a e a voir page 158). Le tableau 3.9 rsume les principales dirences entre les deux e e fonctions de chirement. Taille Bloc Nb tours Polynme de o rduction sur F256 e Origine de la S-Box Origine des constantes de tour Rijndael 128, 160, 192, 224 ou 256 10, 11, 12, 13 ou 14 x8 + x4 + x3 + x + 1 (0x11B) t : a a1 sur F256 polynmes xi sur F256 o W 512 10 8 + x4 + x3 + x2 + 1 x (0x11D) structure rcursive e entres successives e de la S-Box

Tab. 3.9: Principales dirences entre W et Rijndael. e

La fonction de compression de Whirlpool comporte 10 tours et utilise des blocs B de b = 512 bits pour produire une empreinte de n = 512 bits (toujours en reprenant les notations de la gure 1.12 page 85). Nous nentrerons pas ici dans les dtails de son implmentation. e e

182

Chapitre 3 : Cryptologie

Remarque : les noms choisis pour les fonctions de hachage ou de chirement ` ont souvent une origine obscure. A titre indicatif, Whirlpool doit son nom ` la a galaxie Whirlpool qui fut la premi`re dont on reconnut la structure en spirale. e

Scurit de Whirlpool. Une recherche de collisions sur Whirlpool ncessite e e e 256 calculs dempreintes. A lheure actuelle, il ny a pas dattaque ecace ` 2 connue contre Whirlpool si bien quelle est encore considre comme sre. ee u Etat des lieux sur la rsistance aux collisions pour les principales e fonctions de hachage Comme on la vu, lun des principaux crit`re de robustesse dune fonction de e hachage est sa rsistance aux collisions : elle sera considre comme sre sil e ee u nexiste pas dattaque permettant de trouver des collisions avec une complexit e meilleure que celle de lattaque de Yuval. Le tableau 3.10 rsume les rsistances e e aux collisions pour les fonctions de hachage les plus signicatives. Il sagit dun survol ralis au moment o` cet ouvrage est rdig et est donc susceptible e e u e e dvoluer avec les cryptanalyses futures. e
Fonction MD5 SHA-1 HAVAL SHA-256 Whirlpool Empreinte 128 160 256 256 512 bits bits bits bits bits Attaque anniversaire O(264 ) O(280 ) O(2128 ) O(2128 ) O(2256 ) Rsistance e aux collisions Casse e Casse e Casse (2004) e S re u S re u Complexit e de lattaque O(230 ) O(263 ) O(210 )

Tab. 3.10: Rsistance aux collisions pour les fonctions de hachage les plus connues. e

Il convient galement de noter que la rsistance aux collisions nest pas toujours e e susante. On dnombre ainsi dautres proprits sur les fonctions de hachage e ee qui peuvent tre requises. On citera par exemple : e la rsistance aux collisions proches : il doit tre dicile de trouver des collie e sions (x, x ) pour lesquelles la distance de Hamming (dnie au chapitre 4) e entre les empreintes d(H(x), H(x )) est faible. la rsistance aux pseudo-collisions dans laquelle on autorise la modication e du vecteur dinitialisation IV de la fonction de hachage pour trouver des collisions. enn, le caract`re pseudo-alatoire o` il sagit de rendre dicile la distinction e e u entre H et une fonction alatoire. e

3.5 Authentication, Intgrit, Non-rpudiation e e e

183

3.5.2

La signature lectronique e

Contrle dintgrit par les fonctions de hachage o e e Lintgrit des donnes sur un canal non sr peut tre assure par des codes e e e u e e correcteurs derreur (voir chapitre 4) mais aussi par des fonctions de hachage. On distingue pour cela trois mthodes : e 1. Utiliser un canal scuris pour transmettre lempreinte de faon sre, e e c u le message tant transmis sur le canal non sr. On est alors capable e u de vrier la correspondance entre lempreinte du message reu et celle e c rceptionne sur le canal able. Cette conguration est illustre dans la e e e gure 3.19.

Fonction de Hachage

H(M) 10110...10

Canal scuris

H(M) = H(M) ? Message M

Message M
blablabbla blablabbla blablabbla blablabbla Canal non scuris

blablabbla blablabbla blablabbla blablabbla

Fonction de Hachage

H(M) 10110...10

Fig. 3.19: Vrication dintgrit par des fonctions de hachage en disposant dun e e e canal scuris. e e

2. Utiliser une fonction de chirement E (et la fonction de dchirement e D associe) pour chirer ` la fois le message et lempreinte avant de e a lenvoyer sur le canal non sr. Cette conguration est illustre dans la u e gure 3.20.
H(M) = H(M) ?
Fonction de Hachage

H(M) 10110...10 Message M


blablabbla blablabbla blablabbla blablabbla

H(M) 10110...10 Message M E D


blablabbla blablabbla blablabbla blablabbla

H(M) 10110...10
Fonction de Hachage

Canal non scuris

Fig. 3.20: Vrication dintgrit par des fonctions de hachage ` partir dune fonction e e e a de chirement.

184

Chapitre 3 : Cryptologie

3. Utiliser un code dauthentication. Cette approche fait lobjet du prochain paragraphe. Codes dauthentication, ou MAC On peut utiliser les fonctions de hachage pour faire ` la fois de lauthentia cation et du contrle dintgrit de message. On parle alors de MAC, pour o e e Message Authentication Code : cest une fonction de hachage ` sens unique a paramtre avec une clef secr`te K (on notera du coup HK (x) le calcul de e e e lempreinte de x) qui respecte la proprit additionnelle suivante : ee (x1 , HK (x1 )) (x2 , HK (x2 )) Pour tout K inconnu et pur tout ensemble de paires . . . (xi , HK (xi )) il est impossible (en temps raisonnable) de calculer une autre paire (x, HK (x)) valide pour x {x1 , x2 , ..., xi }. / Pour rsumer, seul celui qui poss`de la clef K peut calculer et donc vrier e e e une empreinte : Alice et Bob partagent une clef K. Alice envoie ` Bob un message M et r = HK (M ). a Bob vrie que le r reu est bien gal ` HK (M ) pour M reu. e c e a c Cette conguration est illustre dans la gure 3.21. Les MAC permettent de e garantir ` la fois lintgrit du message transmis (tous les possesseurs de K a e e peuvent vrier que M na pas t modi puisquil correspond ` lempreinte e ee e a r) mais aussi lauthentication de la source de donne : sous rserve que Alice e e et Bob soient les seuls ` partager la clef K, ils sont les seuls ` pouvoir gnrer a a e e lempreinte HK (M ).
cl K

HK (M) = HK (M) ? HK (M) 10110...10 Message M


blablabbla blablabbla blablabbla blablabbla

MAC

HK (M) 10110...10 Message M


blablabbla blablabbla blablabbla blablabbla

HK (M) 10110...10

cl K

Canal non scuris

MAC

Fig. 3.21: Principe dutilisation dun MAC.

3.5 Authentication, Intgrit, Non-rpudiation e e e

185

Remarque : si un MAC fournit lauthentication et lintgrit, il ne garantit e e videmment pas la condentialit du message. Il faudra pour cela le coupler e e avec dautres techniques. En pratique, on cherche ` rendre le cassage du MAC a aussi dicile que le cassage de la fonction de hachage elle-mme. e Construction dun MAC. Il y a principalement deux faons de raliser c e des MAC : ` A partir dun chirement ` clef secr`te par blocs utilis en mode CBC ou a e e CFB (lempreinte est alors le dernier bloc chir, chir une fois encore en e e mode CBC ou CFB). Cette opration (pour le mode CBC) est illustre dans e e la gure 3.22.
M1 M2 ... Mn

IV

CBCMAC K (M)

EK

EK

EK

Fig. 3.22: Code dauthentication par chirement ` clef secr`te. a e

Sur un Pentium III cadenc ` 500 MHz, une implmentation logicielle du ea e CBC-MAC-AES (cest-`-dire un CBC-MAC o` les chirements Ek sont raa u e liss par lalgorithme Rijndael, standardis sous le nom AES) peut produire e e des signatures de message ` la vitesse de 234 Mbits/seconde. La mme ima e plmentation de AES seul tourne ` une vitesse de 275 Mbits/seconde. Le e a cot de calcul de lempreinte est donc ainsi tr`s voisin de celui du cryptage. u e ` A partir dune fonction de hachage ` sens unique, lide est alors dintgrer a e e la clef K dans le calcul dempreinte. Plusieurs solutions sont possibles mais toutes ne conviennent pas. On veillera ainsi ` ne pas utiliser (sur un a mod`le de Merkle-Damg pour la fonction de hachage) les construction e ard suivantes : HK (M ) = H(K||M ) HK (M ) = H(M ) avec IV = K HK (M ) = H(M ||K) Exercice 3.22. Expliquer pourquoi ces trois constructions ne permettent pas de fournir des MAC valides. Solution page 309.

186

Chapitre 3 : Cryptologie

On prfrera donc les constructions suivantes, avec deux clefs K1 et K2 : ee Enveloppe : H(K1 ||M ||K2 ) NMAC : HK1 (HK2 (M )) Hybride : HK1 (x||K2 ) Les signatures lectroniques e Les signatures manuscrites ont longtemps t utilises pour prouver lidenee e tit de leur auteur ou du moins laccord du signataire avec le contenu du e document. Avec des documents numriques, il faut inventer des protocoles e qui remplacent lempreinte manuelle par un quivalent. On remarquera dj` e ea que la signature lectronique devra dpendre du signataire et du document. e e Autrement, un simple copier/coller (particuli`rement facile avec un document e numrique) permettrait dobtenir une signature valide. e Ainsi, une signature lectronique devra tre : e e authentique : elle convainc le destinataire que le signataire a dlibrment e ee sign un document ; e infalsiable ; non rutilisable : elle est attache ` un document donn et ne pourra pas e e a e tre utilise sur un document dirent ; e e e inaltrable : toute modication du document doit tre dtectable ; e e e non reniable : le signataire ne peut rpudier le document sign. e e Pour reprendre les fonctionnalits oertes par la cryptographie (3.1.2), on voit e que les signatures lectroniques fournissent lintgrit, lauthentication mais e e e aussi la non-rpudiation. e Comme pour les algorithmes de chirement, on distingue deux classes de signatures : 1. les signatures symtriques qui utilisent un cryptosyst`me ` clef secr`te. e e a e Dans ce cas, il convient de disposer soit dun arbitre, soit dune clef secr`te qui sera utilise dans un MAC en mode CBC ou CFB comme e e cela a t prsent dans la section prcdente. ee e e e e 2. les signatures asymtriques qui utilisent un cryptosyst`me ` clef publique e e a et une fonction de hachage publique (sans clef) comme SHA-256 ou Whirlpool. Le principe gnral de cette seconde approche est dtaill dans la gure 3.23 e e e e (Cette gure nexplicite pas les algorithmes de signature et de vrication e utiliss ; les plus connus seront dtaills dans la suite). On prf`re en eet e e e ee signer lempreinte dun document qui a une taille xe susamment petite pour tre utilise ecacement par un cryptosyst`me ` clef publique. Ainsi, e e e a lorsque Alice signe le document M , elle utilise hM = H(M ) lempreinte de M , sa clef secr`te Kd et enn la fonction de dchirement D. Elle gn`re ainsi la e e e e

3.5 Authentication, Intgrit, Non-rpudiation e e e


Document
blablabbla blablabbla Fonction de signature

187
Document sign
blablabbla blablabbla ALICE

Fonction de Hachage

Algorithme de Signature

Gnration dune paire de cls

Cl prive

Alice

11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000

Cl publique

Document sign
blablabbla blablabbla

Fonction de vrification Signature


ALICE

Rponse
Algorithme de Vrification de la signature Signature valide ou Signature non valide

Extraction ALICE

Document
blablabbla blablabbla

Fonction de Hachage

Fig. 3.23: Principe de la signature ` clef publique et de sa vrication. a e

signature s(M ) = DKd (hM ) (on notera que seule Alice a pu gnrer s(M )). e e Le document sign consiste alors en la paire [M, s(M )]. e Ce document peut tre vri par Bob ` partir de la clef publique Ke dAlice e e e a et la fonction de chirement E (galement publique). Il lui sut de calculer e lempreinte du document hM et de vrier si EKe (s(M )) = hM . e On dtaille maintenant les deux schmas de signature les plus courants. e e Signature RSA Il est en eet possible dutiliser le syst`me RSA pour dnir une signature e e digitale. Il sut pour cela dappliquer RSA ` lenvers. a La gnration des param`tres est identique ` celle de RSA. Prenons donc e e e a Ke = (e, n) la clef publique dAlice, et d son exposant secret. Lorsque Alice souhaite signer un document M , il lui sut deectuer les ope rations suivantes : elle calcule lempreinte hM = H(M ). On supposera 0 hM < n. elle gn`re la signature s(M ) = (hM )d mod n (encore une fois, on aura e e remarqu quelle est la seule ` pouvoir gnrer cette signature tant la seule e a e e e a ` possder d). e Le document sign est alors la paire [M, s(M )] et est envoy ` Bob. e ea

188

Chapitre 3 : Cryptologie

Ainsi, Bob reoit un document sign [M , s(M )] dAlice. Ce document est poc e tentiellement altr voire illgitime. Bob rcup`re alors la clef publique dAlice ee e e e (n, e) (la section 3.6.5 est consacre aux protocoles dchanges de clefs). Il e e = H(M ) et vrie lidentit calcule alors hM e e s(M )e = h M mod n

En eet : s(M )e = (hM )e.d mod n = hM mod n = hM et si le document est authentique : hM = h . M La scurit de cette signature est donc celle du cryptosyst`me RSA. On notera e e e quand mme que cette prsentation reste simplie et en ltat sujette ` des e e e e a attaques. Standard DSS - Digital Signature Standard Ce schma de signature est bas sur le probl`me du logarithme discret.Le e e e syst`me comprend des param`tres partags q, p et g ainsi quune clef publique e e e y et une clef prive x qui sont gnrs de la faon suivante : e e ee c 1. Choisir q premier de 160 bits. 2. Trouver p = kq + 1 premier de 512 ` 1024 bits. a 3. Tant que a = 1, choisir g et calculer a g dordre au plus q). 4. Choisir x de 160 bits. 5. y g x mod p. Une fois les param`tres construits, la signature se fait de la faon suivante : e c 1. Alice choisit k alatoire infrieur ` q. e e a 2. Alice calcule et envoie la signature de son message m ` laide dune a fonction de hachage h (pour le DSS, il sagit de SHA-1) : r = (g k mod p) mod q et s = (k 1 [h(m) + xr]) mod q
p1 q

mod p. (g est alors

3. Bob vrie la signature si et seulement si v = r pour : e w = s1 mod q ; u1 = h(m)w mod q ; u2 = rw mod q ; v = ([g u1 y u2 ] mod p) mod q ; Thor`me 21. La vrication est correcte. e e e

3.6 Protocoles usuels de gestion de clefs

189

Preuve. Le param`tre s est construit de sorte que k = (s1 [h(m) + xr]) e mod q. Or g u1 y u2 = g u1 +xu2 donc, dapr`s la donne de u1 et u2 , et comme e e g q = 1 mod p par construction, on a donc g u1 y u2 = g h(m)w+xrw . Or, comme w = s1 , la remarque de dbut de preuve nous donne g u1 y u2 = g k ou encore e v = r mod q. P Exercice 3.23. Parall`lement au DSS dvelopp aux Etats-Unis, les Russes e e e avaient dvelopp leur propre signature : GOST. Les param`tres p, q, g, x et e e e y sont les mmes sauf que q est premier de 254 ` 256 bits et p premier entre e a 509 et 512 bits (ou entre 1020 et 1024 bits). Seule la partie s de la signature change : 1. Alice calcule et envoie r = (g k mod p) mod q et s = (xr + kh(M )) mod q

2. Bob vrie la signature si et seulement si u = r pour : e v = h(M )q2 mod q. z1 = sv mod q. z2 = ((q r)v) mod q. u = ((g z1 y z2 ) mod p) mod q. Justier la vrication. e Solution page 309.

3.6

Protocoles usuels de gestion de clefs

Chaque tape dun processus dchange de messages crypts est cruciale, parce e e e que susceptible dtre la cible dattaques. En particulier, si les syst`mes ` clef e e a secr`te sont de bons syst`mes cryptographiques, leur faiblesse rside en bonne e e e partie dans le processus dchange de clefs. Des protocoles ont t invents e ee e pour assurer la scurit de ces changes. e e e

3.6.1

Gnration de bits cryptographiquement s re e e u

Nous avons vu dirents gnrateurs pseudo-alatoires en section 1.3.6, ainsi e e e e que direntes attaques permettant de prdire le comportement de certains e e de ces gnrateurs en sections 1.4.3 et 1.4.3. Un exemple de gnrateur sr e e e e u est celui de Blum, Blum et Shub : en prenant p et q premiers assez grands congrus ` 3 modulo 4 et en posant x0 le carr dun entier alatoire modulo a e e n = pq, ce gnrateur calcule la suite des carrs successifs xi+1 = x2 mod n. e e e i Or, il sav`re que dcouvrir le bit de poids faible des xi suite du bit de poids e e faible de ces xi est aussi dicile que casser la factorisation. Plus gnralement, e e il est possible dutiliser RSA pour fabriquer des squences pseudo-alatoires e e cryptographiquement sres, comme dans lexercice suivant : u

190

Chapitre 3 : Cryptologie

Exercice 3.24 (Gnrateur de bits pseudo-alatoires RSA). Soient n e e e et e le modulo et lexposant dun code RSA. Soit k = O(log(log n)) un entier. Alors, connaissant c = xe mod n, dcouvrir les k premiers bits de x est aussi e dicile que de dcouvrir la clef secr`te associe ` n et e. e e e a Dcrire une procdure prenant k en entre et gnrant une suite de l bits e e e e e pseudo-alatoire et cryptographiquement sre. e u Solution page 309.

3.6.2

Protocole dchange de clef secr`te de Die-Hellman et e e attaque Man-in-the-middle

Lutilisation dune fonction ` sens unique comme lexponentiation modulaire a permet le partage de clef. Supposons donc quAlice et Bob souhaitent partager une clef secr`te K. Ils e conviennent dabord dun entier premier p et dun gnrateur g de Z . On peut e e p alors dnir le protocole suivant en deux tapes leur permettant de construire e e K en secret : 1. (a) Seule, Alice choisit un nombre a Z secret et calcule p A = ga Elle envoie A ` Bob. a (b) Symtriquement, Bob choisit un nombre b Z secret et calcule e p B = gb Il envoie B ` Alice. a 2. (a) Alice calcule seule K = B a mod p. (b) Symtriquement, Bob calcule de son ct Ab mod p. e oe ` A la n, Alice et Bob partagent la mme clef secr`te K = g a.b mod p sans e e lavoir jamais communique directement. e Exercice 3.25. On suppose quOscar voit passer A et B. Expliquer pourquoi Oscar ne peut alors pas facilement en dduire K. e Solution page 309. Exercice 3.26. Alice et Bob conviennent des param`tres suivants : p = 541 e et g = 2. Alice gn`re le nombre secret a = 292. De son cot, Bob gn`re le e e e e e nombre b = 426. Quelle est la clef secr`te rsultant du protocole dchange de e e e Die-Hellman ? Solution page 309. Lattaque la plus classique des protocoles dchange consiste pour Oscar ` e a couper la ligne communication entre Alice et Bob avant quils ne commencent le partage de la clef (mission de A et B). Cest lattaque dite Man-in-thee middle . mod p mod p

3.6 Protocoles usuels de gestion de clefs

191

Lide gnrale est quOscar se fait passer pour Bob aupr`s dAlice et simule e e e tanment pour Alice aupr`s de Bob. Ainsi, Oscar peut alors lire toutes les e e communications entre Alice et Bob avec la clef quils pensent avoir construite en secret. En pratique Oscar fabrique a et b . Il intercepte ensuite A et B puis fabrique KA = Ab et KB = B a . Il envoie ensuite g b ` Alice et g a ` Bob. Lvolution a a e de lattaque est illustre dans la table suivante : e Alice gn`re a e e A = g a mod p (conna [a, A, B ]) t Clef secr`te : e a mod p KA = B Clefs secr`tes : e KA et KB
B A

Oscar gn`re b et a e e B = g b mod p A = g a mod p


A B

Bob gn`re b e e B = g b mod p

(conna [b, A , B]) t Clef secr`te : e b mod p KB = A

Tab. 3.11: Attaque Man-in-the-middle dans le protocole dchange de clef de Diee Hellman.

Ensuite, Oscar doit dcoder ` la vole les messages envoys par Alice ou Bob, e a e e puis les recoder avec lautre clef de la mani`re dcrite dans le tableau 3.12. e e Alice C = EKA (M ) Oscar M = EKA (C) = EKB (M )
C

Bob

M = EKB (C)
Tab. 3.12: Envoi de message intercept par le Man-in-the-middle. e

Ainsi, Alice et Bob croient senvoyer des messages secrets, alors que Oscar les intercepte et les dcrypte au milieu ! Ainsi, Oscar est non seulement capable e dobtenir en clair tous les changes entre Alice et Bob, mais en outre il peut e modier ces changes. En eet, rien de lempche, au milieu, de remplacer le e e message envoy par Alice par une information de son cru. e Dans la suite, nous dcrivons dirents protocoles ` clef secr`te et ` clef pue e a e a blique dvelopps pour parer cette attaque. e e

192

Chapitre 3 : Cryptologie

3.6.3

Kerberos : un distributeur de clefs secr`tes e

Pour se mettre daccord sur les fonctions de chirement et dchirement E et e D, la solution la plus sre est quAlice et Bob se rencontrent physiquement. u Le protocole de Die-Hellman permet dviter cette rencontre physique, mais e sa faiblesse est quun adversaire actif plac entre Alice et Bob peut intercepter e toutes les communications. Une solution pour viter de trop nombreux changes, tout en se prmunissant e e e contre lattaque Man-in-the-middle , est dintroduire une tierce personne. Dvelopp par le Massashusetts Institute of Technilogy, Kerberos est un syse e t`me dauthentication scuris ` tierce personne de conance (ou TA pour e e e a Trusted Authority) conu pour les rseaux TCP/IP. Il ne sagit pas en revanche c e dun syst`me dautorisation dacc`s aux ressources, bien que des extensions e e existent en ce sens. La distribution MIT de Kerberos est libre. Ce syst`me partage avec chaque entit U du rseau une clef secr`te KU (un e e e e mot de passe dans le cas dun utilisateur) et la connaissance de cette clef tient lieu de preuve didentit. Lauthentication est ngocie par le biais dun tiers e e e de conance : le centre de distribution des clefs, Key Distribution Center (KDC). Kerberos regroupe un certain nombre de fonctionnalits : e lauthentication est scurise ; e e il ny a pas de transmission de mot de passe sur le rseau ; e lauthentication est unique : lutilisateur nentre son mot de passe quune seule fois (pour une priode de temps donne, 1 jour par exemple) pour e e se connecter plusieurs fois aux services distant (cest un principe appel e Single Sign On en anglais). lauthentication est gre de faon centralise ; ee c e cest un standard support par de nombreux syst`mes dexploitation (en e e particulier Windows ). Kerberos identie les utilisateurs du syst`me (une personne physique, un sere veur ou un service) par un triplet <nom, rle, domaine> (ou domaine identie o le domaine dadministration associ ` au moins un serveur Kerberos), plus prea e cisment sous la forme dune cha nom/r^le@domaine. Ainsi, une personne e ne o physique sera identie par la cha login/sta@DOMAIN. Dans le cadre e ne dun service, on prfrera rfrencer le serveur qui fournit le service : on idenee ee tiera ce dernier par la cha service/hostname@DOMAIN. ne Prsentation gnrale du protocole Kerberos e e e Kerberos est fond sur lutilisation de tickets qui serviront ` convaincre une e a entit de lidentit dune autre entit. Il cre galement des clefs de session qui e e e e e sont donnes ` deux participants et qui servent ` chirer les donnes entre ces e a a e deux participants, suivant les tapes de la gure 3.24. e

3.6 Protocoles usuels de gestion de clefs


KDC : Key Distribution Center
(1) KRB_AS_REQ : demande dun ticket pour TGS

193

Base de donnes des clients et de leurs cls AS : Authentification Server

(2) KRB_AS_REP : ticket pour le TGS

TGS : TicketGranting Service


ALICE KA
(4) KRB_TGS_REP : ticket pour Bob (3) KRB_TGS_REQ : demande dun ticket pour Bob

Ktgs

(1) : a,tgs
(5) KRB_AP_REQ : Demande dun service

BOB
KB

(2) : Ka { Ka,tgs }, Ta,tgs (3) : A a,tgs ,b, Ta,tgs (4) : Ka,tgs { Ka,b}, T a,b (5) : A a,b , T a,b (6) : Ka,b {t+1}

(6) KRB_AP_REP : Rponse de Bob

Fig. 3.24: Les tapes dauthentication Kerberos. e

On distingue deux types daccrditations : e les tickets qui servent ` donner au futur destinataire, (Bob ou le TGS, a Ticket-Granting Service) de mani`re sre, lidentit de lexpditeur (Alice) e u e e a ` qui le ticket a t fourni. Il contient galement des informations que le ee e destinataire peut utiliser pour sassurer que lexpditeur qui utilise le ticket e est bien celui ` qui le ticket a t dlivr. a ee e e les authentiants qui sont des accrditations supplmentaires prsentes e e e e avec le ticket. Un ticket prendra la forme suivante : Ta,s = s, EKs (ida , t, tend , Ka,s ) Il contient donc le nom du service s quAlice souhaite utiliser (TGS ou Bob) ainsi quune liste dinformations chires avec la clef secr`te du service (quil e e sera donc le seul ` pouvoir dchirer), plus prcisment : a e e e lidentit dAlice ida , e la date de la demande t, la date de n de validit du ticket tend , e enn (et surtout) une clef de session Ka,s qui sera utilise dune part pour e lauthentiant (voir ci-apr`s) et dautre part pour chirer les futures come munications entre Alice et le service s. Bien quAlice ne puisse pas dchirer le ticket (il est chir avec la clef secr`te e e e Ks ), elle peut nanmoins le donner chir ` s. e ea

194

Chapitre 3 : Cryptologie

Parall`lement aux tickets, Kerberos utilise donc des authentiants qui revtent e e la forme suivante : Aa,s = EKa,s (ida , t) Alice lengendre chaque fois quelle veut utiliser un service s (TGS ou Bob). Contrairement au ticket quAlice peut utiliser plusieurs fois pour accder au e service jusqu` lexpiration du ticket, un authentiant est unique et ne peut a tre utilis quune seule fois. On notera cependant que dans la mesure o` Alice e e u poss`de la clef de session Ka,s , elle sera capable den gnrer autant de fois e e e que ncessaire. e Dtail des messages Kerberos e La gure 3.24 prsente les dirents messages qui sont changs. Pour rsumer : e e e e e Les messages 1 et 2 permettent lobtention du premier ticket quAlice devra prsenter ensuite au TGS ` chaque fois quelle souhaite contacter un e a destinataire. Les messages 3 et 4 permettent lobtention dun ticket de service quAlice devra prsenter ` Bob pour une demande de service. e a Les messages 5 et 6 correspondent ` la demande de service quAlice formule a a ` Bob et la rponse de ce dernier. Cette tape permet comme on va le voir e e de garantir lauthentication mutuelle dAlice et de Bob et de leur fournir une clef de session qui leur permettra de chirer leurs futurs messages. Cest en ce sens quil faut prendre la notion de service. On dtaille maintenant le contenu explicite de ces messages : e a 1. KRB AS REQ = [a ; tgs] : ce message sert simplement dintroduction ` Alice. Elle y prcise son nom et quel TGS elle souhaite rencontrer4 . e 2. KRB AS REP = [EKa (Ka,tgs ) ; Ta,tgs ] : le serveur dauthentication5 cherche le client dans sa base de donnes. Sil le trouve, il engendre e une clef de session Ka,tgs qui devra tre utilise entre Alice et le TGS. e e Cette clef est dune part chire avec la clef secr`te Ka dAlice6 : cest e e la premi`re partie du message (EKa (Ka,tgs )). Ensuite, il cre un ticket e e Ta,tgs pour Alice an que celle-ci puisse sauthentier aupr`s du TGS. e Comme on la dj` vu, ce ticket est chir avec la clef secr`te Ktgs du ea e e TGS. Alice ne pourra pas le dchirer mais pourra le prsenter tel quel e e a ` chaque requte au TGS. Dans ce cas particulier, le ticket est appel e e TGT. Il est important de noter que seule la vritable Alice est capable e de rcuprer la clef de session Ka,tgs (elle est la seule ` possder la clef e e a e
4

Il peut y en avoir plusieurs. AS sur la gure 3.24. 6 Sil sagit dun utilisateur humain, Ka correspond au hachage de son mot de passe.
5

3.6 Protocoles usuels de gestion de clefs

195

secr`te Ka ). Ainsi, Alice dispose maintenant de la clef de session Ka,tgs e et du TGT Ta,tgs . 3. KRB TGS REQ = [Aa,tgs ; b ; Ta,tgs ] : Alice doit maintenant obtenir un nouveau ticket pour chaque Bob quelle souhaite contacter. Pour cela, Alice contacte le TGS en lui fournissant dune part le ticket TGT Ta,tgs quelle poss`de dj`, et un authentiant Aa,tgs dautre part (en plus e ea du nom du serveur quelle souhaite contacter). Lauthentiant poss`de e des informations formates vriables ` partir du ticket par le TGS et e e a comme ces informations sont chires avec la clef de session Ka,tgs , cela e prouve au moins quAlice la conna et donc lauthentie (do` le nom t u dauthentiant donn ` Aa,tgs ). ea 4. KRB TGS REP = [EKa,tgs (Ka,b ) ; Ta,b ] : grce ` sa clef secr`te Ktgs , le a a e TGS dchire le ticket, rcup`re la clef de session Ka,tgs et peut ainsi e e e dchirer lauthentiant Aa,tgs . Il compare le contenu de lauthentiant e avec les informations contenues dans le ticket et, si tout concorde (Alice est authentie), il peut engendrer une clef de session Ka,b (qui sera e utilise entre Alice et Bob) quil chire avec la clef de session Ka,tgs et e un nouveau ticket Ta,b quAlice devra prsenter ` Bob. Apr`s rception e a e e de ce message et dchirement, Alice dispose donc en plus de Ka,tgs et e de Ta,tgs (quelle conserve jusqu` expiration du ticket pour dialoguer a avec TGS) dune nouvelle clef de session Ka,b et dun nouveau ticket Ta,b quelle pourra utiliser avec Bob. e a 5. KRB AP REQ = [Aa,b ; Ta,b ] : maintenant, Alice est prte ` sauthentier aupr`s de Bob ; cela seectue de la mme mani`re quentre Alice e e e et le TGS7 (cf message KRB TGS REQ). 6. KRB AP REP = [EKa,b (t + 1)] : Bob doit maintenant sauthentier en prouvant quil a pu dchirer le ticket Ta,b et donc quil poss`de la clef e e de session Ka,b . Il faut quil renvoie une information vriable par Alice e chire avec cette clef. En vriant cela, Alice est maintenant sre de e e u lidentit de Bob et dispose dune clef de session Ka,b utilisable pour e chirer les communications entre Alice et Bob. Les faiblesses de Kerberos Attaque par rptition : bien que les datations soient supposes viter cela, e e e e les messages peuvent tre rejous pendant la dure de vie des tickets (environ e e e 8 heures par dfaut). e Services de datation : les authentiants dpendent du fait que toutes les e horloges du rseau soient plus ou moins synchronises. Si lon peut tromper e e
7

Bob nest rien dautre quun serveur particulier.

196

Chapitre 3 : Cryptologie

un ordinateur quant ` lheure relle, alors les anciens authentiants peuvent a e tre rejous. La plupart des protocoles de maintien du temps en rseau ne e e e sont pas srs, ce qui peut donc tre un srieux dfaut. u e e e Paris de mots de passe : il sagirait pour un intrus de collectionner les pree mi`res moitis du message KRB AS REP (EKa (Ka,tgs )) pour prvoir la vae e leur de Ka (en gnral, Ka = H(P assword)). En pariant sur le mot de e e passe P , lintrus peut calculer Ka , dchirer et obtenir Ka,tgs et vrier la e e pertinence de son choix en dchirant lauthentiant Aa,tgs = EKa,tgs (ida , t) e dont il conna le contenu (il conna au moins ida ). t t Usurpation de login : (ou spoong en anglais) on peut envisager une attaque o` tous les logiciels Kerberos clients sont remplacs par une version u e qui non seulement ralise le protocole Kerberos mais enregistre galement e e les mots de passe. Enn, le KDC poss`de les clefs de tous les utilisateurs et de tous les serveurs. e Si cela permet de rduire le nombre total de clefs secr`tes (tous les utilisateurs e e devraient sinon avoir une clef pour chaque serveur et vice-versa), cela induit que si le KDC est attaqu avec succ`s, toutes les clefs doivent tre changes. e e e e Les architectures ` clefs publiques permettent de pallier ce dernier probl`me. a e Exercice 3.27 (Attaque du protocole de Needham-Schroeder). Alice et Bob veulent schanger une clef de session et Ivan partage une clef secr`te e e I1 avec Alice et une clef secr`te I2 avec Bob. Le protocole de Needham et e Schroeder est le suivant : 1. Alice envoie (Alice||Bob||Random1 ) ` Ivan. a 2. Ivan cre une clef de session K et envoie e EI1 (Random1 ||Bob||K||EI2 (K||Alice)) ` Alice. a 3. Alice envoie EI2 (K||Alice) ` Bob. a 4. Bob envoie EK (Random2 ) ` Alice. a 5. Alice envoie EK (Random2 1) ` Bob. a ` quoi sert Random1 ? a. A ` b. A quoi sert Random2 et pourquoi Alice renvoie-t-elle Random2 1 ? c. Un probl`me de scurit avec ce protocole est que les vieilles clefs de session e e e ont de la valeur. Si Eve est capable dcouter les messages changs et e e e a pu obtenir une ancienne clef de session, indiquer comment elle peut convaincre Bob quelle est Alice. d. Que faudrait-il ajouter aux messages pour viter cet cueil ? Est-ce susant e e et ` quoi ressemble le protocole ainsi obtenu ? a e. Dans le syst`me obtenu, un utilisateur na pas besoin de sauthentier aue pr`s du KDC chaque fois quil dsire accder ` un service. Pourquoi ? e e e a Quelle est la faiblesse de cette mthode ? e

3.6 Protocoles usuels de gestion de clefs

197

f. Dans ce syst`me, Ivan poss`de une liste des clefs symtriques (ou des eme e e preintes des mots de passe) de tous ses clients. Que pourrait-il se passer en cas de vol de cette liste ? Comment se prmunir contre un tel danger ? e Solution page 309. Pour pallier le probl`me du vol des clefs, une solution serait de prfrer un e ee syst`me ` clef publique pour lauthentication. Ce syst`me est propos dans e a e e la section suivante.

3.6.4

Authentication ` clef publique a

Supposons que A veuille envoyer un message secret M ` B. A doit alors avoir a acc`s ` EB , la fonction de transformation publique de B. A va chirer M , e a C = EB (M ) et envoyer le rsultat C ` B. e a ` A la rception, B va utiliser sa fonction prive de transformation DB pour e e dchirer. Si la transmission de A est espionne, lintrus ne pourra pas dchife e e frer C car la fonction DB est secr`te donc la condentialit est assure. Par e e e contre, comme EB est publique, B na aucun moyen de conna lidentit de tre e lenvoyeur. De mme le message envoy par A peut tre altr. Les proprie e e ee e ts dauthentication et dintgrit ne sont donc pas assures. Pour quelles le e e e e soient, les transformations doivent satisfaire la proprit E(D(M )) = M . En ee eet, supposons que A veuille envoyer un message authenti M ` B. Cela e a signie que B doit pouvoir vrier que le message a bien t envoy par A et e ee e quil na pas t altr en chemin. Pour cela A va utiliser sa transformation ee ee prive DA , calculer M = DA (M ) et envoyer M ` B. B peut alors utiliser la e a transformation publique EA pour calculer EA (M ) = EA (DA (M )) = M . En supposant que M reprsente un texte valide (au sens du protocole e utilis), B est sr que le message a t envoy par A et na pas subi daltrations e u ee e e pendant le transport. Cela vient de la nature unidirectionnelle de EA : si un attaquant pouvait, ` partir dun message M , trouver M tel que EA (M ) = M a cela signierait quil peut calculer linverse de la fonction EA ce qui est une contradiction. Par contre dans ce cas le secret nest pas assur car tout le e monde peut accder ` EA et donc dchirer le message. e a e Lexercice suivant contient le principe de lauthentication ` clef publique. Il a est assez simple pour que vous puissiez le dcouvrir ` ce stade, en fonction des e a contraintes qui viennent dtre dcrites. e e Exercice 3.28 (Principe de lauthentication ` clef publique). En a utilisant les fonctions EA , DA , EB et DB trouver un couple de fonctions de chirement et dchirement satisfaisant ` la fois le secret et lauthentication. e a Solution page 310.

198

Chapitre 3 : Cryptologie

Exercice 3.29 (Cryptographie RSA et authentication). Un professeur envoie ses notes au secrtariat de lcole par mail. La clef publique du e e professeur est (eP , nP ) = (3, 55), celle du secrtariat (eS , nS ) = (3, 33). e 1. Dterminer la cl prive du professeur et du secrtariat de lcole. e e e e e 2. Pour assurer la condentialit de ses messages, le professeur chire les e notes avec la clef RSA du secrtariat. Quel message chir correspond e e ` la note 12 ? a 3. Pour assurer lauthenticit de ses messages, le professeur signe chaque e note avec sa cl prive et chire le rsultat avec la clef RSA du see e e crtariat. Le secrtariat reoit ainsi le message 23. Quelle est la note e e c correspondante ? Solution page 311.

3.6.5

Infrastructures ` clefs publiques : PGP et PKI X a

Une architecture PKI (pour Public Key Infrastructure) est un ensemble dinfrastructures permettant de raliser eectivement des changes scuriss. En e e e e eet, une fois dnis des algorithmes complexes utilisant par exemple des clefs e publiques, le premier probl`me pratique qui se pose est comment rattacher e une clef publique ` son propritaire ? . Lide des PKI est dabord de ne pas a e e distribuer des clefs mais plutt des certicats numriques contenant ces clefs o e ainsi que des donnes didentit (tat civil, adresse, adresse mail pour une e e e personne, nom de domaine ou adresse IP pour un serveur...). Ensuite, les PKI sont des structures prcises assurant en particulier la cration et la gestion de e e ces certicats. Exercice 3.30 (Numros de carte bleue jetables). Une banque poss`de e e un mcanisme de numros jetables de carte bleue. Un utilisateur a reu par e e c courrier classique un code pour gnrer de tels numros sur le site internet de e e e sa banque. 1. Quand lutilisateur demande de gnrer un numro jetable, quel est le e e e type dauthentication que cela entra ? ne 2. En dduire une attaque permettant de rcuprer le code. e e e 3. Comment la banque peut-elle en fait contrer cette attaque ? Solution page 311. Principe gnral e e Pour sauthentier, une entit cherche ` prouver quelle poss`de une infore a e mation secr`te qui ne peut tre connue que par elle seule. Dans le cas dune e e

3.6 Protocoles usuels de gestion de clefs

199

PKI, une entit (par exemple Alice) gn`re un couple clef publique/clef prive. e e e e Alice conserve sa clef prive (soit dans un rpertoire accessible par elle seule ou e e mieux sur une carte ` puce ou une clef USB). Ensuite, il sagit de rendre sa clef a publique disponible pour toute personne dsireuse deectuer une transaction e avec elle. Pour cela, Alice va utiliser un tiers de conance (un CA : voir paragraphe suivant) pour crer un certicat. Un certicat est un document numrique e e qui contient au moins les coordonnes personnelles dAlice, ainsi que sa clef e publique. Ce document est sign par le CA. Cette signature sert ` certier e a lorigine du certicat ainsi que son intgrit. e e La gure 3.25 illustre les tapes de la cration dun certicat. Il reste encore e e ` savoir comment vrier lauthenticit du tiers de conance. En pratique, ce a e e tiers poss`de galement un certicat sign par un autre tiers etc... Le dernier de e e e cette cha de certicats devra alors se signer lui-mme. Nous parlerons alors ne e de certicat auto-sign ou certicat racine. Pour augmenter la conance quun e utilisateur pourra placer en eux, ces certicats racines devront faire lobjet de certications croises avec dautres CA. e
Gnration dune paire de cls Cl prive

11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111 00000000
Cl publique

Alice

1111 0000 Cl 1111 0000 1111 0000 1111 0000 publique


Certificat de la cl publique dAlice CA Coordonne du porteur (nom : Alice ...)

Requte de certificat

CA

=
Signature du certificat par le CA

ANNUAIRE

Fig. 3.25: Principe de la cration des certicats. e

Une PKI donc est un ensemble de technologies, organisations, procdures et e pratiques qui supporte limplmentation et lexploitation de certicats bass e e sur la cryptographie ` clef publique. Cest donc un ensemble de syst`mes foura e nissant des services relatifs aux certicats numriques. Elle fournit les moyens e dutiliser ces certicats pour lauthentication entre entits. Il existe un stane dard pour ce mcanisme qui sera expos dans la gure 3.31. e e

200 Les lments de linfrastructure ee

Chapitre 3 : Cryptologie

Une PKI doit dabord fournir un certain nombre de fonctions dont les principales sont les suivantes : mettre des certicats ` des entits pralablement e a e e authenties ; rvoquer des certicats, les maintenir ; tablir, publier et respece e e ter des pratiques de certication pour tablir un espace de conance ; rendre e les certicats publics par le biais de services dannuaires ; ventuellement, grer e e les clefs et fournir des services darchivage. Dans ce dernier cas les services ` a rendre aux utilisateurs sont de trois types : 1. Gestion des clefs. Une architecture peut assurer la gestion de la cration, e la distribution, le stockage, lutilisation, le recouvrement, larchivage et la destruction des clefs (couples publiques/privs, ou clef secr`te de chife e frement symtrique). e 2. Mise en commun des clefs. Cela est ralis par exemple par le protocole e e de Die et Hellman de la section 3.6.2. 3. Transport des clefs, par exemple par RSA comme dans la section 3.6.4. Par exemple, la procdure dmission est normalise et doit suivre les die e e e rentes tapes de la gure 3.26. e
Autre entit utilisant les certificats (Bob)
(5) (Eventuellement) CA fournit le certificat Alice Utilisateur de la PKI Administration de la PKI Consultation

Entit (Alice)

(1) Requete de certificat

(2) Authentification du demandeur

RA Annuaire Certificats + CRL


(4) CA publie le certificat

(3) Requete de certificat

CA

Fig. 3.26: Emission dun certicat.

Les acteurs dune PKI. On distingue direntes entits : e e Le dtenteur dun certicat : cest une entit qui poss`de une clef prive et est e e e e le sujet dun certicat numrique contenant la clef publique correspondante. e

3.6 Protocoles usuels de gestion de clefs

201

Il peut sagir dune personne physique, dun serveur Web, dun quipement e rseau etc... e Lutilisateur dun certicat : celui-ci rcup`re le certicat et utilise la clef e e publique quil contient dans sa transaction avec le dtenteur du certicat. e L Autorit de Certication (CA, Certication Authority) : cest un ene semble de ressources (logicielles et/ou matrielles) et de personnels dni e e par son nom et sa clef publique qui : gn`re des certicats ; e e met et maintient les informations sur les Listes de Rvocation des Cere e ticats (CRL, Certication Revocation List) ; publie les certicats non encore expirs ; e maintient les archives concernant les certicats expirs et rvoqus. e e e Cest galement lentit juridique et morale dune PKI. e e L Autorit denregistrement (RA, Registration Authority) : cest linterme e diaire entre le dtenteur de la clef et le CA. Il vrie les requtes des utilisae e e teurs et les transmet au CA (le niveau de vrication dpend de la politique e e de scurit mise en uvre). Chaque CA a une liste de RA accrdits. Un e e e e RA est connu dun CA par son nom et sa clef publique, ce dernier vriant e les informations fournies par un RA par le biais de sa signature. Lmetteur de CRL : lmission des listes de rvocation peut tre dlgue e e e e ee e hors du CA ` une entit spcialise. a e e e le Dpt ou Annuaire (Repository) qui se charge quand ` lui de : e o a distribuer les certicats et les CRL. accepter les certicats et les CRL dautres CA et les rend disponibles aux utilisateurs. Il est connu par son adresse et son protocole dacc`s. e LArchive se charge du stockage sur le long terme des informations pour le compte dun CA. Cela permet de rgler les litiges en sachant quel certicat e tait valable ` telle poque. e a e De cette organisation il ressort que llment central dune PKI est lautorit de ee e Certication. Une question lgitime est donc : Pourquoi faut-il des autorits e e denregistrement ? . Deux types de facteurs interviennent : 1. Des lments techniques. ee Des algorithmes ecaces sont ncessaires ` la cration et ` la gese a e a tion des clefs. Un RA peut fournir ces implmentations, logicielles ou e matrielles, aux utilisateurs qui nen disposent pas. e Les utilisateurs ne sont pas forcment capables de publier leurs certie cats. Le RA peut mettre une rvocation signe mme si un utilisateur a e e e e perdu toutes ses clefs (le RA est lui sens ne pas perdre les siennes !). e Le RA est donc un intermdiaire sr. e u

202

Chapitre 3 : Cryptologie

2. Une organisation simplie. e Il est moins cher dquiper un RA que tous les utilisateurs. e Le nombre de CA ncessaires est rduit par le regroupement de fonce e tions simples. La proximit avec les utilisateurs est augmente. e e Souvent des structures prexistantes peuvent faire oce de RA. e Cependant, sparer le CA et le RA est en gnral moins sr que de centraliser e e e u tout dans un CA : un utilisateur et un RA peuvent en eet se mettre daccord, mais le RA transmet ensuite au CA. Le CA, ayant la dcision nale, peut e falsier les informations. La scurit reste donc dans la conance en le CA. e e Les certicats lectroniques e Il existe plusieurs normes pour les PKI, la plupart en cours dvolution. Des e exemples dinfrastructures ` clef publiques faisant actuellement lobjet dune a normalisation ` lIETF (The Internet Engineering Task Force) sont PKIX a (Public Key Infrastructure X.509), SPKI (Simple Public Key Infrastructure) ou encore SDSI (Simple Distributed Security Infrastructure). Chaque infrastructure dnit souvent son propre format de certicat. Dans la suite, nous e prsentons le principal format utilis : la norme X.509. La gure 3.27 donne e e lallure dun certicat au format X.509.
Information
C (country) : France L (Locality) : Grenoble ST : (State or Province) : Isre O (Organisation) : INRIA SO (Organizational Unit) : icluster CN (Common Name) : Icluster_CA STREET (Adress): 50 av Jean KuntzMann E (Email) : ca@inria.imag.fr C (country) : France L (Locality) : Grenoble ST : (State or Province) : Isre O (Organisation) : INRIA SO (Organizational Unit) : Labo IDIMAG CN (Common Name) : Sebastien Varrette STREET (Adress): 51 av Jean KuntzMann E (Email) : sebastien.varrette@imag.fr

Certificat Numrique X.509


v3 (0x2) 14 (0xE) md5WithRSAEncryption

Version Serial Number Signature Algorithm ID Issuer Name Validity Priod


Start Date/Time End Date/Time

Version Serial Number Signature Algorithm ID Issuer Name

Not Before : Jun 8 14:52:40 2003 GMT Not After Jun 7 14:52:40 2004 GMT Public Key Algorithm : rsaEncryption RSA Public Key (1024bit) Modulus (1024 bits) : 00:b3:e4:4f:....... Exponent : 65537 (0x10001)

Validity Priod
Start Date/Time End Date/Time

Subject Name Subjet Public Key Info :


Algorithm ID Public Key Value

Subject Name Subjet Public Key Info :


Algorithm ID Public Key Value

Issuer Unique ID Subject Unique ID Extension

Issuer Unique ID Subject Unique ID Extension Signature


Algorithm ID

Cl prive du CA Signature

Signature Value

Fig. 3.27: Gnration et contenu dun certicat X.509. e e

3.6 Protocoles usuels de gestion de clefs

203

Cette gure illustre par des exemples la valeur des principaux champs qui composent ce certicat. On notera sur les exemples de Distinguished Name (DN) (champs Issuer name et Subject Name ) la liste des sous-champs qui composent ces DN. Ils permettent de localiser tr`s prcisment les entits e e e e associes. e Une fois quun certicat a t mis et dpos dans un annuaire, les autres ee e e e utilisateurs peuvent venir interroger lannuaire pour rcuprer puis vrier e e e des certicats, comme par exemple sur la gure 3.28, ou encore consulter les CRL.
Certificat sign
Sujet : Alice Clef pub : KpubA metteur : Ivan Signature : s 7) Clef : OK Certificat
Sujet : Alice
Clef pub : KpubA

1) Rcupration

2) Extraction

metteur : Ivan

Fonction de Hachage 6) Algorithme de Vrification de la signature

Cl publique

1111 0000 1111 0000 1111 0000 Alice 1111 0000 1111 0000 1111 0000

Signature

Bob

metteur == Ivan

Cl publique

1111 0000 1111 0000 1111 0000 Ivan 1111 0000 1111 0000 1111 0000

Certificat Racine
Sujet: Ivan Clef pub : KpubI metteur : Ivan Signature : r

Certificat
Sujet : Ivan
Clef pub : KpubI

3) Rcupration

4) Extraction

metteur : Ivan

Fonction de Hachage 5) Algorithme de Vrification de la signature

Signature

r
1111 0000 1111 0000 1111 0000 Ivan 1111 0000 1111 0000 1111 0000

Cl publique

Fig. 3.28: Vrication de certicat et extraction de clef publique. e

La norme X.509 a connu plusieurs versions successives motives par des retours e dexpriences (v1 : 1988, v2 : 1993, v3 : 1996). Elle prcise galement le format e e e des Listes de Rvocations de certicats. Celui-ci est tr`s similaire ` celui des e e a certicats : un numro de version, le type des algorithmes utiliss, le nom de e e lmetteur, les dates de validit, la liste de numros de certicats invalide, et e e e la signature du CA. Les certicats et les CRL X-509 sont crits dans un langage de spcications, e e ASN.1 (Abstract Syntax Notation). Parmi les types ASN.1 principaux utiliss e pour les certicats X-509, on peut trouver :

204

Chapitre 3 : Cryptologie

OID (Object Identier) : des nombres spars par des points. Le dpare e e tement de la dfense des USA est par exemple dsign par {1.3.6}. e e e Algorithm Identier : un nom descriptif dalgorithme. Par exemple, 1.2.840.113549.3.7 correspond ` du DES EDE3 CBC ; a 1.2.840.113549.1.1.4 ` md5withRSAEncryption ; 1.2.840.10045.1 ` une sia a gnature par courbe elliptique avec un hachage SHA-1 ecdsawithSha1 etc... Directory String : information en texte. Distinguished Names , General names , Time : par exemple les dates sont dnies par Time :=CHOICE { UTCTime, GeneralizedTime e } , o` UTCTime est valide entre 1950 et 2049 et le GeneralizedTime u apr`s 2050. e Le mod`le PKIX e Le groupe de travail PKIX (PKI for X.509 certicates) de lIETF a t tabli eee ` lautomne 1995 dans le but de dvelopper les standards Internet ncessaires a e e ` une infrastructure reposant sur les certicats X-509. a
Utilisateurs Chargement hors ligne

Annuaire (certificats et rvocations)

Rcupration (certificats/rvocations)

Entit

Publication de certificat

Autorit denregistrement

}
Autorit de Certification 1 Certification croise Autorit de Certification 2

Enregistrement Initialisation Certification Rcupration de Clefs Mise jour de Clefs ^ Requete de rvocation

Publication (certificats/rvocations) Publication de rvocation metteur de CRL

Publication hors ligne

Gestionnaires

Fig. 3.29: Le mod`le PKI pour les certicats X-509. e

La premi`re norme produite, le RFC-2459, dcrit la version 3 des certicats e e

3.6 Protocoles usuels de gestion de clefs

205

X-509 et la version 2 des CRL. Le RFC-2587 sur le stockage des CRL, le RFC3039 sur la politique de certication et le RFC-2527 sur le cadre pratique de certications ont suivi. Enn, le protocole de gestion des certicats, (RFC2510), le statut des certicats en-ligne, (RFC-2560), le format de demande de gestion de certicat (RFC 2511), la datation des certicats (RFC-3161), les messages de gestion de certicats (RFC-2797) et lutilisation de FTP et HTTP pour le transport des oprations de PKI (RFC-2585) sont les autres standards e mis au point par le groupe. Au total, lensemble des fonctions dadministration dune infrastructure ` clef publique a t dni et la gure 3.29 rcapitule les a ee e e structures retenues par le groupe. Exercice 3.31 (OpenSSL - exercice ` raliser sur machine). OpenSSL a e est un ensemble dutilitaires de cryptographie implmentant SSL v2/v3 (Secure e Sockets Layer) et TLS v1 (Transport Layer Security) et les standards quils requi`rent (en particulier ceux des PKI). e 1. Cration dun chier de caract`res alatoires : Sous Linux (depuis la e e e version 1.3.30), il existe un chier, rservoir dentropie, (/dev/urandom, e ` cre ` partir de diffrentes sources alatoires hardware). A laide de dd, e a e e comment crer un chier alatoire .rand dau moins 16ko, avec 16 blocs e e distincts ? 2. Mise en place dun CA8 : Crer un rpertoire demoCA et des sous re e e pertoires private, certs, crl et newcerts. Entrer un numro de srie dans e e le chier demoCA/serial, et crer un chier demoCA/index.txt. Dnir e e les droits dacc`s ` tous ces rpertoires et chiers. e a e (a) Avec openssl genrsa, comment crer une paire de clefs de 4096 e bits en utilisant votre chier alatoire ? Cette clef sera stocke dans e e un chier demoCA/private/cakey.pem et crypte sur le disque par e AES-256 bits. (b) Avec openssl req, comment crer un nouveau certicat racine e auto-sign, ` laide de la clef prcdente ? Ce certicat devra tre au e a e e e format X509, stock dans le chier demoCA/cacert.pem et valable e 365 jours. 3. Certicat utilisateur. Avec openssl, comment crer une paire de clefs RSA de 1024 bits ? e Comment faire une requte de certicat, avec openssl req, en utilie sant cette clef. Cette requte devra contenir galement la clef et tre e e e valable 2 mois. Avec openssl ca, comment demander au CA de rpondre ` votre ree a qute ? Cette requte devra crer un chier certicat newcert.pem et e e e spcier la politique de scurit par dfaut policy_anything. e e e e
8

Tous les noms suivants peuvent tre modis dans le chier openssl.cnf. e e

206

Chapitre 3 : Cryptologie

4. Application ` lenvoi de courriels scuriss. a e e Des clients de courriel (par exemple Thunderbird) utilisent plutt le foro mat PKCS12 pour les certicats au lieu du format X509. Comment ajouter un certicat cr ci-dessus ` un client de ce type ? Que se passe-t-il ee a si la clef prive associe ` ce certicat est perdue ? En particulier : e e a (a) Peut-on toujours envoyer des courriels chirs ? En recevoir ? e (b) Peut-on toujours signer des courriels quon envoie ? Vrier les e signatures des courriels reus ? c Solution page 311. La fonction principale dune PKI est dutiliser des certicats pour authentier des personnes, sans tiers et sans risque de subir une attaque de type Man-inthe-middle. En particulier lenregistrement initial dune entit avec la cration e e et la signature du certicat associ est rgi par le mcanisme suivant de la e e e gure 3.30.
1 [change dune clef initiale iaK]

Alice (Utilisateur)
3 4 Gnration de clefs Requete de certification

Challenge

Bob (CA/RA)

E (Challenge K Requete) iaK pub 6 7 Vrification Challenge Vrification Requete Cration certificats

||

||

E Kpub(Certificat)

10

(Confirmation

||signature K

) priv 11 12 Vrification Signature Vrification Confirmation

Fig. 3.30: Enregistrement authenti. e

Dans ce processus, chaque vrication de certicat est ralise par extraction e e e des informations concernant lmetteur et la vrication des signatures grce e e a ` la clef publique de celui-ci, comme dcrit sur la gure 3.28. Une fois cet enrea e gistrement ralis, les authentications ultrieures sont alors plus simples. La e e e gure 3.31 donne les direntes tapes dauthentication mutuelle (lauthentie e cation unilatrale ne contient pas le dernier message) du protocole FIPS-196. e

3.6 Protocoles usuels de gestion de clefs 1. Alice envoie ` Bob une demande dauthentication a

207

2. Bob gn`re un nombre alatoire Rb quil retient et cre ainsi le jeton e e e e T okenBA1 par : T okenBA1 = Rb Bob lenvoie ` Alice avec ventuellement un jeton didentication. a e 3. Alice gn`re un nombre alatoire Ra quelle retient. Ensuite, elle gn`re e e e e e un jeton dauthentication T okenAB de la forme : T okenAB = Ra ||Rb ||B||Signa (Ra ||Rb ||B) Le jeton contient le message et la signature avec la clef prive. Alice e lenvoie ` Bob avec son certicat (qui contient donc sa clef publique qui a permettra de vrier la signature) et ventuellement un identicateur de e e jeton (en fait, mme lenvoi du certicat est optionnel) e 4. Bob commence par vrier le certicat dAlice (voir gure 3.28). Ensuite, e il peut vrier les informations contenues dans T okenAB ` laide de la e a clef publique dAlice qui est contenue dans le certicat. Apr`s vrication e e de la signature dAlice, celle-ci est authentie aupr`s de Bob. Il lui e e reste ` sauthentier en gnrant lui aussi un jeton dauthentication a e e T okenBA2 par : T okenBA2 = Rb ||Ra ||A||Signb (Rb ||Ra ||A) Bob lenvoie ` Alice avec son certicat et ventuellement avec un idena e ticateur de jeton (mme remarque que prcdemment) e e e ` 5. Alice proc`de de la mme mani`re pour authentier Bob. A la n, il y a e e e donc bien authentication mutuelle.
[Demande dauthentification] 1 2 [TokenID] [TokenID]

|| TokenBA 1
Bob

Alice
3 4 [TokenID]

|| CertA || TokenAB

|| Cert B || TokenBA 2

Fig. 3.31: Authentication par cryptographie ` clef publique. a

Une fois les deux parties authenties, elles peuvent alors utiliser leurs clefs e publiques/prives pour crypter ou signer des messages, sans crainte dune ate taque Man-in-the-middle.

208 Exercice 3.32 (Certicats lectroniques). e

Chapitre 3 : Cryptologie

1. Dcrire les lments essentiels dun certicat numrique. Que comportee ee e t-il et pourquoi ? 2. Expliquer lintrt des certicats numriques. e e e 3. Quest-ce quune politique de certication ? Solution page 312. Architectures non hirarchiques, PGP e ` A la dirence de PKIX, PGP a t conu pour permettre la messagerie se ee c e curise. N avant la prolifration des CA accessibles par internet, PGP a d e e e u rsoudre le probl`me de la dlgation de la conance dans un mod`le none e ee e hirarchique. Au lieu de se reposer sur dirents CA, PGP fait en sorte que e e chaque utilisateur soit son propre CA. Avoir lquivalent dun CA par utilisateur est impossible ! PGP a alors ajout e e la notion de conance : si un utilisateur sait que le certicat de lutilisateur B est valide alors il peut signer le certicat de B. PGP autorise alors un nombre illimit dutilisateurs ` signer un mme certicat, ainsi un vritable rseau de e a e e e connaissances se cre et permet des conances mutuelles. e
Utilisateur

111 000 111 000 111 000 111 000 111 000

111 000 111 000 111 000 111 000 111 000

?
Est sign par

Signataire inconnu Clef juge digne de confiance


111 000 111 000 111 000 111 000 111 000

Signataire de confiance Signataire confiance partielle

Fig. 3.32: Un exemple du mod`le de conance de PGP. e

Dans ce mod`le, la dicult est de retrouver la cha de conance qui lie deux e e ne utilisateurs. La solution lgante propose par PGP est la conance partielle : ee e une signature sur un certicat ne donne quune fraction de la conance en ce certicat et il faut alors plusieurs signataires de conance pour dterminer un e

3.6 Protocoles usuels de gestion de clefs

209

certicat. Lautre dicult de ce syst`me est de bien faire la dirence entre e e e accorder sa conance au certicat dun utilisateur et accorder sa conance ` a un tiers pour signer dautres certicats. Un seul tiers indlicat ou simplement e ngligent peut dtruire le rseau de conance. e e e Enn, il est ` noter que les derni`res versions du mod`le de conance de PGP a e e introduisent une entit mta qui joue nalement galement le rle dun e e e o CA racine an dmuler le fonctionnement hirarchique. e e Exercice 3.33. Dans un mod`le dchange PGP, vous recevez un message e e sign par un certain Oscar. Le certicat dOscar est sign par Bob, dont le e e certicat est sign par Alice, en qui vous avez totalement conance pour signer e des certicats. Que pensez-vous du message reu ? c Solution page 312. Dfauts des PKI e Les PKI ne sont pas la panace, quelques dfauts peuvent tre dcrits : e e e e 1. Plusieurs personnes peuvent avoir un mme Distinguished Name . Ce e risque est rduit par laccumulation dinformations (pays, localit, rgion, e e e adresse, courriel, IP, DNS, etc.). Cependant, une question demeure, qui certie ces informations complmentaires ? e 2. Que faut-il exactement comprendre lorsquun CA prtend tre digne de e e conance ? Ce probl`me est rduit par les certications croises, mais e e e il faut que tous les enregistrements soient bien initis hors ligne ( oute of-band en anglais), cest-`-dire sur un canal dirent de celui de la a e communication courante, ou par un moyen non lectronique. e 3. La politique de scurit de lensemble des CA est donc celle du plus e e faible ! 4. Enn, il manque une autorit de datation. e Exercice 3.34. Carl M. Ellison et Bruce Schneier ont crit un article Tout e ce que lon ne vous dit pas au sujet des PKI . Dans cet article, ils prsentent e 10 risques lis ` lutilisation des PKI. Commenter les quatre risques suivants : e a ` 1. Risque n1 : Who do we trust, and for what ? (A qui faisons-nous conance et pour quoi ?). Plus prcisment, la question est de savoir qui e e a donn ` un CA lautorit de signer des certicats et quelle est la notion ea e de conance. Commenter pour les scnarios : PKI au sein dune seule e entreprise ; PKI entre une entreprise et ses clients/liales ; PKI gre e e par une entreprise spcialise (VeriSign, RSA Security, etc.) pour une e e entreprise tiers. 2. Risque n2 : Who is using my key ? (Qui utilise ma clef ). Plus pre cisment, comment protger les clefs secr`tes ? e e e

210

Chapitre 3 : Cryptologie

3. Risque n4 : Which John Robinson is he ? (Quel Jean Martin estce ?). Plus prcisment, comment traiter les dirents Jean Martin cone e e nus par un CA ? 4. Risque n9 : How secure are the certicate practices ? (Quelle est la scurit des pratiques de certication ?). Par exemple : e e (a) Sur quels crit`res tablir des dures de validit de clefs ? e e e e (b) Comment tablir les longueurs de clefs, de hachage ? e (c) Faut-il faire des CRL ? (d) Plus gnralement comment savoir quelles sont les pratiques de cere e tication dune autorit ? e Solution page 312. En conclusion, il est ncessaire de bien dnir la politique de scurit et, au e e e e nal, les dfauts des PKI sont quasiment tous rsolus si une PKI est restreinte e e ` une seule entit administrative (e.g. une seule entreprise) et restent raisona e nables lorsque quelques-unes de ces entits interagissent. e

3.6.6

Un utilitaire de scurisation de canal, SSH e

Malgr la relative simplicit des fonctions D et E dans le cadre de RSA ou de e e El Gamal, elles ne sont pas aussi rapides ` calculer que leurs quivalents pour a e le DES : lexponentiation modulaire est une opration plus coteuse en temps e u que des permutations ou des recherches dans une table lorsque p est grand. Cela rend plus complique la conception dun composant lectronique destin e e e ` chirer et dchirer rapidement en utilisant cette approche. Un algorithme a e de type RSA est environ 10,000 fois plus lent quun DES. La solution pour un chirement ecace rside dans lutilisation conjointe de e syst`mes de chirement symtrique et asymtrique. Ainsi, le syst`me PGP e e e e chire un message avec le protocole suivant : 1. Le texte source est chir avec une clef K de type 3-DES. e 2. La clef K est chire selon le principe RSA avec la clef publique du e destinataire. 3. Envoi du message compos de la clef K chire par RSA et dun texte e e chir selon un algorithme de type 3-DES. e Le rcepteur eectuera alors les oprations de dchirement suivantes : e e e 1. Dchirement de la clef grce ` la clef prive D en utilisant RSA. e a a e 2. Dchirement du texte en utilisant DES ou IDEA avec la clef K. e Pour lauthentication le principe est un peu dirent : e

3.6 Protocoles usuels de gestion de clefs

211

Gnration dun code qui identie, par un nombre de taille xe, le texte, e e par exemple une fonction de hachage. Chirement de ce code en utilisant RSA avec la clef prive de lmetteur du e e message. Cela permet au correspondant de vrier la validit du message et lidentit e e e de lmetteur en utilisant la clef publique de lexpditeur. e e Exercice 3.35. Un groupe de n personnes souhaite utiliser un syst`me crype tographique pour schanger deux ` deux des informations condentielles. Les e a informations changes entre deux membres du groupe ne devront pas pouvoir e e tre lues par un autre membre. e 1. Quel est le nombre minimum de clefs symtriques ncessaires ? e e 2. Quel est le nombre minimum de clefs asymtriques ncessaires ? e e 3. Donner les raisons pour lesquelles ce groupe utilise nalement un syst`me e hybride pour le chirement ? Solution page 313. Comme application du syst`me PGP, citons le programme SSH utilis en re e e seau pour se connecter sur une machine tierce, faire des transferts de chiers et lancer des applications. SSH, un protocole hybride SSH est un protocole scuris de connexion ` distance par des canaux non srs e e a u dans un mod`le client-serveur. e Il se compose de trois parties : 1. une couche transport, qui permet lauthentication du serveur, la condentialit et lintgrit, e e e 2. une couche dauthentication de lutilisateur, 3. un protocole de connexion qui permet le passage de plusieurs canaux logiques. De plus, ce protocole garantit : la condentialit des donnes par un chiree e ment fort ; lintgrit des communications ; lauthentication des entits ; le e e e contrle de privil`ges ; et la mise en place dun canal scuris pour la suite des o e e e communications. Comme PGP, il utilise un protocole ` clef publique pour changer des clefs a e secr`tes utilises par les algorithmes de chirement plus rapides utiliss pour e e e la connexion elle-mme. Commenons par la version SSH-1. e c

212 Authentication du serveur

Chapitre 3 : Cryptologie

Chaque serveur poss`de sa propre clef publique qui lidentie. Le probl`me est e e de diuser cette clef aux clients. Il y a deux stratgies : e Le client maintient une base de donnes de clefs publiques des serveurs e auxquels il se connecte, Il existe un tiers de conance capable de diuser de faon sre les clefs. c u En pratique, pour linstant, lalgorithme consiste ` ce que le serveur envoie a sa clef publique, et lors de la premi`re connexion, le client la stocke dans sa e base (actuellement dans le chier ~/.ssh/known_hosts). Le client compare cette clef avec les clefs reues ultrieurement. Nanmoins, cela autorise quand c e e mme une attaque man-in-the-middle, mme si elle devient plus complexe. e e Pour ajouter un peu de scurit, une signature de la clef est calcule et peut e e e tre facilement change par dautres moyens, tlphone par exemple. e e e ee Etablissement dune connexion scurise e e Elle se droule en plusieurs phases et permet au serveur de fournir de faon se c e curise une clef de session K qui sera utilise par un algorithme de chirement e e ` clef secr`te : a e 1. Le client contacte le serveur. Il sagit simplement pour le client dmettre e une demande de connexion sur le port TCP du serveur (le port 22). 2. Le client et le serveur schangent les versions du protocole SSH quils e supportent. Ces protocoles sont reprsents par une cha ASCII e e ne (ex : SSH-1.5-1.2.27). 3. Le serveur et le client passent ` une communication par paquets formats. a e Le format des paquets est explicit dans la gure 3.33. e
Taille (octets)

4 Longueur

18 Ajustement

1 Type Donnes

4 Vrification

Fig. 3.33: Format dun paquet SSH.

Voici la signication des dirents champs de ce paquet : e Longueur : il sagit de la taille du paquet (sans compter les champs Longueur et Ajustement ) code sous forme dun entier de 32 e bits.

3.6 Protocoles usuels de gestion de clefs

213

Ajustement : il sagit de donnes alatoires dont la longueur varie de e e 1 ` 8 octets ; plus prcisment, la longueur est donne par la formule : a e e e 8 (Longueur mod 8). Ce champ permet de rendre les attaques ` a texte clair choisi dicilement exploitables. Type : spcie le type de paquet. e Donnes : les donnes transmises. e e Vrication : il sagit de quatre octets calculs par codes de redone e dance cycliques (CRC), voir la section 4.2 pour la construction dun CRC. Ce sont les champs Ajustement , Type , Donnes et Vrie e cation qui seront chirs d`s quune clef de session aura t tablie. e e eee 4. Le serveur sidentie au client et fournit les param`tres de session. Le e serveur envoie les informations suivantes au client (toujours en clair ) : une clef hte (publique) H (qui est LA clef publique du serveur) ; o une clef serveur (publique) S (une paire de clef RSA est rgnre e e ee toutes les heures) ; une squence C de 8 octets alatoires (octets de contrle) : le client e e o devra inclure ces octets dans la prochaine rponse sous peine de rejet ; e la liste des mthodes de chirement, de compression et dauthenticae tion supportes. e 5. Le client envoie au serveur une clef secr`te de session. Le client choisit e une mthode M de chirement supporte par les deux parties (IDEA e e en mode CFB, DES en mode CBC, et RC4 par exemple pour SSH-1 ; 3-DES et AES en mode CBC pour les versions plus rcentes), puis gn`re e e e alatoirement une clef de session K et envoie [M, C, EH (ES (K))]. Ainsi, e seul le serveur sera capable de dchirer K, car seul le serveur conna e t la clef prive associe ` H. Le deuxi`me cryptage par S assure que le e e a e message na pas t rejou puisque S nest valide que pendant une heure. ee e Le client et le serveur calculent galement chacun de leur ct un idene oe ticateur de session (IdS ) qui identie de mani`re unique la session et e qui sera utilis plus tard. e 6. Chaque entit met en place le chirement et compl`te lauthentication e e du serveur. Apr`s avoir envoy sa clef de session, le client devra attendre e e un message de conrmation du serveur (chir ` laide de la clef de e a session K), qui ach`vera dauthentier le serveur aupr`s du client (seul e e le serveur attendu est capable de dchirer la clef de session). e 7. La connexion scurise est tablie : le client et le serveur disposent dune e e e clef secr`te de session qui leur permet de chirer et de dchirer leurs e e messages.

214 Authentication du client

Chapitre 3 : Cryptologie

Une fois quune connexion scurise a t mise en place, le client peut saue e ee thentier au serveur. Cette authentication peut seectuer par utilisation du nom de lhte (utilisant le chier ~/.rhosts, mthode peu satisfaisante en o e termes de scurit), par mot de passe, ou par clef publique. e e Dans ce dernier cas, le client gn`re ` laide de la commande ssh-keygen les e e a chiers ~/.ssh/identity (qui contiendra la clef secr`te RSA d et qui est proe tge par une phrase de passe ) et ~/.ssh/identity.pub (qui contiendra e e la clef publique RSA (e, n)). Le contenu de identity.pub est ajout sur le e serveur au chier ~/.ssh/authorized_keys. Une fois cette tape eectue, le client envoie une requte pour une authentie e e cation par clef publique. Le modulo n est pass en param`tre et sert didentie e cateur. Le serveur peut rejeter la requte sil ne permet pas lauthentication e de cette clef (pas dentre associe dans le chier authorized_keys par exeme e ple). Sinon, il gn`re alatoirement un nombre C de 256 bits et envoie au client e e e C e mod n (chirement RSA avec la clef publique du client). Puis ` laide de sa clef prive D, le client dchire C, le concat`ne avec lidena e e e ticateur de session IdS , calcule lempreinte du tout avec MD5 et envoie cette derni`re au serveur en rponse. Le serveur eectue la mme opration de son e e e e ct et vrie la concordance du rsultat avec ce quil reoit. Cette derni`re oe e e c e vrication ach`ve lauthentication du client. e e

Scurit des algorithmes, intgrit et compression des donnes e e e e e Les algorithmes de cryptage, intgrit et compression sont choisis par les deux e e parties. Les algorithmes utiliss sont bien connus et bien tablis. Nanmoins e e e cela autorise le changement dalgorithme si une faille apparaissait. Comme on la vu, le contrle dintgrit se fait par un simple code de redono e e dance cyclique (section 4.2), ce qui nest pas ecace contre certaines attaques (par exemple lattaque par insertion de Futoransky et Kargieman).Cette faiblesse est en partie ` lorigine du changement de version, et de la cration de a e SSH-2. Dans SSH-2, lintgrit de chaque paquet est vrie en ajoutant des e e e e bits de signature (code dauthentication MAC, voir la section 3.5.2). Ils sont calculs ` partir du numro de squence du paquet (qui ne fait pas partie du e a e e paquet) et de son contenu non chir. e Enn, les donnes peuvent tre compresses par exemple ` laide de lutilitaire e e e a gzip ce qui permet de limiter la bande passante utilise pour la transmission e des paquets.

3.6 Protocoles usuels de gestion de clefs Dirences majeures entre SSH-1 et SSH-2 e

215

La nouvelle version du protocole SSH, SSH-2 fournit : un plus grand choix dans la ngociation dalgorithmes entre le client et le serveur (choix du hachage e etc...) ; la gestion des certicats X.509 pour les clefs publiques ; une plus grande exibilit dans lauthentication (incluant une authentication partielle) ; un e meilleur test dintgrit par chirement ; le remplacement priodique de la clef e e e de session toutes les heures ; les clefs secr`tes sont dsormais de 128 bits, les e e clefs publiques de 1024 bits ; plusieurs mthodes pour lchange de clefs, en e e particulier le protocole de Die-Hellman ... Exercice 3.36 (OpenSSH sous Linux). La commande ssh sous Linux lance un programme pour se connecter sur une machine distante et pour exe cuter des commandes sur cette machine, en suivant le protocole SSH. Dans le rpertoire .ssh, ` la racine du rpertoire utilisateur, ce programme maintient e a e un chier known_hosts des serveurs sur lesquels lutilisateur sest connect. e La premi`re connexion est considre comme sre et les suivantes sont aue e e u thenties par la clef publique stocke dans le chier .ssh/known_hosts. e e 1. Comment rendre cette authentication du serveur sre ? u 2. Plusieurs mthodes dauthentication du client sont alors possibles (clef e publique, mot de passe, clavier) ; comment gnrer une paire clef publique e e / clef prive de type DSA sur 2048 bits avec lutilitaire ssh-keygen ? e 3. Ajouter la clef publique ainsi gnre au chier authorized_keys dans e e e le rpertoire .ssh dun compte tiers ; connectez-vous sur ce compte en e utilisant ssh -v. Que constatez-vous ? 4. Dtruire le chier known_hosts. Se reconnecter sur une autre machine. e ` A quel message doit-on sattendre ? ` 5. Modier le chier known_hosts en changeant une clef publique. A quel message doit-on sattendre ? Solution page 313.

3.6.7

Projets de standardisation et recommandations

Nous conclurons ce chapitre en mentionnant lexistence de projets de standardisation ` travers le monde qui ont pour objectif de fournir des recommandaa tions ` un instant donn sur lutilisation de tel ou tel algorithme. Lexistence a e de ces projets est particuli`rement intressante pour les industriels et les noe e e phytes qui peuvent alors choisir les algorithmes les plus srs et les plus adapts u e ` leurs besoins sans pour autant sinvestir dans leur assimilation. Ces projets a servent galement ` la communaut des chercheurs du domaine puisquune e a e

216

Chapitre 3 : Cryptologie

analyse rigoureuse y est pratique sur les algorithmes que des quipes proe e posent. On dnombre trois principaux projets/organismes. On donne pour chacun e quelques exemples des recommandations pratiques : e 1. Le NIST (National Institute of Standards and Technology) aux EtatsUnis qui, par exemple, recommande depuis 2000 lutilisation de AESRijndael (blocs de 128 bits et clef de 128/192/256 bits) comme algorithme de chirement ` cl secr`te par bloc. a e e 2. Le KICS (Korean Information and Communication Standards) en Core e qui recommande depuis 2001 les algorithmes de chirement ` clef secr`te a e par bloc SEED et ARIA (tous deux avec des blocs et clefs de 128 bits). 3. Nous nirons par le projet europen NESSIE (New European Schemes e for Signatures, Integrity and Encryption) Ce dernier projet est particuli`rement intressant car les plus grands laboe e ratoires de cryptographie dEurope y ont particip et ont permis de dgager e e les algorithmes les plus intressants en les classant par type. Ainsi, NESSIE e recommande depuis 2003 : au niveau des chirement symtriques par blocs : MISTY1 (Blocs de 64 e bits ; clef de 128 bits) ; AES-Rijndael ; Camellia (Blocs de 128 bits ; Clef de 128/192/256 bits) ; et SHACAL-2 (Blocs de 256 bits ; Clef de 512 bits). pour les fonctions de hachage ` sens unique, Whirlpool ; SHA-256 ; SHA-384 a et SHA-512 (on notera la clairvoyance des auteurs qui avaient anticip la e cryptanalyse de SHA-1).

Chapitre 4

Dtection et correction e derreurs


Dans les chapitres prcdents, on supposait toutes les communications sans e e bruit , cest-`-dire quun message mis tait systmatiquement reu tel quel, a e e e c ou du moins les altrations taient dues ` un tiers mal intentionn qui savait e e a e les masquer. En ralit, il faut aussi tenir compte des altrations possibles du e e e message dues au canal de transmission. On appelle taux derreur la probabilit quun bit transmis par le canal soit e dirent du bit mis, cest-`-dire le nombre de bits errons reus par rapport e e a e c au nombre de bits mis. Ce taux derreur dpend de la nature de la ligne e e de transmission. Le tableau 4.1 donne quelques ordres de grandeur du taux derreur selon le canal utilis. Dans le cas dune communication tlphonique, e ee quelle soit locale ou internationale, le taux derreurs dpend du nombre de e rpteurs, du type de support (cble, satellite, etc.) et il peut atteindre 104 e e a (jusqu` une erreur pour 10000 bits transfrs). Les supports de stockage cona ee tiennent eux aussi des erreurs. Par exemple, un chier numrique stock sur e e un CD ou un DVD contient ncessairement des erreurs ayant pour origine la e gravure, la lecture par le laser, mais aussi des imperfections sur le support (poussi`res, rayures, ...). Dans un serveur de stockage distribu, linformation e e est distribue sur plusieurs supports ; il est essentiel de retrouver lensemble e dune information mme si certaines parties sont manquantes ; cest le cas par e exemple lors dune panne de disque dur dans un syst`me RAID ou de pairs e non connects dans un syst`me de stockage pair-`-pair. e e a Par rapport ` une information analogique, un intrt fondamental dune ina ee formation numrique (donc sous forme de symboles discrets comme des bits) e est quil existe des formats de reprsentation des donnes qui permettent de e e retrouver linformation initiale lorsque le taux derreur est born. Dveloppe e e e e au XXi`me si`cle ` partir dun article fondateur de Shannon, la thorie du coe a e

218

e Chapitre 4 : Dtection et correction derreurs


taux derreur 109 : ` 5 Mo/s, 3 bits errons par minute a e 105 : 7ko errons sur un CD de 700 Mo e 105 : ` 48 kHz, deux erreurs par seconde a < 109 entre 104 et 107 1012 109 106 (Voyager), 1011 (TDMA) 103 ` 109 a 1012

ligne Disquette CD-ROM optique DAT audio Mmoires ` semi-conducteurs e a Liaison tlphonique ee Tlcommande infrarouge ee Communication par bre optique Satellite ADSL Rseau informatique e

Tab. 4.1: Ordre de grandeur du taux derreurs.

dage de canal, souvent dnomme thorie des codes, a pour objet ltude et la e e e e construction de telles reprsentations les codes correcteurs qui soient les e plus performantes possibles. Le but de ce chapitre est dintroduire les principaux codes dtecteurs et core recteurs derreurs utiliss en pratique : les codes CRC, Reed-Solomon et turbo. e Les outils mathmatiques sur lesquels sappuient ces codes (arithmtique des e e corps nis et polynmes) sont prsents au chapitre 1. On pourra les consulter o e e au pralable, ou en renvoi lors de leur utilisation. e

4.1
4.1.1

Principe de la dtection et de la correction dere reurs


Codage par blocs

Soit un canal qui transmet des symboles (les caract`res) dun alphabet V . e Pour un canal binaire, chaque symbole est un bit : V = {0, 1}. Soit m V + un message ` transmettre, sous forme dun ot (on suppose le message a source pralablement encod sous forme dune squence de symboles de V , e e e voir chapitre 1). Le codage par blocs de taille k consiste ` dcouper le message m V + en blocs a e Mi de k symboles, en traitant chaque bloc lun apr`s lautre. e Lorsquune squence de k symboles s = [s1 , . . . , sk ] est mise sur le canal, la e e c e squence s = [s1 , . . . , sk ] reue par le destinataire peut direr ; on dit quil y e a eu erreur de transmission. Si si = si , on dit que le symbole i est erron ; si e j symboles sont errons, on dit quil y a eu j erreurs. e Pour se protger contre ces erreurs en les dtectant voire en les corrigeant de e e mani`re automatique, les mthodes de codage par blocs consistent ` ajouter de e e a

4.1 Principe de la dtection et de la correction derreurs e

219

la redondance aux k symboles dinformation du bloc initial. Le codage transforme donc le bloc ` transmettre s = [s1 , . . . , sk ] en un bloc a de n = k + r symboles, (s) = [c1 , . . . , ck , . . . , cn ] qui comporte r symboles de redondance par rapport aux k symboles du message initial. Lensemble C = (s) : s V k , image par de V k , est appel un code(n, k) ; ses lments e ee sont appels mots de code. Pour que le dcodage permette de reconstruire sans e e ambigu e le message source lorsquil ny a pas derreur, la fonction de codage t doit bien sr tre injective. Le rendement R dun code(n, k) est le taux de u e chires de source contenus dans un mot de code : R= k . n

Ainsi, la rception dun mot qui nest pas dans C (i.e. un mot de C = V n \C ) e indique une erreur. La dtection derreur repose alors sur ce test de none appartenance ` C . Suite ` une dtection derreurs, le dcodeur peut vena a e e e tuellement procder ` une correction. On distingue deux types de corrections : e a la correction directe, comme dans le schma ci-dessus : le signal erron reu e e c contient susamment dinformation pour permettre de retrouver le mot mis ; e la correction par retransmission (ou ARQ, Automatic Repeat reQuest) : lorsquune erreur est dtecte mais ne peut pas tre corrige, le rcepteur dee e e e e mande ` lmetteur de retransmettre une nouvelle fois le message source. a e Dans les paragraphes suivants, les principes de la dtection et de la correction e derreurs sont introduits avec deux codes tr`s simples. e

4.1.2

Un exemple simple de dtection par parit e e

Dans cette section on consid`re un canal binaire : V = {0, 1}. On code le mot e m = (s1 , . . . , sk ) par (m) = (s1 , . . . , sk , ck+1 ) o` ck+1 = ( k si ) mod 2 u i=1 (ce qui scrit avec loprateur ou-exclusif ck+1 = k si ). On a donc e e i=1
k

ck+1
i=1

si

= 0,

autrement dit ck+1 = 1 si et seulement si le nombre de bits nuls dans m est pair. Le test de cette galit sappelle contrle de parit. Il est vident que e e o e e cette galit devient fausse si, lors de la transmission, un nombre impair de e e bits dans (m) changent de valeurs comme nous lavons vu section 1.4.2. Ainsi, lajout dun bit de parit longitudinale permet de dtecter une erreur portant e e sur un nombre impair de bits (voir le tableau 4.2). Cette technique lmentaire de dtection derreurs est toujours tr`s utilise au ee e e e niveau matriel, en particulier pour dtecter les erreurs dans la mmoire. Les e e e

220

e Chapitre 4 : Dtection et correction derreurs m : mot source (7 bits) 0101001 0001001 0000000 (m) avec bit de parit e (8 bits) 01010011 00010010 00000000

Tab. 4.2: Codage avec bit de parit. e

codes de parit sont souvent utiliss pour vrier la correction de nombreux e e e numros didentication. e Exercice 4.1 (Numro de Scurit Sociale). Un numro de scurit soe e e e e e ciale est un nombre de n = 15 chires : un numro didentication K sur e k = 13 chires suivi de la clef C de r = 2 chires calcule pour que K + C e soit un multiple de 97. 1. Quel est la clef du numro de scurit sociale 2.63.05.38.516.305 ? e e e 2. Quel est le rendement de ce code ? 3. Combien derreurs de chires, la clef du numro de scurit sociale e e e permet-elle de dtecter ? e Solution page 315.

4.1.3

Un exemple simple de correction directe par parit lone gitudinale et transversale

Toujours en considrant V = {0, 1}, on construit un code(n, k1 k2 ) binaire e comme suit. Comme k = k1 k2 , un mot source m peut tre reprsent dans un e e e tableau bidimensionnel de bits avec k1 lignes et k2 colonnes. Le mot de code associ (m) contient (k1 + 1)(k2 + 1) bits dont k1 + k2 + 1 bits de parit : e e un pour chaque ligne et chaque colonne et un pour lensemble des bits (gure 4.3). Ce code permet non seulement de dtecter mais aussi de corriger une e erreur : il sut de localiser la ligne et la colonne o` sest produite lerreur en u contrlant le bit de parit de chaque ligne et chaque colonne (exercice 4.2). o e Exercice 4.2 (Code de parit longitudinale et transversale). On conse truit un code de parit longitudinale et transversale pour des mots source m e de 9 bits. 1. Quelle est la longueur n des mots de code (m) ? 2. Montrer que lon dtecte toute erreur portant sur un nombre impair de e bits.

4.1 Principe de la dtection et de la correction derreurs e m : mot source de 21 = 7 3 0101001 0001001 0000000 (m) cod e sur 32 bits avec bits de parit e 0101001 1 0001001 0 0000000 0 01000010 mot reu c (1 erreur) 01010011 00011010 00000000 01000001 mot corrig e (1 correction) 01010011 00010010 00000000 01000001

221

Tab. 4.3: Correction derreur par bits de parit. e

3. Montrer que lon dtecte jusqu` trois erreurs de bits. e a 4. Donner deux exemples de mots comportant quatre erreurs : lun o` lon u dtecte quil y a eu erreur, lautre o` lon ne peut pas dtecter. e u e 5. Montrer que lon peut corriger tout mot reu comportant au plus une c erreur. 6. Donner lexemple dun mot reu comportant deux erreurs que lon ne c peut pas corriger. Solution page 315.

4.1.4

Schma de codage et probabilit derreur e e

Plus gnralement, avec la fonction injective de codage : V k V n qui e e associe ` tout mot source un mot du code(n, k), le schma de codage par bloc a e C est le suivant : 1. Le mot de code c = (s) est calcul et transmis sur le canal ; le rcepteur e e reoit un mot c = [c1 , . . . , cn ]. c 2. Si le mot c reu appartient ` C , le message est dcod en s tel que c a e e () = c . s 3. Sinon, c C et on dtecte quil y a eu erreur. La correction proc`de e e comme suit : (a) sil existe un entier i et un unique mot de code c C ayant au moins n i bits gaux ` c , alors on corrige c en c et le message e a dcod est s tel que () = c . e e s (b) sinon, il existe au moins deux mots de code qui ont tous deux i chires communs avec c , et aucun mot de code na i 1 chires communs avec c . On ne peut donc pas corriger lerreur et on renvoie un mot xe s = m de k bits, qui peut correspondre ` un signal a derreur.

222

e Chapitre 4 : Dtection et correction derreurs

Avec ce schma, il y a erreur si s nalement reu est dirent de s : on note e c e PC la probabilit dune telle erreur. e Dans un souci decacit, le code C et en particulier la fonction de codage e doit tre choisi pour : e avoir une probabilit derreur PC aussi petite que dsire ; e e e avoir un rendement R le plus grand possible ; tre le moins coteux ` calculer possible, grce ` des algorithmes de codage e u a a a (calcul de ) et de dcodage (test dappartenance ` C , calcul de 1 et e a correction) les plus ecaces possibles. Pour un canal donn, le deuxi`me thor`me de Shannon montre quil est pose e e e sible, avec des contraintes sur le choix de k en fonction de n, de construire des codes C tels que cette probabilit derreur PC soit aussi petite que dsir. e e e

4.1.5

Deuxi`me thor`me de Shannon e e e

Shannon est lauteur dun thor`me important sur la possibilit de construire e e e des codes correcteurs derreurs dans des canaux bruits. Nous nous limitons e ici au cas dun canal bruit sans mmoire. Plus prcisement le thor`me que e e e e e nous allons voir sapplique au codage de canal o` chaque mot de source tranu site par un canal thorique qui transforme ce mot en une parmi M valeurs e quiprobables. Autrement dit, la source est discr`te uniforme. e e Rendement dun code et ecacit e Pour un canal donn avec ses taux derreurs de transmission intrins`ques, le e e deuxi`me thor`me de Shannon prouve lexistence de codes ayant une probae e e bilit derreur PC arbitraire, mais dont le rendement est limit en fonction e e de la abilit du canal, plus prcisment de sa capacit. Autrement dit, mme e e e e e sur un canal perturb, il est possible de faire de la transmission sans erreur ! e Capacit de canal e Soit un canal bruit sans mmoire qui transmet des symboles de lalphabet e e V = {s1 , . . . , s|V | }. Soit X la variable alatoire source ` lentre du canal, e a e dont les ralisations sont des symboles de V . De mme, soit Y la variable e e alatoire ` la sortie du canal dont on suppose que les ralisations sont aussi les e a e symboles de V . Soit la distribution pj|i = P (Y = sj |X = si ) des probabilits e de transition ; pj|i est la probabilit de recevoir sj en sortie du canal sachant e que si a t mis en entre. eee e Par exemple, sur un canal sans erreur, pi|i = 1 et pj|i = 0 pour j = i. Ainsi, la distribution (pj|i )1 i,j |V | caractrise les probabilits derreurs lors de la e e transmission sur le canal sans mmoire. e

4.1 Principe de la dtection et de la correction derreurs e

223

On note pi = P (X = si ) la probabilit quune ralisation de X prenne la valeur e e si . Avec les probabilits de transition, cette distribution (pi ) de la source induit e une distribution de probabilits sur la variable Y . Avec lgalit de Bayes (voir e e e |V | |V | section 1.2.2), on a P (Y = sj ) = i=1 P (X = si , Y = sj ) = i=1 P (X = si ) P (Y = sj |X = si ) ; do` u
|V |

P (Y = sj ) =
i=1

pi pj|i

La capacit du canal C(X, Y ) est la quantit maximale dinformation sur lene e tre eectivement transmise sur le canal, le maximum tant pris sur toutes les e e |V | distributions dentres (pi ) p vriant i=1 pi = 1. Or, lentropie conditione e nelle H(X|Y ) (voir page 34) reprsente ce quil reste ` dcouvrir de lentre X e a e e quand on conna la sortie Y , cest ` dire la perte dinformation sur lentre. t a e La capacit du canal est donc le maximum de la quantit dinformation de e e lentre diminue de cette perte : e e C = max H(X) H(X|Y ).
p p

` A laide des formules de lentropie conditionnelle, il est possible de rcrire ee cette dnition galement sous les formes suivantes : e e C = max H(Y ) + H(X) H(X, Y ) = max H(Y ) H(Y |X).
p p p p

Les cas extrmes correspondent donc ` : e a H(Y ) = H(Y |X) : si savoir quelle est lentre ninue pas sur la sortie, alors e le canal ne transmet jamais rien de lentre ; e H(Y |X) = 0 : si la sortie peut apporter exactement la mme information e que lentre, alors le canal est a priori sans erreur. e Le calcul de ce maximum est facile dans le cas o` le canal est symtrique. u e Dans ce cas, les probabilits de transition sont indpendantes du symbole si e e considr : pour tout 1 i, j |V | avec i = j, on a alors pi|j = p et pi|i = 1p ; ee la probabilit p est alors appele la probabilit derreur du canal. Le maximum e e e est atteint quand les entropies H(X) et H(Y ) sont maximales, donc pour une 1 distribution uniforme des probabilits dentre pi = |V | . e e Par exemple, lexercice 4.3 montre que la capacit dun canal binaire syme e trique BSC (Binary Symmetric Channel, pour lequel |V | = 2) de probabilit e derreur p est : CBSC = 1 + p log2 (p) + (1 p) log2 (1 p).

224

e Chapitre 4 : Dtection et correction derreurs

Exercice 4.3. Un canal binaire symtrique (BSC) de probabilit derreur p e e est un canal pour lequel |V | = 2 et la probabilit que le bit reu soit dirent de lmis est p : p2|1 = p1|2 = p ; e c e e la probabilit que le bit reu soit gal ` lmis est 1 p : p1|1 = p2|2 = 1 p. e c e a e Montrer que sa capacit est CBSC = 1 + p log2 (p) + (1 p) log2 (1 p). e 1 En dduire CBSC = 0 si p = 2 mais 0 < CBSC 1 sinon. Solution page 316. e Transmission sans erreur sur un canal de capacit xe e e Grce ` la capacit de canal, le thor`me de Shannon donne une condition a a e e e ncessaire et susante pour raliser une transmission sans erreur sur un canal e e de capacit C. e Thor`me 22 (Deuxi`me thor`me de Shannon). Soit un canal de cae e e e e pacit C. Soit > 0 arbitraire. Il existe au moins un code(n, k) de rendement e k e R = n et de probabilit derreur P < si et seulement si 0 R < C.

Par exemple, dans le cas dun canal binaire symtrique de probabilit derreur e e 1 p = 2 , on a C = 0. Il est donc impossible de transmettre correctement. Par 1 contre, si p = 2 , 0 < C 1 ; il existe donc toujours un code(n, k) permettant de transmettre sans erreur, mais avec une contrainte sur son rendement. Plus gnralement, il est toujours possible de transmettre sans erreur sur un canal e e de capacit non nulle, mais le rendement du code est limit par la capacit du e e e canal. Exercice 4.4. On peut trouver intuitif le fait de pouvoir transmettre sans erreur sur un canal BSC pour lequel la probabilit p de recevoir un bit dirent e e de celui mis est infrieure ` 2 . e e a 1 Justier sans utiliser le thor`me de Shannon que lon peut alors aussi transe e 1 mettre sans erreur lorsque 2 < p 1. Solution page 316. Ce thor`me donne une condition ncessaire sur le nombre minimum r de e e e chires de redondance ` ajouter : a r>k 1 1 . C (4.1)

e e Cette borne ne dpend pas du taux derreurs corriges par le code mais de la capacit du canal. e La preuve du thor`me de Shannon nest pas constructive ; le thor`me montre e e e e lexistence de codes, mais pas comment les construire. De plus, il est possible de faire tendre le rendement vers C en faisant tendre n vers linni ; par exemple,

4.2 Dtection derreurs par parit - codes CRC e e

225

en choisissant comme code un sous-ensemble de mots choisis alatoirement e dans V n et de mme cardinal que V k . Cependant, pour tre pratique, il est e e ncessaire que le codage et le dcodage puisse tre raliss ecacement, avec un e e e e e cot matriel et temporel raisonnable. Aussi, le code doit vrier des proprits u e e ee additionnelles que ne poss`de pas a priori un code alatoire. e e Cest pourquoi ce thor`me a motiv la recherche de codes ecaces en partie e e culier dans deux directions : dune part pour un taux de correction x, construire des codes qui ope timisent le rendement ; cest le cas en particulier des codes par blocs de Reed-Solomon ; dautre part, pour un rendement x, construire des codes qui optimisent le e taux de correction ; cest le cas des codes convolutifs et des turbo-codes. Les turbo-codes hybrides par blocs proposent des compromis entre les deux approches. Les sections suivantes introduisent les principaux codes utiliss pour une source e binaire. Apr`s une modlisation du probl`me de la correction derreurs et e e e la dnition de la distance dun code (section 4.3), les codes cycliques par e blocs sont dnis et illustrs avec les codes de Reed-Solomon (section 4.4). e e Les techniques dentrelacement (section 4.5) permettent dtendre ces codes e pour la correction derreurs en rafales ; ils sont illustrs avec lexemple pratique e du code CIRC pour les disques compacts audio, construit ` partir dun code a de Reed-Solomon. Enn, le chapitre conclut avec les codes convolutifs et les turbo-codes qui sont construits par entrelacement. De mani`re gnrale, ces dirents codes sont tous associs ` des polynmes. e e e e e a o Cette reprsentation par polynme est dabord introduite dans la section suie o vante (4.2) avec les codes dtecteurs derreur CRC ; ces codes apparaissent e dans de tr`s nombreux cas pratiques o` lmetteur peut rmettre un message e u e ee que le rcepteur a mal reu. e c

4.2

Dtection derreurs par parit - codes CRC e e

Lorsque le rcepteur peut demander ` lmetteur de r-mettre linformation e a e ee ` moindre cot (ARQ, voir la section 4.1.1), il sut de pouvoir coder et da u e coder rapidement, en dtectant ecacement les erreurs sans les corriger. On e sintresse donc ` la construction dun code dtecteur derreurs. e a e Pour tre ecaces, les codes dtecteurs contiennent dans chaque mot de code e e les symboles dinformation associs. On dit quun code(n, k) est systmatique e e sil existe k positions telles que la restriction de tout mot de code c = (s) ` ces k positions est gale ` s. Le code est dit aussi sparable car on peut a e a e extraire directement les symboles dinformation s = [s1 , . . . , sk ] du mot de code c = (s). Souvent, ces symboles dinformation sont mis dans lordre aux

226

e Chapitre 4 : Dtection et correction derreurs

k premi`res positions. Le principe du codage systmatique est alors de calculer e e les r = n k symboles de redondance [ck+1 , . . . , cn ] = r ([s1 , . . . , sk ]), o` r u est la restriction de aux r derni`res positions. La gnralisation ` un code e e e a systmatique sur k autres positions est directe. e Dans un code systmatique, les symboles de redondance sont appels symboles e e de parit ou symboles de contrle. En eet, la dtection derreurs se ram`ne ` e o e e a un contrle de parit (ou checksum) comme introduit au paragraphe 4.1.2 On o e associe r symboles de redondance ` chaque mot [s1 , . . . sk ] source tel que le a mot de code c = [s1 , . . . sk , ck+1 , . . . , ck+r ] vrie un prdicat f (c) (la parit) e e e avec f facile ` calculer. a Apr`s une prsentation de quelques contrles de parit sur les entiers utiliss e e o e e dans des domaines de la vie courante qui dpassent largement les tlcome ee munications, cette section prsente les codes de redondance cyclique (CRC) e utiliss dans les rseaux informatiques. e e

4.2.1

Contrle de parit sur les entiers : ISBN, EAN, LUHN o e

Comme en tmoigne lexemple du numro de Scurit Sociale (voir exercice e e e e 4.1), les codes de contrle de parit sont utiliss couramment. Dans ces cas o e e pratiques, le prdicat f (c) consiste gnralement ` tester si une somme des e e e a chires ci du mot reu est multiple dun entier x. Le code ISBN didentic e cation des livres, les codes barres didentication des produits (EAN) et leurs extensions, la clef RIB dun compte bancaire et le numro dune carte bancaire e en sont dautres exemples qui sont dtaills ici. e e Code barre EAN Le code EAN-13 (European Article Numbering) est un code ` barres utilis a e dans lindustrie et le commerce pour identier de mani`re univoque les produits e ou les units logistiques. Il est compos dun numro sur 13 chires c12 e e e c11 c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 c0 et dun motif graphique avec des barres noires et blanches verticales pouvant tre lues par un scanner optique. Ce code est e driv du code amricain UPC-A (Universal Product Code) sur 12 chires : e e e les barres sont identiques mais un zro est ajout en tte du numro UPC-A e e e e (i.e. c13 = 0) pour former le code EAN-13. Les 12 chires de gauche c12 , . . . , c1 identient le produit ; c0 est le chire de parit calcul comme suit. Soit a = e e 6 c2i la somme des chires de rang pair et b = 6 c2i1 celle des chires i=1 i=1 de rang impair. On a alors c0 = 10 (a + 3b) mod 10. Le code barre graphique code le mme numro EAN-13 : chaque colonne de e e 2,31 mm code un et un seul chire. Chaque colonne est divise en 7 sous e colonnes de largeur 0,33 mm mais le codage EAN-13 impose quun lment ee (un chire) soit toujours cod par une succession de seulement 4 barres de e

4.2 Dtection derreurs par parit - codes CRC e e

227

largeurs direntes, mais dont lensemble a une largeur totale de 7 fois la e largeur lmentaire. Par exemple le 0 est cod par la succession dune bande ee e blanche de largeur 30, 33 = 0, 99 mm, dune bande noire de largeur 20, 33 = 0, 66 mm, dune bande blanche de largeur 0, 33 mm et dune bande noire de largeur 0, 33 mm. On peut rsumer ce codage par 0 000 11 0 1. Les e reprsentations symtriques doivent toujours coder le mme chire, donc on a e e e aussi 0 111 00 1 0 ; 0 1 0 11 000 et 0 0 1 00 111. Exercice 4.5. Montrer quil y a bien 40 choix possibles de 4 barres par colonne. Solution page 316. Une extension du code EAN-13 est le code EAN-128, qui permet de coder non seulement des chires mais galement des lettres comme sur la gure 4.1 e ci-dessous.

Fig. 4.1: Code EAN-128 de la thorie des codes. e

Le code EAN-13 permet de dtecter des erreurs mais pas de les corriger. Cere tains codes barres graphiques permettent non seulement de dtecter mais aussi e de corriger des erreurs ; par exemple, PDF417 (Portable Data File) est un code barre bidimensionnel, multi-lignes et de petite taille, qui permet de coder jusqu` 2725 caract`res, grce ` un code de Reed-Solomon (dont on donne les a e a a dtails un peu plus loin dans ce chapitre). e Code ISBN Le numro ISBN (pour International Standard Book Number) est un numro e e qui identie tous les livres dits dans le monde. Ce numro comporte dix e e e chires c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 , structurs en quatre segments A B C D e spars par un tiret. Les neuf premiers chires AB C identient le livre : A e e identie la communaut linguistique, B le numro de lditeur et C le numro e e e e douvrage chez lditeur. La clef de contrle D = c1 est un symbole de parit e o e qui est soit un chire entre 0 et 9, soit la lettre X qui reprsente 10. Cette e clef c1 est telle que 10 i ci est un multiple de 11 ; autrement dit, c1 = i=1
10 mod 11. 11 i=2 i ci La norme ISO 2108 en vigueur ` partir du 1 janvier 2007 identie les livres a par code barre EAN-13 de 13 chires : les trois premiers chires valent 978,

228

e Chapitre 4 : Dtection et correction derreurs

les 9 suivants sont les 9 premiers chires du code ISBN (ABC) et le dernier est le chire de contrle EAN-13. o Cl RIB e Un numro RIB de compte bancaire B G N R comporte 23 caract`res. e e B et G sont des nombres de 5 chires qui identient respectivement la banque et le guichet. N est compos de 11 alphanumriques, que lon convertit en une e e squence SN de 11 chires en remplaant les lettres ventuelles cycliquement e c e comme suit : A et J en 1 ; B,K, S en 2 ; C,L, T en 3 ; D,M, U en 4 ; E,N, V en 5 ; F,O,W en 6 ; G,P,X en 7 ; H,Q,Y en 8 ; I,R,Z en 9. Enn la clef RIB R est un nombre de deux chires qui est tel que, mis bout ` bout, B, G, a SN et R forment un nombre n de 23 chires multiple de 97. Autrement dit, R = 97 ([BGSN ] 100) mod 97. Carte bancaire : LUHN-10 Le numro ` 16 chires c15 c14 c13 c12 c11 c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 c0 dune e a carte bancaire est un mot de code de LUHN 10. Pour vrier la validit du e e numro, on multiplie les chires dindice impair par 2 et on soustrait 9 si le e nombre obtenu est suprieur ` 9. Tous ces chires sont additionns et somms e a e e aux autres chires dindice pair. La somme nale doit tre un multiple de 10. e En plus du numro N de carte ` 16 chires, la validit dune carte peut tre e a e e vrie ` partir des 7 chires qui gurent ` son dos. Les 4 premiers de ces 7 e e a a chires ne sont autres que les 4 derniers chires du numro de carte. Les 3 e derniers sont le rsultat dun calcul qui fait intervenir, outre N , les 4 chires e mm/aa de sa date dexpiration. Exercice 4.6 (Codes ISBN et EAN-13). Complter la squence 210-050e e 692 pour obtenir un numro ISBN correct. Quel est son code barre EAN-13 e associ ? e Solution page 317.

4.2.2

Codes de redondance cyclique (CRC)

Les codes de redondance cyclique, appels CRC (Cyclic Redundancy Check), e sont tr`s utiliss dans les rseaux informatiques. Dans ces codes, un mot bie e e naire u = [um1 . . . u0 ] {0, 1}m est reprsent par un polynme Pu (X) = e e o m1 ui X i de F2 [X]. Par exemple, u = [10110] est reprsent par le polye e i=0 4 + X 2 + X. nme Pu = X o Un code CRC est caractris par un polynme gnrateur Pg de degr r : e e o e e e r1 r + i dans F [X]. Le mot source binaire s = [s Pg (X) = X 2 k1 . . . s0 ] i=0 gi X associ au polynme Ps (X) = k1 si X i , est cod par le mot de code binaire e o e i=0

4.2 Dtection derreurs par parit - codes CRC e e

229

c = [cn1 . . . c0 ] = [sk1 . . . s0 cr1 . . . c0 ] o` [cr1 . . . c0 ] est la reprsentation du u e reste de la division euclidienne de X r .Ps par Pg . La multiplication de Ps par X r se traduisant par un dcalage de bits, le polynme Pc (X) = n1 ci X i e o i=0 vrie donc e Pc = Ps .X r + (Ps .X r mod Pg ). Exemple : Avec le polynme gnrateur Pg = X 2 + 1, le mot u = [10110] o e e est cod en ajoutant les bits de redondance du polynme (X 4 + X 2 + X)X 2 e o 2 + 1 = X 6 + X 4 + X 3 mod X 2 + 1 = X qui correspond aux bits de mod X redondance [10]. Le mot cod est donc (u) = [1011010]. e Codage CRC Le codage se ram`ne donc ` implmenter le calcul du reste dune division euclie a e dienne. Cette opration peut tre faite en temps O(n log n) par un algorithme e e bas sur le produit de polynmes par DFT (section 1.4.2), ou mme en O(n) e o e avec lalgorithme standard de division de polynme dans le cas pratique o` o u le polynme a un petit nombre de coecients non nuls (O(1) en thorie). De o e plus, limplmentation matrielle de lalgorithme standard est tr`s ecace en e e e utilisant des registres ` dcalage linaire (LFSR, section 1.3.6). a e e Dcodage CRC e Pour le dcodage, on remarque que dans F2 [X] on a aussi Pc = Ps .X r (Ps .X r e mod Pg ) ; le polynme Pc est donc un multiple de Pg . Cette proprit permet o ee ` un dcodage rapide, lui aussi bas sur une division euclidienne de polynmes. A e e o la rception de c = [cn1 . . . c0 ], il sut de calculer le reste R(X) du polynme e o Pc par le polynme Pg . Si ce reste est nul, le mot reu est un mot de code et o c lon ne dtecte pas derreurs. Sinon, si R(X) = 0, il y a eu erreur lors de la e transmission. Nombre derreurs de bit dtectes e e Supposons quil y a une erreur dans la transmission. Les coecients du polynme Pe = Pc Pc valent 0 sur les bits non errons et 1 aux bits de c modis. o e e Lerreur est dtecte si et seulement si Pe nest pas un multiple de Pg . e e On en dduit que si un des multiples de degr au plus n 1 de Pg poss`de j e e e monmes, alors le code CRC gnr par g ne peut dtecter quau plus j 1 o e ee e erreurs. Rciproquement, pour quun code CRC dtecte toute erreur portant e e sur au plus j bits, il faut et il sut que tout polynme de degr au plus n 1 o e et ayant au plus j monmes ne soit pas multiple de Pg . o

230

e Chapitre 4 : Dtection et correction derreurs

Par ailleurs, lerreur Pe gale ` Pg , ou multiple de Pg , ne peut pas tre dtecte. e a e e e On en dduit que le nombre derreurs de bit dtectes est au plus (Pg ) o` e e e u (Pg ) est le nombre de coecients non nuls de Pg . Proprit 12. Un code CRC de gnrateur Pg (X) = X r + e e e e dtecte toute erreur portant sur r 1 bits conscutifs ou moins. e e
r1 i i=1 gi X

+1

Preuve. Une squence derreurs portant sur au plus r 1 bits conscutifs e e e commenant au ii`me bit du mot est associe ` un polynme Pe = X i Q avec Q c e a o de degr infrieur strictement ` r ; Q nest donc pas multiple de Pg . Et comme e e a g0 = 1, Pg est premier avec X ; on en dduit que Pe nest pas multiple de Pg e donc lerreur est bien dtecte. e e P Cette proprit est importante ; elle justie lutilisation des codes CRC dans ee les cas o` les erreurs peuvent aecter quelques bits conscutifs. u e Exercice 4.7 (Condition de dtection dune erreur). Montrer quune e condition ncessaire et susante pour quun code CRC dtecte toute erreur e e portant sur un unique bit est que son polynme gnrateur admette au moins o e e deux monmes. o Solution page 317. Exercice 4.8 (Dtection dun nombre impair derreurs). Montrer que e si la somme des coecients du polynme gnrateur dun code CRC est nulle, o e e alors toute erreur portant sur un nombre impair de bits est dtecte. e e Solution page 317. Exercice 4.9 (Dtection de deux erreurs). Montrer que si le polynme e o gnrateur dun code CRC admet un facteur irrductible de degr d, alors il e e e e dtecte tout paquet derreurs (cest-`-dire des erreurs conscutives) portant sur e a e au plus d 1 bits. Solution page 317. Exemples de codes CRC Les codes CRC sont tr`s utiliss dans les rseaux. Outre leurs bonnes proprits e e e ee nonces ci-dessus, ils sont choisis aussi pour lecacit du codage et dcodage. e e e e La table 4.4 donne quelques exemples normaliss ; la normalisation concerne e non seulement la valeur du polynme mais aussi les algorithmes de codage et o dcodage. e

4.3
4.3.1

Distance dun code


Code correcteur et distance de Hamming

Un code (n, k) est dit t-dtecteur (resp. t-correcteur) sil permet de dtecter e e (resp. corriger) toute erreur portant sur t chires ou moins lors de la transmission dun mot de code de n chires.

231

e e Gnrateur X3 + X + 1 X8 + X4 + X3 + X2 + 1 X8 + X7 + X4 + X3 + X + 1 X 16 + X 12 + X 5 + 1

Factorisation e irrductible irrductible e

Nom TCH/FS -HS-EFS GSM TCH/EFS CRC-8 CRC-16 X25-CCITT CRC-24

Exemples dutilisation GSM transmission de voix

CRC-24 (3GPP) CRC-32 AUTODIN-II

(X + 1)(X 7 + X 3 + 1) (X + 1)(X 15 + X 14 + X 13 + X 12 + X 4 + X 3 + X 2 + X + 1) (X + 1)(X 23 + X 17 + X 13 + X 12 + X 11 + X 9 + X 8 + X 7 + X 5 + X 3 + 1) (X + 1)(X 23 + X 5 + 1)

GSM pr-codage canal e ` plein taux a GSM 3`me gnration e e e Protocole X25-CCITT ; contrle trames o PPP FCS-16 (RFC-1662) communications UHF et satellites (SATCOM) ; messages OpenPGP (RFC-2440) GSM 3`me gnration e e e

X 24 + X 23 + X 18 + X 17 + X 14 + X 11 + X 10 + X 7 + X6 + X5 + X4 + X3 + X + 1 X 24 + X 23 + X 6 + X5 + X + 1 X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 5+ X4 + X2 + X + 1

irrductible e

IEEE-802.3, ATM AAL5, trames PPP FCS-32 (RFC-1662) ; contrle dintgrit des o e e chiers ZIP et RAR ;

4.3 Distance dun code

Tab. 4.4: Exemples de codes CRC.

232

e Chapitre 4 : Dtection et correction derreurs

Exemples : Lajout dun bit pour contrler la parit des 7 bits qui le prc`dent est o e e e un code systmatique par bloc. Cest un code (8,7). Il est 1-dtecteur et e e 0-correcteur avec un rendement de 87,5%. Le contrle de parit longitudinale et transversale sur 21 bits (avec ajout de o e 11 bits de contrle) est un code (32,21). Il est 1-correcteur avec un rendement o de 65,625%. Dans toute la suite on consid`re un code de longueur n ; les mots de code sont e donc des lments de V n . On appelle poids de Hamming de x = (x1 , . . . , xn ) ee V n , not w(x), le nombre de composantes non nulles de x : e w(x) = |{i {1, . . . , n}/xi = 0}|. Remarque 2. Dans le cas o` V est binaire (V = {0, 1}), on note x y le u ou-exclusif bit ` bit (ou addition) de deux mots x et y. Le poids de Hamming a w satisfait alors lingalit triangulaire : w(x y) w(x) + w(y). e e On peut alors obtenir une notion de distance, la distance de Hamming entre x et y, note dH (x, y), qui est le nombre de composantes pour lesquelles x et e y di`rent, i.e. e dH (x, y) = |{i {1, . . . , n}/xi = yi }|. Exercice 4.10. 1. Montrer que dH ainsi dnie est une distance sur V n . e Solution page 317. La distance de Hamming permet de caractriser le nombre derreurs que peut e corriger un code C de longueur n. En eet, soit m C un mot de n chires mis et soit m le mot reu, suppos dirent de m (dH (m, m ) > 0) : e c e e pour que C puisse dtecter une erreur, il est ncessaire que m C (sinon, e e le mot reu est un mot de C donc considr comme correct). c ee pour pouvoir faire une correction (cest-`-dire retrouver m ` partir de m ), a a il faut que m soit lunique mot de C le plus proche de m , soit pour tout x C, si x = m alors dH (x, m ) > dH (m, m ) . Cest ce que traduit la proprit suivante. ee Proprit 13. Soit C un code de longueur n. C est t-correcteur si e e pour tout x V n , |{c C/dH (x, c) t}| 1.

2. Montrer que si V est binaire, dH (x, y) = w(x y).

4.3 Distance dun code

233

Remarque 3. La correction dune erreur peut aussi tre dcrite en conside e e rant les boules Bt (c) de centre c C et de rayon t : Bt (c) = {x V n /dH (c, x) t} .

Lors de la rception de m , on peut corriger m en m si on a : e BdH (m,m ) (m ) C = {m} . La capacit de correction dun code C est donc lie ` la distance minimale e e a entre deux lments de C. ee La distance minimaledu code C, note (C), est dnie par : e e (C) =
c1 ,c2 C ;c1 =c2

min

dH (c1 , c2 ) .

(4.2)

La proprit 13 et la remarque 3 sont ` la base du thor`me suivant qui ee a e e caractrise un code t-correcteur. e Thor`me 23. Soit C un code de longueur n. Les proprits suivantes sont e e ee quivalentes, et toutes impliquent par consquent que C est t-correcteur : e e (i) Pour tout x V n , |{c C/dH (x, c) t}| 1 ; (ii) Pour tout c1 , c2 C, c1 = c2 = Bt (c1 ) Bt (c2 ) = ; (iii) Pour tout c1 , c2 C, c1 = c2 = dH (c1 , c2 ) > 2t ; (iv) (C) 2t + 1. Preuve. (i) = (ii) : Supposons quil existe x Bt (c1 ) Bt (c2 ) ; ainsi c1 et c2 sont ` une distance a t de x. Dapr`s (i), cela nest possible que pour au e plus un mot de code ; donc c1 = c2 . (ii) = (iii) : par labsurde. Si dH (c1 , c2 ) 2t ; soient i1 , . . . , id avec d 2t les indices o` les chires de c1 et c2 di`rent. Soit x le mot de V n dont les u e chires sont les mmes que ceux de c1 sauf les chires en position i1 , ..., id/2 e qui sont gaux ` ceux de c2 . Alors dH (x, c1 ) = d/2 t et donc x Bt (c1 ). De e a mme, dH (x, c2 ) = d (d/2) t et donc x Bt (c2 ). Do` x Bt (c1 ) Bt (c2 ) e u ce qui contredit (ii). (iii) = (iv) : immdiat. e (iv) = (i) : par la contrapose. Supposons quil existe x V n , tel que e |{c C/dH (x, c) t}| 2. Il existe alors c1 = c2 tels que dH (x, c1 ) dH (x, c2 ) t. Et comme dH , distance de Hamming, vrie lingalit triangue e e laire, dH (c1 , c2 ) dH (c1 , x) + dH (x, c2 ) 2t. Donc (C) 2t. P Exercice 4.11. Montrer que si C est t-correcteur alors C est s-dtecteur avec e s 2t. Dans quelle cas la rciproque est-elle vraie ? e Solution page 317.

234

e Chapitre 4 : Dtection et correction derreurs

Exercice 4.12. On consid`re un code C de rptition pure sur V = {0, 1}, e e e cest ` dire un code (mk, k) o` chaque groupe de k bits est simplement rpt a u e ee m fois. 1. Quelle est la distance minimale entre deux mots de code ? 2. Proposer un code de rptition qui soit 2-correcteur. e e 3. Quel est son rendement ? On consid`re un code de rptition (n = 5k, k) et on dsire crire une proce e e e e e dure de dcodage qui retourne en sortie le mot dcod s et un boolen e qui e e e e vaut vrai si s peut tre considr comme correct (pas derreurs ou des erreurs e e e corriges) et faux sinon (des erreurs ont t dtectes mais pas corriges). e ee e e e 4. Combien derreurs peuvent tre dtectes ? Ecrire lalgorithme de dcodage e e e e pour dtecter un nombre maximal derreurs mais nen corriger aucune. e 5. Combien derreurs peuvent tre corriges ? Ecrire lalgorithme de dcodage e e e pour corriger un nombre maximal derreurs. Combien derreurs sont dtece tes mais non corriges ? e e 6. Ecrire lalgorithme de dcodage pour corriger une seule erreur mais en de e tecter jusqu` 3. a Solution page 318. Exercice 4.13 (Calcul na de la distance dun code). Soit C un code f (n, k) sur un alphabet V . Ecrire une procdure qui calcule le taux de dtection e e et de correction du code ; donner la complexit de lalgorithme en fonction de e k et n. Lalgorithme est-il ecace ? Application : Soit le code binaire C = {0000000000, 0000011111, 1111100000, 1111111111}. Que valent n et k pour ce code ? Calculer son rendement, son taux de dtection e et de correction. Solution page 318.

4.3.2

Codes quivalents, tendus et raccourcis e e

Comme cest la distance qui caractrise le nombre derreurs que peut corriger e un code, cest une caractristique importante, complmentaire ` son rendee e a ment. An de raliser des compromis entre rendement et distance, de nome breuses mthodes permettent de modier un code pour en construire un autre e avec des proprits direntes. ee e Codes quivalents e Soient x1 x2 . . . xn et y1 y2 . . . yn deux mots dun code : soit une permutation de {1, . . . , n} des positions ; on a dH (x1 x2 . . . xn , y1 y2 . . . yn ) = dH (x(1) x(2) . . . x(n) , y(1) y(2) . . . y(n) ) ;

4.3 Distance dun code

235

soient (i )i=1,...,n n permutations des symboles de V (potentiellement distinctes), on a galement : e dH (x1 . . . xn , y1 . . . yn ) = dH (1 (x1 ) . . . n (xn ), 1 (y1 ) . . . n (yn )). Par suite, ni lordre choisi des symboles dans V ni celui des positions dans les mots de code ne modient la distance. Aussi, deux codes sont dits quivalents e si lun peut tre obtenu ` partir de lautre par permutation des positions et e a par permutations (i )i=1,...,n des valeurs des symboles. Deux codes quivalents e ont la mme distance, donc les mmes taux de dtection et correction. e e e Par exemple pour un code binaire, en permutant les symboles en premi`re et e troisi`me position et en substituant en deuxi`me position les 0 par des 1 et les e e 1 par des 0 dans tous les mots, on obtient un code quivalent. e Proprit 14. Deux codes quivalents ont le mme rendement et la mme e e e e e distance. Code tendu e Soit C un code (n, k) ; on appelle code tendu C de C le code (n+1, k) obtenu e en ajoutant un chire de contrle de parit. Par exemple, si une opration o e e daddition est dnie sur V , e
n+1

C =

c1 c2 . . . cn cn+1 | c1 c2 . . . cn C,
i=1

ci = 0 . d d + 1.

La distance d du code tendu vrie trivialement d e e

Exercice 4.14 (Extension de code). Soit C est un code binaire de distance d impaire. Montrer que la distance du code tendu C est d + 1. e Solution page 320. Code poinonn c e Soit C un code (n, k) de distance d ; le poinonnage consiste ` supprimer dans c a le code C tous les symboles ` m positions xes. Le code C obtenu est dit a e code poinonn de C ; la distance d du code vrie alors d c e e d m. Code raccourci Soit C un code de longueur n et de distance d et soient s V un symbole et i {1, . . . , n} une position. On raccourcit le code C en ne prenant que ses mots dont le symbole en position i vaut s et en supprimant la position i. Le code C obtenu est dit code raccourci ; il est donc de longueur n 1 et sa distance d vrie d e d.

236

e Chapitre 4 : Dtection et correction derreurs

Exemple : Le code binaire C = {0000, 0110, 0011, 1010, 1110} est de longueur 4 et de distance 1. Le code C raccourci obtenu avec le symbole 0 en position 1 est C = {000, 110, 011} ; il est de longueur 3 et de distance 2. Ainsi, raccourcir un code permet daugmenter le rendement sans diminuer la distance, voire mme en laugmentant comme le montre lexemple ci-dessus. e Aussi, cette opration est frquemment utilise dans la construction de codes e e e ou comme outil de preuve. Exercice 4.15 (Code raccourci). Soit C un code de longueur n, de cardinal M et de distance d. Montrer que C est le raccourci dun code de longueur n+1, de cardinal M + 2 et de distance 1. Solution page 320. Exercice 4.16 (Code de parit transversale et longitudinale(9,4)). Le e contrle de parit transversale et longitudinale sur 4 bits conduit au code (9,4) o e suivant : le mot de code associ ` la source b0 b1 b2 b3 est : ea [b0 , b1 , b2 , b3 , (b0 + b1 ), (b2 + b3 ), (b0 + b2 ), (b1 + b3 ), (b0 + b1 + b2 + b3 )] . On obtient ainsi C= { 000000000, 000101011, 001001101, 001100110, ... }. 1. Montrer que C est exactement 1-correcteur. 2. Donner une conguration comportant 2 erreurs non corrigibles. 3. Montrer que C est 3-dtecteur mais pas 4-dtecteur. e e 4. Quelles sont les caractristiques du code poinonn de C ` la premi`re e c e a e position ? 5. Quelles sont les caractristiques du code raccourci de C ` la premi`re e a e position ? Solution page 320.

4.3.3

Code parfait

Un code t-correcteur permet de corriger toute erreur e de poids w(e) t ; mais il peut subsister des erreurs dtectes non corriges (voir exercice prcdent). e e e e e On dit quun code est parfait (` ne pas confondre avec les chirements parfaits a ou inconditionnellement srs de la section 1.2.4) lorsque toute erreur dtecte u e e est corrige. Ce paragraphe tudie quelques proprits des codes parfaits. Un e e ee code t-parfait est un code t-correcteur dans lequel toute erreur dtecte est e e corrige. Si C est t-parfait, lorsquon reoit un mot m C, alors il existe un e c unique mot m de C tel que d(m, m ) t. De plus, comme C est t-correcteur, les boules de rayon t et de centre les mots de C sont deux ` deux disjointes ; a do` le thor`me suivant. u e e

4.3 Distance dun code

237

Thor`me 24. Le code C (n, k) sur V est t-parfait si les boules ayant pour e e centre les mots de C et pour rayon t forment une partition de V n , i.e. Bt (c) = V n .
cC

Evidemment, une telle partition nest possible que pour certaines valeurs de n et k, en fonction du cardinal de V . Le thor`me suivant donne des conditions e e ncessaires pour lexistence de codes t-correcteurs et t-parfaits. e Thor`me 25. Soit C(n, k) un code t-correcteur sur V . Alors e e
1 2 t 1 + Cn (|V | 1) + Cn (|V | 1)2 + + Cn (|V | 1)t

|V |nk .

(4.3)

Si de plus il y a galit, alors C(n, k) est t-parfait. e e Preuve. La preuve repose sur le calcul du cardinal de cC Bt (c), les boules tant 2 ` 2 disjointes dans le cas dun code t-correcteur. En eet, le cardinal e a dune boule de rayon t de V n est :
1 2 t |Bt (x)| = 1 + Cn (|V | 1) + Cn (|V | 1)2 + + Cn (|V | 1)t .

Comme un code C(n, k) poss`de exactement |V |k lments de V n associes ` e ee e a n , on a : des boules deux ` deux disjointes dont lunion est incluse dans V a
1 2 t |V |k 1 + Cn (|V | 1) + Cn (|V | 1)2 + + Cn (|V | 1)t

|V |n ,

do` la premi`re ingalit. Sil y a galit, alors le cardinal de lunion est gal ` u e e e e e e a n ; de plus, comme le code est t-correcteur, les boules sont disjointes. Donc |V | leur union est gale ` V n et le code est parfait. e a P Exercice 4.17. Montrer que tout code binaire 1-correcteur sur des mots de k = 4 bits requiert au moins 3 bits de redondance. Montrer que sil existe un code 1-correcteur avec 3 bits de redondance, alors il est parfait. Solution page 321.

4.3.4

Codes de Hamming binaires

Les codes de Hamming binaires (1950) sont des codes 1-correcteur ` redona dance minimale. En eet, soit x Fn ; le poids de Hamming binaire de x est 2 alors donn par w(x) = |{i {1, . . . , n}/xi = 0}| = n xi . e i=1 Or, dans F2 , laddition et la soustraction sont identiques (0 = 0 et 1 = 1) ; on a alors les proprits suivantes. ee

238

e Chapitre 4 : Dtection et correction derreurs

Proprit 15. Soient x et y deux lments quelconques de Fn et loprateur e e ee e 2 ET bit ` bit : a w(x) = dH (x, 0) ; dH (x, y) = w(x + y) = w(x) + w(y) 2w(x y). Exercice 4.18. Soit un code binaire (n, k) 1-correcteur. 1. Montrer que k 2r r 1. (4.4) 2. En dduire une borne sur le rendement maximal dun code 1-correcteur e dont le nombre de bits de contrle est 3, puis 4, puis 5, puis 6. o 3. Existe-t-il un code 1-parfait de longueur n = 2m o` m N ? u Solution page 321. Connaissant k, lingalit (4.4) (qui scrit 2r n + 1) permet de dterminer e e e e le nombre minimal de bits de contrle ` ajouter pour obtenir un code 1o a correcteur. Les codes de Hamming binaires sont donc des codes systmatiques e qui atteignent cette limite thorique : pour n bits, le nombre de bits de contrle e o est log2 n + 1 (soit, si n + 1 est une puissance de 2, log2 (n + 1)). Ce sont donc des codes parfaits pour n = 2r 1) ; autrement dit, ce sont des codes (n, n log2 n 1). Description dun codage pour le code de Hamming binaire (n, n log2 n 1). Un mot c = c1 . . . cn {0, 1}n du code de Hamming binaire est tel que les bits ci dont lindice i est une puissance de 2 (2l avec l = 0, 1, . . .) sont des bits de contrle et les autres sont des bits de donnes. Le bit de o e contrle dindice i = 2l est la somme modulo 2 de tous les bits de donnes cj o e i`me bit (` partir de la gauche) ` 1. e dont lindice j crit en base 2 a le (l + 1) e a a Par exemple, dans un code (7, 4) de Hamming, au message source [s0 , s1 , s2 , s3 ] correspond le mot de code [c1 , c2 , c3 , c4 , c5 , c6 , c7 ] donn par : e c3 = s1 c =s 5 2 c6 = s3 c7 = s4 c1 = c3 + c5 + c7 c2 = c3 + c6 + c7 c4 = c5 + c6 + c7 Ainsi le message 1000 est cod 1110000. e

4.3 Distance dun code

239

Pour assurer la correction dans un code de Hamming, le contrle de parit est o e fait de la faon suivante. Tous les bits de contrle dindice i = 2l sont vris ; c o e e une erreur est dtecte si lun de ces bits est erron (parit errone). Soit alors e e e e e e la somme des indices des bits de contrle i qui sont errons. Si il y a une o e seule erreur, elle provient alors du bit e. Thor`me 26. Le code de Hamming (n, n log2 n 1) est un code 1-correce e teur qui requiert un nombre de bits de contrle minimal parmi tous les codes o (n, k) qui sont 1-correcteur. En particulier, le code de Hamming (2m 1, 2m 1 m) est un code 1-parfait. La preuve dcoule directement des proprits ci-dessus et nous avons en outre e ee immdiatement la proprit suivante : e ee Proprit 16. La distance dun code de Hamming est 3. e e Preuve. Le code est 1-correcteur donc (C) 2t + 1 = 3. Il sut donc dexhiber deux mots distants de 3 : pour nimporte quel mot, en changeant uniquement le premier bit de donne (c3 ), seuls les deux premiers bits de e contrle sont modis. o e P Exemple de correction avec le code(7,4) binaire de Hamming. En reprenant lexemple prcdent, supposons que lon reoive le mot 1111101. Le e e c message source devrait tre 1101 mais le contrle de parit indique que les bits e o e 2 et 4 sont errons ; la correction dune erreur unique est alors ralise en moe e e diant le bit dindice 4+2=6. Le mot corrig est alors 1111111 qui correspond e au mot source 1111. Exercice 4.19. On consid`re le code de Hamming (15,11) de distance 3. e 1. Quel est son rendement ? 2. Vrier que le code de Hamming(15,11) est quivalent au code C(15, 4) e e dni par une fonction C : F11 F15 de la forme C (s) = s [I11 R] e 2 2 o` I11 est la matrice identit 11 11 et R une matrice de M4,11 (F2 ) que u e lon explicitera. 3. Donner lalgorithme de codage. 4. Donner un algorithme qui dtecte jusqu` 2 erreurs. e a 5. Donner un algorithme qui corrige 1 erreur. Que se passe-t-il en cas de 2 erreurs ? Solution page 322.

240

e Chapitre 4 : Dtection et correction derreurs

Pour les applications o` le taux derreurs est faible, un codage de Hamming u peut tre utilis. Le Minitel par exemple utilise un code de Hamming (128,120) e e qui est 1-correcteur : le message est trononn en blocs de 15 octets, i.e. 120 c e bits ; Un 16`me octet contient 8 bits de contrle qui permet de localiser un e o bit derreur parmi les 128. En outre un 17`me octet, dit de validation et ne e contenant que des 0, est utilis pour dtecter des perturbations importantes. e e Le code nal est donc un code binaire 1-correcteur de param`tres (136,120). e Cependant, les dveloppements des codes cycliques et notamment la mise au e point de procdures de codage et de dcodage particuli`rement ecaces ont e e e motiv lintgration de ces codes correcteurs dans de nombreuses applications e e o` le taux derreurs est important et donc la capacit de correction critique. u e Les paragraphes suivants montrent quelques-uns de ces codes utiliss par exeme ple pour la lecture de disques compacts et pour la transmission dimages par satellites.

4.4
4.4.1

Codes linaires et codes cycliques e


Codes linaires et redondance minimale e

Nous avons vu quun code correcteur (n, k) est caractris par une application e e k V n . Lanalyse de dans un contexte quelconque est dicile ; aussi, :V on se restreint au cas o` est linaire. Cette restriction ore des avantages u e en termes de temps de calcul : le codage et dcodage seront eectus assez e e rapidement, en temps polynomial en n. Pour pouvoir tudier ce cas, il faut que e V k et V n puissent tre munis dune structure vectorielle, donc que V puisse e tre muni dune structure de corps F (avec les restrictions dj` mentionnes e ea e sur le cardinal de V , voir les rappels mathmatiques au chapitre 1). Dans toute e la suite, on consid`re indiremment lalphabet V et le corps ni F de mme e e e cardinal. Soit C un code (n, k) sur F. On dit que C est un code linaire de longueur n e et de dimension k lorsque C est un sous-espace vectoriel de Fn de dimension k. Puisque deux espaces vectoriels de mme dimension sur un mme corps sont e e isomorphes, un code C(n, k) sur F est un code linaire si et seulement sil existe e une application linaire : Fk Fn telle que (Fk ) = C. e Pour une base du sous-espace vectoriel C xe, lapplication linaire est e e caractrise par la donne de sa matrice G de dimension k n ` coecients e e e a dans F. Une telle matrice G est appele matrice gnratrice du code C. e e e Remarque 4. Parce que les mots de code sont souvent reprsents sous forme e e de vecteurs lignes, on a choisi de reprsenter par une matrice rectangulaire e dans laquelle les vecteurs gnrateurs de Im() sont les lignes. e e Pour un mme code linaire C, il y a autant de matrices gnratrices quil y a e e e e

4.4 Codes linaires et codes cycliques e

241

de choix possibles dune base de C. Mieux, si G est une matrice gnratrice de e e C, alors pour toute matrice carre inversible A dordre k et ` lments dans e a ee F, la matrice G = A G est une matrice gnratrice de C. e e t .A G/x Fk } = {y t .G/y Im((A)t )} = {y t .G/y Preuve. Im(G ) = {x Fk } = C . P

Exemple : Considrons le code (4, 3) de parit sur F2 . Le mot de code e e t = [x , x , x ] est alors bt = [b , b , b , b ] dni associ au mot dinformation x e e 0 1 2 0 1 2 3 par : b0 = x0 b1 = x1 b2 = x2 b3 = x0 + x1 + x2 mod 2 Ce code est un code linaire sur F2 de matrice gnratrice : e e e 1 0 0 1 G = 0 1 0 1 . 0 0 1 1 On a alors bt = xt G . Thor`me 27. Soit C un code (n, k) linaire et soit d = mincC e e e Alors (C) = d, i.e. C est (d 1)-dtecteur et e (n, k, d).
d1 2 ;c=0 w(c).

-correcteur. Le code C est alors dit code

Preuve. Comme est linaire, C = Im() est un sous-espace vectoriel de e Fn . Donc 0 C (0 est le vecteur dont les n composantes sont nulles). Do`, u pour tout c C, (C) d(c, 0) = w(c), puis (C) mincC w(c). Rciproquement, soient c1 et c2 deux lments de C tels que (C) = d(c1 , c2 ) e ee = w(c1 c2 ). Comme C est un sous-espace vectoriel, c = c1 c2 appartient ` a C ; (C) mincC w(c). Finalement (C) = mincC w(c). P Thor`me 28 (Borne de Singleton). La distance minimale d dun code e e (n, k) linaire est majore par : e e d n k + 1.

Preuve. Soit C un code linaire dni par lapplication linaire . Comme e e e est injective, rang() = k. Do` dim(C) = dim(Im())=k. u

242

e Chapitre 4 : Dtection et correction derreurs

Considrons le sous-espace E de Fn form par les vecteurs dont les k 1 e e derni`res composantes sont nulles : dim(E) = n k + 1. e Ainsi, E et C sont deux sous-espaces vectoriels de Fn et dim(C) + dim(E) = n + 1 > n. Il existe donc un lment non nul a dans C E. Comme a E, ee w(a) n k + 1 ; comme a C, (C) w(a) n k + 1. P La borne de Singleton impose donc ` un code(n, k) linaire de distance d a e davoir au moins r d 1 chires de redondance. Un code qui atteint cette borne d = r + 1 est dit MDS (maximum distance separable). Exemple : Le code de Hamming admet comme matrice gnratrice : e e 1 1 1 1 0 0 G= 0 1 0 1 1 0 binaire (7, 4) est un code linaire qui e 0 1 1 1 0 1 0 0 0 0 1 0 0 0 . 0 1

(4.5)

Sa distance tant 3, cest un code linaire (7, 4, 3). e e Plus gnralement, le code de Hamming binaire de longueur n est un code e e (n, n 1 log2 n , 3) (nous avons vu quun tel code est 1-correcteur). Bien que de distance 3, il natteint pas la borne de Singleton car d = 3 < 2+ log2 n sauf dans le cas (n, k) = (3, 1). Pourtant, nous avons vu quil tait parfait et e quil nexistait pas de code binaire de distance 3 avec moins de chires de redondance lorsque n nest pas une puissance de 2. Thor`me 29. Tout code poinonn dun code MDS est MDS. e e c e Preuve. Soit C un code linaire MDS (n, k) et G une matrice gnratrice. Soit e e e C le code poinonnCode !poinonn de C obtenu en supprimant u positions c e c e dans les mots de code. Le code C est linaire (n u, k) car la sous-matrice e G obtenue en supprimant les colonnes de G aux u positions est gnratrice e e de C . De plus C est de distance d suprieure ou gale ` d u. Comme C est e e a MDS, d = n k + 1 ; do` d u (n u) k + 1. Donc, C (n u, k) atteint la borne de Singleton n u k + 1 et est donc MDS. P Exercice 4.20 (Un code MDS est systmatique). Soit G la matrice e t G le codage associ. Montrer que pour gnratrice dun code MDS et (x) = x e e e tout mot de code c = (x), il est possible de reconstruire x de mani`re unique e ` partir de la donne de k coecients quelconques de c. Solution page 322. a e Exercice 4.21. Montrer que tout code raccourci dun code MDS est MDS. Solution page 323.

4.4 Codes linaires et codes cycliques e

243

4.4.2

Codage et dcodage des codes linaires e e

Le dcodage et la correction derreur, si le code na pas de structure partie culi`re, peut tre tr`s long, voire impossible pour des tr`s grands codes. Il e e e e consisterait, pour chaque mot reu, ` le comparer avec tous les mots de C et ` c a a lidentier au plus proche. En pratique, la structure linaire des codes conduit e ` des algorithmes de codage et dcodage assez ecaces lorsque le nombre a e derreurs t corriges par le code est petit. e Pour ltude du codage et du dcodage du code linaire C, nous pouvons e e e nous limiter au cas o` la matrice gnratrice G, scrit sous la forme dite u e e e systmatique : e G= L R (4.6)

o` L est une matrice carre k k inversible, et R une matrice k r. u e En eet, si G nest pas sous cette forme, on permute les colonnes de G jusqu` a obtenir L inversible ; ceci est possible puisque rg(G) = k. On obtient alors une matrice gnratrice G dun code linaire C quivalent ` C. Apr`s le codage e e e e a e et la correction ` partir de C , on retrouve le message initial en r-appliquant a e la matrice de permutation. On construit alors G = L1 G, soit : G = Ik T = L1 R

La matrice G est galement gnratrice de C, dapr`s la remarque 4. e e e e La matrice G est appele matrice gnratrice normalise (ou canonique) du e e e e code C. Tout code linaire poss`de une matrice gnratrice normalise. e e e e e Cette matrice normalise est de plus unique. En eet, soit [Ik |T1 ] et [Ik |T2 ] deux e matrices gnratrices de C. Pour tout x Fk , [xt , xt T1 ] et [xt , xt T2 ] sont donc e e dans C. Comme C est un sous-espace vectoriel, leur dirence [0, xt (T1 T2 )] e est aussi dans C. Or, le seul lment de C dont les k premi`res composantes ee e sont nulles est 0. Do`, quel que soit x Fk , xt T1 = xt T2 , soit T1 = T2 . u Codage par multiplication matrice-vecteur On dduit de ce qui prc`de une mthode de codage de C : tout mot source e e e e u Fk (vecteur ligne) est cod par (u) = uG = [u, u.T ]. Ainsi, on crit u e e suivi de uT qui contient les chires de redondance.

244

e Chapitre 4 : Dtection et correction derreurs

Dcodage par multiplication matrice-vecteur e La mthode de dtection derreur et de dcodage utilise la proprit suivante : e e e ee Proprit 17. Soit H la matrice r n : H = T t e e [x1 , . . . xn ] C si et seulement si Hx = 0. H est appele matrice de contrle de C. e o Preuve. Soit x C. Il existe u Fk tel que x = u[Ik |T ]. Do` xH t = u T T u[Ik |T ] . Or, [Ik |T ] = [T T ] = [0] ; par consquent pour tout e Ir Ir x, Hx = 0. T Rciproquement, si Hx = 0 alors [x1 , . . . , xn ] e = [0, . . . , 0]r . Ir T1,j . La composante j (1 j r) donne alors [x1 , . . . , xk ] . xk+j = 0 . T1,j . . Do` [x , . . . , x ] = [x , . . . , x ]T . . Soit xk+j u k+1 1 k+r k . Tk,j Finalement on a [x1 , . . . , xn ] = [x1 , . . . , xk ][Ik |T ] = [x1 , . . . , xk ]G , et x C. P = [x1 , . . . , xk ] Pour dtecter une erreur si on reoit un mot y, il sut donc de calculer Hy, e c quon appelle le syndrome derreur. On dtecte une erreur si et seulement si e Hy = 0. On cherche alors ` calculer le mot mis x ` partir de y. Pour cela, a e a on calcule le vecteur derreurs e = y x. Ce vecteur e est lunique lment ee de Fn de poids de Hamming wH (e) minimal tel que He = Hy. En eet, si C est t-correcteur, il existe un unique x C, tel que dH (x, y) t. Comme dH (x, y) = wH (x y), on en dduit quil existe un unique e Fn , tel que e wH (e) t. De plus He = Hy Hx = Hy car Hx = 0. On construit alors une table de |F|r entres, dans laquelle chaque entre i e e correspond ` un lment unique zi de Im(H) ; dans lentre i, on stocke le a ee e vecteur ei Fn de poids minimal et tel que Hei = zi . La correction est alors triviale. Quand on reoit y, on calcule Hy et lentre c e i de la table tel que zi = Hy. On trouve alors ei dans la table et on renvoie x = y ei . Tk,j Ir . Alors xt =

4.4 Codes linaires et codes cycliques e

245

Exemple : Considrons le code de Hamming (7,4) dont la matrice gnrae e e trice G est donne par la relation (4.5) (voir ` la page 242). Dans ce cas, on a : e a 1 1 L= 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 ; R= 0 0 0 0 1 0 0 0 0 1 0 1 et T = L1 R = 1 1 1 0 1 1 1 1 . 0 1

La matrice gnratrice canonique G et la matrice e e par : 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 et H = 1 G = 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1

de contrle H sont donnes o e 1 1 1 1 0 0 0 1 1 0 1 0 . 1 0 1 0 0 1

0 Si lon reoit le mot y = 1111101, alors le calcul Hy = 1 montre quil y c 0 a erreur. Pour corriger lerreur, il sut (la table ` 23 = 8 entres nest pas a e ncessaire dans cet exemple simple) de constater que le vecteur e = 0000010 e est de poids (de Hamming) minimal et tel que He = Hy. Donc la correction de y est x = y + e = 1111111. Exercice 4.22 (Code dual). Soit C un code linaire (n, k) sur F. Le code e , est lensemble des mots de Fn orthogonaux ` C : dual de C, not C e a C = {x Fn , tel que pour tout c C : x.ct = 0}. Montrer que C est un code linaire (n, n k) sur F engendr par la matrice e e de contrle H du code C. o Solution page 323. Exercice 4.23 (Code de Golay). On consid`re le code de Golay G12 ternaire e (i.e. sur V = F3 ) de distance 6 et de matrice gnratrice G = [I6 |R] avec e e R= 0 1 1 1 1 1 1 0 1 2 2 1 1 1 0 1 2 2 1 2 1 0 1 2 1 2 2 1 0 1 1 1 2 2 1 0

1. Donner les caractristiques de G12 et sa matrice de contrle. e o

246

e Chapitre 4 : Dtection et correction derreurs

2. On vrie facilement que si r et s sont deux lignes quelconques de G, e alors r.s = 0. En dduire que G12 est auto-dual, i.e. G12 = G12 . e 3. Montrer que G12 nest pas parfait. 4. Soit G11 le code obtenu ` partir de G12 en supprimant sa derni`re coma e posante ; expliciter la matrice de contrle associe ` G11 . Quelle est sa o e a distance ? 5. Montrer que G11 est un code parfait. Solution page 323. En sintressant aux codes linaires, on a donc nettement amlior les perfore e e e mances du codage et dcodage avec correction derreur. Il existe une classe e de codes linaires, appele classe des codes cycliques, qui amliore encore la e e e facilit du calcul, et la possibilit de limplmenter simplement sur des circuits e e e lectroniques. De plus, grce aux codes cycliques, on verra aussi des mthodes e a e simples pour construire des codes en garantissant un taux de correction.

4.4.3

Codes cycliques

On appelle opration de dcalage cyclique lapplication linaire de V n dans e e e lui-mme dnie par e e ([u0 , . . . , un1 ]) = [un1 , u0 , . . . , un2 ] . Lopration est linaire, et on peut exhiber sa matrice : e e = 0 0 0 1 0 0 0 1 .. . 0 .. . 0 .. . 1 1 0 0 . . . 0

Un code cyclique est un code linaire qui est stable pour lopration de dcalage e e e n est cyclique lorsque de chire. Autrement dit, un code linaire C de V e (C) = C .

Exemple : Le code de parit (n, n 1) est un code cyclique. En eet, si e n2 c = (c0 , . . . , cn1 ) est un mot de code, alors cn1 = i=0 ci mod 2. Mais on a alors aussi cn2 = cn1 + n3 ci mod 2 ; ainsi, (c) = (cn1 , c0 , . . . , cn2 ) i=0 est aussi un mot de code. Le code de parit est donc cyclique. Cela peut se e

4.4 Codes linaires et codes cycliques e voir galement directement sur les e parit sa matrice gnratrice e e e 1 0 G= . . .

247

matrices : en eet, on associe au code de 0 .. . .. . 0 0 1 . . 1 . . . 0 . 1 1

1 .. . 0

Alors la remarque 4 nous donne que G et G gn`rent le mme code car e e e est inversible. Caractrisation : polynme gnrateur e o e e Tout lment U = [u0 , . . . , un1 ] de V n peut tre reprsent par le polynme ee e e e o de degr n 1 de V [X] (voir la section 1.3.4 du chapitre 1 page 63) e
n1

PU =
i=0

ui X i .

Comme X n 1 est un polynme de degr n, V n est isomorphe ` V [X]/(X n 1). o e a Dans V [X]/(X n 1), on a alors P(U ) = X.PU (X) un1 .(X n 1) = X.PU mod (X n 1)

Autrement dit, lopration de dcalage dun vecteur revient ` multiplier son e e a n 1). polynme associ par X dans V [X]/(X o e Cette proprit est ` la base du thor`me suivant qui donne une caractrisation ee a e e e algbrique dun code cyclique. e Thor`me 30. Tout code cyclique C = (n, k) e e GC de la forme : m (m) GC = ... k1 (m) admet une matrice gnratrice e e

nk i avec m = [a0 , a1 , . . . , ank = 1, 0, . . . , 0] tel que g(X) = i=0 ai X est un diviseur unitaire de (X n 1) de degr r = n k. e Le polynme g est appel polynme gnrateur du code cyclique. o e o e e Rciproquement, tout diviseur g de (X n 1) est polynme gnrateur dun e o e e code cyclique.

Preuve. Nous avons tout dabord besoin du lemme suivant :

248

e Chapitre 4 : Dtection et correction derreurs

Lemme 3. Soit C(X) lensemble des polynmes associs aux mots du code o e cyclique C. Alors C(X) est un idal de V [X]/(X n 1). e En eet, C(X) est clairement un groupe. Ensuite, pour tout PU de C(X), P(U ) = XPU est dans C(X) car C est cyclique. De la mme mani`re, tous e e i P sont galement dans C. Enn, par linarit toutes les combinaisons les X U e e e linaires des prcdents restent dans C. Autrement dit pour tout A(X) e e e V [X]/(X n 1), A(X)PU est dans C. Retour ` la preuve du thor`me. Lanneau V [X]/(X n 1) est principal (voir a e e section 1.3.4), donc C(X) est gnr par un certain polynme g(X) de degr e ee o e minimal r. Montrons que r = n k. Comme g(X) est un gnrateur, tous les lments e e ee du code scrivent A(X)g(X). Pris modulo X n 1, A(X) est donc de degr e e nr lments distincts du code. Ce qui n r 1 ; il y a donc exactement |V | ee nest possible que si n r = k. Il reste ` montrer que le polynme g est un diviseur de X n 1. On crit a o e n 1 = Q(X)g(X) + R(X) = 0 mod X n 1 avec la division euclidienne X degr(R) <degr(g). Or 0 et Q(x)g(X) sont dans lidal C(X), donc par lie e e narit R(X) aussi. Mais g est gnrateur de C(X) de degr minimal donc e e e e e R(X) = 0 et donc g divise X n 1. Enn, pour la rciproque, on crit e e g(X) Xg(X) GC = ... nr1 (m) X Ce code est linaire et (n, n r), donc k = n r. Ensuite, il est cyclique car e tout mot de code scrit U GC ou encore nr1 ui X i g(X) et donc (U GC ) = e i=0 nr2 nr1 i+1 g(X) = u ui X i+1 g(X) mod X n 1 est ui X nr1 g(X) + i=0 i=0 bien une combinaison linaire des puissances de g et donc un mot du code e gnr par les puissances de g. e ee P Cette proprit permet la construction directe de code correcteur par la donee ne dun polynme diviseur de X n 1. Pour reconna ces diviseurs, il est e o tre n 1. Cela se fait en temps raisonnable par exemple possible de factoriser X par lalgorithme Cantor-Zassenhaus donn en exercice ci-dessous. e Exercice 4.24 (Factorisation probabiliste de Cantor-Zassenhaus de polynmes sur un corps premier). La complexit (en nombre doprations o e e arithmtiques sur un corps premier Zp ) de laddition de deux polynmes de e o degr au plus d sera note Ad = O(d), la complexit de la multiplication ou e e e de la division sera note Md ,celle de lalgorithme dEuclide tendu sera note e e e

4.4 Codes linaires et codes cycliques e

249

Ed .Le but de cet exercice est dvaluer la complexit de la factorisation de e e polynmes sans carrs sur un corps ni. o e 1. En adaptant lalgorithme 7 page 61, en dduire un algorithme FDD (Face teurs de Degrs Distincts) factorisant un polynme P en P = P1 . . . Pk e o o` Pi est un produit de polynmes irrductibles de degr i. u o e e 2. Que vaut k au maximum ? En dduire la complexit de FDD. e e 3. Si p = 2 comment factoriser P1 ? 4. Dans toute la suite, nous supposons donc que p est impair et i 2. Il ne reste plus qu` sparer les facteurs irrductibles des Pi . Montrer que a e e i i pour tout polynme T = aj X j , X p X divise T p T dans Zp . o 5. En dduire que pour tout T , les facteurs irrductibles de Pi sont partags e e e entre T , T 2 1 et T 2 + 1. 6. En pratique, Cantor et Zassenhaus ont montr que si T est quelconque de e degr < 2i, il y a environ une chance sur deux que les facteurs de Pi ne e soient pas tous dans le mme des trois polynmes ci-dessus. En dduire e o e un algorithme de factorisation probabiliste SF (Sparation de Facteurs). e Comment rduire la taille des polynmes et quelle est alors sa complexit e o e en moyenne ? Solution page 324. Le lien entre code cyclique et polynme gnrateur est important ; il est ` la o e e a base des algorithmes ecaces de codage et de dcodage qui vitent la multie e plication par la matrice gnratrice GC (de cot O(nk)) en la remplaant par e e u c une multiplication par le polynme g, de cot O(n log n). Lintrt pratique o u ee est en outre que les circuits associs au codage et dcodage sont relativement e e simples ` raliser, par exemple par des registres ` dcalage linaire (LFSR). a e a e e Opration de codage e Soit C un code cyclique de polynme gnrateur g ; soit G une matrice go e e e nratrice de C construite ` partir de g comme dans le thor`me 30. Soit e a e e k1 a = [a0 , . . . , ak1 ] V k un mot source et Pa = ai X i son polynme o i=0 associ. Le mot de code associ ` a est (a) = aG de polynme associ PaG . e ea o e Par lcriture de G ` partir des coecients de g(X) (thor`me 30), on a : e a e e
k1
pi 1 pi 1

PaG =
i=0

ai (X i g(X)
k1

mod X n 1) mod X n 1

= [g(X)(
i=0

ai X i )]

= [g(X).Pa (X)]

mod X n 1 .

250

e Chapitre 4 : Dtection et correction derreurs

Le codage correspond donc ` un produit de polynmes, les degrs des monmes a o e o tant pris modulo n : en eet, calculer modulo X n 1 revient ` considrer que e a e X n = 1 = X 0. Exemple : Soit le code cyclique (7,4) associ au polynme g = (1 + X 2 + e o 3 ). Soit a = [a , a , a , a ] un mot source ; le code de ce mot est alors gal ` X e a 0 1 2 3 aG ; il est obtenu par multiplication ` droite par la matrice G. Le mme mot a e est obtenu en calculant les coecients du polynme : o (a0 + a1 X + a2 X 2 + a3 X 3 )(1 + X 2 + X 3 ) mod X 7 1 . Ainsi, pour a = [1001] : g Pa mod X 7 1 = (1 + X 2 + X 3 )(1 + X 3 ) = 1 + X 2 + 2.X 3 + X 5 + X 6 = 1 + X 2 + X 5 + X 6 . Donc (a) = [1010011]. Dtection derreur et opration de dcodage e e e Le codage prcdent montre que tout mot de code reu est un multiple de e e c g(X). Soit m V n un message reu et soit Pm son polynme associ. Lors du c o e dcodage, on calcule dabord Pe = Pm mod g ; e si Pe = 0 : le polynme reu est bien un multiple de g : il correspond donc ` o c a un mot de code. On retrouve le message mis en calculant le quotient Pm /g. e sinon, Pe = 0 : le mot reu nest pas un mot de code et il y a donc eu des c erreurs lors de la transmission. La dtection derreur est donc ralise via le calcul de Pe = Pm modulo g ; Pe e e e est le syndrome derreur. Dans le cas o` Pe est non nul, on peut procder ` une correction. Une mani`re u e a e brutale est de tabuler tous les mots de V n en associant ` chacun le mot de a code le plus proche, qui correspond au message corrig. La correction se fait e alors par lecture de la table. Le lien entre code cyclique et polynmes fait quil existe des algorithmes moins o coteux en place mmoire pour corriger un message erron. La mthode de u e e e Meggitt et ses variantes en sont des exemples. La dtection derreurs est donc une division de polynmes, qui se ram`ne, e o e comme le codage, ` une multiplication de polynmes de cot O(n log n). Lala o u gorithme de Berlekamp-Massey (voir sa description page 94) permet de raliser e la correction pour un code cyclique avec un cot similaire. u Exercice 4.25. On a montr que tout code cyclique est caractris par la done e e ne dun polynme gnrateur, diviseur unitaire de degr r = n k de X n 1. e o e e e Le code C est donc caractris par la donne de seulement r = n k coee e e cients g0 , . . . , gnk1 . Justier que rciproquement, la donne dun polynme e e o g diviseur unitaire de degr n k de X n 1 dnit un unique code cyclique e e (n, k). Solution page 324.

4.4 Codes linaires et codes cycliques e

251

4.4.4

Codes BCH

Le taux de correction dun code cyclique est dicile ` calculer. Cependant, ce a paragraphe prsente un thor`me qui permet de garantir une minoration de e e e la distance dun code, et par suite (dapr`s le thor`me 27) une minoration du e e e taux de dtection. e Distance garantie Nous nous plaons dans un corps ni Fq et rappelons la notion de racine c e primitive ni`me de lunit vue en section 1.4.2 : cest une racine simple du e n 1, dordre n (en gnral lordre dune racine ni`me quelconque e polynme X o e e o = 1 et il vaut donc au plus n). de lunit est le plus petit entier o tel que e e Un intrt des racines primitives ni`me de lunit est que lon peut les utiliser ee e pour trouver des codes de distance minimale xe. e Thor`me 31. Soit C un code cyclique (n, k) de polynme gnrateur g e e o e e e Fq [X] avec n premier avec q et soit une racine primitive ni`me de lunit. e l ) = g( l+1 ) = . . . = g( l+s1 ) = 0 Sil existe deux entiers l et s tels que g( alors (C) s + 1. Le code C est donc au moins s-dtecteur et s/2 -correcteur. e Preuve. Comme le code est linaire, il sut de montrer quaucun mot de e code nest de poids de Hamming infrieur ` s + 1. Par labsurde, supposons e a quil existe un mot de code m = m0 + m1 X + . . . mn1 X n1 de poids w tel que 1 w < s + 1. Comme m est un multiple de g, m vrie galement e e l ) = m( l+1 ) = . . . = m( l+s1 ) = 0. Cela se rcrit galement sous m( ee e la forme matricielle suivante o` lon na gard que les lignes pour lesquelles u e mik = 0 : li1 ... liw mi1 0 (l+1)i1 ... (l+1)iw mi2 0 . = . . . .. . . . . . . . . . (l+w1)i1 . . . (l+w1)iw miw 0 Le syst`me linaire ainsi crit est carr et nexiste que si w e e e e s car il y a seulement s racines g de la forme l+i donnant donc un second membre nul. Comme les mik sont non nuls, ce syst`me nest possible que si la matrice e est singuli`re. Or cette matrice est de type Vandermonde et son dterminant e e vaut l(i1 +...+iw ) ij <ik ( ij ik ). Ce dernier est non nul car est une racine e primitive ni`me . Ceci est absurde, et donc w doit tre strictement suprieur ` e e a s. P

252

e Chapitre 4 : Dtection et correction derreurs

Construction des polynmes gnrateurs BCH o e e En application de ce thor`me, Bose, Chaudhuri et Hocquenghem ont propos e e e une mthode de construction de codes cycliques ayant un taux de correction e arbitraire. Nous considrons que n est premier avec q. Ensuite, prenons une racine e e primitive ni`me de lunit. Alors on peut crire X n 1 = (X i ). On e e n 1 = P (X) . . . P (X) en polynmes peut galement crire la factorisation X e e o 1 k irrductibles de Fq [X]. Or, comme n est premier avec q, toutes les racines de e X n 1 sont distinctes et sont donc les racines dun et dun seul des facteurs irrductibles Pi . On note ik , lindice du polynme irrductible dont k est e o e racine. Bose, Chaudhuri et Hocquenghem ont alors propos dutiliser comme e polynme gnrateur dun code le polynme o e e o g(X) = ppcm{Pik+1 (X), . . . , Pik+s (X)}. Un tel code est appel code BCH. e Corollaire 3. Un code BCH est de distance minimale suprieure ` s + 1 et e a donc de taux de correction garanti suprieur ` s/2 . e a Preuve. Dans une extension, on voit que g(X) = H(X) s (X k+i ) i=1 pour un certain polynme H. Le thor`me 31 donne alors la borne infrieure o e e e sur la distance. P Exemple : Pour fabriquer un code 2-correcteur dans F5 , prenons F5 [X] et par exemple X 8 1. Alors on calcule, par exemple par lalgorithme de lexercice 4.24, page 248 : X 8 1 = (X 2 + 2)(X 2 + 3)(X + 1)(X 1)(X 2)(X 3) mod 5. Clairement 1, 2, 3, 1 sont dordre plus petit que 5 et ne peuvent donc pas tre e e racines primitives 8i`me de lunit. Dans une extension on note une racine de e X 2 + 2. Alors 2 = 2 = 3 et donc 3 = 3, 4 = 4, 5 = 4, 6 = 2, 7 = 2 et 8 = 6 = 1. Nous avons donc de la chance, car il existe bien une racine e primitive 8i`me de lunit dans F5 . Si cela navait pas t le cas, il aurait fallu e ee n 1 avec n = 8. Ensuite, si lon essayer dautres polynmes de la forme X o veut un code 2-correcteur, il faut trouver les polynmes irrductibles ayant i o e comme racine pour i par exemple de 1 ` 4. est racine de X 2 + 2, 2 = 3 a est racine de X 2, 3 = 3, vriant (3)2 = 4 3 = 2, est donc racine e de X 2 + 3 et enn, 4 = 4 = 1 est racine de X + 1. On peut donc prendre ` g(X) = (X 2 + 2)(X 2 + 3)(X + 1)(X 3). A noter nanmoins que lon obtient e un code au moins 2-correcteur avec 7 caract`res de redondance sur 8, soit un e rendement de seulement 0, 125.

4.4 Codes linaires et codes cycliques e Exercice 4.26 (Code BCH plus conomique). e

253

e 1. Trouver une racine primitive 16i`me de lunit modulo 5 ` laide de X 16 e a 4 + 2)(X 4 + 3)(X 8 1) mod 5. 1 = (X

2. Comment construire un code 2-correcteur plus conomique que celui de e lexemple ci-dessus. Solution page 324. Sur cet exemple, il est clair que lon peut construire des codes avec un taux de correction choisi ; il faut toutefois pour cela arriver ` trouver une racine a primitive adquate. e En pratique, les codes BCH les plus utiliss correspondent ` n = q t 1 ; un e a tel code est dit primitif. Parmi ceux-ci, les codes BCH ayant n = q 1 sont appels codes de Reed-Solomon et nous allons voir quils sont particuli`rement e e conomiques et plus faciles ` construire. e a Codes BCH optimaux : codes de Reed-Solomon Tout code BCH primitif a une longueur n = q t 1 et ncessite par consquent e e que n soit premier avec q. Les codes de Reed-Solomon vrient en outre plus e prcisment n = q 1. Dans ce cas, il existe toujours des racines primitives e e i`mes de lunit, ce sont les racines primitives classiques de F (voir section e n e q 1.3.5). Nous allons voir quil est alors toujours possible de ne choisir que des polynmes irrductibles sur Fq [X] de degr 1, comme polynmes minimaux de o e e o chacun des k+i . Le polynme gnrateur est alors de degr global minimal, et o e e e donc le code est de redondance minimale, pour un taux de correction donn. e Lintrt de ces codes est double. Dune part, ils sont optimaux dans le sens o` ee u ils requi`rent un nombre de chires de redondance minimal pour une capacit e e de correction xe. Dautre part, ils sont particuli`rement rapides ` coder et e e a dcoder. e Construisons donc un polynme gnrateur de Reed-Solomon. Le polynme o e e o X q1 1 se factorise tr`s simplement sur Fq : ses racines sont tous les lments e ee non nuls de Fq . X q1 1 =
Fq {0}

(X ) .

Le groupe multiplicatif Fq {0} tant cyclique, soit une racine primitive. e Alors Fq et donc aucune extension de scindage nest ncessaire pour avoir : e
q1

X q1 1 =
i=1

(X i ) .

254

e Chapitre 4 : Dtection et correction derreurs

La construction dun code de Reed-Solomon avec r chires de redondance repose sur le choix dun polynme gnrateur de degr r, dont les racines sont o e e e conscutives : e
s+r1

g(X) =
i=s

(X i ) .

Le code de Reed-Solomon ainsi obtenu est donc un code (n = q 1, k = n r) avec r arbitraire. Le taux de correction de ce code est optimal. En eet, en tant que code BCH, la distance minimale du code de Reed-Solomon est au moins r + 1. Or, la borne de Singleton (thor`me 28) montre que n k + 1 = r + 1 ; ainsi, e e la distance est = r + 1 et atteint la borne de Singleton. Les codes de Reed-Solomon sont tr`s utiliss en pratique. e e Exemple : Le satellite dexploration de Jupiter Galileo utilise le code de Reed-Solomon (255,223) de distance 33. Ce code est 16-correcteur sur le corps F28 . Si est une racine primitive de F28 (ici cest une racine quelconque du polynme primitif T 8 +T 7 +T 2 +T +1 utilis pour engendrer F28 ), le polynme o e o gnrateur de degr r = 32 du code de Reed-Solomon (255,223,33) choisi est1 : e e e
43

g=

(X 11j ).
j=12

Dcodage des codes de Reed-Solomon e Le dcodage des codes de Reed-Solomon peut se faire tr`s rapidement car calcul e e du syndrome derreur se ram`ne dans ce cas ` un calcul rapide de transforme e a e de Fourier ! En eet, la matrice de contrle H dnie section 4.4.2 dun code o e de Reed-Solomon peut sexprimer facilement comme ceci : H= 1 2 ... 2 (2 )2 . . . 1 . . . . . . . . . 1 r (r )2 . . . n1 (2 )n1 . . . (r )n1 L L2 = ... Lr

g = X 32 + [96]X 31 + [E3]X 30 + [98]X 29 + [49]X 28 + [B2]X 27 + [82]X 26 + [28]X 25 + [32]X 24 + [F 1]X 23 + [64]X 22 + [C2]X 21 + [70]X 20 + [F 0]X 19 + [72]X 18 + [4C]X 17 + [76]X 16 + AF X 15 + [20]X 14 + [65]X 13 + [9F ]X 12 + [6B]X 11 + [8B]X 10 + [69]X 9 + [29]X 8 + [57]X 7 + [D3]X 6 + [6A]X 5 + [7F ]X 4 + [C4]X 3 + [90]X 2 + [D6]X + [7C].

4.4 Codes linaires et codes cycliques e

255

La raison est que si G est la matrice gnratrice du code, alors GH T sexprime e e comme lapplication du polynme g au dirents coecients de H, les i , o e dcal de X ` chaque ligne : e e a GH T = = g(X) Xg(X) . . . r1 g(X) X g() g() . . . LT LT 2 ... ... . . . LT r g(r1 ) g(r1 ) . . . r1 g(r1 ) (4.7)

g(2 ) g(2 ) . . .

r1 g() r1 g(2 ) . . .

Or, cette matrice GH T est nulle car les i sont les racines du polynme g(X) ; o en outre, H est de rang r car est une racine primitive. On a donc bien que H est la matrice de contrle du code. o Ensuite, un mot de code b = b0 + b1 X + . . . bn1 X n1 est un multiple de g (b(X) = u(X)g(X) o` u est le message initial), puisquun code de Reedu Solomon est cyclique. Linterprtation duale dans le cas particulier des codes e de Reed-Solomon est quun mot de code est caractris par le fait que les r e e premiers termes de sa transforme de Fourier sont nuls : e bH T = nDF T1..r (b).

Cela dcoule de la formule 1.9, page 88 et du fait que 0 = ugH T = bH T car e H est la matrice de contrle du code. o Nous pouvons alors maintenant dcoder. Posons b le mot de code transmis, c le e mot reu et e lerreur commise, donc telle que c = b + e. Puisque b est un mot c de code, sa multiplication par la matrice de contrle doit donner un vecteur o nul, et donc les premiers termes de sa transforme de Fourier sont nuls. Cela e induit que les premiers termes des transformes de Fourier discr`tes de c et e e e sont gaux : DF T1..r (c) = DF T1..r (e). e Le probl`me quil reste ` rsoudre est donc de reconstituer e ` partir des seuls e a e a premiers termes de sa transforme de Fourier. Lastuce est que les coecients e de la DFT dun mot sont linairement gnrs par un polynme de degr le e e ee o e poids de Hamming de e (le nombre w(e) derreurs commises, voir la section 4.3.1) : Thor`me 32 (Blahut). Les coecients de la DFT de e sont linairement e e e gnrs par un polynme de degr w(e). e e e o e

256

e Chapitre 4 : Dtection et correction derreurs

Preuve. Tout dabord, compltons la srie E associe ` la DFT de e : on e e e a a E(X) = Ei X i o` les termes Ei pour i u n, valent Ei = Ei mod n = i=0 1 1 e(i ) = e(i mod n ) car tant une racine primitive, elle est dordre e n n n = q 1 dans Fq . Ainsi, E(X) =
1 n i=0 n1 ij j=0 ej

Xi =

mule inclut le dveloppement e permet alors dcrire e 1 E(X) = n


n1

i i i=0 e( )X ou encore E(X) = n1 1 j i e j=0 ej i=0 ( X) . Or cette derni`re forn 1 en srie enti`re de 1j X . Cette remarque nous e e 1 n n1

ej
j=0

1 1 = jX 1 n

ej
j=0 et ej =0

R(X) 1 = jX 1 (X)

et donc E(X) est le dveloppement en lments simples dune fraction ratione ee R(X) nelle (X) , avec degr(R) < degr() et e e
n1

(X) =
j=0 et ej =0

1 j X

Donc degr() = w(e) et est le polynme minimal gnrateur de la squence e o e e e E(X) calcul par lalgorithme de Berlekamp-Massey, comme on le voit sur e lquation 1.11, page 96. e P De cette preuve constructive, on dduit immdiatement le taux de correction e e dun code de Reed-Solomon et lalgorithme de dcodage des codes de Reede Solomon : Algorithme 27 Dcodage des Reed-Solomon. e Entres c un mot comportant moins de r1 erreurs. e 2 Sorties b le mot de code corrig. e [E0 , . . . , Er1 ] = DF T1..r (c) (X) = Berlekamp M assey(E0..r1 ) E = LF SR (E0 , . . . , Er1 ) e = DF T 1 (E) Renvoyer b = c e
r1 2

Corollaire 4. Les codes de Reed-Solomon sont

correcteurs.

Preuve. Par dnition, cest le taux maximal possible. Ensuite la preuve e du thor`me prcdent montre que d`s que 2w(e) < r 1 lalgorithme de e e e e e Berlekamp-Massey aura susamment de termes pour trouver un gnrateur e e de degr w(e) et complter le syndrome. e e P

4.4 Codes linaires et codes cycliques e

257

Corollaire 5. Les codes de Reed-Solomon sont dcodables en temps quasi e linaire. e Preuve. La complexit du calcul de la DFT ou de son inverse est quasie linaire, en O(n log(n)) oprations. De mme lalgorithme de synth`se de LFSR e e e e 2 oprations ou O(r log(r)) avec un algode Berlekamp-Massey ncessite 4r e e rithme dEuclide rapide arrt au milieu. Enn, lapplication du registre ` dee a e calage linaire ncessite 2(n r)w(e) < 2nr oprations o` encore O(n log(n)) e e e u avec une multiplication rapide de polynmes. o P Exercice 4.27 (Correction des eacements). Lors de la lecture dun CDROM, un spot laser peut renvoyer 3 symboles : 0, 1, ?. Le symbole ? correspond ` un relief non correct (d par exemple ` une poussi`re ou une a u a e rayure) ; on dit alors quil y a eacement. Plus gnralement, la prsence de e e e ? ` la sortie dun canal indique que le symbole correspondant est manquant. a ` A la dirence dune erreur, un eacement donne la position du bit erron. e e 1. Montrer quun code (n, k) quelconque de distance d permet de corriger d 1 eacements. 2. On consid`re un canal binaire sur lequel on veut pouvoir corriger jusqu` e a 1% deacements (doctet) en utilisant un code de Reed-Solomon sur F256 . Prciser les caractristiques (n, k, d) de ce code. e e 3. On suppose que le mot reu comporte des eacements, mais pas derreur. c Proposer une mthode de correction dau plus d 1 eacements. e 4. Soit C un code (n, k) de distance d = 2t + s + 1. En dduire une mthode e e permettant de corriger simultanment t erreurs et s eacements. e Solution page 325. Les codes de Reed-Solomon sont tr`s utiliss pour la correction des erreurs et e e des eacements dans les syst`mes distribus de chiers, comme les syst`mes e e e RAID ou encore les syst`mes pair-`-pair ; dans ces syst`mes, des ressources de e a e stockage peuvent dispara tre. Lutilisation de codes correcteurs permet alors de retrouver, grce ` la redondance, les blocs manquants. a a Exemple : Le protocole PAR-2 de stockage dun chier sur un syst`me e pair-`-pair en est un exemple ; il est bas sur un code de Reed-Solomon sur a e F216 avec le polynme primitif X 16 + X 12 + X 3 + X + 1. o Concr`tement, PAR-2 permet de reconstruire un chier lorsque des blocs sont e manquants ; il ne corrige donc pas les erreurs mais uniquement des eacements. Le nombre de blocs qui peuvent tre reconstruits est paramtrable et not r e e e ci-dessous.

258

e Chapitre 4 : Dtection et correction derreurs

Soit un chier source ` stocker de taille 2km octets ; PAR-2 partitionne ce a chier en k chiers D1 , . . . , Dk de mme taille gale ` m mots de 16 bits. En e e a complment, r chiers redondants C1 , . . . , Cr , contenant aussi m mots de 16 e bits sont ajouts. En outre, dans leur en-tte, les chiers Ci contiennent des e e informations complmentaires, comme les rsums MD5 de tous les chiers, e e e leur taille, etc ; ces informations sont utilises pour dtecter les chiers core e rompus. Dans la suite, le mot form par les n = k + r chires de 16 bits en e position i des chiers D1 , . . . , Dk , C1 , . . . , Cr est considr comme un mot de ee code. Il est not d1 , . . . , dk , c1 , . . . cr de mani`re gnrique indpendamment de e e e e e sa position i. Les chires de redondance c1 , . . . , cr sont calculs par un code de Reed-Solomon e (n, k), raccourci du code de Reed-Solomon standard de longueur 65535 sur F16 , gnr par le polynme g(x) = r (X i ) ; il est donc de distance r + 1. e ee o i=1 Pour la lecture, on cherche ` rcuprer les n chiers D1 , . . . Dk , C1 , . . . , Cr mais a e e on sarrte d`s que lon en a rcupr k complets et non corrompus (vrication e e e ee e des hashs MD5 et de la taille). Pour reconstruire les di , on ne conserve que les k chiers correspondants en poinonnant les r autres positions. Soit alors y c lun des m mots reus. Soit G la sous-matrice de G construite en supprimant c les colonnes des eacements. Alors, G est de rang k (thor`me 29) ; le syst`me e e e x.G = y admet donc une unique solution x qui est calcule par rsolution du e e syst`me linaire en G et qui est le mot corrig. e e e

4.5
4.5.1

Paquets derreurs et entrelacement


Paquets derreur

Sur la plupart des canaux, les erreurs ne se produisent pas de mani`re isoe le (ils ne suivent pas une distribution alatoire et uniforme) mais peuvent e e atteindre plusieurs symboles conscutifs ; on parle derreurs par paquet. Cest e par exemple le cas des disques compacts (poussi`res, rayures) ou des liaisons e satellites (perturbations lectromagntiques). e e La longueur dun paquet est sa taille en nombre de symboles. Par exemple, apr`s mission de la squence binaire ...10010110011..., la squence reue est e e e e c ...10111011011... ; le mot derreur est alors ...00101101000... qui contient 4 erreurs isoles mais qui correspondent ` un mme paquet de longueur 6. e a e Le plus souvent, la longueur du paquet est alatoire et mme la longueur e e moyenne peut varier au cours du temps. Exercice 4.28 (Code linaire et dtection de paquet derreurs). Soit e e C un code linaire (n, k) sur Fq qui dtecte tout paquet de longueur au plus l. e e Montrer que C ne contient aucun mot qui est un paquet de longueur infrieure e ou gale ` l. En dduire que l n k. e a e Solution page 325.

4.5 Paquets derreurs et entrelacement

259

Exercice 4.29 (Distance dun code et longueur de paquet). Sur un canal binaire, on utilise un code sur F256 par blocs C(n, k) de distance d. Quelle est la longueur maximale l dun paquet derreurs binaires corrig par e ce code ? Solution page 326. Les techniques dentrelacement et dentrelacement crois permettent, ` partir e a dun code donn, avec un taux de correction donn ; daugmenter la longueur e e des paquets derreurs corrigs. e

4.5.2

Entrelacement

Plutt que de transmettre les mots de code conscutivement, la technique o e dentrelacement consiste ` les entrelacer pour que deux chires conscutifs dun a e mme mot napparaissent pas conscutivement dans la squence transmise. e e e Dans la suite, C est un code (n, k). Il existe direntes mthodes pour transe e mettre de mani`re entrelace un message M = [a, b, c, ...] qui est une squence e e e de taille quelconque de mots de code. Le principe est le suivant. Supposons que lon veuille transmettre un message M form de trois mots de code [a, b, c] de e longueur 5. La transmission sans entrelacement de M consiste ` envoyer sur le a canal la squence a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4 c5 . Matriciellement, le message e M scrit : e a1 a2 a3 a4 a5 M = b1 b2 b3 b4 b5 c1 c2 c3 c4 c5 et, sans entrelacement, cette matrice est transmise ligne par ligne. Linconvnient est quun paquet derreurs de longueur 2 peut entra e ner deux erreurs dans un mme mot de code et donc ne pas tre corrig si le code est seulement e e e 1-correcteur. Avec entrelacement, la matrice est transmise colonne par colonne ; la squence e correspondante est donc a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 a5 b5 c5 . Tout paquet derreurs de longueur au plus 3 ne peut alors pas entra ner plus dune erreur sur un mme mot ; grce ` lentrelacement, il peut donc tre corrig mme si e a a e e e le code initial est simplement 1-correcteur. On gnralise lentrelacement ci-dessus en traitant le message par blocs de p e e mots ; un tel entrelacement est dit de profondeur p. Si le code initial corrige des paquets de longueur l, lentrelacement de profondeur p permet de corriger des paquets de longueur p.l (exercice 4.30). Exercice 4.30 (Profondeur dentrelacement et longueur de paquet corrig). Soit C un code (n, k) sur V de distance d qui corrige des paquets e de longueur l. Soit p un entier et Cp le code (np, kp) sur V qui est lensemble de tous les entrelacements de p mots du code C. Le code Cp est dit entrelac e

260

e Chapitre 4 : Dtection et correction derreurs

de C de profondeur p. Montrer que Cp est de distance d mais permet de corriger tout paquet derreurs de longueur lp. Solution page 326.

4.5.3

Entrelacement avec retard et table dentrelacement

Le codage tant gnralement ralis ` la vole, on ne conna pas la taille du e e e e ea e t message M transmis ; M est donc une suite de taille inconnue de mots dun code (n, k). On ralise alors un entrelacement avec retard de M , ` la vole. Cet e a e entrelacement est dcrit ci-dessous en utilisant la technique classique de table e dentrelacement ; la table sert en fait de tampon circulaire par ligne. ` A envoyer a1 b1 a2 b2 a3 b3 a4 b4 a5 b5

Tab. 4.5: Initialisation dune table dentrelacement de retard 2 pour des mots de longueur 5.

Une telle table est caractrise par son retard r. Pour simplier lexpos, on e e e ` suppose que la table a n lignes et r.n colonnes. A linitialisation, on stocke les r premiers mots (donc nr symboles) dans la table comme suit : le symbole en position i du mot j est stock en ligne i et colonne j + (i 1)r. Autrement e dit, les r premiers mots sont stocks dans les r premi`res colonnes ; puis, pour e e i = 1, . . . , n, la ligne i est dcale ` droite de (i 1).r positions. Le rsultat e e a e nal est donn sur le tableau 4.5. e Apr`s cette initialisation, pour transmettre les dirents mots du message, on e e proc`de en itrant pour chaque bloc de p mots les trois oprations suivantes : e e e 1. on envoie dabord en squence dans le canal les r premi`res colonnes de e e la table, lune apr`s lautre ; e 2. puis on dcale circulairement les colonnes ` gauche de r positions ; la e a colonne r + 1 devient ainsi la premi`re colonne et r nouvelles colonnes e sont ajoutes ` droite ; e a 3. enn, on fait rentrer les r mots suivants du message dans la table de la mme faon que pour les r mots prcdents : le symbole en position i du e c e e mot j est encore stock en ligne i et colonne j + (i 1)r. e La table 4.6 montre ltat de la table apr`s un tour. e e

4.5 Paquets derreurs et entrelacement ` A envoyer c1 d1 a2 b2

261

c2 a3

d2 b3

c3 a4

d3 b4

c4 a5

d4 b5

c5

d5

Tab. 4.6: Table dentrelacement de retard 2 apr`s un tour. e

On remarque quen rgime permanent, chaque symbole transmis correspond e ` un symbole du message M . Mais ce nest pas le cas au dbut et en n de a e communication, puisque des cases non initialises de la table sont transmises. e Aussi, lors du dcodage, on supprime en dbut et en n de la squence reue, e e e c les positions qui ne correspondent pas ` un symbole de source ; par exemple a les positions de 2 ` n si r 1. a Grce ` cet entrelacement avec retard, deux caract`res conscutifs dun mme a a e e e mot de code sont distants dau moins rn + 1 positions dans la squence de e symboles transmise. Si le code initial corrige des paquets de longueur l, lentrelacement avec retard r garantit donc la correction de paquets de longueur l(rn + 1) Remarque 5. La longueur des paquets corrigs est donc limite par le retard. e e Aussi cette technique ne permet-elle pas de corriger des paquets dont la longueur moyenne varie dans le temps. De plus, le choix dun retard trop grand entra un surcot proportionnel (envoi de caract`res inutiles en dbut et ne u e e n de messages), inecace pour les petits messages. Aussi dautres techniques dentrelacement ont t proposes, notamment pour les turbo-codes. Par exemee e ple, les entrelaceurs de type Golden sont bass sur un entrelacement dont la e profondeur varie en progression arithmtique de raison le nombre dor. e

4.5.4

Code entrelac crois et code CIRC e e

Les codes entrelacs croiss sont bass sur la composition de deux codes, lun e e e permettant de dtecter les paquets derreurs, lautre de les corriger. e Plus prcisment, soient C1 (n1 , k1 ) et C2 (n2 , k2 ) deux codes de distances rese e pectives d1 et d2 . Le principe de codage dun message source M de m symboles est le suivant : 1. on code dabord avec C1 le message M , par blocs de k1 symboles, pour m m obtenir un message M de m1 = k1 mots donc m1 = n1 . k1 symboles ;

262

e Chapitre 4 : Dtection et correction derreurs

2. les mots de C1 sont entrelacs, par exemple avec un retard ; on obtient e un message M que lon consid`re de mme taille m1 (pour simplier, e e on ne compte pas les symboles supplmentaires ventuellement ajouts e e e lors de lentrelacement en dbut et n de message) ; e 3. les symboles de M sont alors cods avec C2 , par blocs de k2 symboles, e pour donner un message M de m2 = n2 . m21 symboles. k Eventuellement, les mots de M peuvent ` nouveau tre entrelacs, mais ce a e e cas nest pas considr dans la suite. ee Pour le dcodage, le code C2 est utilis pour dtecter les erreurs, et le code e e e C1 pour les corriger. Aussi, la capacit de correction du code C2 nest pas e compl`tement exploite, laccent tant mis sur sa capacit de dtection. En e e e e e pratique, on pose d2 = 2.t2 + u2 + 1, avec t2 assez petit. La capacit maximale e u2 de correction de C2 serait t2 + 2 , mais on nutilise quune correction de t2 . Ainsi, si lon dtecte plus de t2 erreurs, on ne les corrige pas avec C2 car e cela ferait perdre la capacit de corriger de grands paquets derreurs ; mais au e contraire on les marque seulement an de laisser le code C1 sen occuper. Plus rigoureusement, le principe de dcodage est le suivant : e 1. on dcode dabord chaque bloc Mi de n2 symboles de M . Deux cas e sont distingus. Soit le mot peut tre dcod avec au plus t2 corrections, e e e e auquel cas on le corrige et on rcup`re la squence Mi source de k2 syme e e boles code par C2 . Sinon, on dtecte la prsence de plus de t2 erreurs, e e e ce qui est le cas si le mot est aect par un paquet derreurs ; dans ce e cas, on marque la squence Mi de k2 symboles comme eace. e e 2. on dsentrelace les symboles obtenus pour reformer les mots Mi cods e e par C1 ; 3. du fait du dsentrelacement, le mot Mi peut contenir des symboles eae cs, mais aucun symbole erron. Par suite, la distance d1 de C1 permet e e de corriger jusqu` d1 1 symboles eacs dans Mi pour reconstruire les a e k1 symboles source Mi (voir lexercice 4.27). Application : code CIRC Les codes de Reed-Solomon sont souvent utiliss comme codes de base dun e code entrelac crois ; on parle alors de code CIRC (Cross-Interleaved Reede e Solomon Code). Par exemple, le code utilis pour coder les trames de son sur e les disques compacts audio est un code CIRC. Une rayure dun millim`tre e dtruit environ 3300 bits sur la piste dun CD ; le code permet de corriger e jusqu` 28224 bits conscutifs sur la piste, ce qui correspond ` une longueur a e a denviron 8,2 mm sur le disque !

4.5 Paquets derreurs et entrelacement

263

Sur un CD audio, linformation numrique source est code par blocs appels e e e trames. Une trame correspond ` 6 chantillons stro de 32 bits (16 bits ` a e ee a gauche et 16 bits ` droite), soit 24 octets ou 192 bits de source auxquels il a faut ajouter 8 octets de parit et un octet de contrle. Chacun de ces octets e o est reprsent physiquement par 17 bits : un mot de 14 bits (codage EFM e e pour Eight-to-Fourteen Modulation) suivi de 3 bits de liaison. De plus, 27 bits sont galement ajouts entre chaque trame. Finalement, 192 bits dinformation e e numrique deviennent donc (24 + 8 + 1) (14 + 3) + 27 = 588 bits sur la piste e physique (plages lisses ou changements de relief dtects par le laser ` lentre e e a e ou la sortie dune cuvette grave sur le CD), ce qui correspond ` environ 0,17 e a mm sur la piste. Le signal numrique est converti en son analogique ` une e a frquence de 44100 Hz ; 1 s de musique est donc code par 44100 588/6 = e e 4321800 bits sur la piste, soit environ 1,2 m`tre. e Le codage CIRC utilis est construit par entrelacement et croisement de deux e codes C1 (28, 24) et C2 (32, 28) de distance 5. Ces deux codes sont de distance 5 sur F256 , obtenus ` partir de raccourcis dun code (255, 251) de Reed-Solomon a (cf exercice 4.31 page 264). Ils admettent respectivement comme matrices ge nratrices normalises G1 = [I24 , R1 ] et G2 = [I28 , R2 ], o` R1 est une matrice e e u T est une matrice 28 4 (i.e. T est une matrice 4 4). 24 4 et R2 = R1 Le codage est le suivant : chaque trame x de 24 octets est code avec C1 en un mot y de 28 octets : e y = [x, x.R1 ]. On obtient ainsi une squence de mots de code de C1 de 28 e octets ; les mots de C1 sont entrelacs avec retard de 4 octets dans une table ; apr`s e e entrelacement on obtient une squence de mots de 28 octets, chaque mot y e correspondant ` une colonne de la table ; a chaque mot y est cod avec C2 en un mot z de 32 octets : z = [y , y .R2 ]. e 3 Ce codage est de rendement 4 . Le dcodage proc`de comme suit (cf exercice 4.32) : e e Chaque bloc z de 32 octets est dcod avec C2 en un mot y de 28 octets e e en essayant de corriger au plus une erreur. Si on dtecte plus dun chire e erron, on ne ralise aucune correction : on retourne linformation que le mot e e est eac. Dans la suite on note ? un symbole eac (qui nappartient donc e e pas ` F256 ) ; on retourne donc par exemple le mot y form de 28 symboles a e ?. les blocs y de 28 symboles sont dsentrelacs. On reconstruit ainsi une e e squence de blocs y de 28 symboles. Dans un bloc y peuvent gurer des e octets de F256 et des ?, chaque ? correspondant ` un eacement suite ` a a une erreur dtecte par C2 . e e Chaque bloc y de 28 symboles est dcod avec C1 . De distance 5, C1 permet e e

264

e Chapitre 4 : Dtection et correction derreurs

de corriger jusqu` quatre eacements dans le bloc y. Si on arrive ` corriger a a ces eacements, on retourne les 24 premiers octets du mot corrig ; sinon un e message derreur. Ce dcodage permet de corriger jusqu` 15 trames successives (exercice 4.33), e a soit 15 32 8 = 3840 bits de signal ou encore 588 15 = 8820 bits ce qui correspond ` des rayures de 2,5 mm environ. a Par ailleurs, il est possible dextrapoler le son dun chantillon manquant si e lon dispose des chantillons prcdent et suivant. Aussi, ` la sortie du code C1 , e e e a avant lentrelacement avec retard, on eectue une permutation pralable. En e sortie de C1 , les 28 octets correspondent ` 14 mots de 16 bits : g1 d1 g2 d2 g3 a d3 g4 d4 g5 d5 g6 d6 p1 p2 o` chaque mot gi et di dsigne les 16 bits gauche ou u e droite dun chantillon stro sur 32 bits et p1 , p2 les 4 octets de redondance. e ee De faon ` loigner deux chantillons sonores de 16 bits conscutifs, on les c a e e e permute en g1 g3 g5 d1 d3 d5 p1 p2 g2 d2 g4 d4 g6 d6 . Ainsi, grce aussi ` a a lentrelacement avec retard, un paquet derreurs portant sur 48 trames de 32 octets peut empcher de reconstruire un chantillon de 16 bits (g3 par exemple) e e mais garantit de toujours disposer en sortie de C1 de lchantillon prcdent et e e e suivant (g2 et g4 pour g3 ). Avec cette extrapolation, il est possible de corriger 48 32 8 = 28224 bits dinformation, soit 48 588 = 28224 bits ou environ 8,2 mm sur la piste. Un autre entrelacement complmentaire est eectu en sortie de C2 : on coupe e e les trames de 32 octets en bloc de 16 octets et on permute les blocs dindice pair avec ceux dindice impair. Avec cette permutation, deux erreurs conscutives e aectent deux mots de code de C2 distincts au lieu dun seul. Comme C2 corrige au plus une erreur par bloc, cela augmente sa probabilit de correction e lors du dcodage en vitant certains eacements. e e Exercice 4.31 (Construction des codes C1 et C2 ). Expliciter une construction possible des matrices gnratrices G1 et G2 ` partir dun code de e e a Reed-Solomon (255,251) sur F256 . Justier que les codes C1 et C2 sont de distance 5. Solution page 326. Exercice 4.32 (Dcodage du code CIRC dun CD audio). On consid`re e e les codes C1 (28, 24) et C2 (32, 28) sur F256 du code CIRC pour les CDs audio. Le but de cet exercice est dexpliciter les tapes du dcodage. e e 1. Lorsquon reoit un bloc de 32 octets, expliciter comment eacer un bloc c ou corriger au plus une erreur avec le code C2 en utilisant le calcul du syndrome derreur. 2. Lors du dcodage avec C1 , expliciter comment corriger au plus 4 eacee ments. Solution page 327.

4.6 Codes convolutifs et turbo-codes

265

Exercice 4.33 (Taux de correction du code CIRC). Montrer que le code CIRC prcdent permet de corriger 15 trames conscutives. e e e Solution page 327. La technique dentrelacement srie utilise dans les codes CIRC permet de e e corriger des grands paquets derreurs en mlangeant les symboles provenant e dun nombre donn de blocs dirents. Il est aussi possible de raliser un e e e entrelacement de taille non borne en remettant en cause la notion de bloc ; e les codes convolutifs en sont une illustration.

4.6

Codes convolutifs et turbo-codes

Les codes convolutifs ne fonctionnent plus comme des codes par blocs mais plutt par ot : ils tendent les entrelacements prcdents en codant chaque o e e e bit mis par une source par un ensemble de bits, dpendant doprations de e e e convolution sur les derniers bits mis. Ils prsentent lavantage dun dcodage e e e tr`s simple et de bonnes performances. e

4.6.1

Le codage par convolution

Dans son acceptation la plus gnrale, le codeur convolutif prend en entre e e e des blocs de k bits, applique des oprations aux m derniers blocs reus, via e c une matrice de k n polynmes de F2 [X] de degr maximum m, et code ainsi o e chaque bloc par un bloc de n bits. Les param`tres du code sont donc la taille k des blocs dentre, la taille n des e e blocs de sortie, la mmoire m et les k n polynmes. e o Pour plus de simplicit dans la prsentation, nous allons exposer le fonctionnee e ment dun code convolutif qui code un ` un chaque bit du message source, soit a k = 1. On dispose alors de n polynmes gnrateurs de degr maximum m. o e e e La source est considre comme une suite innie de bits (Si )i 0 , et les bits ee dindice ngatifs sont tous considrs comme nuls pour marquer le dbut dun e ee e message. Lensemble des n polynmes gnrateurs peut tre crit sous la forme dune o e e e e matrice G sur F2 : G = (gij ) est de taille m n. Pour chaque bit de source dindice l, on note S(l) le vecteur ligne Sl . . . Slm . Le bit Sl est alors cod par les n bits e C(l) = S(l)G Chaque bit j du code correspond donc ` la convolution a nom de code convolutifs.
m i=0 (gij Sli ),

(4.8) do` le u

266 Exemple :

e Chapitre 4 : Dtection et correction derreurs Si les polynmes gnrateurs sont P1 = X et P2 = X + 1, on a o e e G= 0 1 1 1

Le message 100110100 sera cod dans ce cas par 11010011100111010000. e La relation (4.8) donne, pour coder la source (Si )i 0 la relation C = SG o` G est la matrice innie u G G 0 0 . . . . . . . . . 0 0 . . . . . . . . . 0 0 0 . . 0 . . . . . . . . . . . . . 0 0 . . . . . . 0 0 0 . . 0 . . . . . . . 0 0 0 0 0 0 0 G 0 0 . . . 0 0 0 0 . . .

Le code convolutif est donc un code linaire, cyclique, sur une matrice innie e (pour un message ni de taille N , la matrice est de taille nN ). On peut aussi voir le code comme le produit du message en tant que liste des coecients dun polynme par chacun des polynmes gnrateurs, suivi dun o o e e entrelacement. On retrouve le principe du code par ot, o` le codage dun u message bit par bit ` la vole correspond ` une opration linaire sur tout le a e a e e message. Exercice 4.34. Vrier sur lexemple prcdent que le message cod peut tre e e e e e obtenu par des produits de polynmes. o Solution page 327.

4.6.2

Le dcodage par plus court chemin e

Les codes convolutifs sont des codes correcteurs derreurs. Il faut donc pour le dcodage supposer que lon reoit un message R, qui est le message cod e c e avec un certain nombre derreurs. Lalgorithme de dcodage retrouve le mot e de code le plus proche du mot reu au sens de la distance de Hamming, et c donne le message source correspondant. Le principe est similaire aux principes de programmation dynamique et de recherche de plus courts chemin. Lalgorithme de dcodage est connu sous le e nom dalgorithme de Viterbi.

4.6 Codes convolutifs et turbo-codes Le diagramme dtat e

267

Le diagramme dtat dun code convolutif est un graphe orient ayant pour e e sommets les 2m mots binaires de taille m, correspondant aux tats possibles e de lentre. On place alors pour tout mot a0 . . . am1 deux arcs correspondant e aux deux valeurs possibles du bit suivant de lentre : lun vers a1 . . . am1 0 et e lautre vers a1 . . . am1 1. On tiquette alors chaque arc par le code produit (un mot de code de n bits) e par lentre correspondante. e Tout mot de code correspond ` une cha parcourant ce graphe, cest-`-dire a ne a un ensemble darcs conscutifs, qui peuvent se rpter, et toute cha ` un e e e ne a mot de code. Exemple : (Suite de lexemple prcdent). Le diagramme dtat pour le e e e code de polynmes gnrateurs P1 = X et P2 = X + 1 est indiqu gure 4.2. o e e e
00 = [00] G 01 = [10] G

0
11 = [01] G

1
10 = [11] G

Fig. 4.2: Diagramme dtat du code convolutif de polynmes gnrateurs P1 = X et e o e e P2 = X + 1.

Le treillis de codage Le treillis de codage suit le principe du diagramme dtat en ltendant ` e e a toutes les tapes dun codage eectif. Cest-`-dire que le treillis contient pour e a chaque bit i reu en entre, un ensemble de 2m sommets comme dans le diac e gramme dtats, et que chaque arc relie un mot a0 . . . am1 de ltape i aux e e mots a1 . . . am1 0 et a1 . . . am1 1 de ltape i + 1. e Tout mot de code correspond ` un chemin dans ce graphe, et tout chemin ` a a un mot de code. Exemple : (Suite de lexemple prcdent). Le treillis du code de polynmes e e o gnrateurs P1 = X et P2 = X + 1 est indiqu gure 4.3. e e e

268

e Chapitre 4 : Dtection et correction derreurs

0
00

11

01

1
10

0
00

11

01

1
10

0
00

11

01

1
10

0
00

11

01

1
10

Fig. 4.3: Treillis du code convolutif gnr par P1 = X et P2 = X + 1. e ee

Lalgorithme de Viterbi Lalgorithme de Viterbi consiste ` retrouver le chemin qui correspond au mot a de code le plus proche du mot reu. Cest un algorithme classique de recherche c du plus court chemin dans un graphe orient sans cycle, par programmation e dynamique. Le poids sur les arcs correspond ` la distance de Hamming entre a les mots reus et les mots de code correspondant ` lattribut des arcs. c a Exercice 4.35. Donner pour le code de polynmes gnrateurs P1 = X et o e e P2 = X + 1 le mot de code le plus proche de 10010010011101111010, et donner le message source associ. e Solution page 328. Lalgorithme 28 permet de retrouver le mot de code correct ` partir de la a totalit du mot de code reu. En pratique, dans un code convolutif, il est plus e c intressant de dcoder ` la vole, le code pouvant tre inni (ou plutt tr`s e e a e e o e grand en ralit). Lide est quune erreur na un impact que sur un nombre e e e limit de mots de code : ce nombre est appel longueur de contrainte du code e e et est gal ` km. Ainsi, pour dcoder ` la vole, il faut appliquer lalgorithme e a e a e de Viterbi sur T = km mots de code reus. Il est alors possible de dcider que c e le premier mot de source ne dpendra plus du dernier sommet explor. On e e reprend ensuite lalgorithme de Viterbi avec le mot de code reu suivant qui c permet de sassurer du deuxi`me mot de source, etc. e La question est alors dvaluer la capacit de correction dun code convolutif. e e On utilise galement la notion de distance entre deux mots de code, mais e comme les mots de code sont potentiellement innis, on parle alors de distance libre du code. Comme le code est linaire, la distance libre est le poids minimal e dune squence non totalement nulle. e

4.6 Codes convolutifs et turbo-codes

269

Algorithme 28 Algorithme de Viterbi (dcodage des codes convolutifs). e Entres Un mot binaire r de longueur T e Sorties Le mot de code c le plus proche de r selon la distance de Hamming Donner une marque m(v) ` tous les sommets v du treillis. a Donner une marque prec(v) ` tous les sommets v du treillis. a Pour tous les sommets v ` ltape du dbut du message reu, m(v) 0. a e e c Pour un indice i parcourant de ltape 1 ` ltape T Faire e a e Pour tous les sommets v du treillis de ltape i Faire e Pour tous les arcs uv arrivant au sommet v Faire Soit d la distance de Hamming entre le mot de code reu ` ltape i c a e et lattribut de larc uv Si d + m(u) < m(v) Alors m(v) d + m(u) prec(v) u Fin Si Fin Pour Fin Pour Fin Pour Soit v le sommet tel que m(v) est minimum parmi tous les sommets de la derni`re tape. e e Pour un indice i de ltape T ` ltape 0 Faire e a e Soit uv larc tel que prec(v) = u Ecrire ` gauche du mot prcdent le mot de code correspondant ` lattria e e a but de uv. Fin Pour

Une squence non totalement nulle est obtenue en partant de la squence e e 000 . . ., en passant par des caract`res non nuls puis en revenant ` une squence e a e de zros. Autrement dit le poids minimal dune squence non totalement nulle e e est exactement le poids minimal dun cycle de transitions partant et revenant en zro. Pour lexemple de la gure 4.3 on voit que le cycle le plus court ne e reste en 1 quune seule fois, pour les arcs 11|01. La distance libre du code est donc 3. Comme un code convolutif est linaire, le thor`me 27 sapplique et la distance e e e libre fournit donc le taux de correction derreur. Dans notre exemple, le code convolutif est donc 1-correcteur. Cela veut dire que ce code convolutif peut corriger 1 erreur dans chaque bloc de mots de code de taille la longueur de contrainte.

270

e Chapitre 4 : Dtection et correction derreurs

Codes convolutifs systmatiques, rendement et poinonnage e c Nous avons vu quun code convolutif fonctionne par ot, ou encore en srie, e en entrelaant plusieurs bits. Ce fonctionnement induit donc un entrelacement c que lon appelle entrelacement en srie. e Similairement aux codes par blocs, un code convolutif est dit systmatique si les e bits source apparaissent directement dans les bits de sortie. Autrement dit, la matrice G contient la matrice identit ` une permutation des colonnes pr`s. Au ea e contraire, dans un code convolutif non-systmatique ou NSC (Non-Systematic e Convolutional code), tout bit de sortie est la combinaison de plusieurs bits dentre. e En sortie dun codeur convolutif systmatique, on a donc une squence de bits e e qui est lalternance de deux squences : dune part les bits de lentre X, dautre e e part les bits Y calculs par le codeur. Le rendement dun code convolutif est a e priori bien moins bon que le rendement dun code par blocs. Pour augmenter le rendement du code tout en gardant un code systmatique qui permet de e dcoder lentre, la perforation ou poinonnage consiste ` supprimer une partie e e c a 1 des bits Y . Par exemple, supposons que le code est de rendement 3 ; pour chaque bit Xi en entre, on a alors 3 bits en sortie donc une squence de la e e forme . . . , Xi , Yi , Yi , Xi+1 , Yi+1 , Yi+1 , . . .. Par poinonnage des bits en positions c 2 et 5 modulo 6, on obtient la squence . . . , Xi , Yi , Xi+1 , Yi+1 , . . .. Le code e 1 obtenu est un code convolutif systmatique de rendement 2 qui fonctionne e comme un code poinonn. c e Codes convolutifs rcursifs e Un code convolutif est dit rcursif si certains bits de sortie du codeur sont e rinjects en entre. Un code convolutif rcursif systmatique ou RSC peut e e e e e tre construit ` partir dun code systmatique en rinjectant dans lentre e a e e e lune des sorties (gure 4.4, o` D est un registre ` dcalage ou LFSR). u a e
mi xi

xi mi D D yi D D yi

Fig. 4.4: Transformation dun code convolutif systmatique de longueur de contrainte e 3 en code systmatique rcursif RSC. e e

4.6 Codes convolutifs et turbo-codes

271

Les codes convolutifs systmatiques rcursifs (RSC) sont ` la base de la conse e a truction des turbo-codes.

4.6.3

Les turbo-codes

Les turbo-codes utilisent la composition avec entrelacement de deux codes. Il sagit souvent de codes systmatiques rcursifs (RSC) dans lesquels des bits e e de sortie sont rinjects en entre du codeur ; le dcodage tire parti de cette e e e e proprit, do` le nom turbo. ee u Le fait de rinjecter des bits de sortie dans les bits dentre est un procd e e e e itratif et la correction se fait alors par tour, chaque tour corrigeant de plus en e plus derreurs. Plus prcisment, seules les corrections portant sur peu de bits e e ` sont eectues ` chaque tour, le mot corrig tant alors rinject par le turbo. A e a ee e e partir de ce dernier une nouvelle passe de correction est initie. Comme le mot e a dj` t corrig, les anciennes erreurs peuvent dornavant porter sur moins de eae e e e bits et tre mieux corriges. Au niveau thorique, le nombre garanti derreurs e e e corriges dans le pire des cas nest pas amlior par rapport ` un code par blocs. e e e a Au niveau pratique cependant, le nombre derreurs mal corriges ou mme e e non dtectes est drastiquement rduit. En outre, si des mots tr`s particuliers e e e e peuvent toujours chapper ` la correction, le syst`me dentrelacement permet e a e de rpartir les erreurs de mani`re pseudo-alatoire, uniformment dans les e e e e mots de code. Ainsi, le comportement pratique en moyenne des turbo-codes sur des entres quelconques est tr`s bon. Nous allons maintenant voir plus en e e dtail la technique turbo. e Composition parall`le e ` A la dirence des codes entrelacs croiss qui utilisent un entrelacement srie e e e e de deux codes, les turbo-codes utilisent un entrelacement gnralement parale e l`le de deux codeurs C et C (gure 4.5). Le code C est toujours convolutif e systmatique rcursif (RSC), et gnralement le code C aussi. Dailleurs, en e e e e pratique, on a souvent C = C. Le code C (resp. C ) tant systmatique, sa sortie est une squence alterne de e e e e deux squences : dune part les bits X de la source et dautre part les bits Y e (resp. Y ) calculs par le codeur convolutif. Un codeur turbo est ralis comme e e e suit : la source X est mise en entre du codeur C dont la sortie systmatique est e e aussi la sortie systmatique du turbo-codeur ; e la source X est entrelace avant dtre mise en entre du codeur C dont la e e e sortie est Y ; les sorties Y et Y sont utilises pour construire la sortie Z du turbo-code, e dans laquelle sont alterns les bits de la source X. e

272

e Chapitre 4 : Dtection et correction derreurs


Partie systmatique

Entres

Encodeur 1 Code C Entrelaceur

Multiplexeur Poinonneur

Redondance

Encodeur 2 Code C

Fig. 4.5: Codeur turbo par composition parall`le et entrelacement de deux codeurs e RSC.
1 Avec des codeurs C et C de rendement 2 , on obtient un turbo-code de rende1 ment 3 : ` chaque top, trois bits sont gnrs en sortie Z = . . . , Xi , Yi , Yi , . . .. a e ee Il est possible daugmenter le rendement en multiplexant les sorties Y et Y plutt que de les concatner, ce qui correspond ` un poinonnage. Par o e a c exemple, en multiplexant alternativement Yi et Yi , la sortie devient Z = . . . , Xi , Yi , Xi+1 , Yi+1 , Xi+2 , Yi+2 , . . . ; on obtient un turbo-code de rendement 1 2.

Exercice 4.36 (Turbo-code parall`le et turbo-code srie). Soit C1 et e e C2 deux codes RSC de rendements respectifs R1 et R2 . 1. Quel est le rendement du turbo-code obtenu par composition parall`le de e ces deux codes ? 2. On peut aussi construire des turbo-codes sries en entrelaant la sortie de e c C1 et en la mettant en entre de C2 , similairement au codage entrelac e e crois. La sortie du turbo-code srie est alors la sortie de C2 . Quel est le e e rendement du turbo-code srie ? e 3. Comparer les rendements des turbo-codes parall`les et sries lorsque les e e 1 rendements sont identiques R1 = R2 = r. Etudier le cas r = 2 . Solution page 328. Dcodage turbo e Dun point de vue pratique, il est dicile de dcoder un turbo-code par calcul e de maximum de vraisemblance (algorithme de Viterbi) : ` cause de lentrea lacement, la complexit de cet algorithme est prohibitive, en O(2L ) o` L est e u la taille dune trame et aussi la profondeur de lentrelacement. Aussi, le de codage dun turbo code utilise les dcodeurs de chacun des deux codes C et e

4.6 Codes convolutifs et turbo-codes

273

C le constituant, en utilisant une technique itrative : la sortie de chaque e dcodeur est rinjecte en entre de lautre pour calculer la distribution de e e e e probabilits des bits dentre. De mani`re analogue ` un moteur turbo, les gaz e e e a dchappement sont rinjects pour amliorer les performances. e e e e Pour le dcodage, les oprations de dmultiplexage et de dsentrelacement e e e e permettent de reconstruire les squences X, Y , Y correspondant respectivee ment ` la sortie systmatique X donc lentre , et aux sorties Y et Y des a e e deux codeurs, mais ventuellement errones. e e
Dsentrelaceur Entrelaceur Partie systmatique Redondance Dcodeur 1 Code C APP 1 Entrelaceur DMUX Dcision Dsentrelaceur Dcodeur 2 Code C APP 2

Fig. 4.6: Dcodage itratif dun turbo-code. e e

La correction est base sur un mcanisme itratif et utilise les deux dcodeurs e e e e associs aux codes C et C (gure 4.6). Chacun des deux dcodeurs calcule e e de son ct la probabilit a posteriori (APP) de chaque bit de source. Cette oe e probabilit est utilise par lautre dcodeur comme une information a priori e e e sur la valeur du bit de source. Ainsi, le dcodeur de C (resp. C ) calcule la e probabilit APP ` partir de la valeur X de lentre systmatique du dcodeur, e a e e e la probabilit APP de la source calcule par le dcodeur C (resp. C) et lentre e e e e du dcodeur C (resp. Y de C ). Ainsi, chaque dcodeur se base a priori Y e e sur une distribution de probabilits et non sur une valeur pr-dcide. Pour e e e e chaque dcodage de bit, cette tape de rinjection/calcul est itre un nombre e e e ee x de fois, souvent 2. La valeur dcide pour le bit de source en n ditration e e e e est celle qui a la plus grande probabilit. e Turbo-codes en blocs et turbo-codes hybrides Il est possible de remplacer les encodeurs convolutifs dun turbo-code convolutif par des encodeurs par blocs. Si les deux encodeurs sont des codes par bloc (par exemple deux Reed-Solomon) on parle de turbo-code en blocs, si un

274

e Chapitre 4 : Dtection et correction derreurs

seul des deux encodeurs est un code par bloc et lautre de type convolutif, on parle de turbo-code hybride. Lintrt de remplacer des codes convolutifs par ee des codes en blocs est que le rendement est amlior. Cependant il faut rendre e e le code en bloc probabiliste an de tirer parti de leet turbo. Pour cela, au lieu de corriger automatiquement vers le mot de code le plus proche, on modie lalgorithme de correction pour quil marque plutt tout un ensemble de o mots de code proches avec un certain poids (et une probabilit dtre le mot e e de code recherch). La dcision nale se fait ensuite par le ranement de ces e e poids au fur et ` mesure des itrations turbo. a e Performances et applications des turbo-codes En raison de leurs performances, les turbo-codes ont t intgrs dans de nomee e e breux standards et en particulier pour les communications spatiales. LESA (European Space Agency) a t la premi`re ` les utiliser pour la sonde luee e a naire Smart-1 (lancement le 27 septembre 2003, orbite autour de la Lune le 15 novembre 2004 et alunissage en septembre 2006). La NASA les utilise depuis 2003 pour toutes ses sondes spatiales. Les turbo-codes sont utiliss de mani`re intensive pour les communications e e par ot en gnral : ADSL-2, la tlphonie mobile (UMTS, 3G) ou encore le e e ee nouveau standard DVB-S2 de tlvision haute dnition (HDTV) normalis ee e e en mars 2005. Parmi les param`tres qui inuencent la performance dun turbo-code, la taille e de lentrelaceur joue un rle critique ; les performances se dgradent lorsque o e cette taille diminue et inversement samliorent lorsquelle augmente. Il y a e donc un compromis prix/performance ` optimiser selon lapplication. Gnraa e e lement, la taille L varie de 210 ` 216 . De plus, lentrelaceur est souvent construit a de mani`re alatoire, en vitant les entrelacements de type bloc. Comme pour e e e les autres codes, le rendement joue aussi un rle important. Pour obtenir un o 1 c e e code de rendement suprieur ` 3 , un poinonnage est ncessaire qui dgrade e a les performances de correction. Enn, le nombre ditrations ` eectuer lors e a du dcodage augmente avec la taille de lentrelacement, typiquement envie ron 9 itrations pour un turbo-code parall`le avec un entrelacement de taille e e L = 16384 est un bon compromis performances/complexit. e La longueur de contrainte a moins dinuence que pour les codes convolutifs ; aussi, les turbo-codes utiliss en pratique ont une petite longueur de contrainte, e typiquement 3 ou 5.

Compression, cryptage, correction : en guise de conclusion


Le codage des messages dans un alphabet lisible par un canal va optimiser la taille des donnes transmises, pallier aux erreurs ventuelles dues ` la transe e a mission, et assurer la condentialit des donnes. Cette section est une petite e e conclusion pratique au codage dans son ensemble. Soit M le message mis, sous forme dune cha sur un alphabet V , ou, de e ne faon quivalente, dun ensemble de nombres sur V . On doit pouvoir reconsc e tituer M ` partir du message reu (ou ventuellement, si le message reconsa c e titu est dirent, il doit tre accompagn dun message dalerte). Supposons e e e e que lmetteur dispose dun utilitaire de compression COM P , de cryptage e CRY P T , et de correction derreurs CORR. Le destinataire dispose des utilitaires CORR1 , CRY P T 1 et COM P 1 , qui lui permettront de reconstituer le message. Quelle est alors la procdure de codage ? e Le message doit tre compress avant dtre crypt. En eet, sil contient de la e e e e redondance, elle ne sera peut-tre pas limine par le cryptage, et la prsence e e e e de redondance dans un message intercept est un angle dattaque pour reconse tituer la mthode de cryptage (la mthode de compression nest pas secr`te). e e e Pour la mme raison, il doit tre crypt avant de subir les transformations e e e ncessaires ` son intgrit (dtection et correction derreur). En eet CORR e a e e e va rajouter de la redondance, organise et optimise, qui ne doit pas tre un e e e point faible du secret. Dautre part, la prparation ` la correction derreur e a est forcment la derni`re opration de lmetteur, car dans les autres cas, une e e e e altration sur un message nest plus corrige d`s sa rception, et peut donc e e e e tre amplie par les premi`res oprations en sortie de canal (une dcomprese e e e e sion par exemple). Enn, le fait de compresser avant tout permet de rduire le e temps de calcul des deux autres fonctions. Il est donc indispensable deectuer les oprations dans cet ordre. e

276

Compression, cryptage, correction

Lmetteur va donc gnrer le message e e e CORR(CRY P T (COM P (M ))) et lenvoyer ` son destinataire. Le message reu est M correspondant donc a c ` CORR(CRY P T (COM P (M ))), ventuellement altr au cours de la transa e ee mission.

comp(M)

crypt(comp(M))

corr(crypt(comp(M)))

compression

cryptage

redondance

Fig. 69: Codage CORR(CRY P T (COM P (M ))) dun message M.

Le destinataire applique COM P 1 (CRY P T 1 (CORR1 (M ))) = M. En cas daltration non corrige, la dtection peut permettre un renvoi autoe e e matique du message.

corr 1(M)

crypt1(corr1(M)) dcryptage

comp1 (crypt1(corr1(M)))

correction

dcompression

Fig. 70: Dcodage dun message M = CORR(CRY P T (COM P (M ))). e

Le message CORR(CRY P T (COM P (M ))) ne contient aucune information qui permette de reconstituer M sans disposer des bonnes fonctions, il doit contenir des informations qui permettent de vrier sa cohrence, et ventuele e e lement de sauto-corriger, et enn tre le plus petit possible, pour minimiser e la dure et le cot de la transmission. e u Ce sont toutes ces fonctions que nous avons tudies sparment dans les chae e e e pitres prcdents. Le chapitre premier donne sa cohrence au tout, en fournise e e sant une mthode globale dutilisation des direntes parties, et en prsentant e e e un cadre thorique commun. e

Conclusion

277

Exercice C.1 (Le casino). Dans un casino, on joue au 421. Le casino poss`de un serveur centralis qui enregistre tous les lancers de ds eectus sur e e e e ` chaque table de jeu. A chaque table, un croupier transmet -par infrarouge- les squences de ds au serveur. Le probl`me est de mettre en place une architece e e ture permettant de raliser la transmission able et scurise des informations. e e e 1. Construction dun code de Reed-Solomon adapt. e La liaison infrarouge est modlise par un canal binaire symtrique de e e e probabilit derreur 0.001. On dsire ici assurer des transmissions ables e e sur ce canal. (a) Quelle est la probabilit p derreur lorsquon envoie un octet ? e (b) Pour remdier aux erreurs dues au canal, lorsquon envoie n oce tets, on veut garantir de corriger jusqu` p n erreurs. Expliquer a comment construire un code correcteur de type Reed-Solomon en prcisant : e i. le corps de base et la valeur choisie pour n ; ii. le degr du polynme gnrateur et le rendement du code. e o e e iii. le nombre maximal derreurs dtectes ; e e iv. la dimension dune matrice gnratrice du code. Comment crie e e re cette matrice ` partir des coecients du polynme gnraa o e e teur ? (c) Pour d = 3, .., 10, les polynmes suivants, ` coecients dans F2 , o a sont primitifs : degr d e 3 4 5 6 7 8 9 10 Polynme primitif o 1 + + 3 1 + + 4 1 + 2 + 5 1 + + 6 1 + 3 + 7 1 + 2 + 3 + 4 + 8 1 + 4 + 9 1 + 3 + 10

Tab. 4.7: Quelques polynmes primitifs de F2 . o

i. Donner le polynme utilis pour implmenter le corps de base o e e et expliquer bri`vement comment raliser les oprations dade e e dition et de multiplication ; ii. Donner lexpression du polynme gnrateur en fonction de . o e e

278

Compression, cryptage, correction (d) Calculer la capacit du canal. Comparer au rendement du code proe pos. e

2. Scurisation des communications. e Comment coder les squences de ds pour garantir quil ny ait pas de e e trucages sans consentement dun croupier ? 3. Codage des lancers. On suppose les ds du casino non pips. On cherche ` coder les squences e e a e de tirages sur le canal binaire : (a) Quelle est lentropie dun d ? e (b) Proposer un algorithme de codage o` les mots de code sont de mme u e longueur. (c) Calculer la longueur moyenne de ce codage. (d) Proposer un codage de Human. (e) Ce codage est-il optimal ? Si non, proposer un codage plus performant. Solution page 329.

Solution des exercices


Solutions des exercices proposs au chapitre 1 e
Exercice 1.1, page 21. Dans ce cas, le code nest pas ecace. Le rsultat peut mme tre plus long e e e que si on avait cod simplement les pixels noirs par des 1 et les pixels blancs e par des 0, par exemple lorsque limage consiste enti`rement en une suite de e 01. Ce nest srement pas tr`s courant pour les fax, mais on apprend ainsi u e que ce code na aucune garantie thorique ! e Pour lamliorer, on peut par exemple coder un nombre k de 01 conscutifs e e par k01, et ainsi tendre les possibilits du code. Le chapitre 2 donne des e e clefs pour systmatiser ce type de principe. e Exercice 1.2, page 23. Essayer toutes les clefs est une mthode raisonnable, car lensemble des clefs e possible est limit. On verra dans la section 1.1.7 quelle taille doit avoir lespace e des clefs pour garantir limpossibilit dune telle mthode. e e Exercice 1.3, page 25. CESAR AURAIT ETE CONTENT DE VOUS ! Exercice 1.4, page 28. Le code a une complexit O(n), o` n est le nombre de pixels ncessaires pour e u e coder limage. En eet, lalgorithme consiste en un parcours de tous les pixels, avec un nombre doprations constant pour traiter chaque pixel. e Exercice 1.5, page 29. Les raisons sont lies ` deux attaques possibles : e a 1. En supposant quun seul message en clair et son quivalent crypt aient e e t intercepts, la clef est facilement obtenue par K = M M . ee e 2. En outre, Si C1 = M1 K et C2 = M2 K alors C1 C2 = M1 M2 dans lequel la clef nappara plus. Une analyse pourrait alors dterminer t e des morceaux de M1 ou M2 .

280

Solution des exercices

Exercice 1.6, page 30. Si on na pas conance dans la machine quon utilise, qui peut capturer un mot de passe sil est tap en clair, il faut taper ce mot de passe crypt. Il faut e e alors convenir avec le serveur scuris dune liste de clefs jetables (chacune ` e e a 8 caract`res par exemple si le mot de passe a 8 caract`res) conserve sur le e e e serveur et emporte imprime sur un papier par lutilisateur. e e ` chaque utilisation, il faut alors crypter ` la main son mot de passe avec la A a prochaine clef non encore utilise, et envoyer le mot de passe crypt au serveur e e scuris, qui dchirera et identiera lutilisateur. Ainsi le mot de passe ne e e e circule jamais en clair. Exercice 1.7, page 32. 1. P (C = 1) = 1/8 ; P (C = 2) = 7/16 ; P (C = 3) = 1/4 ; P (C = 4) = 3/16. 2. P (M = a|C = 1) = 1 ; P (M = a|C = 2) = 1/7 ; P (M = a|C = 3) = 1/4 ; P (M = a|C = 4) = 0 P (M = b|C = 1) = 0 ; P (M = b|C = 2) = 6/7 ; P (M = b|C = 3) = 3/4 ; P (M = b|C = 4) = 1 3. On voit que la connaissance du chir donne une information sur le e message envoy alors quun chirement parfait ne devrait donner aucune e information. Exercice 1.8, page 33. On trouve une entropie de 0,14 (` comparer avec lentropie de la source quia e probable 0,3. Le 0 sera tr`s courant dans le message, on peut sattendre ` de e a longues suites de 0. On peut donc choisir de coder ecacement ces longues suites. Exercice 1.9, page 36. 1. Comme les messages M et les clefs K sont indpendants, on a direce tement H(M, K) = H(M ) + H(K) ou encore H(M |K) = H(M ) et H(K|M ) = H(K). 2. Ensuite, par sa construction avec les xor, dans un code de Vernam on a : H(M, K, C) = H(M, C) = H(M, K) = H(C, K). En eet, en connaissant M et C on peut rcuprer la clef par K = M C, de mme connaise e e sant M et K, C najoute aucune information, etc. Or, pour tout X, Y , H(X, Y ) = H(Y ) + H(X|Y ) = H(X) + H(Y |X). Donc on tire directement H(C|K) = H(M |K) ou encore H(K|C) = H(M |C). 3. Si la source de clefs K est totalement alatoire, elle est donc dentropie e maximale sur les mots de mme taille par la proprit 1. Donc H(K) e ee H(C), ce qui prouve que H(K|C) H(C|K). En combinant les deux

Chapitre 1 : Thorie des codes e

281

rsultats prcdents, on obtient donc H(M |C) H(C|K) = H(M |K) = e e e H(M ). Ce qui prouve que forcment H(M |C) = H(M ) et que donc la e connaissance du chir napporte aucune information sur le message. e Exercice 1.10, page 41. ECB et CTR : les blocs sont indpendants. e OFB : Seul C1 est faux, donc M1 = C1 + Z1 est faux, mais cela ninue pas M2 = C2 + Z2 . CFB : M2 = C2 + E(C1 ), donc M2 est faux car C1 est faux, mais M3 = C3 + E(C2 ) ne dpend que de C2 et C3 qui sont corrects. e CBC : M2 = C1 + D(C2 ), donc M2 est faux car C1 est faux, et M3 = C2 + D(C3 ) ne dpend que de C2 et C3 qui sont corrects. e Exercice 1.11, page 48. Appliquer lalgorithme dEuclide tendu : e (E0 ) : 1a + 0b = a (E1 ) : 0a + 1b = b (Ei+1 ) = (Ei1 ) qi (Ei ) : ui a + vi b = ri On ne dtaille que le premier couple (a, b) = (17, 50) : e (E0 ) : (E1 ) : = 50 = 17 q1 r1 (E2 ) = 1 50 + (2) 17 = 16 q2 (E0 ) 2(E1 ) r2 (E3 ) = (1) 50 + 3 17 = 1 q3 (E1 ) (E2 ) r3 1 50 0 50 + + 0 17 1 17 = 50/17 = 2 = 50 mod 17 = 16 = 17/16 = 1 = 17 mod 16 = 1 = 16/1 = 16 = 16 mod 1 = 0

Pour les deux autres couples on obtient : 1 = 51 11 + (2) 280 et 5 = 3 35 + (2) 50 Exercice 1.12, page 49. 1. Comme 17 est premier avec 50, 17 est inversible modulo 50 : x = 171 .10 = 3.10 = 30 mod 50

Donc S = {30 + 50.k, k Z} NB : Calcul de linverse par Bzout : cf exercice prcdent e e e 2. Il existe k Z tel que 35x = 10 + 50.k 7x = 2 + 10k 7x = 2 mod 10. Comme 7 est premier avec 10, 7 est inversible modulo 10 : x = 71 .2 = 3.2 = 6 Donc S = {6 + 10.k, k Z}. mod 10

282

Solution des exercices

3. pgcd(35, 50) = 5 et 5 ne divise pas 11 donc S = Exercice 1.13, page 49. On utilise la classe mpz_class de la version C++ de la biblioth`que GMP2 e qui implmente des entiers ` prcision arbitraire. e a e #include <gmpxx.h> typedef mpz_class Entier; void AEE(const Entier a, const Entier b, Entier& d, Entier& x, Entier& y) { if ( b==0 ) { d = a; x = 1; y = 1 ; } else { AEE( b, a % b, d, x, y ) ; Entier tmp = x ; x = y ; y = tmp - (a / b) * y ; } } Exercice 1.14, page 51. x = 4.11.111 mod 5 + 5.5.51 mod 11 mod 55 = 44 25.2 mod 55 = 6 mod 55 = 49 mod 55. Donc y = 491 mod 55 se projette en 41 mod 5 = 4 mod 5 et en 51 mod 11 = 9 mod 11. Do` lon tire la reconstruction u y = 4.11.111
mod 5

+ 9.5.51

mod 11

mod 55.

Soit, y = 44 45.2 mod 55 = 46 mod 55 = 9 mod 55. Exercice 1.15, page 51. On ne consid`re dans un premier temps que le syst`me (3,4,5) ; on a alors e e x = 1 mod 3,4 et 5. Donc x = 1 mod 60. On a donc x = 60.k 1. On vrie alors les 2 autres contraintes modulo 2 et 6 ; on a (60k 1) mod 2 = e 1 mod 2 = 1 et (60k 1) mod 6 = 1 mod 6 = 5. Toutes les contraintes sont vries donc x = 60k 1. e e Exercice 1.16, page 51. 1. On utilise le fait que si un nombre divise un produit, alors il divise lun des deux termes de ce produit. En consquence, les seuls diviseurs de pk e sont les puissances de p infrieures ` k, soient p, . . . , pk1 . On en conclut e a que (pk ) = pk pk1 = (p 1)pk1 .
2

Gnu Multiprecision package, www.swox.com/gmp

Chapitre 1 : Thorie des codes e

283

2. On utilise une bijection entre les ensembles Zm Zn et Zmn : si x Zmn, on lui associe les deux nombres a = x mod m et b = x mod n. Inversement, par le thor`me des restes chinois, puisque m et n sont e e premiers entre eux, si (a, b) Zm Zn , alors il existe un unique x mn tel que x = a mod m et x = b mod n. Puisque x est premier avec mn si et seulement si a est premier avec m et b est premier avec n, alors les cardinaux de Z Z et Z sont gaux. e m n mn 3. On dduit des questions prcdentes que si on a la dcomposition n = e e e e pki dun nombre en produit de facteurs premiers, alors (n) = (pi i k 1)pi i 1 . Exercice 1.17, page 53. 1. On rappelle que dans un groupe ni commutatif (G, , e) de cardinal c, on a : pour tout x G : xc = e (proprit 4). Or le cardinal du groupe ee des inversibles modulo n est (n). Apr`s factorisation de n, on calcule (n). Il sut ensuite de calculer e x1 = x(n)1 modn par lvation rcursive au carr. ee e e 63 = 32 7 : (63) = 3 2 6 = 36. Do` 221 mod 63 = 2235 u mod 63 = 43 mod 63. (24) = 2 4 = 8 ; donc x8u = 1 mod 24. Do` 52001 = 5 mod 24. u 2. On pose ni = pi ; les ni sont premiers 2 ` 2. a i Algorithme 1 : par lalgorithme dEuclide tendu. e Algorithme 2 : par le thor`me dEuler, par lvation ` la puissance e e ee a (n) = 1[n]. Do` , apr`s calcul de (n), modulaire. Dapr`s Euler, y e u e y 1 [n] = y (n)1 [n]. NB : la factorisation de N permet de calculer (N ). Algorithme 3 : par le thor`me chinois, en utilisant le thor`me dEue e e e ler pour chaque nombre premier. e Soit N = pi dcomposition de N en facteurs premiers pi , et soit i ni = pi . On peut dabord pour tout i calculer linverse de y mod ni i
1 1 par Lagrange : yi = yi i mod ni avec (ni ) = ni 1 pi . On e calcule donc les rsidus de linverse modulo les ni et on remonte linverse par le thor`me chinois. Soit Ni = N/ni . Dapr`s le thor`me e e e e e chinois, k (n )1

y 1 [N ] = (
i=1

y 1

mod ni

.Ni .Ni1

mod ni

mod N

Par exemple, soit y linverse de 49 mod 55. Alors y = 41[5] = 1[5] et y = 51[11] = 2[11] do` y = 9[55]. u

284

Solution des exercices

Exercice 1.18, page 63. On a tout dabord (0) = 0K , (1) = 1K , (n1 + n2 ) = (n1 ) + (n2 ). Ensuite, comme la multiplication dlments de K est associative, on obtient ee (n1 ) (n2 ) = (1K + 1K + . . . + 1K ) (1K + 1K + . . . + 1K )
n1 n2

= (1K 1K + . . . + 1K 1K ) = (1K + . . . + 1K ) = (n1 n2 )


n1 n2 n1 n2

et donc est un homomorphisme danneau. Comme K est ni et Z inni, est non-injectif, en consquence, il existe n = 0 tel que (n) = 0K (si e (j) = (i) pour j = i alors n = |j i| convient). Si n nest pas premier, soit n = n1 n2 . On a (n1 ) (n2 ) = 0K donc (n1 ) = 0K ou (n2 ) = 0K (K est un corps donc ses lments non nuls sont inversibles). ee Donc il existe p premier tel que (p) = 0K . Pour lunicit de p : si p1 et p2 sont premiers et (p1 ) = (p2 ) = 0K . alors, e dapr`s Bzout, il existe a, b tels que ap1 + bp2 = 1 do` (1) = 0K , ce qui est e e u absurde. Exercice 1.19, page 63. Soit p la restriction de ` Fp . Soit k = {p (0), p (1), . . . , p (p 1)} ; k est a isomorphe ` Fp (p est injectif et k et Fp ont mme cardinal) ; donc k est un a e sous-corps de K. K est un espace vectoriel sur k ; soit m sa dimension. Comme K est ni, m est ni et |K| = k m . Exercice 1.20, page 63. 1. Condition ncessaire pour que P soit irrductible de degr n 2 : doit e e e tre de la forme X n + X 0 + n1 ai X i avec n1 ai = 1 mod 2. e i=1 i=1 Cette condition est susante pour 2 n 3. Do` u De degr 2 : 1 + X + X 2 car nadmet ni 0 ni 1 comme racine. e De degr 3 : X 3 + X + 1 et X 3 + X 2 + 1. e 2. Tout polynme vriant la condition ci-dessus et qui nest pas (1 + X + o e X 2 )2 = 1 + X 2 + X 4 . Do` : u X 4 + X 3 + X 2 + X + 1, X 4 + X 3 + 1, X 4 + X + 1 3. En utilisant le polynme 1 + X + X 2 , on a les lments e0 = o ee e2 = X, e3 = X + 1. On a alors + e0 e1 e2 e3 e0 e1 e2 e3 inverse e0 e0 e1 e2 e3 e0 e0 e0 e0 e0 e0 e1 e1 e0 e3 e2 e1 e0 e1 e2 e3 e1 e2 e2 e3 e0 e1 e2 e0 e2 e3 e1 e2 e3 e3 e2 e1 e0 e3 e0 e3 e1 e2 e3 0, e1 = 1,

e1 e3 e2

Chapitre 1 : Thorie des codes e

285

Exercice 1.21, page 72. Modulo 2, 1 = 1, donc x4 = x0 + x2 + x3 = 0 + 1 + 0 = 1 ; x5 = x1 + x3 + x4 = 1+0+1 = 0 ; x6 = x2 +x4 +x5 = 1+1+0 = 0 ; x7 = x3 +x5 +x6 = 0+0+0 = 0 ; x8 = x4 + x6 + x7 = 1 + 0 + 0 = 1, etc. Exercice 1.22, page 75. On a pi = 0, 1 pour tout i, et n = 21. Puis e0 = 3, e1 = 2, e2 = 6, e3 = 3, e4 = 2, e5 = 2, e6 = 1, e7 = 0, e8 = 1, e9 = 1. Soit K= 0, 92 0, 12 3, 92 0, 92 0, 12 0, 12 1, 12 2, 12 1, 12 1, 12 + + + + + + + + + 2, 1 2, 1 2, 1 2, 1 2, 1 2, 1 2, 1 2, 1 2, 1 2, 1

Donc K = 13, 957. Comme lalphabet est de taille 10, le nombre de degrs de e libert est 9. Avec une probabilit 0,25 de se tromper, on peut donc armer e e que la distribution obtenue nest pas uniforme (la valeur ` comparer ` K est a a 11,39). Mais on ne peut pas faire baisser cette probabilit derreur, car les e autres valeurs du tableau sont suprieures ` K. Comme la probabilit derreur e a e est forte, il vaut mieux sabstenir et ne rien conclure de ce test. Exercice 1.23, page 79. 1. Le mot de code pour adbccab est 011110110110010, et le mot de source pour 1001101010 est bacbb. 2. On vrie facilement en comparant tous les mots deux ` deux quaucun e a nest prxe dun autre. Cest donc un code instantan. e e 3. Lentropie de la source est H = 1, 75 Exercice 1.24, page 79. 1. 0 nest prxe daucun autre mot de code, car ils commencent tous par e 1. Tous les autres mots de code sont de la mme longueur, ils ne peuvent e donc pas tre prxes les uns des autres. e e Autre preuve : on peut dessiner un arbre de Human contenant tous les mots de code (voir la section 1.4.1). 2. P (0 . . . 01) = P (0) . . . P (0)P (1) = pk (1 p) 3. Pour les mots de code (100, 101, 110, 111, 0), les rapports (nombres de bits de code par bit de source) sont (3/1, 3/2, 3/3, 3/4, 1/4). Le taux de compression est donc l = 3(1 p) + 3/2(1 p)p + (1 p)p2 + 3/4(1 p)p3 + 1/4p4 = 3 3/2p 1/2p2 1/4p3 1/2p4 . Exercice 1.25, page 82. () On suppose quil existe un code instantan (cest-`-dire qui vrie la e a e proprit du prxe) avec les longueurs de mots l1 , . . . , ln . On a montr quon ee e e

286

Solution des exercices

peut construire sa reprsentation par un arbre de Human. Larbre complet e initial a pour hauteur l, et |V |l feuilles. On compte ` chaque opration dlagage le nombre de feuilles de larbre initial a e e complet quon enl`ve ainsi ` larbre de Human. Pour un mot de longueur li , e a cest le nombre de feuilles de larbre complet de hauteur l li , soit |V |lli (on suppose enleve, car non rutilise, une feuille dun sous-arbre de hauteur 0). e e e Pour toutes les oprations, on enl`ve n |V |lli feuilles. Mais on ne peut e e i=1 en enlever au total plus que le nombre initial, soit n |V |lli |V |l , do` : u i=1 n 1 1. i=1 |V |li () Rciproquement, on suppose que lingalit est satisfaite. On cherche ` e e e a construire un arbre de Human dont les mots de code ont pour longueur l1 , . . . , ln = l, mots que lon suppose classs par ordre croissant de leurs lone gueurs. On part dun arbre de hauteur l. On proc`de ensuite par induction. e Pour pouvoir choisir un nud dans larbre, correspondant ` un mot de lona gueur lk , il faut quon puisse trouver dans larbre, un sous-arbre complet de hauteur l lk . Mais, toutes les oprations dlagage prcdentes consistent e e e e ` enlever des sous-arbres de hauteur plus grande (correspondant ` des mots a a plus courts). Donc, sil reste au moins |V |llk feuilles dans larbre restant, larbre restant contient un sous-arbre, de hauteur l lk . Montrons quil reste eectivement |V |llk feuilles dans larbre restant. Si on a dj` plac les mots de longueur l1 , . . . , lk1 , on a alors enlev ea e e k1 lli feuilles de larbre initial par les oprations successives dlagage. e e i=1 |V | k1 li ) feuilles. Or, on sait dapr`s lingalit de l (1 e e e Il reste donc |V | i=1 |V | Kraft que :
n i=k

1 |V |li

k1

1
i=1 n

1 |V |li

soit : |V | (1
l

k1

|V |
i=1

li

)
i=k

|V |lli

|V |llk

On peut donc placer le mot de longueur lk , et en ritrant lopration, conse e e truire larbre de Human. Le code de Human, de longueurs de mots l1 , . . . , ln , vrie la proprit du prxe. e ee e Remarque : ceci prouve limplication laisse en suspens du thor`me de Kraft, e e e un peu plus haut dans ce chapitre. Exercice 1.26, page 84. 1. Il est facile de trouver des x tel que y = H(x). Donc si lon conna x, t on calcule y = H(x), puis on trouve un autre x tel que y = H(x ).

Chapitre 1 : Thorie des codes e

287

2. Il est facile de trouver x connaissant x, donc on prend un x quelconque au hasard et on gn`re x . e e Exercice 1.27, page 84. Prenons par exemple xh = (xh xl ) et xl = 0, alors on a xh xl = xh xl et a fortiori galement apr`s lapplication de f . e e Exercice 1.28, page 86. Supposons que H ne soit pas rsistante aux collisions. Alors il est facile de e trouver M et M distincts tels que H(M ) = H(M ). On suppose que M est sur k 1 bloc de b bits et M sur l 1 blocs, avec k l. Alors on pose y1 = hk1 (M ) et y1 = hl1 (M ). Trois cas sont alors possibles : 1. M1 . . . Mk1 = M1 . . . Mk1 = u. Alors, h(u||Mk ) = h(u||Mk . . . Ml ) et on a une collision sur h. 2. Soit y1 = y1 et alors on a trouv une collision sur h car h(y1 ) = H(M ) = e H(M ) = h(y1 ). 3. Soit y1 = y1 et M1 . . . Mk1 = M1 . . . Mk1 . Dans ce dernier cas on rit`re le procd avec yi = hki (M ) et yi = hli (M ) jusqu` obtenir e e e e a yi = yi . Exercice 1.29, page 86. 1. Supposons que h ne lest pas. Alors on peut trouver y et y tels que h(y) = h(y ). Posons y = y1 ||y2 et y = y1 ||y2 . Alors, soit x = f (y1 )||f (y2 ) et x = f (y1 )||f (y2 ). On a f (x) = f (x ) = h(y). Donc f nest pas rsistante e aux collisions. 2. Linconvnient de cette construction stricte est quelle nest extensible e qu` des messages de taille une puissance de 2. a Exercice 1.30, page 92. On vrie tout dabord que cest possible : eectivement 31 1 = 2 3 5 e donc 6 divise bien 30. Ensuite, on obtient que X 6 1 = (X 3 1)(X 3 + 1) = (X 1)(X 2 + X + 1)(X + 1)(X 2 X + 1). On cherche alors les racines, si il y en a, de X 2 + X + 1 et X 2 X + 1 : ce sont respectivement 5, 6, 6 e et 5. Nous avons donc six candidats pour tre racine primitives 6i`mes , et e i`me , 1 e seuls (6) = (2)(3) = 2 conviennent : 1 nest que racine primitive 1 e racine primitive 2i`me , 53 = 52 5 = 6 5 = 30 = 1 mod 31 et 5 est donc e racine racine primitive 3i`me , de mme que 6. Les deux racines primitives e i`mes de lunit modulo 31 sont donc 6 et 5 = 26. e 6 e

288

Solution des exercices

Exercice 1.31, page 92. 4 ne divise pas 30, il faut donc se placer dans une extension de Z31 . Factorisons X 4 1 = (X 1)(X + 1)(X 2 + 1) et X 2 + 1 est irrductible modulo e 2 + 1 dans lequel on a bien 31. On se place alors dans le corps F312 Z31 [X]/X 4 qui divise 312 1 = 960. e On sait que les lments de Z31 ne peuvent pas tre racine primitive 4i`me et ee e lon regarde alors une des racines de X 2 + 1, note par exemple i que lon e e sait tre racine 4i`me . On vrie que cest bien une racine primitive : i2 = 1, e e i3 = i et i4 = i2 = 1. Exercice 1.32, page 94. (p). a est une racine primitive. (pe ). xn 1 xn+1 1 Donc a b = 1 xn xn+1

a b

xn+1 xn+2

[m] xn+1 xn+2

1 1 xn+1 xn

[m]

xn+1 xn = a(xn xn1 ) et xn+2 xn+1 = a(xn+1 xn ). Donc (xn+1 xn )2 = (xn+2 xn+1 )(xn xn1 ) si a est inversible modulo m. Dans ce cas m est un facteur de la dirence de cette galit et lon est ramen au cas prcdent. e e e e e e p = 1009, a = 238, b = 12, X0 = 456, X6 = 253. Exercice 1.33, page 103. Par dnition, r 1 a pour facteur t. Si s = r alors sr1 = 1 mod r dapr`s e e le thor`me de Fermat. Donc m = 1 mod r, ce qui veut dire que p 1 = 0 e e mod r. Ensuite, m = 1 mod s par dnition, donc p + 1 = 0 mod s. Par e consquent, r divise p 1, s divise p + 1 et t divise r 1. e

Chapitre 2 : Thorie de linformation et compression e

289

Solutions des exercices proposs au chapitre 2 e


Exercice 2.1, page 107. 1. 2N chiers. 2. 1 chier de taille 0, 2 chiers de taille 1, 4 chiers de taille 2, ..., 2N 1 . N 1 Soit un total de 221 = 2N 1 chiers de strictement moins que N bits. 3. Ceci prouve que soit au moins deux chiers distincts de N bits seront compresss de mani`re identique, et donc il y aura eu perte. En eet, e e dans ce cas, apr`s compression il sera impossible de savoir vers lequel e des chiers initiaux dcompresser. Lautre solution est que certains e chiers compresss font plus de N bits. Dans ce cas il ny a pas eu de e compression. Exercice 2.2, page 114. Le code issu de lalgorithme de Human est : S 000 001 010 100 011 101 110 111 C 1 010 011 001 00011 00010 00001 00000

Sa longueur moyenne est : l = 1.05, soit par bit de source l = 0.35. Cest supe rieur ` la longueur moyenne du code de lexercice 1.24, mais cela ne remet pas a en cause loptimalit de Human : il faudrait comparer avec la quatri`me exe e tension, qui est dapr`s loptimalit de Human meilleure que le code construit. e e 1 1 Lentropie de S est H(S) = 0.99log2 0.99 + 0.01log2 0.01 = 0.0808. Le thor`me e e est bien vri dans tous les cas. e e Exercice 2.3, page 114. Lide est de procder par rejet (avec relance de la pi`ce si ncessaire). e e e e Pour cela, il faut gnrer 6 v`nements de probabilits uniformes avec une e e e e e pi`ce en tirant 3 fois ` pile ou face et en associant les v`nements suivants e a e e (Pile = P ou Face = F) ` un jet de d : a e Tirages Pile ou Face PPP PPF PFP PFF FPP FPF Jet de d 1 2 3 4 5 6 e

290

Solution des exercices

Si on trouve FFP ou FFF : on rejette le tirage (on peut donc sarrter apr`s e e deux jets, d`s que lon a F F ) et on relance 3 fois la pi`ce (tirages indpene e e dants). 6 6 2 Le nombre N moyen de lancers de pi`ces est donc : N = ( 8 ) 3 + ( 8 ) ( 8 ) (2 + e 6 2 k 6 2 2 6 3)+( 8 ) ( 8 )(2+2+3)+..., ou encore N = ( 8 ) k=0 (2k +3)( 8 ) = 3( 8 ) 2 k 1 2 2 k 6 6 6 2 j k=0 k( 8 ) = 3 ( 8 ) 1( 2 ) + 2 ( 8 ) ( 8 ) j=1 (j + 1)( 8 ) k=0 ( 8 ) + 2 ( 8 ) Or
j=0
8

(j + 1)xj =

j=1

xk = ( 1 1 = . 1x (1 x)2

8 2 8 6 6 2 Do` N = 3 ( 8 ) ( 6 ) + 2 ( 8 ) ( 8 ) ( 6 )2 = 3 + ( 3 ), soit une moyenne de 11 u pile ou face pour les trois ds du 421. e 1 Lentropie des trois ds non pips tant 3 6 ( 6 ) log2 (6) 7.755, ce e e e codage nest sans doute pas optimal. En eet, le cas de lextension de source ` 3 ds permet de faire en encodage a e 3 = 216 < 256 = 28 . Dans ce cas, la moyenne du sur 8 pile ou face, puisque 6 nombre de tirages ncessaires avec rejets est plus proche de 8.5. e

Exercice 2.4, page 116. 1. H(d)=2.58. e 2. sur {0,1,2}, Human construit le code (par exemple) : ( 1-> 10 , 2-> 12 , 3-> 01 , 4-> 00 , 5-> 02 , 6-> 2 ), de longueur moyenne (xe) gale ` e a 0.221+(10.22)2 = 1.78 chires. Cest le code optimal (par thor`me), e e on ne pourra obtenir mieux (et toujours plus que 2.58/log2 (3) = 1.62) quen codant la source par squences de chires. e 3. Sur {0,1}, un code possible est : ( 1-> 000 , 2-> 001 , 3-> 010 , 4-> 011 , 5-> 10 , 6-> 11 ), de longueur moyenne 2.6. Cest aussi le code optimal. Exercice 2.5, page 116. 1. On code les squences {1,2,3,4,51,52,53,54,55,56,61,62,63,64,65,66} (au e nombre de 16) avec les 16 mots de longueur 4. 2. Selon le code choisi (dont ne dpend pas la longueur des squences), on e e peut avoir par exemple : Tunstall( 66-> 1111 et 64-> 1100) : 11111100 et Human : 11|11|11|011. 3. Pour coder les squences de deux chires, on a besoin de 4 bits, soit e un rendement de 2, et de mme pour les mots de un chire, soit un e rendement de 4. La longueur moyenne par bit de source est donc : 2 0.22 + 2 0.18 + 4 0.60 = 3.2.

Chapitre 2 : Thorie de linformation et compression e Exercice 2.6, page 121.


Nombre 49991 49991 49991 49916 49916 49168 49168 49168 91680 91680 Intervalle [40000; 59999] [48000; 51999] [49600; 50399] [46000; 53999] [49200; 50799] [42000; 57999] [48400; 51599] [48400; 49679] [84000; 96799] [91680; 96799] Sortie b b b shift b shift b a shift c

291

Exercice 2.7, page 122. 1. Par exemple : (a->0 ;b->10 ;c->110 ;d->111). 2. a, b, c et d ncessitent donc 4 8 bits pour tre crits et leurs codes e e e ncessitent 1 + 2 + 3 + 3 bits, soit un total dau moins 41 bits. e 3. Dans le cas de lextension de source ` 3 caract`res, il y a 43 = 64 tria e plets possibles, chacun crit sur 8 bits et il y a donc galement 64 codes e e ncessitant donc au moins 64 6 bits au total3 . Soit, ` mettre dans le e a chier compress : au moins 64 8 + 64 6 = 896 bits. e 4. 18 caract`res ASCII :8 18 = 144 bits. e 5. Compression par Human : 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 110, 111, 10, 110, 111, 10, 110, 111, soit 1 9 + 3 (2 + 3 + 3) = 33 bits, auxquels il faut ajouter 41 bits de table. Pour une extension de source ` 3 caract`res, a e la table (ou larbre) ncessiterait dj` un espace mmoire plus de 5 fois e ea e plus grand que le chier initial. Exercice 2.8, page 125. 1. @a| 1| 0| 0| 0| 0| 0| 0| 0| @b| @c| @d, l` larbre dynamique est a->0 ; a @->10 ; b->110 ; c->1110 ; d->1111, la suite de la compression est donc 110| 1110| 1111| 110| 1110 et juste avant le dernier d larbre est devenu a->0 ; @->100 ; b->101 ; c->110 ; d->111, et donc le dernier d est cod par e 111. La compression totale en ignorant le premier @ est donc : ASCII(a)
3 Pour voir que cest une borne infrieure il faut considrer un code de 64 mots dont e e certains font strictement plus de 6 bits. Alors cela veut dire quil y a aussi des mots de strictement moins de 6 bits. Prenons un mot par exemple de 8 bits et un mot de 5 bits (par exemple 10101), remplaons dans le code ces deux mots par les deux mots de 6 bits qui c lallongent directement : 101010 et 101011. Le code obtenu ncessite 8 + 5 6 6 = 1 bit de e moins dans sa table.

292

Solution des exercices 10000000 1ASCII(b) 10ASCII(c) 10ASCII(d) 110 1110 1111 110 1110 111, soit 8 + 8 + 1 + 8 + 2 + 8 + 2 + 8 + 3 + 4 + 4 + 3 + 4 + 3 = 66 bits seulement au total (` comparer avec les 33 + 41 = 74 bits obtenus par a Human statique).

2. Sur des groupes de 3 caract`res cela donne sur ce cas particulier @aaa| e 1| 0| @bcd| 10| 10, soit ASCII(aaa)101ASCII(bcd)1010 qui ncessite e seulement 3 8 + 1 + 1 + 1 + 3 8 + 4 = 55 bits au total. Exercice 2.9, page 126. 1. Par exemple, 6801314131413141312222611, o` 68 code pour les dimenu sions de limage (6 8 pixels), puis chaque chire pour le nombre de pixels conscutifs de mme couleur (alternance blanc-noir). e e 2. 25 octets (ou 13 en limitant ` des blocs de taille 16) au lieu de 6, plutt a o une perte sur les petites images ! 3. On note un bloc par un bit coll ` quatre autres bits en hexadcimal e a e (par exemple : 0F = [0, 1, 1, 1, 1]). Le premier bit indique si lon code une couleur ou un run. On obtient donc : 6, 8, 00, (13, 0F), 00, (14, 0F), 00, (13, 0F), 00, (14, 0F), 00, (13, 0F), 00, (14, 0F), 00, (13, 0F), 00, 0F, 0F, 00, 00, 0F, 0F, 00, 00, (16, 0F), 00, 0F. Pour 34 5 + 2 8 = 186 bits = 24 octets au lieu de 6 8 4 + 2 8 = 192 bits = 26octets. On peut galement supprimer le bit ` 0 dans la couleur suivant un run. e a On obtient alors : 6, 8, 00, 13F, 00, 14F, 00, 13F, 00, 14F, 00, 13F, 00, 14F, 00, 13F, 00, 0F, 0F, 00, 00, 0F, 0F, 00, 00, 16F, 00, 0F. Ce qui fait 8 4 + 26 5 + 2 8 = 178 bits = 23 octets. 4. Le caract`re de rptition est FF, on code noir par 00 et blanc par e e e FE. On a donc : 6, 8, 00, (FF, 3, FE), 00, (FF, 4, FE), 00, (FF, 3, FE), 00, (FF, 4, FE), 00, (FF, 3, FE), 00, (FF, 4, FE), 00, (FF, 3, FE), 00, FE, FE, 00, 00, FE, FE, 00, 00, (FF, 6, FE), 00, FE. Soit 84+348+28 = 320 bits = 40 octets au lieu de 6 8 8 + 2 8 = 400 bits = 50 octets 5. 6, 8, 00, (FF, 6, FE), 00, (FF, 6, FE), 00, FE, 00, (FF, 4, FE), 00, 00, FE, 00, (FF, 6, FE), 00, (FF, 6, FE), 00, FE, 00, 00, (FF, 3, FE), 00, 00, FE. Soit 6 4 + 29 8 + 2 8 = 272 bits = 34 octets au lieu de 50. Exercice 2.10, page 128. 1. 0123321045677654 et 0123456701234567. 2. 0123012345670123 et 0123456777777777. La deuxi`me cha a une e ne entropie visiblement rduite. e 3. Les frquences sont gales ` 1/8, lentropie est donc maximale et 3 bits e e a sont ncessaires pour chaque caract`re. Il faut donc 3 16/8 = 6 octets. e e

Chapitre 2 : Thorie de linformation et compression e

293

3 4. Pour la premi`re cha on obtient une entropie : H = 4( 16 log2 ( 16 )) + e ne 3 1 4( 16 log2 (16)) 1.81 + 1 = 2.81. Par Human le code est donc : 00, 01, 100, 101, 1100, 1101, 1110, 1111, do` un codage sur seulement 2 3 u 2 + 2 3 3 + 4 1 4 = 46 = 5.75 octets. La deuxi`me cha sy prte e ne e 1 9 encore mieux : H = 7( 16 log2 (16)) + ( 16 log2 ( 16 )) = 1.75 + .47 = 2.22. 9 Human donne alors : 00, 01, 100, 101, 1100, 1101, 111, 1, do` seulement u 2 + 2 + 3 + 3 + 4 + 4 + 3 + 1 9 = 30 = 3.75 octets ! 5. Human donne : 000, 001, 010, 011, 1, pour respectivement 12, 34, 56, 67 et 77. Ainsi, 4 3 + 4 1 = 16 = 2 octets sont ncessaires, mais avec e une table de taille 256 octets au lieu de 8 triplets soit 3 octets. 6. Un Move-to-Front suivi dun code statistique est donc un code statistique localement adaptatif . 7. Pour k = 1 on obtient 0123220345676644 et 0123456770123457 dentropies respectives H = 2.858 et H = 2.953. Pour k = 2, cela donne : 0123112345675552 et 0123456777012347 do` H = 2.781 et H = u 2.875.

Exercice 2.11, page 131. 1. Car le message initial peut tre reconstruit ` partir de L et de lindex e a primaire, mais pas ` partir de F ! ! ! a 2. Ici, S=L=sssssssssh! Move-to-front donne C=(1,0,0,0,0,0,0,0,1), qui est aussi la sortie de Human. 3. Implmentation pratique : e (a) On peut se servir de la position du premier caract`re du message e source. (b) Entres Une cha S (de taille n). Deux entiers i et j. e ne Sorties i est avant ou j est avant Tant que on na pas de rponse Faire e Si S[i] < S[j] Alors Rpondre i est avant e Sinon, si S[i] > S[j] Alors Rpondre j est avant e Sinon i (i + 1) mod n et j (j + 1) mod n Fin Si Fin Tant que (c) Il faut pouvoir stocker S le message source, puis T contenant les indices de permutation et enn L que lon calcule par S[T [i] 1]. (d) Lindex primaire est celui pour lequel T [i] = 1, puisque cest l` que a se trouve la ligne 1.

294

Solution des exercices

Exercice 2.12, page 132. 1. Il faut faire attention ` bien mettre la derni`re lettre (ici le f) dans le a e dernier triplet et donc se limiter ` en reprendre seulement 10, et pour le a dernier triplet, il faut bien sr que la distance soit toujours plus longue u que la longueur : (0, 0, a) (0, 0, b) (0, 0, c) (0, 0, d) (0, 0, e) (0, 0, f ) (6, 6, a) (12, 10, f ). 2. L`, la distance et la longueur doivent tenir sur 3 bits, et sont donc coma prises entre 0 et 7. Il faut donc couper le dernier bloc en deux morceaux : (0, 0, a) (0, 0, b) (0, 0, c) (0, 0, d) (0, 0, e) (0, 0, f ) (6, 6, a) (6, 6, b) (6, 3, f ). Exercice 2.13, page 134. La compression de BLEBLBLBA par LZW donne donc le rsultat suivant : e cha ne B L E BL BLB A Achage 42 4C 45 80 83 41 Dictionnaire BL 80 LE 81 EB 82 BLB 83 BLBA 84

Si lon dcompresse cette sortie sans traiter le cas particulier, on obtient ` e a cause du dcalage de mise en place du dictionnaire la sortie suivante : e Code 42 4C 45 80 83 Achage B L E BL ??? Dictionnaire BL LE EB 80 81 82

Puisque que le code 83 nest pas connu cest que lon est prcisement dans le e cas particulier et que le prochain groupe est donc forcment la rptition du e e e prcdent (BL) augment de la premi`re lettre du groupe, soit BLB. On voit e e e e donc bien ici, que le traitement du cas particulier permet de mettre ` jour a le dictionnaire une itration plus tt. Ainsi, toute cha rpte deux fois de e o ne e e e suite peut tre traite correctement ` la dcompression. e e a e Exercice 2.14, page 135. 1. (0, 0, a) ; (0, 0, b) ; (1, 1, a) ; (0, 0, r) ; (3, 3, b) ; (4, 2, b) ; (10, 5, a) 2. 0, 0, 1, 0, 3, 4, 10 devient 1-0, 0, 1-1, 00, 1-3, 1-4, 1-10 par Human dynamique . a, b, a, r, b, b, a devient 1-a, 1-b, 00, 1-r, 010, 010, 010. Do` le codage gzip : (10, 0, 1a) ; (0, 0, 1b) ; (11, 1, 00) ; (00, 0, 1r) ; (13, u 3, 010) ; (14, 2, 010) ; (110, 5, 010).

Chapitre 2 : Thorie de linformation et compression e

295

3. f1.gz : (0, 0, a) ; (0, 0, b) ; (1, 1, a) ; (0, 0, r) ; (3, 3, b), et donc (10, 0, 1a) ; (0, 0, 1b) ; (11, 1, 00) ; (00, 0, 1r) ; (13, 3, 010) f2.gz : (0, 0, b) ; (0, 0, a) ; (2, 1, b) ; (3, 1, a) ; (0, 0, r) ; (3, 2, a) qui devient (10, 0, 1b) ; (00, 0, 1a) ; (12, 1, 00) ; (13, 1, 01) ; (00, 0, 1r) ; (011, 2, 010). 4. La premi`re distance pour le premier caract`re dun chier est forcment e e e 0. Les deux premiers caract`res dun chier gzip sont donc forcment 10. e e En outre, comme @ est x au bit 1, le dbut de chier est le seul endroit e e o` la squence 10 peut tre rencontre. Donc toute rencontre, dans le u e e e chier, de la squence 10 sur la cha des occurrences est forcment une e ne e remise ` zro des Human dynamiques. Cette particularit fait quil ny a e e a pas de dirence structurelle entre un seul chier compress par gzip e e et une squence de chiers compresss. En dcompressant avec gunzip e e e f3.gz, on obtiendra donc bien en rsultat un chier dont le contenu est e identique ` la concatnation de f1 et f2. a e 5. En changeant la taille maximale de fentre de LZ77. Avec une petite e fentre il est plus rapide mais la compression est moins bonne. e

296

Solution des exercices

Solutions des exercices proposs au chapitre 3 e


Exercice 3.1, page 149. 1. |Z | = (26) = (13 2) = 12 et Z = {1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 26 26 23, 25}. 2. 15 Z donc la clef est valide et on obtient les chirements successifs 26 7, 22 et 11. 3. D(a,b) : Zn y Zn D(a,b) (y) = a1 (y b)

mod n

4. (a) Une recherche exhaustive requiert de lordre de O(|Z |.|Z26 |) tests 26 de clefs. Grce ` lanalyse de frquence, on est capable de proposer a a e des correspondances pour les lettres les plus courantes. Ainsi, on est quasiment assur que la lettre e est chire en o. On en dduit e e e lquation : e E(a,b) (e) = o 4a + b = 14 mod 26

` A partir de l`, deux mthodes sont possibles : a e On rsout lquation diophantienne 4a + b = 14 dans Z et on e e en dduit les solutions possibles dans Z26 . On teste les clefs ade missibles (pour lesquelles a Z ) jusqu` trouver la bonne. On a 26 rappelle que pour rsoudre cette quation, on commence par re e e soudre lquation homog`ne 4a + b = 0 (lensemble des solutions e e est SH = {(k, 4k), k Z}), on trouve ensuite une solution particuli`re (a0 , b0 ) (soit directement (0,14), soit en calculant les e coecients de Bzout par lalgorithme dEuclide tendu) et on e e en dduit lensemble des solutions dans Z. On trouve ainsi S = e {(k, 14 + 4k), k Z}. On en dduit les valeurs admissibles de k e pour trouver les solutions dans Z26 : 0 a < 26 25 k 0. Il reste ` tester les clefs admissibles correspondantes. On obtient a les rsultats suivants : e k = 25 K = (a, b) = (1, 10). On dchire avec cette e clef : csqxre yirvesa, uar af srvre... Ce nest donc pas la bonne clef. k = 23 K = (a, b) = (3, 2). On dchire avec cette noue velle clef : maitre corbeau, sur un arbre... On a trouv e la bonne clef ! De faon gnrale, on aura au pire O(|Z |) essais ` eectuer. c e e a 26 On extrait une seconde relation probable (pour le chirement de s, la lettre la plus frquente apr`s le e) et on rsout le syst`me e e e e

Chapitre 3 : Cryptologie

297

correspondant. Compte tenu des rsultats de lanalyse statistique, e on testera successivement les syst`mes e (1) e(a,b) (e) = o e(a,b) (s) = b e(a,b) (e) = o e(a,b) (s) = c e(a,b) (e) = o e(a,b) (s) = e 4a + b = 14 mod 26 18a + b = 1 mod 26 4a + b = 14 mod 26 18a + b = 2 mod 26 4a + b = 14 mod 26 18a + b = 4 mod 26

(2) (3)

. . . On montre que cest nalement ce dernier syst`me qui fournit la e bonne clef. La clef de chirement utilise est donc K = (a, b) = (3, 2). e (b) On obtient ainsi le texte dchir suivant : e e
maitre corbeau, sur un arbre perche, tenait en son bec un fromage. maitre renard, par lodeur alleche lui tint a peu pres ce langage : "he ! bonjour, monsieur du corbeau, que vous etes joli ! que vous me semblez beau ! sans mentir, si votre ramage se rapporte ` votre plumage, a vous etes le phenix des hotes de ces bois."

Exercice 3.2, page 154. Les deux blocs Li et Ri sont obtenus ` partir des blocs prcdents et de la clef a e e de tour Ki par : Li = Ri1 et Ri = Li1 f (Ri1 , Ki ). Alors, au dchirement, e on peut obtenir les deux blocs prcdents Li1 et Ri1 ` partir des trois valeurs e e a Li , Ri et Ki simplement par Ri1 = Li et Li1 = Ri f (Li , Ki ). Il nest donc pas ncessaire dinverser f . En outre le dchirement est bien identique au e e chirement si lon applique les tours dans lordre inverse. Exercice 3.3, page 156. La connaissance de la clef et du crypt permet de dcrypter ; autrement dit e e en gnral H(K, C) H(M, C), ou encore H(K|C) + H(C) H(M |C) + e e H(C). La dnition du chirement parfait donne H(K|C) H(M ). Il y a e donc forcment au moins autant de K possibles que de M . e M et C sont cods par des mots de {0, 1}64 alors que les clefs ne sont que sur e 56 bits. Le nombre de clefs nest donc pas susant pour avoir un chirement parfait.

298 Exercice 3.4, page 159.

Solution des exercices

1. (a) On fournit le rsultat pour direntes reprsentations : e e e Avec des polynmes : (X 6 + X 4 + X 2 + X + 1) + (X 7 + X + 1) = o X 7 + X 6 + X 4 + X 2. En notation binaire : [01010111] + [10000011] = [11010100] En notation hexadcimale : [57] + [83] = [D4] e (b) (X 6 + X 4 + X 2 + X + 1)(X 7 + X + 1) = X 13 + X 11 + X 9 + X 8 + X 7 + X 7 + X5 + X3 + X2 + X + X6 + X4 + X2 + X + 1 = X 13 + X 11 + X 9 + X 8 + X 6 + X 5 + X 4 + X 3 + 1 Et (X 13 + X 11 + X 9 + X 8 + X 6 + X 5 + X 4 + X 3 + 1) mod (X 8 + X 4 + X 3 + X + 1) = X 7 + X 6 + 1. Le modulo g(X) assure que le rsultat reste un polynme binaire e o de degr infrieur ` 8 qui peut donc tre reprsent par un octet. e e a e e e On a ainsi obtenu : [57] [83] = [C1]. 2. (a) Soit a F256 . En notation polynomiale, a(X) = a7 X 7 +. . .+a1 X + a0 . Ainsi, X.a(X) = a7 X 8 + . . . + a1 X 2 + a0 X. Modulo g(X), deux cas sont possibles : Soit a7 = 0, on obtient directement une expression rduite et e 7 + . . . + a X 2 + a X. donc X.a(X) = a6 X 1 0 Soit a7 = 1 et dans ce cas : X.a(X) = X 8 + . . . + a1 X 2 + a0 X. En outre, g(X) est forcment nul modulo g(X), ce qui implique e que X 8 = X 4 + X 3 + X + 1 mod g(X) et donc X 8 + a6 X 7 + . . . + a1 X 2 + a0 X = (a6 X 7 + . . . + a1 X 2 + a0 X) (X 4 + X 3 + X + 1) En notation polynomiale, cette opration consiste donc ` raliser e a e un dcalage ` gauche suivi ventuellement dun XOR bits-`-bits e a e a avec {1B}. Pour rsumer : e X [a7 a6 a5 a4 a3 a2 a1 a0 ] = [a6 a5 a4 a3 a2 a1 b0 0] [a6 a5 a4 a3 a2 a1 b0 0] [00011011] si a7 = 0 sinon

Chapitre 3 : Cryptologie (b) On it`re i fois lalgorithme prcdent. e e e

299

3. F256 {0} w(X)i mod g(X) 0 i<255 ; avec cette reprsentation (dite e cyclique ou exponentielle, ou de Zech), la multiplication de deux lments ee a et b non nuls est aise : e a(X) = w(X)i b(X) = w(X) a(X) b(X) = w(X)
j i+j mod 255

(4.9) (4.10) (4.11)

e On gn`re une table ExpoToPoly de 256 entres telle que la k i`me entre e e e e k modulo ExpoToPoly[k] donne la reprsentation polynomiale de w(X) e g(X). (Par convention, on reprsentera llment 0 par w(X)255 bien e ee que mathmatiquement, w255 = 1). La table PolyToExpo correspond e a ` la table inverse. On utilise ces tables pour eectuer ecacement la multiplication de deux lments a et b ` partir de la relation prcdente. ee a e e

Exercice 3.5, page 163. InvSubBytes consiste ` eectuer la mme manipulation mais ` partir de la a e a 1 note InvSBox. Boite-S inverse S e Remarque : Comme la fonction t est son propre inverse, on a : SBox1 [a] = t1 f 1 (a) = t f 1 (a) , pour tout a F256 La fonction ane inverse f 1 est dnie par : e b7 0 b6 0 b5 1 b 0 1 b = f (a) 4 = b3 0 b2 1 b1 0 b0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 a7 0 1 a6 0 0 a5 0 0 a4 0 + 1 a3 0 0 a2 1 1 a1 0 0 a0 1

Exercice 3.6, page 163. Par dnition, SBox[a] = f (t(a)) , pour tout a F256 avec t : a a1 sur e F256 . Or a = X + 1 en notation polynomiale. Donc t(a) = (1 + X)1 = X 2 + X 4 + X 5 + X 7 mod g(X) = [10110100] = [B4] par lalgorithme dEuclide. Ensuite, on fait lopration matricielle pour obtenir f ([B4]) = [00011110]+[11000110] = e [11011000] = [D8].

300

Solution des exercices

Exercice 3.7, page 163. InvShiftrows consiste videmment ` eectuer au niveau le la ligne i un de a e calage cyclique ` droite de Ci lments. a ee Exercice 3.8, page 164. 1. [0B] + [A2] = [A9], [03] = [03], [F D] [F 0] = [F D] + [F 0] = [0D], [23] + [45] = [66]. 2. X 8 + X 4 + X 3 + X + 1 = (X + 1)(X 7 + X 6 + X 5 + X 4 + X 2 + X) + 1. 3. X + 1 = [03], donc [03]1 = [F 6]. 4. La multiplication par X revient ` dcaler le mot binaire vers la gauche. a e 8 est prsent, il faut le remplacer par X 4 + X 3 + X + Ensuite, si X e 1, et faire la somme. Cela revient ` faire un ou exclusif (XOR) avec a 00011011. On obtient ainsi, avec X = [02], les monmes suivants : X 8 = o 9 = 00110110 = [36], X 10 = 01101100 = [6C], 00011011 = [1B], X X 11 = 11011000 = [D8], X 12 = 10101011 = [AB], X 13 = 01001101 = [4D] et X 14 = 10011010 = [9A]. 5. (a1 + a2 + . . . + an )2 = a2 + a2 + . . . + a2 mod 2. n 1 2 6. [F 6]2 = X 14 + X 12 + X 10 + X 8 + X 4 + X 2 , soit en additionnant les valeurs binaires : [F 6]2 = 01010010 = [52]. 7. Par la division euclidienne, on obtient directement (par exemple en identiant les coecients) Q = [F 6]Y + [52]. 8. (U V Q)c + V M = 1. 9. Le dcodage de MixColumn se fait en multipliant par linverse de c, e (U V Q), qui vaut [OB]Y 3 + [0D]Y 2 + [09]Y + [0E]. Cette tape ree vient ` eectuer le calcul b(X) = d(X) a(X) mod (X 4 + 1) qui scrit a e matriciellement ainsi : b0 0E 0B 0D 09 a0 b1 09 0E 0B 0D a1 = b2 0D 09 0E 0B a2 b3 0B 0D 09 0E a3 Exercice 3.9, page 165. Cest exactement la mme opration puisque laddition sur F2 est son propre e e inverse ! Exercice 3.10, page 167. La routine de chirement peut tre inverse et rordonne pour produire e e e e un algorithme de dchirement utilisant les transformations InvSubBytes, e

Chapitre 3 : Cryptologie Algorithme 29 Dchirement AES. e Entres Une matrice State correspondant au bloc chir, une clef K e e Sorties Une matrice State correspondant au bloc clair KeyExpansion(K, RoundKeys) AddRoundKey(State, RoundKeys[Nr ]) ; // Addition initiale Pour r Nr 1 ` 0 Faire a InvShiftRows(State) ; InvSubBytes(State) ; AddRoundKey(State, RoundKeys[r]) ; InvMixColumns(State) ; Fin Pour // FinalRound InvShiftRows(State) ; InvSubBytes(State) ; AddRoundKey(State, RoundKeys[0]) ;

301

InvShiftRows, InvMixColumns, et AddRoundKey. Une modlisation formelle e de lalgorithme de dchirement est fournie dans lalgorithme 29. e Dans cette version du dchirement, la squence des transformations di`re e e e de celle du chirement, le traitement de la clef restant inchang. Certaines e proprits de lalgorithme de Rijndael permettent dimplmenter une routine ee e de dchirement quivalente qui respecte la squence de transformations de e e e la routine de chirement, la structure de celle-ci tant la plus ecace. Cette e version quivalente nest pas demande ici. e e Exercice 3.11, page 167. 1. Un exemple parmi tant dautres : un chier contenant les salaires : Le mme bloc chir que moi : le mme salaire e e e Echanger un bloc chir avec un autre : change de salaire e e 2. (a) Triple DES code sur 64 bits, soit 3 octets, donc 2353 = 232 blocs. 32 (232 1) probabilit N (N 1) = 2 2264 0.5, une chance sur deux ! e 2H (b) Si Yi = Yj , alors Xi Yi1 = Xj Yj1 = S. Alors Yi1 Yj1 = Xi Xj = Xi S Xj S = Z et Z est le XOR de deux parties claires du message. Avec des essais de messages en clair M , on obtient ainsi que Xi Xj M est un morceau clair.
(2 1) (c) Avec AES cod sur 128 bits, on a seulement N (N 1) = 2 22128 e 2H soit environ 3.1020 chances de collision. Ainsi les deux param`tres, e taille de clef et taille de bloc, sont dimportance pour obtenir des codes rsistants, le premier contre les attaques par force brute, le e deuxi`me pour viter le risque de collision. e e
32 32

302 Exercice 3.12, page 170.

Solution des exercices

1. p = 47 et q = 59. On notera que les valeurs proposes pour p et q sont e faibles et ne correspondent videmment pas ` des cl relles. e a e e on calcule n = p q = 47 59 = 2773. on calcule (n) = (p 1)(q 1) = 46 58 = 2668 on vrie que e est bien premier avec (n) et on calcule son inverse d = e e1 mod (n). On utilisera pour cela lalgorithme dEuclide tendu. e On obtient ainsi d = 157. Finalement, la cl publique est Ke = (e, n) = (17, 2773). La cl prive e e e est Kd = (d, n) = (157, 2773). 2. La lettre B correspond ` la valeur ASCII 01000010 = 66 (voir la a table 1.2 page 38). On pourra chirer et dchirer cette valeur qui est e bien dans lintervalle [0, 2772]. Chirement : on calcule 6617 mod 2773 cest-`-dire 872. a Dchirement : on calcule 872157 mod 2773 et on vrie quon obtient e e bien 66. Exercice 3.13, page 171. 1. M = 10011 (mod 319) = 265 2. On doit rsoudre 11 d = 1 (mod 280). On trouve d = 51 e soit en utilisant lalgorithme dEuclide tendu ; e soit en essayant ` la main car 51 = (280/11) 2 donc il sut de deux a essais pour trouver ; soit en utilisant Euler, d = 111 mod 280 ce qui implique que d = 11(280)1 mod 280 = 11(758)1 mod 280 = 11(644)1 = 1195 mod 280. Soit d = 1164+16+8+4+2+1 = 81.81.121.81.121.11 = 81.11 = 51 mod 280. 3. On doit calculer 13351 (mod 319). Dans les notes on donne 13325 = 133 (mod 319). Le rsultat est 133 133 133 (mod 319) = 12. e 4. Evidemment non pour les deux car les messages ` chirer/dchirer a e doivent appartenir ` Zn , cest-`-dire Z319 dans ce cas. a a Exercice 3.14, page 171. 1. Dans un long message, si des squences dau moins 3 lettres se rp`tent il e e e est possible que cela ne soit pas du au hasard. Au contraire, il peut sagir de mmes mots de message qui se retrouvent cods par la mme partie e e e de la clef. Dterminer la taille de la clef peut alors se faire en calculant le e pgcd des distances entre des squences se rptant dans le message chir e e e e (on appelle cette analyse le test de Kasiski). Il faut ensuite regrouper les

Chapitre 3 : Cryptologie

303

caract`res du chir par paquet de cette taille et appliquer une analyse e e de frquence pour chaque position. e 2. C = M 5 mod 35. On calcule alors : d = 51 mod (7 5) = 51 mod 24 = 5. On en dduit M = 105 mod 35. Puisque 100 = 5 mod 35, on a : e 105 = 25 10 = 5 50 = 5 15 = 75 = 5 mod 35. Le mot clef comporte donc 5 caract`res. e 3. On calcule la clef secr`te dOscar : e d = 71 mod (65) = 71 mod 48 = 7. Ensuite : K1 = 487 mod 65 = 482 485 = 29 3 = 87 = 22 mod 65 Puisque 43 = 64 = 1 mod 65, on a : K2 = 47 mod 65 = (1)2 4 = 4 mod 65 4. On rordonne le texte par groupe de 5 caract`res. e e HJ WA QM QS V PL TV DI IE Y E WS NP GL YU CE OT MI CE GL EA CE V IE JL DI FB Y LQ YU Y GL EA SU HM MI CE V HD AC JO YU ZA IN XT ZA HM EA Y JO RN Y WA MI Y KP PL Y GL EA GI E D Y WA D MO HM FB Y ZD YU CE IN SO CE HM IE IA IA H AT S VN VN AT ZR H H ME BU KC H QI H UM BU H YQ TL ZR H VN VN OI F TN F F IC ZT F KE GA RL XR F NH PJ YS TN KE YS AV U F KE XR IC Z T

On eectue une analyse frquentielle colonne par colonne : e

304 Colonne 1 : 9 Y et 6 C : on suppose Y (24) (26) C(2) E(4)

Solution des exercices

e Chirement : dcalage de 2 = 25 mod 27 (Z) Dchirement : dcalage de +2 e e Colonne 2 : on a dj` la clef de chirement : K1 = 22 = 5 mod 27. ea Pour dchirer, il convient donc de faire un dcalage de +5. e e Colonne 3 : on a aussi la clef de chirement : K2 = 4 mod 27. Pour dchirer, il doit faire un dcalage de 4 = 23 mod 27. e e Colonne 4 : 7 H : on suppose H(7) (26). Chirement : dcalage de +8 (I) e Dchirement : dcalage de 8 = 19 mod 27 e e Colonne 5 : 6 F on suppose F (5) (26). Chirement : dcalage de +6 (G) e Dchirement : dcalage de 6 = 21 mod 27 e e Le texte dchir est donc : e e JAMAIS_LA_VIE_N_EST_PLUS_ETINCELANTE_ET_LIBRE_ QU_A_LA_LUMIERE_DU_COUCHANT_ JAMAIS_ON_N_AIME_PLUS_LA_VIE_ QU_A_L_OMBRE_DU_RENONCEMENT On peut en dduire la clef de chirement : e K0 K1 K2 K3 K4 = (25, 22, 4, 8, 6) = ZWEIG La clef de dchirement est alors : e
1 1 1 1 1 K0 K1 K2 K3 K4 = (2, 5, 23, 19, 21) = CFXTV

Exercice 3.15, page 173. 1. Puisque (n) divise ed 1 et que (n) = (p 1)(q 1) = n (p + q) + 1, il existe k Z, tel que ed 1 = k mod n (p + q) + 1. 2. On suppose p et q dirents de 2 et 3 ; ainsi p et q sont infrieurs ` e e a et donc pq p q + 1 n . 2 Finalement, k vrie : e 2e.d . k n Comme d < n, on a nalement k 2e.
n 4,

Chapitre 3 : Cryptologie

305

3. Comme e est petit, on peut numrer toutes les valeurs possibles entre e e 1 et 2e pour trouver le bon k. Dans ce cas, n = pq et Sk = n + 1 ed1 = p + q sont solutions enti`res de lquation du second degr : e e e k 2 S + n = 0. X k La mthode est dtaille dans lalgorithme 30. e e e Algorithme 30 Factorisation de n ` partir de (n,e,d) dans RSA (cas e petit). a Entres (n, e, d). e Sorties Les facteurs p et q tels que n = pq Pour k 1 ` 2e Faire a Sk n + 1 ed+1 k Si Sk est entier Alors Calculer les 2 racines p et q de lquation : X 2 Sk + n = 0. e Si p et q sont entiers Alors Renvoyer p et q. Fin Si Fin Si Fin Pour

Exercice 3.16, page 173. 1. On sait que (n) divise ed 1. Il existe k Z, tel que ed 1 = k(n). En outre : t = ed1 . Soit alors a Z premier avec n. 2s 2s Alors 1 = ak(n) = at mod n. Ainsi, lordre de at dans Zn est forcment dans {2j ; 0 j s}. Autrement dit : e il existe i [0, s] / Posons u = a2
i1 t

a2 t = 1 mod n i a2 t = 1 mod n

i1

. Nous avons donc trouv u tel que e mod n

u2 1 = (u 1)(u + 1) = 0 (u 1) = 0 mod n (u + 1) = 0 mod n


i1

Ainsi pgcd(u 1, n) = pgcd(a2 t 1, n) est un facteur non trivial de n. On obtient lautre facteur directement par division. 2. Lesprance du nombre de tirages de a en essayant tous les i est 2 (lale gorithme est immdiat !) car si n est compos, au moins la moiti des e e e inversibles ne vrient pas la relation donne . e e

306

Solution des exercices

Algorithme 31 Factorisation de n ` partir de (n, e, d) dans RSA. a Entres (n, e, d). e Sorties (Les facteurs p et q tels que n = pq) ou ERREUR. Soient s et t tels que ed 1 = t2s (t impair) Soit a un nombre entier alatoire entre 0 et n 1. e t mod n a Si = 1 ou = n 1 Alors Renvoyer ERREUR ; Fin Si Pour i 1 ` s Faire a tmp = 2 mod n Si tmp = 1 mod n Alors Renvoyer p = pgcd(, n) et q = n p Fin Si tmp Fin Pour Renvoyer ERREUR ;

La preuve est en deux parties : montrer quil existe au moins un a ve riant ces conditions, puis montrer que dans ce cas il y en a au moins la moiti des inversibles. Nous commenons par la deuxi`me partie, plus e c e facile. Posons m = 2i t. Supposons quil existe un a tel que am = 1 et am/2 = 1. m/2 Soit {b1 , . . . , bk } lensemble des bi tels que bi = 1 et bm = 1. Alors, i m/2 = 1. Donc, sil existe un tel a, il en existe au moins forcment (bi a) e (n) 2 , soit un inversible sur deux. Il reste ` prouver quil en existe au moins un. Cela nest pas toujours a le cas pour un compos quelconque, mais nous allons voir que cest le e cas pour un entier n produit de deux nombres premiers distincts. Nous savons que t est impair, donc (1)t = 1 = 1 mod n. Il existe un a (au pire une certaine puissance de 1) vriant u = am/2 = 1 mod n e et am = 1 mod n. Par le thor`me chinois u2 = 1 mod p et u2 = 1 e e mod q. Ainsi, u doit tre congru ` 1 ou -1 modulo p et q. Il ne peut e a pas tre gal ` 1 modulo les deux nombres premiers sinon il le serait e e a aussi modulo n. Donc, sans perte de gnralit, nous supposons quil est e e e congru ` 1 modulo p. Si alors u est congru ` 1 modulo q, nous avons a a trouv notre lment. e ee Sinon, u est congru ` 1 modulo n. Mais dans ce dernier cas, nous poua vons construire un autre lment qui peut convenir car alors m/2 ne ee divise ni p 1, ni q 1 (sinon u serait congru ` 1 modulo p ou q). a

Chapitre 3 : Cryptologie

307

k(n) En eet, nous avons m = 2ed1 = 2si+1 , et comme m/2 ne divise pas si+1 2 p1, nous pouvons poser m = v p1 avec v impair et j entre 0 et s. Puis, 2 2j j nous prenons g une racine primitive modulo p et nous posons = g 2 mod p et = a mod q. Alors m/2 = 1 mod p par construction et m/2 = am/2 = 1 mod q. Il ne reste plus qu` reconstruire par restes a chinois, correspondant aux restes respectifs et modulo p et q. Ce vrie m = 1 mod n ainsi que m/2 = 1 mod n. comme il en existe e un, au moins un lment sur deux vrie bien cette prcdente proprit ee e e e ee et le cassage de RSA se fait bien avec une esprance de nombre de tirages e de 2.

Exercice 3.17, page 174. Grce au thor`me chinois, Lucky Luke peut calculer facilement en temps a e e 2 O(log (nA + nJ + nW )) lentier C = x3 = 1 (cW , cJ , cA ) mod nW .nJ .nA i.e. C = x3 puisque x < min(nW , nJ , nA ). Comme x est entier, il sut ensuite de calculer dans R x = C 1/3 par NewtonRaphson pour obtenir x en clair. Exercice 3.18, page 174. Oscar conna (eA , eB , n) et (cA , cB ). Par lalgorithme dEuclide tendu, il t e calcule facilement (en temps -presque- linaire du nombre de bits de n) les e coecients de Bzout r et s tels que reA + seB = 1. e Oscar peut alors calculer cr .cs mod n par exponentiation modulaire rapide A B et obtenir cr .cs = M r.eA +s.eB mod n = M . A B Moralit : ne jamais utiliser le mme n pour un groupe dutilisateurs. e e Exercice 3.19, page 174. En eet, u.r1 = y dA .r1 mod nA = cdA xdA r1 mod nA . Or xdA = reA dA = r mod nA et donc u.r1 = cdA rr1 mod nA = cdA mod nA = m. Le calcul de u.r1 mod nA peut tre tr`s facilement fait par Eve en temps e e O(log2 nA ) et donne le message m. Moralit : ne jamais signer un message illisible (alatoire ou chir) ; ou alors e e e ne chirer que le rsum du message. e e Exercice 3.20, page 174. 1. p1 k = B!, donc p1 B. 2. p premier, donc le thor`me de Fermat donne ap1 = 1 mod p, le tout e e puissance . 3. (A aB! ) = kn = kpq, donc (A 1) (aB! 1) = (A 1) hp = kpq. 4. log(k) log2 (n).

308 5. B log(B) log2 (n).

Solution des exercices

6. Si A 1 est un multiple de n, alors B! est un multiple de (n) = (p 1)(q 1), donc B est plus grand que tous les facteurs de p 1 et q 1 dapr`s la question 1. Or B est petit. e 7. la puissance : log3 (n) log( log(n)), le pgcd log2 (n). 8. Prendre p et q tels que p 1 et q 1 ont des gros facteurs (des nombres premiers robustes, voir page 103). Exercice 3.21, page 177. a. h(x1 , x2 ) = 15x1 22x2 mod 83. Ainsi, h(12, 34) = 1512 2234 mod 83 = 63. La rsistance aux collisions repose sur la dicult ` trouver tel que 15 = e ea 22 mod 83. b. p 1 = 2q et q est premier. Les diviseurs de p 1 sont donc dans lensemble {1, 2, q, 2q = p 1}. Par dnition, d divise p 1 donc d {1, 2, q, p 1}. e c. q < y2 x2 < q car y2 , x2 Zq . On en dduit que y2 x2 est premier e avec q donc d = q. d. x1 x2 = h(x) = h(y) = y1 y2 implique que x1 y1 = y2 x2 mod p car et sont inversibles. e. Si d = p 1 = 2q alors puisque d divise y2 x2 , il existe k Z tel que q < y2 x2 = 2kq < q On en dduit que k = 0 : y2 = x2 . e On en dduit que x1 y1 = y2 x2 = 1 mod p. Or est un gnrateur de e e e Z , u = 1 mod p u = 0 mod p1 : il existe k Z/x1 y1 = k(p1). p Or, de faon similaire ` la question 3, on montre que c a (p 1) < p1 2 q < x1 y1 < q p1 <p1 2

Autrement dit, k = 0 : x1 = y1 . Finalement, x = y ce qui est une contradiction. f. Si d = 1, on pose u = (y2 x2 )1 mod p 1. Alors k Z/u(y2 x2 ) = 1 + k(p 1). On en dduit e u(y2 x2 ) = 1+k(p1) = = = u(x1 y1 ) g. mod p

et donc = u(x1 y1 ) mod p 1. 1. u = (y2 x2 )1 mod q alors il existe k Z/u(y2 x2 ) = 1 + kq. On en dduit : u(y2 x2 ) = 1+k.q = ( q )k . Or q = p1 et est un e 2 gnrateur de Z . Donc p1 = 1 mod p et 2 = q = 1 mod p. e e p Finalement, u(y2 x2 ) = (1)k mod p = mod p
p1

Chapitre 3 : Cryptologie

309

2. On en dduit : u(y2 x2 ) = = (1) = (q ) mod p avec e {0, 1}. Autrement dit : u(x1 y1 )q = mod p. Si = 0 : = u(x1 y1 ) mod p 1 Si = 1 : = u(x1 y1 ) q = u(x1 y1 ) + q mod p 1 car q = p1 . 2 h. Lalgorithme est simple : Calcul de d = pgcd(y2 x2 , p 1) par lalgorithme dEuclide tendu e Si d = 1, u = (y2 x2 )1 mod p 1 et = u(x1 y1 ) mod p 1 Si d = 2, u = (y2 x2 )1 mod q et = u(x1 y1 ) mod p1. Si = mod p alors = + q. Cet algorithme ne comporte que des oprations lmentaires ou peu coe ee u teuses et le calcul de est rapide. On ach`ve ainsi le raisonnement par e labsurde et on en dduit que h est rsistante aux collisions. e e Exercice 3.22, page 185. Pour les deux premi`res constructions, un attaquant (qui ne dispose pourtant e pas de la clef K) peut ajouter un nouveau bloc ` la n et obtenir un MAC vaa lide. Pour la derni`re construction, une collision sur H fournit un MAC valide. e En eet, si H(x) = H(x ), alors H(x||K) = h(H(x)||K) = h(H(x )||K) = H(x ||K). Exercice 3.23, page 188. g z1 y z2 = g sv g xz2 = g xrv+k g xz2 = g xrv+k g xqvxrv = g k mod p. Exercice 3.24, page 189. Lide est dutiliser des gnrateurs pseudo-alatoires simples pour fabriquer e e e e n, e et x0 qui resteront secrets. La procdure utilise est alors dcrite dans e e e lalgorithme 32, page 310. Exercice 3.25, page 190. Pour en dduire K, il faudrait que Oscar trouve a ` partir de A ou b ` partir e a a de B, pour ensuite calculer soit Ab , soit B a . Cest le probl`me du logarithme e discret, vu en section 1.3.3. Exercice 3.26, page 190. Alice calcule A = 2292 mod 541 = 69 quelle transmet ` Bob. a Bob calcule B = 2426 mod 541 = 171 quil transmet ` Alice. a La clef secr`te est alors (171)292 mod 541 = 368 = (69)426 mod 541. e Exercice 3.27, page 196. a. Random1 garantit ` Alice en retour dtape 2 que la clef ne sera pas rutia e e lise. e

310

Solution des exercices

Algorithme 32 Gnrateur pseudo-alatoire cryptographique RSA. e e e Entres Une taille b > 1024. e Entres Un entier k < O(log(b)) ; e Sorties Une squence de l bits pseudo-alatoires cryptographiquement sre. e e u b Gnrer deux nombres premiers p et q robustes de taille au moins 2 bits e e (voir page 103) ; n = pq ; Gnrer un exposant pseudo-alatoire e tel que pgcd(e, (p 1)(q 1)) = 1 ; e e e Gnrer un entier pseudo-alatoire s (voir par exemple page 69) ; e e e x0 = se mod n ; Pour tout i de 1 ` k Faire a l xi = xe i1 mod n ; zi reoit les k premiers bits de xi ; c Fin Pour Retourner la squence z1 ||z2 || . . . ||zl ; e b. Random2 garantit ` Bob que ltape 3 nest pas rejoue. Alice renvoie a e e Random2 1 car le renvoi crypt de Random2 seul serait cette fois-ci e identique ` lenvoi de Bob. a c. Eve enregistre le message 3. Une fois quelle aura K, elle pourra renvoyer ce message et prtendre facilement tre Alice en rpondant en 5 ` laide e e e a de K. d. Il faut ajouter une datation (un ticket). Cest ` partir de ce constat et de a cette modication quest n Kerberos ! e e. Le ticket Kerberos est valable durant une priode de validit donne (soue e e vent 8 heures) durant laquelle lutilisateur peut le prsenter au TGS an e dobtenir des tickets de service. Le probl`me est que Kerberos ne prvoit e e pas de syst`me de rvocation. Tant que la priode de validit nest pas e e e e expire, il est donc possible dutiliser une clef de session pirate. e e f. Le vol des clefs, ou mme des empreintes permet de se faire passer pour un e client. Il faut donc utiliser un syst`me ` clef publique o` seul le client e a u poss`de une information prive. e e Exercice 3.28, page 197. Pour garantir le secret et lauthentication, il faut quun domaine commun existe entre A et B, ou plus prcisment entre EA , DA , EB et DB . e e A envoie alors C = EB (DA (M )) ` B ; De son cot, B calcule EA (DB (C)) = a e EA (DA (M )) = M . Un espion ne peut pas dcoder C car il ne dispose pas de DB et le secret est e donc prserv. Si un espion envoie un message M ` la place de C, M ne e e a

Chapitre 3 : Cryptologie

311

pourra pas tre dcod en un message valide M : en eet, pour cela il faudrait e e e conna DA . Cela assure lauthenticit. tre e Exercice 3.29, page 197. 1. Pour le professeur : (55) = 40 et 27 3 = 81 = 1 mod 40. Pour le secrtariat : (33) = 20 et 7 3 = 21 = 1 mod 20. e 2. Le professeur envoie m = 123 mod 33. Or 122 = 12 mod 33 ; donc m = 12 mod 33. 3. Le professeur a calcul (xeS mod nS )dP mod nP . e Le secrtariat reoit y et calcule (y eP mod nP )dS mod nS . e c Do` la note (233 mod 55)7 mod 33 = (127 mod 33) = 12. u Exercice 3.30, page 198. 1. Lauthentication est unilatrale : la banque authentie le client. e 2. Un faux site web ! 3. Il faut galement que la banque sauthentie. Cela est fait grce aux e a certicats du site Web et aux PKI associes. e En France, un tel syst`me de numros jetables nest intressant que pour la e e e banque : en eet, la vritable scurit juridique des cartes ` puces repose sur e e e a la possibilit de rpudiation. Cest ` la banque de prouver que tel achat a bien e e a t eectu par le dtenteur du compte. Le syst`me ` numro jetable eectue ee e e e a e un retournement de la preuve juridique puisquil est associ ` un code secret ea reu par courrier. Ainsi cest ` lutilisateur de prouver quun numro jetable c a e associ ` son compte en banque ` t gnr sans ce code secret. ea aee e ee Exercice 3.31, page 205. 1. dd if=/dev/urandom of=demoCA/private/.rand bs=1k count=16 2. mkdir demoCA ; mkdir demoCA/private ; mkdir demoCA/certs ; mkdir demoCA/crl ; mkdir demoCA/newcerts ; echo 01 > demoCA/serial ; touch demoCA/index.txt ; chmod -R go-rwx demoCA (a) openssl genrsa -aes256 -out demoCA/private/cakey.pem -rand demoCA/private/.rand 4096 (b) openssl req -new -x509 -key demoCA/private/cakey.pem -out ./demoCA/cacert.pem -days 60 3. openssl genrsa -aes256 -out luckyluke.key -rand demoCA/private/.rand 1024 openssl req -new -key luckyluke.key

312

Solution des exercices -keyout newreq.pem -out newreq.pem -days 365 openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem

4. openssl pkcs12 -export permet de convertir des certicats du format X509 au format pkcs12. La ligne de commande est donc : openssl pkcs12 -export -in cacert.pem -out cacert.p12 -inkey private/cakey.pem (a) Pour envoyer des courriels chirs il faut rcuprer la clef publique e e e dans le certicat du destinataire. Cest donc toujours possible. Au contraire pour les messages chirs reus il est impossible de les e c dchirer puisque la clef est perdue. e (b) Pour signer des courriels il faut utiliser la clef prive perdue, cest e donc impossible. Au contraire, il est toujours possible de vrier e une signature puisque pour cela il faut rcuprer la clef publique e e dans le certicat de lenvoyeur. Exercice 3.32, page 207. 1. Llment essentiel dun certicat numrique est lassociation dune idenee e tication et dune clef publique. 2. Cela permet de raliser des authentications sans intermdiaire (pourvu e e quune PKI sous-jacente ait t initie) et sans risque dattaque Man-inee e the-middle. En eet, pour pouvoir se faire passer pour une des parties, un attaquant au milieu devrait avoir un faux certicat didentit. e 3. Une politique de certication dpend dune politique de scurit. Elle e e e doit notamment dnir la dure de validit des certicats, qui peut-tre e e e e certi, etc. e Exercice 3.33, page 209. Comme vous avez totalement conance en Alice, vous pouvez tre sr du e u certicat de Bob. Cependant, vous ne savez rien de la politique de certication de Bob, donc vous ne pouvez pas savoir si le message provient bien dOscar ou non. Exercice 3.34, page 209. 1. Au sein dune entreprise pas de probl`me ; entre clients et liales, il faut e de toutes faons faire conance ; pour les entreprises spcialises, pas de c e e raison de faire conance ` une entit commerciale. a e 2. Dans tous les cas : stockage crypt sur disque protg par une phrase. e e e 3. Cest ` direncier les Jean Martin que servent les autres informations a e didentit dun certicat : localit, adresse courriel, etc. e e

Chapitre 3 : Cryptologie

313

4. (a) En fonction de la dure ncessaire pour casser une clef, de la proe e babilit de perte/vol dune clef prive en fonction de la dure et de e e e lusage. (b) Se renseigner sur les algorithmes et les attaques pour dnir des e clefs diciles ` casser. a (c) Oui, cela permet de grer les pertes/vol de clefs. e (d) Une autorit doit dcrire tout ceci dans sa politique de certication. e e Exercice 3.35, page 211. 1. Une pour chaque couple de personnes :
n(n1) . 2

2. Un couple de clefs publique/prive par personne : n. e 3. Lchange de clefs symtriques est dlicat (ncessite par exemple un cae e e e nal condentiel prexistant) et une clef symtrique nautorise pas direce e tement la non-rpudiation (puisque lexpditeur et le destinataire pose e s`dent la mme clef). Cependant, les syst`mes asymtriques restent plus e e e e lents. Exercice 3.36, page 215. 1. Il faudrait utiliser une PKI par exemple. 2. ssh-keygen -b 2048 -t dsa 3. La connexion se fait maintenant non plus avec le mot de passe associ e au login, mais avec la phrase de passe associe ` la clef DSA. e a 4. Un message dclarant que le serveur sur lequel on se connecte est inconnu e et il faudrait donc vrier si la clef publique propose est correcte : e e
The authenticity of host www.imag.fr cant be established. RSA\index{RSA} key fingerprint is 3a:fa:9e:88:7f:13:89:8a:63:ad:18:45:5b:24:68:d6. Are you sure you want to continue connecting (yes/no)?

5. La clef envoye par le serveur ne va pas correspondre ` celle stocke locae a e lement. La connexion doit tre interdite car des clefs direntes peuvent e e signier quune attaque de type Man-in-the-middle par exemple est en train dtre essaye : e e
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)!\index{Man-in-the-middle} It is also possible that the RSA\index{RSA} host key has just been

314

Solution des exercices

changed. The fingerprint for the RSA\index{RSA} key sent by the remote host is 13:bb:ae:c1:b2:df:19:2b:8f:ff:e1:b2:75:45:02:5c. Please contact your system administrator. Add correct key in .ssh/known_hosts to get rid of this message. Offending key in .ssh/known_hosts:1 RSA\index{RSA} host key for www.imag.fr has changed and you have requested strict checking. Host key verification failed.

Chapitre 4 : Dtection et correction derreurs e

315

Solutions des exercices proposs au chapitre 4 e


Exercice 4.1, page 220. 1. La clef C est telle que 2630538516305 + C est multiple de 97 ; donc C = 97 2630538516305 mod 97 = 64. 2. R =
13 15

86, 67%.

3. Le code permet de dtecter une erreur sur un seul chire. Soit n = [K, C] e lentier de 15 chires associ au numro de scurit sociale suivi de la e e e e clef. Une erreur sur un seul chire ci dindice i donne n = n + e 10i avec e = 0 et ci e 9 ci . On a alors n mod 97 = e 10i = 0 car e et 10 sont premiers avec 97 ; lerreur est dtecte. e e Par contre, une erreur sur deux chires nest pas dtecte. Par exemple, e e deux erreurs de chires peuvent transformer le numro de scurit sociale e e e valide 2.63.05.38.516.301.68 en le numro 2.63.05.38.516.398.68 qui est e aussi valide. Exercice 4.2, page 220. 1. Le mot m est crit en 3 blocs de 3 bits ; (m) contient 16 bits dont 7 e bits de parit. e 2. Si (m) contient un nombre impair derreurs, ncessairement il existe au e moins une ligne ou une colonne de 4 bits comportant un nombre impair derreurs. Pour ces 4 bits, le quatri`me bit est le bit de parit et sera e e ncessairement dirent de la somme binaire des 3 autres bits. e e 3. Ce code dtecte donc 1 et 3 erreurs. Si 2 erreurs surviennent, 2 bits de e parit au moins ne seront pas vris et les erreurs seront donc dtectes. e e e e e Ce code dtecte donc jusqu` 3 erreurs de bits. e a 0000 0100 0000 0100 4. Soit le mot de code (m) = 0000 . Le mot 0100 comporte 4 0000 0010 erreurs par rapport ` (m) ; on dtecte que le mot est erron en vriant a e e e les bits parit en gras. de e 1100 0000 a Le mot 0000 comporte 4 erreurs par rapport ` (m) mais ces erreurs 1100 ne peuvent pas tre dtectes car tous les bits de contrle sont corrects. e e e o Ici, les erreurs ont conduit ` un mot de code correct. a 5. Soit le mot reu ne comporte pas derreur et on vrie facilement que c e tous les bits de parit sont vris. Soit le mot comporte une erreur, e e e

316

Solution des exercices

et le bit de parit totale (qui doit correspondre ` la somme de tous les e a autres bits) est ncessairement non vri. On distingue trois cas selon e e e le nombre des autres bits de parit non vris. e e e Seul le bit de parit de tous les bits nest pas vri : il sut de le e e e changer pour corriger lerreur. Un autre bit de parit correspondant ` la ligne i (ou ` la colonne i) e a a nest pas vri : il sut de changer ce bit de parit pour corriger e e e lerreur. Deux autres bits de parit ne sont pas vris ; ncessairement, lun e e e e correspond ` une ligne i et lautre ` une colonne j. Il sut de changer a a le bit de source dindice (i, j) pour corriger lerreur. 1001 0000 6. Le mot a 0000 comporte 2 erreurs par rapport ` (m). Seuls les 0000 deux bits de parit correspondant ` la premi`re et la quatri`me colonne e a e e ne sont pas vris. Mme si lon suppose quil y a eu deux erreurs, on ne e e e peut pas dcider sur laquelle des quatre lignes ont eu lieu les erreurs. On e ne peut donc pas le corriger sans ambigu e : la premi`re ligne pourrait t e par exemple tre 0000, ou alors la deuxi`me, la troisi`me ou encore la e e e quatri`me ligne pourraient chacune tre 1001, ou les trois ensemble, etc. e e Exercice 4.3, page 223. Comme le canal est symtrique, H(Y |X) = H(Y |X = 0) = H(Y |X = 1) = e p log2 (p)(1p) log2 (1p). Soit p1 la probabilit davoir le bit 0, respectivee ment p2 = 1 p1 la probabilit davoir le bit 1, en entre. Alors la probabilit e e e davoir le bit 0 en sortie est y1 = p1 (1 p) + (1 p1 ) p, et davoir le bit 1 est y2 = (1 p1 ) (1 p) + p1 p. Comme H(Y |X) est indpendant de p1 , le e maximum correspondra au maximum de H(Y ). Or H(Y ) est maximale quand les probabilits y1 et y2 sont gales, soit quand y1 = y2 = 1/2 (ce qui arrive e e par exemple quand p1 = 1/2). On peut alors calculer Hmax (Y ) = 1, ce qui donne la capacit du canal CBSC = 1 + p log2 (p) + (1 p) log2 (1 p). e Exercice 4.4, page 224. 1 e e e e Si p > 2 , il sut d`s la rception en prambule au dcodage de transformer tout bit reu en son oppos. Cela revient ` transformer le canal BSC de c e a 1 probabilit p en un canal BSC de probabilit q = 1 p avec q < 2 . e e Exercice 4.5, page 227. Le nombre de codes dirents correspond au choix de 3 sparateurs dans un e e intervalle discret de 1 ` 7, soit 3 parmi 6, le tout multipli par les deux posa e sibilits : commencer par blanc ou commencer par noir. Au total il y a bien e 6 2 C3 = 40 codes dirents possibles par colonne, 4 par chire. e

Chapitre 4 : Dtection et correction derreurs e

317

Exercice 4.6, page 228. On obtient c1 = 11 10 ci = 11 (2 2 + 9 3 + 6 4 + 0 5 + 5 6 + 7 + i=2 0 8 + 1 9 + 2 10 mod 11) = 7, soit le code ISBN 210-050-692-7. Le code EAN-13 est 9-782100-50692c0 avec c0 = (10 (9 + 8 + 7 + 6 + 1 + 6 + 3 (7 + 2 + 4 + 2 + 2 + 0)) mod 10 = 7, soit 9-782100-506927, comme vous pouvez le vrier sur la couverture. Dans le cas particulier de ce livre, les e chires de parit du code ISBN et du code ` barres sont les mmes ! e a e Exercice 4.7, page 230. Toute erreur non dtecte est associe ` un polynme Pe multiple de Pg . Si e e e a o lerreur porte sur un seul bit i, Pe = X i . Si Pg a au moins deux coecients, il ne peut pas diviser X i donc lerreur est dtecte. e e Rciproquement si Pg a un seul monme Pg = X r , il ne dtecte pas lerreur e o e Pe = X r+1 . Exercice 4.8, page 230. Comme gr = 1, si r gi = 0, 1 est racine de Pg donc Pg est multiple de i=0 X + 1. Toute erreur non dtecte est associe ` un multiple de X + 1. Or tout e e e a multiple de X + 1 dans F2 [X] a un nombre pair de coecients non nuls. Toute erreur non dtecte doit donc ncessairement porter sur un nombre pair de e e e bits. Donc le code dtecte toute erreur portant sur un nombre impair de bits. e Exercice 4.9, page 230. Pour un paquet derreurs, Pe = X k + . . . + X i = X k (1 + . . . + X ik ). Si (i k) < d alors le facteur irrductible de degr d ne pourra pas diviser Pe , et e e donc a fortiori Pg ne pourra pas non plus diviser Pe . Exercice 4.10, page 232. 1. En eet pour tous x, y et z dans V n on a : dH (x, y) R+ ; dH (x, y) = 0 x = y ; dH (x, y) = dH (y, x) ; dH (x, y) dH (x, z) + dH (y, z). 2. Le bit i de xy vaut 1 si et seulement si xi = yi , donc dH (x, y) = w(xy). Exercice 4.11, page 233. Si on reoit un mot m avec s erreurs par rapport au mot m mis ; lerreur sera c e dtecte si et seulement si m C. Or, comme C est t-correcteur, on a, pour e e tout x C, d(m, x) 2t + 1. Donc il nexiste pas de mot de C ` une distance a 2t. Ainsi, si d(m , m) = s 2t alors m C et on dtecte lerreur. Donc C e est s-dtecteur avec s 2t. e La rciproque est vraie : En eet, si C est s-dtecteur et que s 2t, alors on e e a (C) > s, donc (C) 2t + 1 et par consquent C est au moins t-correcteur. e

318

Solution des exercices

Exercice 4.12, page 233. 1. Deux mots distincts ont au moins un bit de source de distinct ; comme ce bit est rpt m fois, (C) e ee m. De plus soient 0 = C(0k ) = 0mk et 1 = C(10k1 ) = (10k1 )m ; dH (0 , 1 ) = m, donc (C) m. Finalement, (C) = m. 2. Il faut (C) 2 2 + 1 = 5. Donc (5, 1) convient. (5k, k) aussi. k 3. (5k, k) est de rendement 5k = 0.2. 4. La distance est 5 ; lalgorithme 33 permet de dtecter 4 erreurs au moins e (voire plus si elles concernent dirents chires de source). e Algorithme 33 Dcodage du code de rptition avec dtection maximale. e e e e erreur false Pour i 0 ` k 1 Faire a s[i] lirebit { Initialisation de s} Fin Pour Pour i k ` n 1 Faire a Si lirebit = s[i mod k] Alors erreur true Fin Si Fin Pour 5. La distance est 5 ; lalgorithme 34 permet de corriger 2 erreurs ; il sut de calculer pour chaque symbole de source le nombre de 1 associ. Si on a une e majorit de 1 (au moins 3), on dduit que le symbole source tait 1 ; sinon e e e la source tait 0. Ainsi on corrige au plus 2 erreurs pour les 5 bits mis e e correspondant ` un mme bit de source. a e 6. Lalgorithme 35 corrige une erreur ; il peut dtecter en outre 2 ou 3 erreurs e sans les corriger (mais pas 4 !). La distance est 5 ; si on reoit 4 symboles c identiques (4 0 ou 4 1), on suppose quil ny a eu quune erreur et on fait la correction. Sil y a moins de 4 symboles identiques on renvoie un signal derreur. On corrige toutes les erreurs simples et on dtecte les cas de 2 et e 3 erreurs correspondant ` un mme bit de source. a e

Exercice 4.13, page 234. On peut calculer la distance minimale entre deux mots de code quelconques. k k Lalgorithme 36, page 320, ncessite O( |V | (|V | +1) ) comparaisons. En les nue e 2 k mots qui sont cods avec n = k +r chires. Le co t est donc mrant, il y a |V | e e u O(n |V |2k ), qui est impraticable pour |V | = 2 d`s que k et n sont plus grands e que 15. On suppose donc les mots de C stocks dans un tableau C[1..|V |k ]. e

Chapitre 4 : Dtection et correction derreurs e

319

Algorithme 34 Dcodage du code de rptition avec correction maximale. e e e Pour i 0 ` k 1 Faire a N brU n[i] 0 { Initialisation } Fin Pour Pour i 0 ` n 1 Faire a Si lirebit = 1 Alors Incrmenter NbrUn[i mod k] e Fin Si Fin Pour Pour i 0 ` k 1 Faire a Si NbrUn[i] 3 Alors s[i] 1 Sinon s[i] 0 Fin Si Fin Pour

Algorithme 35 Dcodage du code de rptition avec dtection et correction. e e e e erreur false Pour i 0 ` k 1 Faire a N brU n[i] 0{ Initialisation } Fin Pour Pour i 0 ` n 1 Faire a Si lirebit() = 1 Alors Incrmenter NbrUn[i mod k] e Fin Si Fin Pour Pour i 0 ` k 1 Faire a Si NbrUn[i] 4 Alors s[i] 1 Sinon, si NbrUn[i] 1 Alors s[i] 0 Sinon erreur true Fin Si Fin Pour

320

Solution des exercices

Algorithme 36 Distance dun code (|V | = 2). delta +inni Pour i 1 ` 2k Faire a Pour j i + 1 ` 2k Faire a dij 0 { calcul de la distance dij entre C[i] et C[j] } Pour l 1 ` k + r Faire a Si C[i][l] = C[j][l] Alors dij dij + 1 Fin Si Fin Pour{Mise ` de jour de = min(dij ) } a Si ( dij < ) Alors dij Fin Si Fin Pour Fin Pour TauxDeDetection 1 ; TauxDeCorrection 1 ; 2 Chaque mot C[i] est un tableau [1..k + r] de chires de V . Application : k = log2 (|C|) = 2 ; donc r = 10 2 = 8. Le code C est un code (10, 2). On a = 5 : C est donc 4-dtecteur et 2-correcteur. e Exercice 4.14, page 235. Soit x C : on a alors n+1 xi = 0. Donc tous les mots de C sont de poids i=1 de Hamming pair. Par suite, la distance d entre deux mots de C est paire. Comme d d d + 1 et d impaire, on en dduit d = d + 1. e Exercice 4.15, page 236. Comme V est de cardinal au moins 2, il poss`de deux symboles distincts a = b. e ` A partir de C, on construit le code C de longueur n + 1 : C = {c1 . . . cn a|c1 . . . cn C} {aa . . . ab, ba . . . ab}. C est de cardinal M + 2 et de distance 1 ; de plus C est bien le code raccourci de C avec les mots de C se terminant par a. Exercice 4.16, page 236. 1. Il sut de calculer (C). Soit x = y deux mots de C. Il existe i tel que 0 i 3 et xi = yi . Soit e le nombre de ces indices i o` les chires de u x et y di`rent. e

Chapitre 4 : Dtection et correction derreurs e

321

2.

3. 4.

5.

si e = 1 alors le bit en position i appara dans trois autres chires t de x et y, ` savoir les bits (bi + bk , bi + bl , b0 + b1 + b2 + b3 ). Donc a d(x, y) 4. si e = 2 alors x et y ont exactement 2 bits en position i et j (0 i < j 3) dirents. Alors, comme chaque bit bi appara dans deux e t chires de contrle de la forme bi + bl et bi + bm et idem pour j, x et o y dirents au moins pour deux de ces bits. Ainsi d(x, y) 4. e Si e = 3 alors x et y ont 3 bits dirents. Donc x et y di`rent aussi e e pour leur dernier bit (b0 + b1 + b2 + b3 ). Ainsi d(x, y) 4. Si e = 4 alors d(x, y) 4. Ainsi (C) 4. Les deux mots a = 000000000 et b = 110000110 sont dans C et ont une distance de 4 : nalement = 4. En reprenant les deux mots prcdents : soit c = 100000010. d(a, c) = e e d(b, c) = 2 et aucun mot de code nest ` une distance 1 de c. Donc lerreur a nest pas corrigible. = 4 = C est 3-dtecteur ( 1 = 3). e a est obtenu ` partir b en changeant 4 bits : donc C nest pas 4-dtecteur. a e Le code poinonn est de longueur 8 et de cardinal 16. Comme C est c e de distance 4, il est de distance 3. Il contient en particulier les mots a = 00000000 et b = 10000110 poinonns de a et b qui sont ` distance c e a 3. Sa distance est donc 3. On consid`re que le code est raccourci en prenant les mots de C qui ont e un 0 en premi`re position, i.e. b0 = 0 (le cas b0 = 1 est symtrique). Le e e code raccourci C est alors un code (8, 3) de cardinal 8. Sa distance est au moins celle de C, soit 4. Les mots a = 000000000 et c = 001100110 sont dans C ; donc les mots a = 00000000 et c = 01100110 sont dans C et ` distance 4. Le code raccourci est donc de distance 4. a

Exercice 4.17, page 237. Considrons un code avec r bits de redondance, i.e. (n, 4) avec n = 4 + r. Pour e avoir un code 1-correcteur il est ncessaire que 1 + n 2n4 (thor`me 25), e e e donc 5 2r r. Le nombre minimal r assurant cette condition est r = 3. En outre, pour r = 3 on a galit donc un code 1-correcteur (7, 4) est parfait. e e Exercice 4.18, page 237. 1. Lingalit du thor`me 25 avec t = 1 scrit : 1+n 2nk , soit 1+k+r e e e e e 2r . k 2. Le rendement du code est r+k ; donc maximiser le rendement ` r x a e revient ` maximiser k. Lingalit du thor`me 25 permet alors davoir a e e e e une borne sur le plus grand k possible et donc une borne pour le rendement R.

322 Avec Avec Avec Avec r r r r = 3, on a ncessairement k e 11 = 4 : k 11 et R 15 . 26 = 5 : k 26 et R 31 . 57 = 6 : k 57 et R 63 .

Solution des exercices 4. Do` R u


4 7.

3. La longueur dun code binaire 1-parfait vrie dapr`s le thor`me 25 e e e e r 1. Il nexiste donc pas de code 1(calcul analogue au a.) : n = 2 parfait de longueur 2m . Exercice 4.19, page 239. 1. =
k n

11 15 .

b1 = b3 + b5 + b7 + b9 + b11 + b13 + b15 b = b3 + b6 + b7 + b10 + b11 + b14 + b15 2. Le code est : 2 . b4 = b5 + b6 + b7 + b12 + b13 + b14 + b15 b8 = b9 + b10 + b11 + b12 + b13 + b14 + b15 Pour le mettre sous forme canonique, on fait la permutation : s1 = b3 ; s2 = b5 ; s3 = b6 ; s4 = b7 ; s5 = b9 ; s6 = b10 ; s7 = b11 ; s8 = b12 ; s9 = b13 ; s10 = b14 ; s11 = b15 ; s12 = b1 ; s13 = b2 ; s14 = b4 ; s15 = b8 ; do` u la matrice R correspondant au codage C :
R= 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 .

3. On calcule les 4 derniers bits de parit [s12 ; s13 ; s14 ; s15 ] = [s1 ; . . . e ; s11 ].R. Le mot cod est alors : [s1 ; . . . ; s11 ; s12 ; s13 ; s14 ; s15 ]. e 4. Soit [y1 ; . . . ; y15 ] le mot reu ; on calcule = [y1 ; . . . ; y11 ].R [y12 ; c y13 ; y14 ; y15 ]. On dtecte une erreur si et seulement si = 0. e 5. On calcule comme ` la question prcdente : = [1 ; 2 ; 3 ; 4 ]. Si a e e e = 0, soit j = 4 2i .i . On corrige alors lerreur en changeant le j i`me i=1 bit yj de y. Exercice 4.20, page 242. ` Soit n la longueur de C. A partir de la donne de k positions 1 i1 < . . . < e ik n quelconques, on construit un code(k, k) poinonn de C en supprimant c e dans tous les mots de code les n k autres positions. Soit la restriction de

Chapitre 4 : Dtection et correction derreurs e

323

obtenue en ne gardant que les k positions i1 , . . . , ik ; est la fonction de codage associe ` C . e a En tant que code poinonn dun code MDS, C est MDS (thor`me 29). Sa c e e e distance est donc d = k k + 1 = 1. Pour tout x = y Fk , on a donc (x) = (y). Par suite, il existe un unique x Fk tel que (x) co ncide avec c aux k positions i1 , . . . , ik choisies. Exercice 4.21, page 242. Soit C le code raccourci (n 1, k ) obtenu en prenant dans C tous les mots ayant le symbole s en position i et en supprimant la position i ; on a k k 1. Dapr`s 4.3.2, C est de distance d e d = n k + 1 ; do` dapr`s la borne u e de Singleton k nd n d = k 1. On en dduit k = k 1 et le code e raccourci est un code (n 1, k 1). Comme sa distance d atteint la borne de Singleton n k + 1 = n k + 1, il est MDS. Exercice 4.22, page 245. Lorthogonal ` un sous-espace vectoriel de dimension k est un sous espace a vectoriel de dimension n k. Donc C est un code linaire de longueur n et e de dimension n k. De plus, dapr`s la proprit 17, les (n k) vecteurs lignes e ee de la matrice de contrle H de C sont orthogonaux ` C et indpendants. On o a e , donc que H est gnratrice de C . en dduit quils forment une base de C e e e Exercice 4.23, page 245. 1. Code (12,6,6). On remarque que R est symtrique. e 2. On vrie que si r et s sont deux lignes quelconques de G, alors r.s = 0 ; e donc G12 G12 . Or G12 et G12 ont la mme dimension (12,6) ; ils sont donc gaux. e e 3. Il ne peut pas tre parfait car il est de distance paire (= 6). e (En eet : soit x et y 2 mots de code situs ` une distance 6 ; on construit e a facilement un mot de F12 ` une distance 3 de x et y, donc impossible ` a a 3 corriger de mani`re unique). e 4. G11 = [I6 |R5 ] avec R5 = 0 1 1 1 1 1 1 0 1 2 2 1 1 1 0 1 2 2 1 2 1 0 1 2 1 2 2 1 0 1

Comme G12 est de distance 6, G11 est de distance au moins 5. La premi`re e ligne est de poids 5 (car la ligne 1`re ligne de R est de poids 4). Or toutes e

324

Solution des exercices

les lignes sont des lments du code. On en dduit que le code poss`de ee e e un mot de poids 5. Il est donc de distance 5. Le code est donc (11,6,5). 5. Comme G11 est de distance 5, il est 2-correcteur. Ainsi, les boules de rayon 2 centres sur les mots de G11 sont disjointes et forment un souse 1 2 recouvrement de F11 , de cardinal 36 (1 + 2.C11 + 22 .C11 ) = 177147. 3 11 ) = 311 = 177147 ; le sous-recouvrement est en fait un recouOr card(F3 vrement et le code est donc parfait. Exercice 4.24, page 248. 1. Il sut de rcuprer les pgcd dirents de 1 dans le calcul du test dire e e rductibilit. e e e2 2. Si P est rductible, k d . FDD est de donc complexit d (log(p)Md +Ed ). e 2 3. Si p = 2, les seuls facteurs possibles de P1 sont X et X 1. i i 4. X p = X mod (X p X). Donc cette proprit stend ` tout polynme ee e a o i i i T par T p T = aj (X jp X j ) = 0 mod (X p X). 5. T p T = T (T 2 1)(T 2 + 1). 6. On choisit T au hasard de degr < 2i et on calcule pgcd(T, Pi ) mod Pi , e puis pgcd(T 2 1 mod Pi , Pi ) o` les puissances sont calculs par exu e ponentiation rapide par carrs modulo Pi ` chaque tape. De complexit e a e e 2Ed + i log2 (p)Md . En moyenne, une chance sur deux de sparer les face teurs donne une esprance du nombre de tirages alatoires de T de 2. e e Exercice 4.25, page 250. La donne des r = n k coecients de g dnit une matrice GC unique et e e donc un code linaire unique. Or g tant un diviseur de X n 1, C est stable e e par donc cyclique. Exercice 4.26, page 252. 1. Les racines de (X 8 1) ne conviennent pas car elles sont au plus seulee ment 8i`me . Essayons alors , racine de X 4 + 2, donc telle que 4 = 2. Les seuls ordres possibles sont 16, 8, 4 et 2. Si 2 = 1 alors 4 = 1 ce qui est impossible puisque 4 = 2. 4 nest pas non plus gal ` 1. e a 8 = ( 4 )2 = 22 = 4 = 1 est galement dirent de 1, donc est e e e forcment une racine primitive 16i`me de lunit. e e 2. Regardons de quel polynme les puissances successives de sont des rao cines :
X +2 9 4 X +2
4
pi 1 i pi 1 pi 1

2 X +2 10 X2 + 2
2

3 X +2 11 X4 + 2
4

4 X +2 12 X +3

5 X +3 13 X4 + 3
4

6 X +3 14 X2 + 3
2

7 X +2 15 X4 + 2
4

8 X +1 1 = 16 X +4

Chapitre 4 : Dtection et correction derreurs e

325

Pour tre 2-correcteur, le degr minimal du polynme gnrateur est e e o e e donc gale ` 7. Par exemple g(X) = (X + 2)(X 4 + 3)(X 2 + 3) poss`de 4 , e a e 9 5 , 6 et 7 comme racines, ce qui donne un rendement de 16 = 0, 5625. Exercice 4.27, page 257. 1. Soit x C ; apr`s d 1 eacements on obtient y avec le caract`re ? en e e d 1 positions. Comme C est de distance d, il existe au moins un mot a ` distance d 1 de y (le mot x). Supposons quil existe deux mots de code x1 = x2 ` distance d 1 de a y. Alors x1 et x2 sont ` distance au plus d 1 lun de lautre car il ne a peuvent direr quaux positions des eacements. Or ceci est impossible e car le code tant de distance d, dH (x1 , x2 ) d. e Conclusion : x est lunique mot de C gal ` y aux positions non eaces e a e dans y. Ainsi, x est la seule correction possible : le code permet de corriger jusqu` d 1 eacements. a 2. La probabilit quun bit ne soit pas eac est p = 0.99. Dans ce cas, si on e e travaille dans le corps F28 , la probabilit quun chire ne soit pas eac e e est p8 = 0.998 > 0.92 ; avec 1% de bits eacs, on a donc entre 7% et 8% e doctets eacs. e La longueur des mots dun code de Reed-Solomon sur F256 est n = 255. Il faut pouvoir corriger 0.08 255 = 20.40 21 eacements par mot, donc un code de distance 22 : on choisit donc r = 21. Soit une racine primitive de F256 ; on prend par exemple g(X) = 2 1(X i ). On a i=1 un code (255, 234, 22) sur F256 . 3. Dans le mot reu, on remplace les s d 1 eacements par s inconnues c xi ; soit x le vecteur ligne obtenu qui doit appartenir au code. Donc, si H est la matrice de contrle du code, on a H.xt = 0 ce qui scrit comme o e un syst`me linaire de dimension s ` s inconnues, les xi . La rsolution e e a e de ce syst`me donne la valeur de x. e 4. Soit x un mot reu qui comporte s eacements et soit x le mot de c longueur n s obtenu en supprimant dans x les s eacements. Soit C le code poinonn de C obtenu en supprimant les s positions c e des eacements. Le code C est un code linaire de longueur (n s) et e de distance d d s = 2t + 1. Il permet donc de corriger t erreurs dans le mot x . Soit y C le mot corrig, et y le mot de longueur n e obtenu ` partir de y en remettant les eacements. En utilisant la question a prcdente, on corrige les s eacements dans y avec la matrice de contrle e e o de C. On obtient ainsi lunique mot de code ` distance s + t de x qui a permet de le corriger.

326

Solution des exercices

Exercice 4.28, page 258. Soit w = 0 . . . 0e1 . . . el 0 . . . 0 Fn un paquet derreur de longueur au plus l. q Comme C dtecte tout paquet de longueur au plus l, le mot 0 + w est dtect e e e erron. Donc w C. On a dim(C)=k (voir par exemple la preuve de la borne e de Singleton) et lensemble des w est de dimension l. Si ces deux ensembles sont totalement disjoints, sauf pour le mot 0, on a forcment k + l <dim(Fn ), e q soit l n k. Exercice 4.29, page 258. Soit t = d1 ; le code tant t-correcteur, il code corrige donc tout paquet e 2 qui stale sur au plus t octets conscutifs. Or, une erreur sur 8.(t 1) + 2 bits e e conscutifs peut staler sur t + 1 octets conscutifs (tous les bits faux sur les e e e t 1 octets du milieu et 1 seul bit faux sur les octets extrmes) et donc ne pas e tre corrige. Alors que tout paquet de taille 8.(t 1) + 1 tient forcment sur e e e t octets et sera donc corrig. Do` l = 8. d1 1 + 1. e u 2 Exercice 4.30, page 259. Tout mot de Cp est construit ` partir de p mots de C et peut tre vu comme a e un p-uplet de mots de C qui est entrelac . Ainsi, soit deux mots de Cp qui e di`rent ; les deux p-uplets di`rent au moins en un mot de C donc sont ` e e a distance au moins d. Montrons que cest la distance minimale : il existe deux mots u et v de C de distance d. Soit c un autre mot de C. Soient les deux mots u et v gaux ` lentrelacement des deux p-uplets respectifs (u, c, . . . , c) e a et (v, c, . . . , c) ; u et v di`rent en d positions exactement ; donc Cp est de e distance d. On a clairement l d. Soit v Cp et e un paquet derreur de longueur p l. Le dsentrelac de v + e est un p-uplet de la forme v1 + e1 , . . . , vp + ep avec vi C e e et ei paquet derreur de longueur au plus l. Comme C corrige les paquets de longueur l, il permet de corriger pour retrouver le p-uplet (v1 , . . . , vp ), qui est associ au mot v Cp . Donc Cp corrige au moins les paquets de longueur pl. e Exercice 4.31, page 264. Soit une racine primitive de F256 et g(X) = 4 (X i ) par exemple. Ce i=1 polynme dnit un code C de Reed-Solomon (255,251) sur F256 , de distance o e 5. La matrice gnratrice de C associe ` g a ses k premi`res colonnes indpene e e a e e dantes. Donc C admet une matrice gnratrice normalise G = [I251 , R2514 ]. e e e T celle Soient R1 la matrice forme des 24 derni`res lignes de R et R2 = e e R1 forme par les 28 derni`res lignes. e e Soit G1 = [I24 , R1 ] (resp. G2 = [I28 , R2 ]) la sous-matrice 24 28 (resp. 28 32) forme des 24 (resp. 28) derni`res lignes et 28 (resp. 32) derni`res colonnes. e e e La matrice G1 est gnratrice du code raccourci C1 de C, form ` partir des e e ea

Chapitre 4 : Dtection et correction derreurs e

327

mots de C dont les 227 premiers chires sont nuls. C1 est donc de distance d1 suprieure ou gale ` C, donc d1 5. De plus, dapr`s la borne de Singleton, e e a e d1 255 251 + 1 5. Finalement C1 est de distance 5. Exercice 4.32, page 264.
t u 1. Le syndrome derreur est s2 (z) = z.H2 o` H2 est la matrice de contrle o de C2 . Si s2 (z) = 0, il ny a pas derreur : on retourne les 28 premiers octets de z. t Si s2 (z) est colinaire ` lune des lignes de H2 : soit i {1, 32} et e a t = s (.e ), o` e est le ii`me vecteur e F256 tels que s2 (z) = .ei .H2 u i 2 i ligne canonique. La correction .ei , de poids 1, permet de corriger z ; on retourne donc les 28 premiers octets y du vecteur z .ei . sinon, on dtecte quil y a eu moins deux erreurs. On ne ralise aucune e e correction : on retourne linformation que le mot est eac. On rappelle e quon note ? un symbole eac (qui nappartient donc pas ` F256 ) ; e a on retourne donc par exemple le mot y form de 28 symboles ?. e

2. On utilise le calcul du syndrome derreur avec le code C1 . Le dcodage e est le suivant : si le bloc y ne contient pas ?, ses 24 premiers octets sont retourns ; e si il contient au moins cinq ?, lerreur ne peut pas tre corrig ; un e e message derreur est retourn ; e sinon, on calcule les valeurs des u eacements inconnus (1 u 4) en t rsolvant le syst`me linaire de dimension u u dni par y.H1 = 0 e e e e o` H1 est la matrice de contrle de C1 . On remplace alors dans y les u o eacements par leur valeur et on retourne les 24 premiers octets. Exercice 4.33, page 264. Tout mot en entre du dcodeur C1 qui contient moins de 4 eacements est e e corrig. Lentrelacement tant de retard 4, cela correspond a au plus 15 coe e lonnes conscutives eaces par C2 . Une colonne est constitue de 32 octets, e e e donc correspond ` une trame. Le code permet donc de corriger 15 trames a conscutives. e Exercice 4.34, page 266. Le polynme form par le message 100110100 est P = X 2 + X 4 + X 5 + X 8 . On o e 3 + X 5 + X 6 + X 9 , ce qui correspond au mot binaire 1001101000 a P P1 = X et P P2 = X 2 + X 3 + X 4 + X 6 + X 8 + X 9 , ce qui correspond au mot binaire 1101011100. Par entrelacement, on obtient 11010011100111010000, ce qui correspond bien au message cod ` la vole dans lexemple 4.6.1. ea e

328

Solution des exercices

Exercice 4.35, page 268. On applique lalgorithme de Viterbi. Les marques sont crites dans la gure 71. e Dtaillons le dbut du dcodage : au dpart, toutes les marques sont ` linni. e e e e a Ltape 0 est compose de zros, le premier mot de code reu est 10 qui est e e e c ` distance 1 de chacun des deux arcs possibles partant de 0, donc les deux a marques ` ltape 1 valent 1. Pour ltape 2 et toutes les suivantes il y a 4 arcs a e e possibles. Le deuxi`me mot de code reu est 01, ` distance 0 de larc 01, do` e c a u la marque 1 sur le bit 0 et ` distance 1 de larc 11, do` la marque 2 sur le bit a u 1, etc.
1 2 3 2 3 2 4 2 2 2

1 0
1

1
1

1
1

1 0
2

1
2

1 0
4

1
2

1 0
4 4

1 0
4

1 0
10 10 tape code reu

0
1 10 01

0
2

0
3 10

0
5 01 11

0
7 01 11

8 10

00

Fig. 71: Algorithme de Viterbi sur le message 10010010011101111010.

Le mot de code le plus proche est donc 11010011011101111010, ` distance a deux du mot reu (marque pour le dernier bit de source), et le mot source c associ en suivant la derni`re phase de lalgorithme est 1001010111. e e Exercice 4.36, page 272.
k 1. Pour k bits en entre, on a en sortie du turbo code R1 bits pour C1 et e k e R2 k bits pour C2 , puisque lon ne conserve pas la sortie systmatique R1 .R2 1 de C2 . Do` un rendement RP = 1 + 1 1 = R1 +R2 R1 .R2 . u
R1 R2

k 2. Le codage tant srie, pour k bits en entre, on a R1 bits en sortie de e e e C1 et en entre de C2 , donc R1k 2 bits en sortie de C2 . Le rendement est e .R donc RS = R1 .R2 .

3. Si R1 = R2 = r, les rendements respectifs RP et RS des turbo-codes r parall`les et sries sont : RP = 2r et RS = r2 . e e 1 Comme 0 < r < 1 et (r 1)2 > 0, on a r. < 2r , do` RS < RP . La u composition srie est de rendement infrieure ` la composition parall`le. e e a e 1 1 1 Dans le cas r = 2 , on a RP = 3 et RS = 4 .

Exercice du casino

329

Solution de lexercice du casino


Exercice C.1, page 277. 1. (a) p8 = 1 0.9998 = 0.00797 (b) i. Comme on envoie des octets, on choisit F256 , qui a q = 256 = 28 lments, comme corps de base. Un code de Reed-Solomon ee impose alors de choisir n = q 1 = 255. ii. Pour corriger au moins 0.0079n = 2.03 erreurs, il faut pouvoir corriger 3 erreurs, donc choisir un code de distance 2 3 + 1 = 7. Avec un code de Reed-Solomon, le polynme gnrateur o e e est de degr r = 1 = 6. e iii. Le nombre maximal derreurs dtectes est 6. e e o e e e e iv. Soit g = 6 gi X i le polynme gnrateur. La matrice gni=0 ratrice a 248 lignes et 255 colonnes. Elle scrit sous la forme e g0 g1 . . . g6 0 . . . 0 0 g0 g1 . . . g6 . . . 0 ... (c) i. On choisit donc P = 1 + 2 + 3 + 4 + 8 pour implmenter e F256 = F2 []/P . Soit X = 7 xi i avec xi {0, 1} ; X est i=0 reprsent par loctet (x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 ). e e ee Soit Y = 7 yi i avec yi {0, 1} un autre lment du corps. i=0 X + Y est alors reprsent par loctet (x0 + y0 , . . . x7 + y7 ). e e Pour X.Y , on calcule le produit de polynmes X.Y mod P ; les o coecients de ce polynme permettent dobtenir le codage de o XY sous forme doctet. ii. Comme P est primitif, est un lment gnrateur de F256 ee e e e (une racine primitive 255i`me de lunit). Il sut donc de choisir e comme polynme gnrateur g = i=1..6 (X i ) mod P = o e e X 6 + 5 gi X i , o` chaque gi est un lment de F256 reprsent u ee e e i=0 par un octet (cf question prcdente). e e (d) La capacit du canal binaire symtrique de probabilit derreur q = e e e 0.001 est C = 1 + q log2 q + (1 q) log2 (1 q) = 0.98859. Le code est de rendement 249/255 = 0.97648 et le rendement du code ne e dpasse pas la capacit du canal (2i`me thor`me de Shannon). e e e e 2. Le probl`me est que chaque squence de d reue par le casino puisse e e e c tre identie et associe ` un croupier. On utilise donc une signature e e e a par le croupier de la squence lors de la transmission. e On peut utiliser une signature avec une clef secr`te (construite entre le e

330

Solution des exercices

casino et le croupier). Mais, pour que les joueurs puissent vrier que la e squence mise est bien celle joue, il est prfrable dutiliser un syst`me e e e ee e a ` clef publique. Chaque croupier a une clef prive et une clef publique e (cres par le casino par exemple). Le croupier chire la squence avec sa ee e clef prive : ainsi le serveur du casino et les joueurs peuvent vrier, avec e e la clef publique du croupier, quil a transmis les bonnes informations. Pour viter quun jet de d chir par un vrai croupier ne soit intercept e e e e puis retransmis plus tard par un faux croupier (qui veut se faire passer pour le vrai) chaque mission est estampille avec un numro de lancer e e e (incrment de 1 par le croupier) et une date ventuellement. e e e Enn, pour minimiser le cot de chirement, le croupier peut limiter le u chirement au rsum de la squence (SHA-1 ou Whirlpool par exeme e e ple). En conclusion : chaque croupier C a une clef publique P ubC . Il nume rote chaque squence quil envoie dans un en-tte (date + numro de e e e squence) et obtient un message m clair. Il calcule ensuite le rsum r = e e e SHA1(m) de m puis chire DP rivC (r) = r avec sa clef prive et transe met sur le canal le message (m, r ). Les joueurs et le casino peuvent alors vrier que le message a bien t mis par le croupier : il leur sut de e eee e vrier que SHA1(m) et EP ubC (r ) sont gaux. e 3. (a) H = log2 (1/6) = 2.58 (b) On code les 6 faces par 3 bits : I=000, II=001, III=010, IV=011, V=100, VI=101. Les messages 110 et 111 sont inutiliss. e (c) l = 3. La longueur est toujours suprieure ` lentropie qui est une e a borne infrieure pour tout codage binaire. e (d) Lentropie est une borne infrieure. On peut faire un peu mieux e que le code prcdent et se rapprocher de lentropie en faisant un e e codage de Human. On code alors V et VI sur 2 bits : V=10 et VI=11. Le codage est de longueur=4.3/6 + 2.2/6 = 2.67. (e) Il est optimal ; mais on peut encore amliorer en codant plusieurs e lancers successifs (extension de source). Ainsi si lon code 5 lancers successifs, on a 65 = 7776 possibilits. Un code par blocs de mme e e taille peut tre ralis avec log2 7776 = 12.92 soit 13 bits ; ce code e e e est de longueur moyenne par lancer : l = 13/5 = 2.6. Un code de Human de ces 5 lancers ne peut tre que meilleur (optimalit de e e larbre de Human). Asymptotiquement, on tend vers H = 2.58. Par exemple, avec 22 lancers, on a log2 (621 ) = 56.8 ; donc 22 lancers sont codables par un code de mme longueur = 57 bits, pour une longueur moyenne e de code par lancer de d = 57/22=2.59. e

Bibliographie
[1] Thierry Autret, Laurent Bellefin et Marie-Laure Oble-Laffaire. Scuriser ses changes lectroniques avec une PKI : Solutions techniques e e e et aspects juridiques. Eyrolles, 2002. [2] Gildas Avoine, Pascal Junod et Philippe Oechslin. Scurit informae e tique : Exercices corrigs. Vuibert, 2004. e [3] Michel Barlaud et Claude Labit, diteurs. Compression et codage des e images et des videos. Hermes, 2002. [4] Daniel J. Barrett, Richard E. Silverman et Robert G. Byrnes. SSH, The Secure Shell : The Denitive Guide. OReilly, seconde dition, 2005. e [5] Ed Bott et Carl Siechert. Windows XP : Rseaux et scurit. Microsoft e e e Press, 2006. [6] Johannes A. Buchmann. Introduction ` la cryptographie. Dunod, 2006. a [7] David M. Burton. Elementary number theory. International series in e Pure and Applied Mathematics. McGraw-Hill, 4i`me dition, 1998. e [8] Christophe Cachat et David Carella. PKI Open source : dploiement e et administration. OReilly, 2003. [9] Grard Cohen, Jean-Louis Dornstetter et Philippe Godlewski. e Codes correcteurs derreur. Masson, 1992. [10] James H. Davenport, Yvon Siret et Evelyne Tournier. Calcul formel : syst`mes et algorithmes de manipulations algbriques. Masson, 1993. e e [11] Michel Demazure. Cours dalg`bre. Primalit, Divisibilit, Codes, voe e e lume XIII de Nouvelle bilioth`que Mathmatique. Cassini, Paris, 1997. e e [12] Farid Dowla. Newnes, 2003. Handbook of radio frequency & wireless technologies.

[13] Touradj Ebrahimi, Franck Leprevost et Bertrand Warusfel, diteurs. e Cryptographie et Scurit des syst`mes et rseaux. Hermes, 2006. e e e e [14] Touradj Ebrahimi, Franck Leprevost et Bertrand Warusfel, diteurs. e Enjeux de la scurit multimedia. Hermes, 2006. e e

332

Bibliographie

[15] Alain Glavieux, diteur. Codage de Canal. Hermes, 2005. e [16] Claude Gomez, Bruno Salvy et Paul Zimmermann. Calcul formel : mode demploi. Exemples en Maple. Masson, 1995. [17] Jean-Paul Guillois. Techniques de compression des images. Hermes, 1996. [18] Aurlien Geron. WiFi dploiement et scurit : La QoS et le WPA. e e e e Dunod/01 Informatique, seconde dition, 2006. e [19] Godfrey Harold Hardy et Edward Maitland Wright. An introduction to the theory of numbers. Oxford science publications. Clarendon Press, cinqui`me dition, 1998. e e [20] Gilbert Held. Data and Image Compression : Tools and Techniques. e Wiley, 4i`me dition, 1996. e [21] D. G. Hoffman, D. A. Leonard, C. C. Linder, K. T. Phelps, C. A. Rodger et J. R. Wall. Coding Theory : The Essentials. Marcel Dekker, Inc., 1992. [22] Eric Incerti. Compression dimage : Algorithmes et standards. Vuibert, 2003. [23] Donald E. Knuth. Seminumerical Algorithms, volume 2 de The Art of Computer Programming. Addison-Wesley, Reading, MA, USA, troisi`me e dition, 1997. e [24] Neal Koblitz. A Course in Number Theory and Cryptography. Springer-Verlag, 1987. [25] David Leblanc et Michael Howard. Ecrire du code scuris : Teche e niques et stratgies pour crire des applications scurises. Collection e e e e dveloppeur. Microsoft Press, 2003. e [26] Rudolf Lidl et Harald Niederreiter. Introduction to Finite Fields and their Applications. Cambridge University Press, rvise dition, 1994. e e e [27] Bruno Martin. Codage, Cryptologie et applications. Presses Polytechniques et Universitaires Romandes, 2004. [28] James Massey. Applied digital information theory. ETH Zurich, 1998. www.isi.ee.ethz.ch/education/public. [29] Alfred J. Menezes, Paul C. van Orschot et Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1997. www.cacr.math.uwaterloo.ca/hac. [30] Maurice Mignotte. Mathmatiques pour le calcul formel. PUF, 1989. e [31] Jean-Marie Monier. Alg`bre - MP. Dunod, 2005. e [32] Jean-Marie Monier. Alg`bre - MPSI. Dunod, 2005. e

Thorie des codes e

333

[33] Stphane Natkin. Les protocoles de scurit dinternet. Sciences Sup. e e e Dunod, 2002. [34] M. Nelson. The Data compression book. MT books, 1991. [35] Odile Papini et Jacques Wolfmann. Alg`bre discr`te et codes correce e teurs. Springer-Verlag, 1995. [36] Vera Pless. Introduction to the Theory of Error-Correcting Codes. John e Wiley and Sons, 3i`me dition, 1998. e [37] Pascal Plume. Compression de donnes. Eyrolles, 1993. e [38] Alain Poli et Lloren Huguet. Codes Correcteurs : Thorie et applicac e tions. Logique, Mathmatiques, Informatique. Masson, 1989. e [39] Alain Reboux. Devenez un magicien du numrique : Eets graphiques, e sonores et cryptographie. Dunod, 2003. [40] Steven Roman. Introduction to Coding and Information Theory. Springer, 1996. [41] David Salomon. Data Compression. Springer, 1997. [42] Bruce Schneier. Secrets et mensonges : scurit numrique dans un e e e monde en rseau. Vuibert informatique, 2000. e [43] Bruce Schneier. Cryptographie applique, Algorithmes, protocoles et e i`me dition, 2001. e codes source en C. Vuibert, Paris 2 e [44] Victor Shoup. A computational introduction to number theory and algebra. Cambridge University Press, 2005. [45] Simon Singh. Histoire des codes secrets. LGF - Le livre de poche, 2001. [46] William Stallings. Scurit des Rseaux : applications et standards. e e e Vuibert, 2002. [47] Douglas Stinson. Cryptographie : thorie et pratique. International e Thomson Publishing France, Paris, 1996. [48] Peter Sweeney. Error Control Coding - An introduction. Prentice Hall International, 1991. [49] Jacques Velu. Mthodes mathmatiques pour linformatique : Cours et e e exercices corrigs. Dunod, quatri`me dition, 2005. e e e [50] Joachim von zur Gathen et Jrgen Gerhard. Modern Computer Alu gebra. Cambridge University Press, 1999. [51] Ross N. Williams. Adaptive Data Compression. Kluwer Academic Publishers, 1991.

Liste des gures, tableaux et algorithmes


Liste des gures
1 2 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 2.1 2.2 2.3 2.4 2.5 2.6 Schma fondamental du codage. . . . . . . . . . . . . . . . . . . e Schma des notions introduites dans le premier chapitre, avec e leurs dpendances. . . . . . . . . . . . . . . . . . . . . . . . . . e Chirement bit ` bit (par ot). . . . . . . . . . . . . a Mode de chirement par blocs ECB. . . . . . . . . . Mode de chirement par blocs CBC. . . . . . . . . . Mode de chirement par blocs CFB. . . . . . . . . . Mode de chirement par blocs OFB. . . . . . . . . . Mode de chirement par blocs CTR. . . . . . . . . . Principe dune fonction ` sens unique. . . . . . . . . a Schma de fonctionnement dun LFSR. . . . . . . . . e Chirement Bluetooth. . . . . . . . . . . . . . . . . . Exemple darbre de Human. . . . . . . . . . . . . . Principe dune fonction de hachage. . . . . . . . . . Fonction de compression dune fonction de hachage. Construction de Merkle-Damg ard. . . . . . . . . . . Construction de Davies-Meyer. . . . . . . . . . . . . Construction de Miyaguchi-Preneel. . . . . . . . . . Dtection de cycle de Floyd, sous forme de rho. . . . e Algorithme de Human : dpart. . . . . . . . . . e Algorithme de Human : premi`re tape (q = 2). e e Exemple de construction dun code de Human. Code du fax. . . . . . . . . . . . . . . . . . . . . BWT sur COMPRESSE. . . . . . . . . . . . . . bzip2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 16

. 37 . 39 . 39 . 40 . 40 . 41 . 54 . 72 . 73 . 80 . 83 . 85 . 85 . 86 . 87 . 100 . . . . . . 112 112 113 128 130 131

336 2.7

Liste des gures, tableaux et algorithmes

Image 8 8 en rouge, vert et bleu sur fond blanc (ici en niveaux de gris). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 Balayage en zigzag de JPEG. . . . . . . . . . . . . . . . . . . . 2.9 Compression JPEG. . . . . . . . . . . . . . . . . . . . . . . . . 2.10 Compression MPEG-1. . . . . . . . . . . . . . . . . . . . . . . . 2.11 Compression du son MP3. . . . . . . . . . . . . . . . . . . . . . Relation fondamentale de la cryptographie. . . . . . . . . . . . Principe dun algorithme de contrle dintgrit. . . . . . . . . o e e Principe du chirement ` clef secr`te. . . . . . . . . . . . . . . a e Chirement symtrique par ot (Stream cypher). . . . . . . . . e Chirement symtrique par bloc (Bloc cypher). . . . . . . . . . e Un tour de DES. . . . . . . . . . . . . . . . . . . . . . . . . . . La fonction f de DES. . . . . . . . . . . . . . . . . . . . . . . . La diversication de clef dans DES. . . . . . . . . . . . . . . . . Reprsentation matricielle dun bloc de 16 octets. . . . . . . . . e Etape SubBytes dans AES. . . . . . . . . . . . . . . . . . . . . Opration ShiftRows dans AES. . . . . . . . . . . . . . . . . . e Opration MixColumns dans AES. . . . . . . . . . . . . . . . . e Opration KeyExpansion dans AES. . . . . . . . . . . . . . . . e Vision de la clef tendue W comme une succession de colonnes. . e Principe du chirement ` clef publique. . . . . . . . . . . . . . a Historique des principales fonctions de hachages. . . . . . . . . Le i-`me tour dans MD5 (0 i 63). . . . . . . . . . . . . . . e Le i-`me tour dans SHA-1 (0 i 79). . . . . . . . . . . . . . e Vrication dintgrit par des fonctions de hachage en dispoe e e sant dun canal scuris. . . . . . . . . . . . . . . . . . . . . . . e e Vrication dintgrit par des fonctions de hachage ` partir e e e a dune fonction de chirement. . . . . . . . . . . . . . . . . . . . Principe dutilisation dun MAC. . . . . . . . . . . . . . . . . . Code dauthentication par chirement ` clef secr`te. . . . . . a e Principe de la signature ` clef publique et de sa vrication. . . a e Les tapes dauthentication Kerberos. . . . . . . . . . . . . . . e Principe de la cration des certicats. . . . . . . . . . . . . . . e Emission dun certicat. . . . . . . . . . . . . . . . . . . . . . . Gnration et contenu dun certicat X.509. . . . . . . . . . . . e e Vrication de certicat et extraction de clef publique. . . . . . e Le mod`le PKI pour les certicats X-509. . . . . . . . . . . . . e Enregistrement authenti. . . . . . . . . . . . . . . . . . . . . e Authentication par cryptographie ` clef publique. . . . . . . . a Un exemple du mod`le de conance de PGP. . . . . . . . . . . e

139 141 141 142 142 144 145 149 151 152 153 154 155 160 162 164 164 166 166 169 177 179 180 183 183 184 185 187 193 199 200 202 203 204 206 207 208

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32

Thorie des codes e

337

3.33 Format dun paquet SSH. . . . . . . . . . . . . . . . . . . . . . 212 4.1 4.2 4.3 4.4 4.5 4.6 69 70 71 Code EAN-128 de la thorie des codes. . . . . . . . . . . . . . . e Diagramme dtat du code convolutif de polynmes gnrateurs e o e e P1 = X et P2 = X + 1. . . . . . . . . . . . . . . . . . . . . . . . Treillis du code convolutif gnr par P1 = X et P2 = X + 1. . e ee Transformation dun code convolutif systmatique de longueur e de contrainte 3 en code systmatique rcursif RSC. . . . . . . . e e Codeur turbo par composition parall`le et entrelacement de e deux codeurs RSC. . . . . . . . . . . . . . . . . . . . . . . . . . Dcodage itratif dun turbo-code. . . . . . . . . . . . . . . . . e e 227 267 268 270 272 273

Codage CORR(CRY P T (COM P (M ))) dun message M. . . . 276 Dcodage dun message M = CORR(CRY P T (COM P (M ))). 276 e Algorithme de Viterbi sur le message 10010010011101111010. . 328

Liste des tableaux


1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 2.4 2.5 3.1 3.2 3.3 3.4 3.5 3.6 Rpartition des lettres dans ce manuscrit LaTeX. . . . . . . . . 26 e Un extrait du code ASCII. . . . . . . . . . . . . . . . . . . . . . 38 Oprations sur les inversibles avec gnrateur en caractristique e e e e impaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Extrait de table du 2 . . . . . . . . . . . . . . . . . . . . . . . . 75 Distribution des multiples de p modulo m. . . . . . . . . . . . . 99 Crible quadratique pour 7429. . . . . . . . . . . . . . . . . . . . 102 Codage arithmtique de bebecafdead. . . . . . e Dcodage arithmtique de 0.15633504500. . . . e e Codage arithmtique entier de bebecafdead. . . e Dcodage arithmtique entier de 156335043840. e e Taux de compression de dirents algorithmes. . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 119 120 121 136 150 151 157 157 159 161

Frquence dapparition des lettres en franais. . . . . . . . . . . e c Analyse de frquence du texte chir et comparaison aux rfe e ee rences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complexit des cryptanalyses sur DES. . . . . . . . . . . . . . e Cot et performance des attaques sur DES en 1996. . . . . . . u Vitesses compares de quelques mthodes de chirements par e e blocs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dtail des congurations possibles. . . . . . . . . . . . . . . . . e

338 3.7

Liste des gures, tableaux et algorithmes

ShiftRows : dcalage des lignes en fonction de Nb dans lalgoe rithme Rijndael. . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 Rpartition frquentielle des symboles dans un texte franais. . e e c 3.9 Principales dirences entre W et Rijndael. . . . . . . . . . . . e 3.10 Rsistance aux collisions pour les fonctions de hachage les plus e connues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Attaque Man-in-the-middle dans le protocole dchange de clef e de Die-Hellman. . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Envoi de message intercept par le Man-in-the-middle. . . . . . e 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Ordre de grandeur du taux derreurs. . . . . . . . Codage avec bit de parit. . . . . . . . . . . . . . e Correction derreur par bits de parit. . . . . . . . e Exemples de codes CRC. . . . . . . . . . . . . . . Initialisation dune table dentrelacement de retard mots de longueur 5. . . . . . . . . . . . . . . . . . Table dentrelacement de retard 2 apr`s un tour. . e Quelques polynmes primitifs de F2 . . . . . . . . . o . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . pour des . . . . . . . . . . . . . . . . . .

163 172 181 182 191 191 218 220 221 231 260 261 277

Liste des algorithmes


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Codage fax simpli. . . . . . . . . . . . . . . . . . e Dcodage fax. . . . . . . . . . . . . . . . . . . . . . e PGCD : algorithme dEuclide. . . . . . . . . . . . . PGCD : algorithme dEuclide tendu. . . . . . . . e Puissance Modulaire. . . . . . . . . . . . . . . . . . Test de primalit de Miller-Rabin. . . . . . . . . . e Test dirrductibilit de Ben-Or. . . . . . . . . . . e e Recherche dun polynme irrductible creux. . . . o e Test Racine Primitive. . . . . . . . . . . . . . . . . Test Polynme Gnrateur. . . . . . . . . . . . . . o e e Transforme de Fourier Discr`te Rapide. . . . . . . e e Produit rapide de deux polynmes. . . . . . . . . . o Algorithme de Berlekamp-Massey. . . . . . . . . . Attaque des anniversaires de Yuval. . . . . . . . . . Factorisation de Pollard. . . . . . . . . . . . . . . . Algorithme de Gordon. . . . . . . . . . . . . . . . . Description de lalgorithme de Human. . . . . . . Codage arithmtique. . . . . . . . . . . . . . . . . e Dcodage arithmtique. . . . . . . . . . . . . . . . e e Algorithme de Human dynamique : compression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 24 46 48 52 56 61 62 67 68 91 93 95 98 100 103 112 118 119 123

Thorie des codes e 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 Algorithme de Human dynamique : dcompression. . . . . . e Rciproque de la BWT. . . . . . . . . . . . . . . . . . . . . . e LZW : compression. . . . . . . . . . . . . . . . . . . . . . . . LZW : dcompression. . . . . . . . . . . . . . . . . . . . . . . e Chirement AES. . . . . . . . . . . . . . . . . . . . . . . . . . Diversication des clefs dans AES. . . . . . . . . . . . . . . . Dcodage des Reed-Solomon. . . . . . . . . . . . . . . . . . . e Algorithme de Viterbi (dcodage des codes convolutifs). . . . e Dchirement AES. . . . . . . . . . . . . . . . . . . . . . . . e Factorisation de n ` partir de (n,e,d) dans RSA (cas e petit). a Factorisation de n ` partir de (n, e, d) dans RSA. . . . . . . . a Gnrateur pseudo-alatoire cryptographique RSA. . . . . . . e e e Dcodage du code de rptition avec dtection maximale. . . e e e e Dcodage du code de rptition avec correction maximale. . . e e e Dcodage du code de rptition avec dtection et correction. . e e e e Distance dun code (|V | = 2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

339 124 130 133 134 162 167 256 269 301 305 306 310 318 319 319 320

Index
3DES . . . . . . . . . . . . voir Triple D.E.S 3G . . . . . . . . . . . . . . . . . . . . . . . . 231, 274 7-Zip . . . . . . . . . . . . . . . . . . . . . . . . . . 136 commutatif . . . . . . . . . . . . . 43, 59 euclidien . . . . . . . . . . . . 44, 47, 58 factoriel . . . . . . . . . . . . . . . . . . . . 58 int`gre . . . . . . . . . . . . . . . . . . . . . . 43 e principal . . . . . . . . . . . . 43, 44, 94 quotient . . . . . . . . . . . . . . . . 59, 63 unitaire . . . . . . . . . . . . . . . . . 43, 44 Anniversaires (paradoxe) . . . . . . . . 97 Annuaire de certicats . . . . 201, 204 Antcdent . . . . . . . . . . . . . . . . . . . . . 84 e e APP. . . . . . . . . . . . . . . . . . . . . . . . . . .273 Application linaire . . . . . . . . 45, 246 e Arbre de Human . . . . . 80, 81, 114, 122125, 285, 286 Architecture ` clef publique . . . voir a PKI Arit . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 e ARQ . . . . . . . . . . . . . . . . . . . . . . . . . . 219 ASCII. .38, 122, 123, 128, 133, 134, 171, 212, 302 7 bits . . . . . . . . . . . . . . . . . . . . . . 134 ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . 203 Attaque . . 23, 76, 86, 147149, 152, 157, 175, 195, 198, 212, 313 ` lexposant commun . . . . . . 174 a active . . . . . . . . . . . . . . . . . . . . . 147 au modulo commun. . . . . . . .174 de Yuval . . . . . . . . . . . . voir Yuval des gnrateurs congruentiels lie e naires . . . . . . . . . . . . . . . . . 93, e 94 exhaustive . . . . . . . . . . . . . . . . . . 29 factorielle. . . . . . . . . . . . . . . . . .175

A
A.E.S. . . . . . . . . . . . . . . . . . . . . . . . . . 213 A5/0 . . . . . . . . . . . . . . . . . . . . . . . . . . 147 A5/1 . . . . . . . . . . . . . . . . . . . . . . . . . . 147 A5/3 . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Ablien . . . . . . . . voir Groupe ablien e e AddRoundKey . . . . . . . 161, 165, 301 ADSL . . . . . . . . . . . . . . . . . . . . 218, 274 A.E.S . 152, 158, 159, 161168, 181, 185, 216, 301 AKS (Test de primalit) . . . . . . . . 57 e Alatoire . 30, 31, 39, 55, 56, 69, 74, e 75, 110, 152, 175, 182, 188, 205, 207, 222, 306 Algorithme complexit . . . . . . . . . . . . . . . . . . 27 e cryptographique . . . 37, 144, 149 dindex . . . . . . . . . . . . . . . 102, 106 de crible . . . . . . . . . . . . . . 102, 106 Alphabet20, 23, 75, 77, 78, 82, 108, 110, 111, 115, 122, 150, 218 du code . . . . . . . . 20, 21, 38, 108 source . . 20, 32, 38, 77, 79, 108, 112 Altration . . . . . . . . . . . . . . . . 145, 217 e Analyse spectrale . . . . . . . . . . . . . . . 89 Anneau . . . . . . . . . . . . . . 4244, 58, 59 caractristique dun . . . . . . . . . 43 e

342 man-in-the-middle. . . . . . . . .voir Man-in-the-middle meet-in-the-middle . . . . . . . . voir Meet-in-the-middle par analyse direntielle . . . 149 e par anniversaires . . . . voir Yuval par force brute . . . . . . . . . . . . 148 par rptition. . . . . . . . . . . . . .195 e e par squences connues . . . . . 148 e par squences forces . . . . . . 148 e e par signature . . . . . . . . . . . . . . 174 par texte chir choisi . . . . . 148 e par texte chir connu . . . . . 148 e par texte clair choisi . . . . . . . 148 par texte clair connu. . . . . . .148 passive . . . . . . . . . . . . . . . . . . . . 147 Audio . . . . . . . . . . . . . . . . . . . . . . 88, 141 Authentiant . . . . . . . . . . . . . . . . . . 193 Authentication . 84, 176, 184, 197, 198, 206, 207, 214, 215, 310 unique . . . . . . . . . . . . . . . . . . . . . 192 Authentique . . . . . . . . . . . . . . . . . . . 186 Auto-dual (code) . . . . . . . . . . . . . . 246 Automatic Repeat reQuest. . . . .219 Autorit e denregistrement . . . . . . voir RA de certication . . . . . . . . voir CA de conance . . . . . . . . . . . voir TA

Index Blocs (codage par) . . . . 37, 152, 218 Bluetooth . . . . . . . . . . . . . . 72, 73, 152 Blum-Blum-Shub . . . . . . . . . . . . . . 189 Blum-Micali . . . . . . . . . . . . . . . . . . . . 74 Bo te-S . . . . . . . . . . . . . . . . . . voir SBox Borne de Shannon . . . . . . . . . . . . . . . . 224 de Singleton . . . . . . . . . . . . . . . 241 BSC . . . . . . . . . . . . . . . . . 223, 224, 316 Burrows-Wheeler . . . . . . . . . . . . . . 129 BWT . . . . . . . . . . . . . . . . 129131, 136 bzip2 . . . . . . . . . . . . . . . . . . . . . 131, 136

C
CA . . . . . . . . . 199, 201205, 208210 CAIN . . . . . . . . . . . . . . . . . . . . . . . . . 145 Calcul dindex . . . . . . . . . . . . . . . . . 105 Camellia . . . . . . . . . . . . . . . . . . 159, 216 Canal binaire . . . . . . . . 218, 219, 224 symtrique . . . . . . . . . . . voir BSC e Cantor-Zassenhaus. . . . . . . . . . . . .248 Capacit . . . 222224, 233, 253, 278, e 316, 329 Caractristique . . 43, 63, 65, 66, 156 e Caract`re . . . . . . . . . . . . . . . . . . . . . . . 20 e Cardinal 20, 42, 49, 60, 61, 63, 108, 237, 240, 283, 284 Carte bancaire . . . . . . . . . . . . . . . . . 228 jetable . . . . . . . . . . . . . . . . . . . . . 198 Cassage . . 23, 76, 93, 157, 158, 185, 307 CBC 3941, 152, 185, 186, 213, 281 CBC-MAC . . . . . . . . . . . . . . . . . . . . 185 CBC-MAC-AES . . . . . . . . . . . . . . . 185 CD audio . . . . . . . . . . . . . . . . . 262, 264 CD ROM . . . . . . . . . . . . . . . . . . . . . . 218 Certicat . . . . . . . . . . . . . 199209, 312 mission . . . . . . . . . . . . . . . . . . . 200 e cha de . . . . . . . . . . . . . . . . . . 199 ne extraction . . . . . . . . . . . . . . . . . 203

B
Baby step giant step . . . . . . . . . . . 104 Bayes . . . . . . . . . . . . . . . . . . 31, 32, 223 BCH . . . . . . . . . . . . . . . . . . . . . . . . . . 251 primitif . . . . . . . . . . . . . . . . . . . . 253 Berlekamp-Massey . 72, 94, 96, 250, 256, 257 Bzout 4549, 58, 59, 165, 296, 307 e Bit de parit . 82, 83, 219221, 315, e 316 Blahut . . . . . . . . . . . . . . . . . . . . . . . . . 255

Thorie des codes e PKIX . . . . . . . . . . . . . . . . . . . . . 204 utilisateur . . . . . . . . . . . . . . . . . 205 vrication . . . . . . . . . . . . . . . . 203 e CFB 40, 41, 152, 185, 186, 213, 281 Cha . . . . . . . . . . . . . . . . . . . . . . . . .20 ne. Chargement hors ligne . . . . . . . . . 204 Checksum . . . . . . . . . . . . . . voir Parit e Chirement . . . . . 144, 151, 152, 211 ` clef publique . . . . . . . . 168, 169 a ` clef secr`te149, 168, 181, 185, a e 216 asymtrique . . . . . . . . . . . . . . . 168 e de Csar . . . . . . . . . . . . . . . . . . . . 22 e de Vernam . . . . . . . . . . . . . . . . . . 73 inconditionnellement sr . . . 152 u mode de . . . . . . . . . . . . . . . 38, 167 par blocs . . . . . . . . . . . . voir Blocs par ot . . . . . . . . . . . . . . . voir Flot par transposition . . . . . . . . . . . 23 parfait32, 36, 37, 149, 152, 156, 280, 297 pratiquement sr. . . . . . .37, 153 u symtrique . . . . voir Clef secr`te e e Chrominance . . . . . . . . . . . . . . . . . . 139 CIRC . . . . . . . . . . . . . . . . 225, 261265 Clef agrment . . . . . . . . . . . . . . . . . . 200 e de session . . . . . . . . 192196, 213 de tour . . . . . . . . . . . . . . . 161, 165 espace de . . . . . . . . 144, 148, 279 gestion . . . . . . . . . . . . . . . . . . . . 200 jetable . . . . . . 29, 30, 37, 69, 280 prive . . 168, 170176, 188, 199, e 200, 206, 210215, 312, 313 publique . . . . 144, 146, 168173, 175, 186188, 197203, 205, 207, 209215, 310, 312, 313 secr`te . . 29, 149, 151153, 158, e 189, 200, 210, 216 transport . . . . . . . . . . . . . . . . . . 200 Codage

343 adaptatif . . . . . . . . . . . . . . . . . . 125 arithmtique117, 118, 120, 125, e 133 avec perte . . . . . . . . . . . . . 24, 140 de canal . . . . . . . . . . . . . . . . . . . 222 sans bruit . . . . . . . . . . . . . . . . . 110 Code arit dun . . . . . . . . . . . . . . . . . 108 e auto-dual . . . . . . . . . . . . . . . . . . 246 barre . . . . . . . . . . . . . . . . . 226228 correcteur . . . . . . . . 218, 230, 266 cyclique . 94, 246, 247, 249, 250, 255, 324 dauthentication . . . voir MAC dtecteur . . . . . . . . 218, 225, 230 e de Golay . . . . . . . . . . . . . . . . . . 245 de Hamming . . . . . . . . . . 237240 de Human . . 81, 112, 113, 286 de redondance cyclique . . . . voir CRC du Minitel . . . . . . . . . . . . . . . . . 240 dual . . . . . . . . . . . . . . . . . . . . . . . 245 entrelac . . . . . . . . . . . . . . . . . . 260 e quivalent . . . . . . . . . . . . 234, 235 e tendu . . . . . . . . . . . . . . . . 234, 235 e hauteur dun . . . . . . . . . . . . . . . 81 instantan .78, 79, 82, 114, 115, e 126, 285 irrductible . . . . . . . . . . . . . . . . . 78 e linaire 168, 240243, 246, 266, e 324 non ambigu . . . . . . . . . . . . . . . . . 77 parfait . . . . . . . . . . . 236, 237, 242 poinonn . . . . . . . . 235, 236, 270 c e rcursif . . . . . . . . . . . . . . voir RSC e raccourci . . . . 234236, 263, 326 systmatique . . . . 225, 226, 232, e 242, 243, 270 turbo. . . . . . . . . . . . . . .voir Turbo uniquement dchirable . . . . . 77 e

344 Collision. .84, 97, 98, 101, 105, 167, 178, 182, 287, 309 Complexit . . .2628, 49, 52, 53, 57, e 66, 70, 89, 90, 92, 93, 95, 96, 104, 105, 138, 148, 157, 169, 177, 179, 180, 182, 257, 279 Composition parall`le . . . . . 271, 272 e compress. . . . . . . . . . . . . . . . . .135, 136 Compression avec perte . . . . . 76, 82, 137139 dynamique . . . . . . . . . . . . . . . . 122 Human dynamique . . . . . . . 122 Condentialit . . 145, 147, 148, 156, e 185, 197, 198, 211 Construction de Zech . . . . . . . . . . . 65 Contrle o matrice de . . . . . . . . . . . . 244, 245 Convolutif non-systmatique . . . . voir NSC e rcursif . . . . . . . . . . . . . . voir RSC e systmatique . . . . . . . . . . . . . . 270 e Coppersmith (calcul dindex) . . 105 Corps 4345, 55, 5768, 94, 95, 102, 158, 218, 240, 254, 284 caractristique dun . . . . . . . . . 43 e commutatif . . . . . . . . . . . . . 43, 44 de Galois . . . . . . . . . . . . . . . . . . . 60 de nombre . . . . . . . . . . . . . . . . . 101 de scindage . . . . . . . . . . . . . . . . . 92 ni . . . 44, 55, 57, 59, 60, 6268, 158, 218, 240 premier . . 45, 55, 57, 59, 60, 66, 68 Correction directe. . . . . . . . . . . . . . . . . . . . .219 par retransmission . . . voir ARQ Courbes elliptiques . . . . . . . . . . . . 101 Courriel scuris . . . . . . . . . . . . . . . 206 e e CRC . . . . . . . . . . . . 225, 226, 228231 Crible algbrique . . . . . . . . . . . . . . . . . 101 e

Index dEratosth`ne. . . . . . . . . . . . . . .99 e de corps de nombre . . . . . . . . 101 quadratique . . . . . . . . . . . . . . . 102 CRL . . . . . . . . . . . . 201, 203, 204, 210 Cross Interleaved Reed Solomon voir CIRC Cryptanalyse . . . . 23, 25, 30, 93, 97, 99, 143, 147, 156, 157, 168, 171, 174, 178, 216 par analyse frquentielle25, 172 e Cryptographie fonctionnalits . . . . . . voir CAIN e relation fondamentale . . . . . . 144 Cryptographiquement sr . . . . . voir u Gnrateur e e CTR . . . . . . . . . . . . . . . . . . 41, 152, 281 Cyclic Redundancy Checkvoir CRC

D
DAT. . . . . . . . . . . . . . . . . . . . . . . . . . .218 Data Encryption Standard . . . . voir D.E.S DCT . . . . . . . . . . . . . 89, 139, 140, 142 Dcalage cyclique . . . . 163, 246, 300 e Dcalage (registre) . . . . . . voir LFSR e Dchirement . . . . . . . . . . . . . . . . . . . 93 e Dcodage itratif . . . . . . . . . . . . . . 273 e e Degr . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 e Dmultiplexeur . . . . . . . . . . . . . . . . 273 e Dpt de certicats . . . . . . . 201, 204 e o D.E.S . . 146, 152159, 210, 213, 301 EDE . . . . . . . . . . . . . . . . . . . . . . 158 CBC . . . . . . . . . . . . . . . . . . . . 204 EEE. . . . . . . . . . . . . . . . . . . . . . .158 Dsentrelacement . . . . . . . . . 262, 326 e Dsentrelaceur . . . . . . . . . . . . . . . . . 273 e Dsordre . . . . . . . . . . . . . . . . . . . . . . . . 33 e Dtection derreur . . . . . . . . . . . . . 219 e DFT.8792, 139, 142, 229, 255257 rapide . . . . . . . . . . . . . . . . . . . . . . 90

Thorie des codes e Diagramme dtat . . . . . . . . . . . . . 267 e Dictionnaire . . . . . . . . . . . . . . . . . . . 132 Die-Hellman . . . . . . . . . . . . 192, 200 clef publique . . . . . . . . . . . . . . . 168 protocole dchange de clef.190 e dim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Dimension . . . . . . . . . . . . . . . . . . . . . . 45 Distance . . . . . . . . . . . . . . . . . . . . . . . 230 binaire . . . . . . . . . . voir Hamming dun code . . . . . . . . . . . . . 233, 234 libre . . . . . . . . . . . . . . . . . . 268, 269 Distributeur de clef. . . . . . . . . . . . . . .voir KDC de tickets . . . . . . . . . . . . voir TGS Distribution de probabilit . . . . . . . . . . . . . . . 31 e uniforme . . . . . . 33, 75, 223, 285 div . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Diversication de clef 153, 155, 161, 165167 Diviseur de zro . . . . . . . . . . . . . . . . 43 e DivX . . . . . . . . . . . . . . . . . . . . . . . . . . 142 DLP . . . . . . . voir Logarithme discret Double D.E.S . . . . . . . . . . . . . . . . . . 157 Dual (code) . . . . . . . . . . . . . . . . . . . . 245 DVB-S2 . . . . . . . . . . . . . . . . . . . . . . . 274 DVD . . . . . . . . . . . . . . . . . 142, 147, 217

345 Entit nale . . . . . . . . . . . . . . 199, 204 e Entrelac . . . . . . . . . . . . . . . . . . . . . . 260 e Entrelacement . . . 225, 259, 262, 274 avec retard . . . . . . . . . . . 260, 261 crois . . . . . . . . . . . . . . . . . . . . . . 261 e parall`le . . . . . . . . . . . . . . 271, 272 e profondeur . . . . . . . . . . . . . . . . 259 srie . . . . . . . . . . . . . . . . . . 270, 271 e table . . . . . . . . . . . . . . . . . . . . . . 260 Entrelaceur . . . . . . . . . . . . . . . 272274 Entropie . . 3336, 79, 109, 111, 126, 129, 142, 148, 223, 292 conditionnelle . . . . . . . . . . 34, 223 conjointe . . . . . . . . . . . . . . . . . . . 34 induite . . . . . . . . . . . . . . . . . . . . . 33 Equivalence RSA-Factorisation.173 Equivalent (code) . . . . . . . . . . . . . . 234 Espace vectoriel . . . 44, 63, 240, 241, 243, 284 Etendu (code) . . . . . . . . . . . . 234, 235 Euclide algorithme d 46, 49, 58, 64, 96 algorithme tendu . . . . . . 4750, e 58, 172, 248, 257, 281, 283, 296, 299, 302, 307, 309 Euclidien . . . . . . . . . . . . . voir Anneau Euler indicatrice d . . . . . . . . . . . . 49, 51 thor`me d . . . . . . . . 50, 53, 169 e e enements . . . . . . . . . . . . . . . . . . . . . 30 Ev` alatoires . . . . . . . . . . . . . . . . . . . 69 e disjoints . . . . . . . . . . . . . . . . . . . . 31 indpendants . . . . . . . 31, 70, 290 e Exponentiation modulaire . . 52, 54, 74, 172, 176, 190, 307 Extension de code . . . . . . . . . . . . . . . . . . . . 235 de corps . . . . . . . . . . . . . . . . . . . . 92 de source 35, 76, 111, 114, 122, 290, 291

E
EAN-13 . . . . . . . . . . . . . . 226228, 317 ECB . . . . . . . . . . . . . . 39, 41, 152, 281 Echange de clef . . . . . . . . . . . . . . . . 189 Eacement . . . . . . 257, 262264, 327 EFM . . . . . . . . . . . . . . . . . . . . . . . . . . 263 El Gamal . . . . . . . . . . . . . . . . . 175, 176 e Elvation rcursive au carr 52, 283 e e Emetteur de CRL . . . . . . . . . 201, 204 Empreinte . . . . . . 8284, 98, 179181 Enregistrement . . . . . . . . . . . . . . . . 206 Ensemble des inversibles . . . . . . . . 43

346

Index Gibbs . . . . . . . . . . . . . . . . . . . . . . . 31, 33 GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Golay (codes de) . . . . . . . . . . . . . . . 245 Golden . . . . . . . . . . . . . . . . . . . . . . . . 261 Gordon (algorithme de) . . . . . . . . 103 Groupe . 42, 43, 61, 65, 66, 74, 104, 253, 283 ablien . . . . . . . . . . . . . . . . . . . . . 42 e commutatif. . . . . . . . .42, 44, 283 cyclique . . . . . . . . . . . . . . . . . . . . 42 multiplicatif. . . . . . . . . . . . .65, 69 ordre . . . . . . . . . . . 42, 90, 91, 251 GSM . . . . . . . . . . . . . . . . . . . . . . . . . . 231 gzip . . . 132, 135, 136, 214, 294, 295

F
Factorisation dentier . . . . . . . . . . . . . . . . 98, 102 de Pollard . . . . . . . . . . . . . . . . . 100 de polynme . . . . . . . . . . . . . . . 248 o Fentre de recherche . . . . . . 132, 133 e Fermat (thor`me de) . . . . . . . . . . . 50 e e Fibre optique . . . . . . . . . . . . . . . . . . 218 FinalRound . . . . . . . . . . . . . . . 161, 301 FIPS-196 . . . . . . . . . . . . . . . . . . . . . . 206 Flot (codage par) . . 28, 29, 37, 122, 151, 218 Floyd . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Fonction ` sens unique . 54, 74, 177, 184, a 185, 190 dexpansion. . . . . . . . . . . . . . . .154 de chirement . . . . 86, 144, 150, 183, 187 de compression . . . . . . . . 85, 177, 179181 de dchirement . 144, 150, 183, e 186 de hachage . . . . . . . voir Hachage

H
Hachage . . . . . . . . . . . . . 8386, 93, 98 cryptographique . . . . . . 176, 177, 179188 Hamming code de . . . . . . . . . . . . . . . 237240 distance de . 182, 230, 232, 233, 266, 268, 269 poids de . . . . . . . . . 232, 244, 255 Hauteur dun arbre . . . . . . . . . . . . . . . . . . 81 dun code . . . . . . . . . . . . . . . . . . . 81 HAVAL . . . . . . . . . . . . . . . . . . . . . . . . 182 Homme au milieu . . . . . . . . . . . . . voir Man-in-the-middle Hors ligne. . . . . . . . . . . . . . . . .204, 209 Human . . . . . . . . . . 80, 81, 111117, 122126, 129, 131, 135, 136, 140, 142, 285, 286, 289295

G
Gnrateur e e congruentiel . . . . . . . . . . . . . . . . 71 cryptographique . . . . . . . . . . . . 74 cryptographiquement sr . . . 72, u 74, 177, 189, 190 didal . . . . . . . . . . . . . . . . . . 43, 44 e de groupe. . . .42, 53, 6569, 74, 104, 160, 178, 190, 308 linaire . . . . . . . . . . 71, 72, 93, 94 e multiplicatif . . . . . . . . . . . . . . . . 71 pseudo-alatoire . 55, 6976, 94, e 151 Gestion des clefs . . . . . . . . . . . . . . . 200

I
Idal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 e engendr . . . . . . . . . . . . . . . . . . . .43 e

Thorie des codes e principal . . . . . . . . . . . . . . . . . . . . 43 Identicateur dalgorithme . . . . . 204 IETF . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Im . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Image . . . . . . . . . . . . . . . . . . . . . . 20, 141 dune application linaire . . . 45 e Inaltrable . . . . . . . . . . . . . . . . . . . . . 186 e Incertitude . . . . . . . . . . . . . . . . . . . . 109 Inconditionnellement sr 29, 36, 37, u 152 e Indpendant . . . . . . voir Ev`nements e Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 primaire . . . . . . . . . 130, 131, 293 Indicatrice dEuler . . . . . . . . . . 49, 51 Infalsiable . . . . . . . . . . . . . . . . . . . . 186 Infrarouge . . . . . . . . . . . . . . . . . . . . . 218 Instantan . . . . . . . . . . . . . . . voir Code e Intgrit 84, 176, 197, 199, 214, 231 e e Inverse. . . . . . . . . . . . . . . . . . . . . . . . . .42 Inversible . . . 42, 45, 50, 59, 65, 162, 164, 170, 241, 281, 288, 306 Irrductibilit . . . . . . . . . . . 58, 60, 61 e e ISBN . . . . . . . . . . . . . . . . . 226228, 317 Isomorphes . . . . . . . . . . . . . . 43, 44, 60

347

L
Lempel-Ziv . . . . . . . . . . . . . . . . . . . . 132 LFSR 7173, 94, 151, 229, 256, 257, 270 Liaison tlphonique . . . . . . . . . . . 218 ee Linaire (code) . . . . . . . . . . . . . . . . 240 e Logarithme . . . . . . . . 28, 74, 175, 309 discret . . . . . 5254, 99, 104106, 175177, 188 Loi de probabilit . . . . . . . . . . . . . . . 31 e Longitudinale (parit). . . . .220, 236 e Longueur de contrainte . . . . . 268, 269, 274 de paquet . . . . . . . . . . . . . . . . . 258 moyenne . . . . . . . . . . 80, 108111 LUHN-10 . . . . . . . . . . . . . . . . . 226, 228 Luminance . . . . . . . . . . . . . . . . . . . . 139 LZ77 . . . . . . . 132, 133, 135137, 295 LZ78 . . . . . . . . . . . . . . . . . . . . . 132, 133 LZAP . . . . . . . . . . . . . . . . . . . . . . . . . 135 LZH . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 LZMA . . . . . . . . . . . . . . . . . . . . 133, 136 LZMW . . . . . . . . . . . . . . . . . . . . . . . . 135 LZO . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 LZW . . . . . . . 133, 134, 136, 137, 294

J
Jetable . . . . . . . . . . . . . . . . . . . voir Clef JPEG . . . . . . . . . . . . . . . . . . . . . 139141 JPEG-2000 . . . . . . . . . . . . . . . . . . . . 140

M
MAC . . . . . . . . 84, 176, 183186, 309 enveloppe . . . . . . . . . . . . . . . . . 186 hybride . . . . . . . . . . . . . . . . . . . . 186 Man-in-the-middle . . . 190192, 206, 207, 212, 312, 313 Markov. . . . . . . . . . . . . . . . .32, 33, 136 Mars. . . . . . . . . . . . . . . . . . . . . .158, 159 Massey. . . . . . . . . . . . .voir Berlekamp Matrice . . . . . . . . . . . . . . . . . . . . . . . . . 45 canonique. . . . . . . . . . . . .243, 245 de contrle . . . . . . . 244, 254, 255 o des luminances . . . . . . . . . . . . 139

K
Kasiski . . . . . . . . . . . . . . . . . . . . . . . . 302 KDC . . . . . . . . . . . . . . . . . . . . . 192, 196 Ker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Kerberos . . . . . . . . 156, 192196, 310 Kerckhos . . . . . . . . . . . 146, 147, 151 Key Distribution Center . voir KDC KeyExpansion . . . . . . . 161, 165, 166

348 gnratrice. .240243, 247, 249, e e 255, 277, 329 normalise . . . . . . . . . . . . . . . . . 243 e Mauborgne . . . . . . . . . . . . . . . . . . . . . 29 MD5 . . . . . . . 179, 180, 182, 214, 258 MDC . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 MDS . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Meet-in-the-middle . . . . . . . . . . . . 158 Merkle-Damg . . . . . . . . . . . . . . . . 85 ard Message source 32, 76, 77, 108, 156, 218, 219, 266 Miller-Rabin . . . . . . . . . . . . . . . 56, 173 Minitel . . . . . . . . . . . . . . . . . . . . . . . . 240 MISTY1 . . . . . . . . . . . . . . . . . . . . . . . 216 MixColumns . . . . . . . . . . . . . . 161, 164 MNP5 . . . . . . . . . . . . . . . . . . . . . . . . . 127 mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Mode de chirement . . . . . . . 39, 152 CBC . . . . . . . . . . . . . . . . . . . . . . . 39 CFB . . . . . . . . . . . . . . . . . . . . . . . . 40 CTR . . . . . . . . . . . . . . . . . . . . . . . 41 ECB. . . . . . . . . . . . . . . . . . . . . . . .39 OFB . . . . . . . . . . . . . . . . . . . . . . . 40 Mod`le de source . . . . 115, 122, 126, e 128, 137 Modulo . . . . . . . . . . . . . . . . . . . . . . . . . 44 Mot de code . . . . . . . . . . . . 38, 41, 219 de passe 30, 192, 194, 196, 197, 214, 215, 280, 313 Move-ahead-k. . . . . . . . . . . . . . . . . .129 Move-to-front . . . 128, 129, 131, 293 MP3 . . . . . . . . . . . . . . . . . . . . . . 141, 142 MPEG . . . . . . . . . . . . . . . . . . . . 141, 142 Multiplexeur . . . . . . . . . . . . . . . . . . . 272 Multiplication matrice-vecteur . . 45, 243, 244

Index NESSIE . . . . . . . . . . . . . . 158, 181, 216 Newton-Raphson. . . . . . . . . .174, 307 NMAC . . . . . . . . . . . . . . . . . . . . . . . . 186 Non ambigu . . . . . . . . . . . . . 77, 81, 82 Non rutilisable . . . . . . . . . . . . . . . . 186 e Non reniable . . . . . . . . . . . . . . . . . . . 186 Non-rpudiation . . . . . . . . . . . . . . . 186 e Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . 45 NSC . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Numro de scurit sociale 220, 226 e e e Number eld sieve . . . . . . voir Crible

O
OFB . . . . . . . . . . . . . . 40, 41, 152, 281 One-time-pad . . . . . . . . . . . . . . . . . . . 29 OpenSSH . . . . . . . . . . . . . . . . . . . . . . 215 OpenSSL . . . . . . . . . . . . . . . . . . . . . . 205 Opration de dcalage . . . . 246, 247 e e Oppos . . . . . . . . . . . . . . . . . . . . . . . . . 43 e Ordre . . . . . . . . . . . . . . . . . voir Groupe Ou exclusif . . . . . . . . . . . . . . . . . . 29, 71 Out of band . . . . . . . . voir Hors ligne

P
pack . . . . . . . . . . . . . . . . . . . . . . 122, 136 Pair-`-pair . . . . . . . . . . . . . . . . . . . . . 257 a Paquet derreur . . . . . . 230, 258, 326 PAR-2 . . . . . . . . . . . . . . . . . . . . . . . . . 257 Parall`le . . . . . . . voir Entrelacement e Parfait chirement . . . voir Chirement code . . . . . . . . . . . . . . . . voir Code Pari de mot de passe. . . . . . . . . . .196 Parit e contrle de . 153, 219, 226, 232, o 235, 239 longitudinale . . . . . 219, 220, 236 transversale . . . . . . . . . . . 220, 236

N
Needham-Schroeder . . . . . . . . . . . . 196

Thorie des codes e Partage de clef. . . . . . . . . . . . . . . . .190 Pas de bb pas de gant . . . . . . 104 e e e PDF417 . . . . . . . . . . . . . . . . . . . . . . . 227 Perforation . . . . . . . . . . . . . . . . . . . . 270 Pgcd . . . . . . . . . 4449, 58, 60, 61, 64, 99, 100, 175, 178, 282, 302, 305, 306, 308310 PGP. . . . . . . .146, 198, 208210, 231 mod`le de conance . . . . . . . 208 e Phrase de passe . . . . . . . . . . . 214, 313 PKCS12 . . . . . . . . . . . . . . . . . . . . . . . 312 PKI . . . 196, 198201, 204206, 209, 210, 311313 administration . . . . . . . . . . . . . 204 archive . . . . . . . . . . . . . . . . . . . . 201 certicat. . . . . . . . . . . . . . . . . . .199 Certication Authority . . . . 201 CRL . . . . . . . . . . . . . . . . . . . . . . 201 dtenteur . . . . . . . . . . . . . . . . . . 200 e metteur . . . . . . . . . . . . . . . . . . 201 e Registration Authority. . . . .201 Repository . . . . . . . . . . . . . . . . 201 utilisateur . . . . . . . . . . . . . . . . . 201 PKIX . . . . . . . . . . . 198, 202, 204, 208 PNG . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Poids binaire . . . . . . . .voir Hamming Poinonnage235, 236, 242, 270, 272 c Politique de scurit . 201, 205, 209, e e 210, 312 Pollard p-1 . . . . . . . . . . . . . . . . . . . . . . . . 175 rho . . . . . . . . . . . . . . . 99, 104, 105 Polynme . 58, 9296, 165, 228, 229, o 255 annulateur . . . . . . . . . . . . . . . . . . 94 driv . . . . . . . . . . . . . . . . . . . 60, 61 e e factorisation . . . . . . 58, 248, 253 gnrateur . . . . . . . . . . . . . . . . . 68, e e 72, 228230, 247250, 254, 256, 265267, 277, 329 inversible . . . . . . . . . . . . . . . . . . . 59

349 irrductible5864, 68, 158, 159, e 230, 231, 284, 317 irrductible creux . . . . . . . . . . . 62 e minimal . . . . . . . . . . . . . . . . . . . . 94 primitif . . . . 68, 72, 73, 254, 277 sans carr . . . . . . . . . . . . . . . . . . 60 e unitaire . . . . 58, 62, 94, 247, 250 ppmd . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Prxe . . . . . . . . 7882, 115, 285, 286 e Primage . . . . . . . . . . . . . . . . . . . . 84, 86 e Premier robuste . . . . . . voir Robuste Premiers entre eux . . 50, 51, 58, 59, 61, 164, 170, 174 Primalit . . . . . . . . . . . . . . . . . . . . . . . 55 e Privacy-Enhanced Mail . . . . . . . . 156 Probabilit e a posteriori . . . . . . . . . . voir APP conditionnelle . . . . . . . . . . . . . . . 31 danniversaire. . . . . . . . . . . . . . .97 derreur . . . . . . . . . . 217, 221224 doccurrence . . 36, 80, 115117, 122, 125 de collision . . . . . . . . . 97, 98, 167 discr`te . . . . . . . . . . . . . . . . . . . . . 31 e Produit rapide de polynmes92, 93, o 257 Profondeur dentrelacement . . . . 259 Proprit du prxe . . . voir Prxe ee e e Protocole dchange de clef . . . . 189 e Pseudo-alatoire. . . . . . .74, 190, 310 e Publication hors ligne . . . . . . . . . . 204

Q
Quantication . . . . . . . . . . . . 140, 142 Quantit dinformation. . 33, 34, 36, e 83, 109, 223 Quotient . . . . . . . . . . . . . . . . . . . . 44, 58

350

Index aux pseudo-collisions . . . . . . 182 Reste . . . . . . . . . . . . . . . . . . . . . . . 44, 58 Restes chinois 50, 51, 169, 170, 283, 306, 307 Rvocation . . . . . . . . . . . . . . voir CRL e Rg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . 139 RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Rijndael . . . . . . . . . . . . . . . . voir A.E.S RLE 21, 25, 126, 127, 129, 131, 140 Robuste (premier) . . . . . . . . 103, 310 Ronde . . . . . . . . . . . . . . . . . . . voir Tour RotWord . . . . . . . . . . . . . . . . . . . . . . 166 RoundKeys . . . . . . . . . . . . . . . 162, 301 RSA . . . . . . . 101, 103, 169175, 187, 188, 190, 198, 200, 209214, 305307 signature . . . . . . . . . . . . . . . . . . 187 Thor`me . . . . . . . . . . . . . . . . . 170 e e RSC . . . . . . . . . . . . . . . . . . . . . . 270272 Run Length Encoding . . . . voir RLE rzip. . . . . . . . . . . . . . . . . . . . . . . . . . . .136

R
RA . . . . . . . . . . . . . . . . . . 201, 202, 204 Raccourci . . . . . . voir Code raccourci Racine 59, 64, 80, 81, 112, 209, 284, 307, 317 i`me de lunit . . . . . 88, 90, 251 e n e multiple . . . . . . . . . . . . . . . . . . . . 59 primitive . . . . . . . . . . . . . . . . . . . 42, 6668, 71, 72, 74, 104, 105, 175, 253256, 288, 329 i`me de lunit . . . . . . . 91, 92, e n e 251253, 287, 288, 324 simple . . . . . . . . . . . . . . . . . . . . . . 59 RAID . . . . . . . . . . . . . . . . . . . . . 217, 257 Rang dune application linaire . 45 e RAR . . . . . . . . . . . . . . . . . . . . . . . . . . 136 RC4 . . . . . . . . . . . . . . . . . . . . . . 151, 213 RC6 . . . . . . . . . . . . . . . . . . . . . . 158, 159 Redondance . 33, 219, 224, 226, 228, 229, 237, 242, 243, 253, 254 Reed-Solomon . . 225, 227, 254, 273, 329 Registre ` dcalage linaire . . . . voir a e e LFSR Rejet . . . . . . . . . . . . . . . . . . . . . 213, 289 Rencontre au milieu . . . . . . . . . . . voir Meet-in-the-middle Rendement 219, 220, 222, 224, 232, 234, 238, 239, 270, 277, 278, 290, 318, 321, 329 Reprsentation e cyclique . . . . . . . . . . . . . . . . 65, 299 exponentielle . . . . . . . . . . . 65, 299 Rservoir dentropie . . . . . . . . . . . 205 e Rsistance. . . . . . . . . . . . .84, 177, 182 e ` la primage . . . . . . . . . . . 84, 86 a e ` la seconde primage . . . . . . . 84 a e aux collisions . 84, 98, 177, 178, 182, 308 aux collisions proches . . . . . . 182

S
Sans mmoire 34, 80, 110, 111, 115, e 222 Sans redondance . . . . . . . . . . . . . . . . 33 Satellite . . . . . . . . . . . . . . . . . . . . . . . . 40 Galileo . . . . . . . . . . . . . . . . . . . . 254 TDMA . . . . . . . . . . . . . . . . . . . . 218 Voyager . . . . . . . . . . . . . . . . . . . 218 SBox . . . . . . . 154, 162, 163, 166, 299 Scalaire . . . . . . . . . . . . . . . . . . . . . . . . . 44 Scytale . . . . . . . . . . . . . . . . . . . . . . . . . 23 SDSI . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Seconde primage . . . . . . . . . . . . . . . 84 e Secret . 145147, 149, 174, 175, 190, 191, 197, 310, 311 Scurisation des courriels . . . . . . 206 e

Thorie des codes e Scurit 39, 104, 144, 146, 147, 151, e e 157, 172, 196, 202, 210 inconditionnelle . . . . 29, 30, 152 juridique . . . . . . . . . . . . . . . . . . 311 sociale . . . . . . . . . . . . . . . . 220, 315 Semi-conducteur . . . . . . . . . . . . . . . 218 Sparable . . . . . . . . . . . . . . . . . . . . . . 225 e Srie . . . . . . . . . . . voir Entrelacement e Serpent . . . . . . . . . . . . . . . . . . . 158, 159 Service de datation . . . . . . . . . . . . 195 SHA-1 . . . . . . 180182, 188, 216, 330 SHA-256 . . . 177, 181, 182, 186, 216 SHACAL-2 . . . . . . . . . . . . . . . . . . . . 216 Shannon 30, 110, 169, 222, 224, 329 deuxi`me thor`me . . . . . . . . 224 e e e ShiftRows . . . . . . . . . . . . 161, 163, 164 Signature ` clef publique . . . . . . . . 187, 203 a lectronique . . . . . . . . . . 186, 329 e numrique . . . . . . . . . . . . . . . . . 186 e CBC-MAC . . . . . . . . . . . . . . 186 DSS . . . . . . . . . . . . . . . . . . . . . 188 RSA . . . . . . . . . . . . . . . . . . . . 187 Single Sign On . . . . . . . . . . . . . . . . . 192 Singleton. . . . . . . . . . . . .241, 242, 326 Son. . . . . . . . . . . . . . . . . . . . .voir Audio Source . . . . . . . . . . . . . . . . . . . . . . . . . 19, 20, 108, 109, 111, 112, 114, 116, 122, 236, 238, 265, 266 dinformation . . . . . . . . . . 32, 108 discr`te uniforme . . . . . . . . . . 222 e entropie . . . . . . . . . . . . . . . . . . . . 33 induite . . . . . . . . . . . . . . . . . . . . . 33 markovienne . . . . . . . . . . . . 32, 35 sans mmoire . . 35, 80, 110, 111 e sans redondance . . . . . . . . . . . . 33 stationnaire . . . . . . . . . . . . 32, 111 Sous-corps . . . . . . . . . . . . . . . . . . . . . . 44 Sous-groupe . . . . . . . . . . . . . . . . . 42, 43 SPKI . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Spoong. . . . . . . . . . . voir Usurpation

351 SSH. . . . . . . . . . . . . . . . . . . . . . . 210212 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Stganographie . . . . . . . . . . . . . . . . 143 e SubBytes . . . . . . . . . . . . . . . . . 161163 Substitution mono-alphabtique . 25 e SubWord . . . . . . . . . . . . . . . . . 166, 167 Suite rcurrente linaire . . . . . . . . . 94 e e Support de DFT ` lordre n . . . . . . . . . 91 a Symtrique (canal) . . . . . . . . . . . . 223 e Symbole de contrle . . . . . . . . . . . . . . . . 226 o de parit . . . . . . . . . . . . . .226, 227 e de redondance . . . . . . . . . . . . . 226 Syndrome derreur . . . 244, 250, 254 Systmatique . . . . . . . . . . . . voir Code e

T
TA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Table dentrelacement . . . . . . . . . 260 Taux derreur . . 21, 25, 172, 217, 218, 222 de compression . . . 80, 114, 136, 138, 140, 142 Tlvision Haute Dnition . . . . 274 ee e Test de primalit . . . . . . . . . . . . 55, 56 e TGS . . . . . . . . . . . . . . . . . 193195, 310 Ticket Granting Service . . voir TGS Ticket Kerberos . . . . . . 192194, 310 Tiers de conance . . . 192, 199, 209, 212 TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Tour de chirement. .153, 156, 161, 165, 167 Transformation . . . . 19, 87, 142, 144 ane . . . . . . . . . . . . . . . . . . . . . . 162 avec perte . . . . . . . . . . . . . 87, 142 non-linaire . . . . . . . . . . . . . . . . 162 e rversible . . . . . . . . . . . . . . . . . . 126 e

352 Transforme . . . . . . . . . . . . . . . . . . . . 87 e de Fourier . . . . 88, 139, 142, 255 discr`te. . . . . . . . . . . .voir DFT e inverse . . . . . . . . . . . . . . . . 89, 93 en cosinus . . . . . . . . . 89, 139, 140 en ondelettes . . . . . . . . . . . . . . 140 inverse . . . . . . . . . . . . . . . . . . . . 256 Transport de clef . . . . . . . . . . . . . . 200 Transposition . . . . . . . . . . . . . . 23, 161 Transversale (parit) . . . . . . 220, 236 e Treillis de codage . . . . . . . . . . . . . . 267 Triple D.E.S. . . . .158, 159, 210, 213 Trusted Authority . . . . . . . . . voir TA Tunstall . . . . . . . . . . . . . . . . . . 116, 117 Turbo-code . . . . . . 225, 271, 272, 274 en blocs . . . . . . . . . . . . . . . . . . . 273 hybride . . . . . . . . . . . . . . . 273, 274 parall`le . . . . . . . . . 272, 274, 328 e srie . . . . . . . . . . . . . . . . . . 272, 328 e Twosh . . . . . . . . . . . . . . . . . . . 158, 159

Index

V
Vecteur . . . . . . . . . . . . . . . . . . . . . . . . . 44 de transformation . . . . . . . . . 130 gnrateur . . . . . . . . . . . . . . . . . 240 e e Vernam . 29, 30, 36, 37, 69, 73, 149, 151, 280 Vido . . . . . . . . . . . 138, 141, 142, 146 e Vigen`re (chirement de) . . . . . . 171 e Viterbi . . . . . 266, 268, 269, 272, 328

W
Whirlpool . . . . . . . 182, 186, 216, 330 WinRAR . . . . . . . . . . . . . . . . . . . . . . 136 WinZip . . . . . . . . . . . . . . . . . . . . . . . . 136

X
X509 . . . . . . . . . . . . 202204, 206, 312 XOR . . . . . . . . . . . . . . voir Ou exclusif

U
UHF . . . . . . . . . . . . . . . . . . . . . . . . . . 231 UMTS . . . . . . . . . . . . . . . . . . . . . . . . . 274 Uniquement dchirable . 7779, 81, e 82, 110, 111, 127 Unitaire . . . . . . . . . . . . . . . . . . . . . . . . 94 Universal Electronic Payment System . . . . . . . . . . . . . . . . . . . 156 UPC-A . . . . . . . . . . . . . . . . . . . . . . . . 226 urandom. . . . . . . . . . . . . . . . . . . . . . .205 Usurpation de login . . . . . . . . . . . . 196

Y
YUV . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Yuval . . . . . . . . 98, 177, 179, 180, 182

Z
Zech (logarithme) . . . . . . . . . . 65, 299 Ziv (Lempel-). . . . . . . . . . . . . . . . . .132

050692 - (I) - (1,2) - OSB 100 - AUT - MLN Achev dimprimer en Belgique sur les presses de SNEL Grafics sa Z.I. des Hauts-Sarts - Zone 3 Rue Fond des Fourches 21 B-4041 Vottem (Herstal) Tl +32(0)4 344 65 60 - Fax +32(0)4 286 99 61 janvier 2007 40840 Dpt lgal : fvrier 2007

SCIENCES SUP

Jean-Guillaume Dumas Jean-Louis Roch ric Tannier Sbastien Varrette

THORIE DES CODES


Compression, cryptage, correction
Ce manuel sadresse aux tudiants en Master 1 ou 2 de mathmatiques appliques ou dinformatique ainsi quaux lves ingnieurs. Il sera une rfrence utile pour les enseignantschercheurs et les socits informatiques intervenant dans les tlcommunications ou la scurit. La transmission dinformations numriques est omniprsente dans la technologie aujourdhui. Quil sagisse des textes, de sons, dimages, de vidos, de codes barres ou de numros de carte bleue, que ces informations transitent par Internet, par satellite ou soient graves sur un DVD, leur circulation doit rpondre des contraintes fortes : optimisation de la taille des messages transmis pour viter de surcharger les canaux, palliation des erreurs de canal, secret et authentification des transmissions, rapidit des calculs pour les transformations que ncessite le passage par un canal. Loriginalit de cet ouvrage est de prsenter une thorie unifie des principes mathmatiques et informatiques qui fondent ces dveloppements technologiques. Laccent est mis sur une prsentation en dtail et en profondeur, alliant structures algbriques et dveloppement algorithmique pouss, des protocoles de tlcommunication en vigueur actuellement. Les notions thoriques prsentes sont illustres par 120 exercices corrigs.
LICENCE MASTER DOCTORAT

JEAN-GUILLAUME DUMAS est matre de confrences luniversit Grenoble 1. JEAN-LOUIS ROCH est matre de confrences lENSIMAG. ERIC TANNIER est chercheur de lINRIA Rhne-Alpes luniversit Lyon 1. SBASTIEN VARRETTE est doctorant luniversit du Luxembourg.

MATHMATIQUES

PHYSIQUE

CHIMIE

SCIENCES DE LINGNIEUR

INFORMATIQUE

SCIENCES DE LA VIE

SCIENCES DE LA TERRE

1 2 3 4 5 6 7 8
6494405
ISBN 978-2-10-050692-7

www.dunod.com

Das könnte Ihnen auch gefallen