P. 1
THÉORIE.DES.CODES

THÉORIE.DES.CODES

|Views: 364|Likes:
Published by Youssef Arras

More info:

Published by: Youssef Arras on Aug 26, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

09/20/2013

pdf

text

original

SCIENCES SUP

Cours et exercices avec solutions
Master • Écoles d’ingénieurs

THÉORIE DES CODES
Compression, cryptage, correction
Jean-Guillaume Dumas Jean-Louis Roch Éric Tannier Sébastien Varrette

THÉORIE DES CODES
Compression, cryptage, correction

Jean-Guillaume Dumas
Maître de conférences à l’université Grenoble 1

Jean-Louis Roch
Maître de conférences à l’ENSIMAG

Éric Tannier
Chercheur de l’INRIA Rhône-Alpes à l’université Lyon 1

Sébastien Varrette
Doctorant à l’université 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

Pr´ambule e
Cet ouvrage a ´t´ initi´ au printemps 2000, avec la cr´ation du D´partement ee e e e ENSIMAG-ENSERG T´l´communications ` l’Institut National Polytechnique ee a de Grenoble et la construction d’un cours g´n´ral de premi`re ann´e (niveau e e e e Licence troisi`me ann´e dans le sch´ma LMD) d’introduction 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 r´f´rence pour diff´rents cours des universit´s de Grenoble, ` la ee e e a fois ` l’Institut National Polytechnique de Grenoble (INPG) et ` l’Universit´ 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 ` am´liorer notre support de cours : Gilles e a e Debunne, Yves Denneulin, Dominique Duval, Gr´gory Mouni´ et Karim Sae e mak´. e

Grenoble, Lyon, Luxembourg, le 19 d´cembre 2006. e ´ Jean-Guillaume Dumas, Jean-Louis Roch, Eric Tannier, S´bastien Varrette. e

Sommaire
Introduction 1 Th´orie des codes e 1.1 De Jules C´sar ` la t´l´copie . . . . . . . . . . . . . . . . e a ee 1.1.1 La source : de l’image ` la suite de pixels . . . . . a 1.1.2 La compression du message . . . . . . . . . . . . . 1.1.3 La d´tection d’erreurs . . . . . . . . . . . . . . . . e 1.1.4 Le chiffrement . . . . . . . . . . . . . . . . . . . . 1.1.5 Le d´codage . . . . . . . . . . . . . . . . . . . . . . e L’attaque et le d´chiffrement . . . . . . . . . . . . e La d´compression et les pertes . . . . . . . . . . . e 1.1.6 Les d´fauts 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 l’univers . . . . . . . . . . . . . . . a Complexit´ des algorithmes . . . . . . . . . . . . . e 1.2 Codage par flot et probabilit´s . . . . . . . . . . . . . . . e 1.2.1 Le code de Vernam . . . . . . . . . . . . . . . . . . 1.2.2 Un peu de probabilit´s . . . . . . . . . . . . . . . . e ´ enements et mesure de probabilit´ . . . . . . . . Ev` e Probabilit´s conditionnelles et Formule de Bayes . e 1.2.3 Entropie . . . . . . . . . . . . . . . . . . . . . . . . Source d’information . . . . . . . . . . . . . . . . . Entropie d’une source . . . . . . . . . . . . . . . . Entropies conjointe et conditionnelle . . . . . . . . Extension d’une source . . . . . . . . . . . . . . . 1.2.4 Chiffrement parfait . . . . . . . . . . . . . . . . . . 1.2.5 Mise en pratique du chiffrement parfait ? . . . . . . 1.3 Codage par blocs, alg`bre et arithm´tique . . . . . . . . . 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 alg´briques des mots de codes . . . . . . . e Groupes . . . . . . . . . . . . . . . . . . . . . . . . . . Anneaux . . . . . . . . . . . . . . . . . . . . . . . . . Corps . . . . . . . . . . . . . . . . . . . . . . . . . . . Espaces vectoriels . . . . . . . . . . . . . . . . . . . . Alg`bre lin´aire . . . . . . . . . . . . . . . . . . . . . . e e 1.3.3 Codage bijectif d’un bloc . . . . . . . . . . . . . . . . Inverse modulaire : algorithme d’Euclide . . . . . . . . L’indicatrice d’Euler et le th´or`me de Fermat . . . . e e L’exponentiation modulaire et le logarithme discret . . Fonctions ` Sens Unique . . . . . . . . . . . . . . . . . a 1.3.4 Construction des corps premiers et corps finis . . . . . Tests de primalit´ et g´n´ration de nombres premiers . e e e Arithm´tique des polynˆmes . . . . . . . . . . . . . . e o L’anneau V [X]/P et les corps finis . . . . . . . . . . . Polynˆmes irr´ductibles . . . . . . . . . . . . . . . . . o e Constructions des corps finis . . . . . . . . . . . . . . 1.3.5 Impl´mentations des corps finis . . . . . . . . . . . . . e Op´rations sur les polynˆmes . . . . . . . . . . . . . . e o Utilisation des g´n´rateurs . . . . . . . . . . . . . . . e e Racines primitives . . . . . . . . . . . . . . . . . . . . 1.3.6 G´n´rateurs pseudo-al´atoires . . . . . . . . . . . . . . e e e Les g´n´rateurs congruentiels . . . . . . . . . . . . . . e e Les registres ` d´calage lin´aire . . . . . . . . . . . . . a e e G´n´rateurs cryptographiquement sˆrs . . . . . . . . . e e u Quelques tests statistiques . . . . . . . . . . . . . . . . D´coder, d´chiffrer, attaquer . . . . . . . . . . . . . . . . . . e e 1.4.1 D´coder sans ambigu¨ e . . . . . . . . . . . . . . . . . e ıt´ Propri´t´ du pr´fixe . . . . . . . . . . . . . . . . . . . ee e L’arbre de Huffman . . . . . . . . . . . . . . . . . . . Repr´sentation des codes instantan´s . . . . . . . . . . e e Th´or`me de McMillan . . . . . . . . . . . . . . . . . e e 1.4.2 Les codes non injectifs . . . . . . . . . . . . . . . . . . L’empreinte de v´rification . . . . . . . . . . . . . . . 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

. . . . . . . . . . . . . . . . . . . . Algorithme de Huffman dynamique – pack . e 2. . . . . . . . . . . . . .3 Transformations avec perte . . . . . . . . . . .1 Longueur moyenne d’un code . . .1 Algorithme de Huffman . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . e e 2. . . . . . . . . 89 e DFT et racines ni`mes de l’unit´ dans un corps fini . . . . . . . . . 2.1 Th´orie de l’information . .2. . . . . . . . . . . . . . . . . . . . .4. . . . . e Arithm´tique flottante . . . . . . . . . . . . . . . . . . 103 R´solution du logarithme discret . . 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 Th´orie de l’information et compression e 2. . . . . . . .3 Codes adaptatifs . . . 94 a e e Le paradoxe des anniversaires . . . . . . . . 97 Attaque de Yuval sur les fonctions de hachage . . . . . . . . . . .2. . . . . . . . . . . . . . .2 Comparaison des algorithmes de compression . . . . e Codage arithm´tique adaptatif . . . . . . . . . . . 93 Attaque des g´n´rateurs congruentiels lin´aires . . . . . . . 2.Th´orie des codes e 7 1. . . . .2 L’entropie comme mesure de la quantit´ d’information e 2. . . . . . . . . . . e 2. . . . . . . . . . . . . . . . . 90 e Produit rapide de polynˆmes par la DFT . . . . .3. . . . .2 Move-to-Front . . .2 Codage statistique . . . . . . 2. . . . . . . 92 o Cryptanalyse . . . . . . .4 Codes compresseurs usuels . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . e 2. . . . . . . . . . . . .3 Th´or`me de Shannon . . 98 Factorisation des nombres compos´s . . . . . . . . .2 Codage arithm´tique . . . . . . . . . 87 Transform´e de Fourier et transform´e discr`te . . . . . . . . . . .4. . 2. . . . . . . . . . . . . . . . . e Arithm´tique enti`re . . . . . . . 2. . . . . . . . . 87 e e e Algorithme de la DFT . . . . . 2. . . 2. . . . . . . . . . . . . . . .3. . . . . . . 93 e e e Algorithme de Berlekamp-Massey pour la synth`se de e registres ` d´calage lin´aire . . . . . .3 BWT : Transformation de Burrows-Wheeler . . . . . . . . . . . . . . .1 RLE – Run Length Encoding . . 2. . . . . Le code du fax (suite et fin) . . . . . . . .2. . L’algorithme de Huffman est optimal . . . . . . . .3. . . . . . . . 98 e Nombres premiers robustes . . . .1. .3 Formats GIF et PNG pour la compression d’images . . .3 Heuristiques de r´duction d’entropie . . . . . D´compression dynamique . . . . . . . Compression dynamique . . 104 e . . . . . . . . e e En pratique . . . . . .4. . . . . . . . . . . . . . . . . . 2. . . . . . . . . 2. . .1 Algorithme de Lempel-Ziv et variantes gzip . . . . . . . . . .4. . . . . . . .

. . . . . . . . . . . .1 Fonctions de hachage cryptographiques . . . . . . .3. . . . . e e 3. . . .1 Principe du chiffrement ` clef secr`te . . . . . . u 3. . e e 3. . . . . . . . . . . . . . . .2. . . . . 3. . . e Les chiffrement sym´triques par flot . . . . . Sommaire . . . 2. . . . . . . . . . . . . . . . . . . . . . . .1. . . . .3 Le format JPEG . . . SHA-256 .2 Classes de chiffrements sym´triques . . . .8 2. . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . .2 Attaques sur les syst`mes cryptographiques . . . . . Avantages et applications de DES . . . . . . e Attaques sur RSA . . .4. . . . . . . . e Les chiffrements sym´triques par blocs . . . . . . . . . . . . . . e e 3. . . . . . . e e Diversification de la clef dans DES . .4 Syst`me cryptographique ` clef publique . . . . .5. . . . . . . . .4 Le nouveau standard AES (Rijndael) . . . . . . . . . . . . . . . . . . . . . . . .1 Motivations et principes g´n´raux . . a e 3. . . . .1 Principes g´n´raux et terminologie . . .4. . . . . . . . .5. .1 Principes de Kerckhoffs . . 3. . . . . . . . Efficacit´ et robustesse de RSA. . . . . . . La diversification de la clef dans AES . . .2 Les grands types de menaces . . . . . . . . . . . . . . . . . . .1 D´gradation de l’information . . . . . . . .3. . . SHA-1 . . . . . . . . . . . . 3. . . . . . . . . . . . . . . Non-r´pudiation . . . . . . . . . . . . .2.2 A quoi sert la cryptographie ? . . . . . . . . .3 Syst`me cryptographique ` clef secr`te .1 Terminologie . . . . . . . . . . . . . . e 3. . . . . . . . . .3 Chiffrement El Gamal . . . . . . . . . . . . .4. . . . . . Cryptanalyse de DES . . . . . . . . . 2. . .5. . . . . . . . . . . . . . . . . ` 3. . . e a 3.3 Le syst`me DES (Data Encryption Standard) e Pr´sentation exhaustive du syst`me DES . . . . . . e a e 3. . . . . . . . . . . . . . . . . . . e Chiffrement inconditionnellement sˆr . . . . S´curit´ de AES . . . . . . . . . . . . . . . e 2. . . . . . Int´grit´. . . . . . . . . . . . . . . . . . . . . . .5 La compression avec perte . . . . . . . . . . . . . . Cryptanalyse et attaques sur un chiffrement . . . . 3. . 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. . .5. . .3. . . MD5 . . . .5. . . . . . . . . . . .5 Authentification. . . . . . . .2 Chiffrement RSA . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principe de l’algorithme .3. . . . . . .2 Transformation des informations audiovisuelles 2. . . . . Attaques passives/actives . . . . e e e 3. . . . . . . 3. . . .4 Le format MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .1. . . . . . . . . . . . .5 Deuxi`me th´or`me de Shannon . . . . . . . . . Authentification du serveur . . . . . . . . . . . e D´fauts des PKI . . . e e u 3. . . . . . . . . e Le mod`le PKIX . . . . S´curit´. .6 Un utilitaire de s´curisation de canal.1. . . . . Les signatures ´lectroniques . . . . . . . . . . .3 Correction par parit´ longitudinale et transversale e 4. . . . . . . . . ´ Etablissement d’une connexion s´curis´e .1. e Les faiblesses de Kerberos . un protocole hybride . . . . . . e e Authentification du client . Protocoles usuels de gestion de clefs . . . . . . . . . . . . . . . . . .6. . . . . e 3. . . 3. . . . . . ´ Etat des lieux sur la r´sistance aux collisions . . . . . .Digital Signature Standard . . . . . . . . . e SSH. . . . . . . . . . . e . . . . . . . .6. . .4 Authentification ` clef publique . . . . .1 G´n´ration de bits cryptographiquement sˆre . . . . . . .6 4 D´tection et correction d’erreurs e 4. . .7 Projets de standardisation et recommandations . . . . . . . 3. . . . . . . . . . . . . . . . . . .2 Protocole d’´change de clef secr`te de Diffie-Hellman e e attaque Man-in-the-middle . . o e e Codes d’authentification.6. . . . . . . . . . . e e e e Diff´rences majeures entre SSH-1 et SSH-2 . . . . . .2 Un exemple simple de d´tection par parit´ . . . . . . . . . . . . . .5 Infrastructures ` clefs publiques : PGP et PKI X . . . e e 4. . . . . . . . PGP . . . . . . . . . Standard DSS . . . . . . . . . . e Architectures non hi´rarchiques. e 4. .1 Principe de la d´tection et de la correction d’erreurs . .6. . . .1. . . . . . . . . 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. . . . .2 La signature ´lectronique . . .1 Codage par blocs . . . . . .Th´orie des codes e Whirlpool . . . 4. . . . .6. . . . . .3 Kerberos : un distributeur de clefs secr`tes . e Signature RSA . . . . . . . . . . 3. . . . e e 4. . . . . . . . . . . . . . . . a 3. . . . . . e 3. . . . . . . . SSH . . e Contrˆle d’int´grit´ par les fonctions de hachage . . . e 3. . . . . .1. . . . .6. . . .4 Sch´ma de codage et probabilit´ d’erreur . . . . . . . e Pr´sentation g´n´rale du protocole Kerberos . . . . . . . . . . . . . . . . . . . . e e Les ´l´ments de l’infrastructure . . . . . . . . a Principe g´n´ral . . .5. . . . . . e e e D´tail des messages Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e e Rendement d’un code et efficacit´ . . . . . int´grit´ et compression . . . . . . . . . ou MAC . . . . . . . . . .6. . . . . . . . . . . . . ee Les certificats ´lectroniques . . . . . . . . et . . . . . . . . . . . . . . . . . . . .

. . . . . .4 Code entrelac´ crois´ et code CIRC . . . . .3. . . . . . . . . . . . . . . . . . e e Codes ´quivalents . . .4. . . . . . Codage CRC . . . . .2 Codes de redondance cyclique (CRC) . . . . . . . . . . . . 4. . . . . . . . .3 Entrelacement avec retard et table d’entrelacement . . . . . . . .3 Code parfait . . . . . .3. e 4. . . . . . . .5. . . o e e Codes BCH optimaux : codes de Reed-Solomon . . . e Code poin¸onn´ . LUHN . . . . . . . . . .1 Contrˆle de parit´ sur les entiers : ISBN. . . . . . . . . . . . . . . . . . . . 4. .2 4. . . . . . . . . . 4. . . . . . . . . . . . . . . .3 4. . . . .4. . . . . . . . . . . . . . Cl´ RIB . . . e o e e Op´ration de codage . . e Nombre d’erreurs de bit d´tect´es . . . . .2. . .4. .5. . . . . . . . . . . . . . . . . . . . . e e Codage par multiplication matrice-vecteur . . . . Codes lin´aires et codes cycliques . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . . . .1 Code correcteur et distance de Hamming . . o e Code barre EAN . . . . .1 Codes lin´aires et redondance minimale . . . . . . . D´codage des codes de Reed-Solomon . 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. . . . . . . . . . . . . . . . . EAN. . . . . . . . . . . . . . . . . . . . . . . e Transmission sans erreur sur un canal de capacit´ fix´e . . . . . . . . . Code ISBN . . . . . . . . . ´tendus et raccourcis . . e e e 4. . e e Exemples de codes CRC . . . .4. . . . . . . . . . . . . . . .1 Paquets d’erreur . . . . . . . . . . . 4. . . . . .3. . . c e Code raccourci . . . . . .2 Codage et d´codage des codes lin´aires . . . . e Code ´tendu . . . . . . . . .3. . . . . . . . . . . . . Distance d’un code . . . . . . . . . . . .codes CRC . . . . .5. . . . . . . . . . e 4. . . . . . . . .4 4. . . . 4. . . . . . . . . e D´tection d’erreur et op´ration de d´codage . . . . . . . . . . . . .2 Entrelacement . . . . . . . . . . . . . . . . . . . . e e D´tection d’erreurs par parit´ . D´codage CRC . . . . . . . . . . . . . . . . . . . . .4 Codes de Hamming binaires . . . . . 4. . . . . . . . . . . . . . . e Carte bancaire : LUHN-10 . . . . . . . . . . . . . .10 Sommaire Capacit´ de canal . . . . . . . . . . e Paquets d’erreurs et entrelacement . . . . Caract´risation : polynˆme g´n´rateur . . . . . . . . . . . . . 4. . . . . e 4. . . . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . .5 . . Construction des polynˆmes g´n´rateurs BCH . . . . . . . . . . . . . . . . Distance garantie . . . . . . . . . .3 Codes cycliques . . . . . . . . . . . . . e e 4. .4 Codes BCH . . . . . . . . . .2. . . .2 Codes ´quivalents. . . . . . . . . . . .5. D´codage par multiplication matrice-vecteur .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 . . . . . . . . . . . . . . . . . . . e Le diagramme d’´tat . . . . . . . . . . . . . . . . . . . . . . chapitre chapitre chapitre chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Liste des algorithmes . . e 4. . . . . . . . . . . 11 262 265 265 266 267 267 268 270 270 271 271 272 273 274 275 . . . . . .6. . . . . . . . . . . . . . . . . . . . . 1 2 3 4 . . . . . . . . . . . . . . . . . . . . . cryptage. . . . . . . . . . . e Le treillis de codage . . . .6 Compression. . . . . . . . . . . . . . . . . . . . L’algorithme de Viterbi . . . . . . .6. . . . . . . . . . . . Performances et applications des turbo-codes .1 Le codage par convolution . . tableaux Liste des figures . . . . . . Codes syst´matiques. 4. . . .3 Les turbo-codes . . 338 341 4. . . . . . . . . . . . Codes convolutifs et turbo-codes . . algorithmes 335 . . . . . . . . .Th´orie des codes e Application : code CIRC . . . . . .2 Le d´codage par plus court chemin . rendement et poin¸onnage e c Codes convolutifs r´cursifs . . . . . . . . . . . Index au au au au . . . . . . . 337 . . . . . . . . e Turbo-codes en blocs et turbo-codes hybrides . . . 279 279 289 296 315 329 331 et .6. Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Composition parall`le . e D´codage turbo . . . . . . . . . correction : en guise de conclusion Solutions des exercices Solutions des exercices propos´s e Solutions des exercices propos´s e Solutions des exercices propos´s e Solutions des exercices propos´s e Solution de l’exercice du casino Bibliographie Liste des figures. . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .

.

Parfois l’´metteur et le destinataire e sont confondus.Introduction Ce livre a pour objet la transmission automatique d’informations num´riques. se poursuit par un transit via un canal. qui font e e l’objet de la th´orie dite « du signal ». e e e . e et se focalisera sur la structure de l’information. authentification Intégrité du message : correction d’erreurs Fig. traite de la e e forme de l’information elle-mˆme quand elle doit ˆtre transmise. 1: Sch´ma fondamental du codage. elle. images. ou stock´e. via ´ventuellement un support de stockage. s’il s’agit d’un processeur ou d’une personne qui enregistre des donn´es dans un registre. La th´orie des codes. e e sons. ce dernier terme se voyant donner plusieurs significations qui sont les objectifs qui nous guideront tout au long de l’ouvrage. e La communication d’une information commence par sa formulation par un ´metteur. Nous ne a e consid´rons pas les probl`mes physiques que posent la transmission. vid´os par exemple. et sp´cialement dans les t´l´communications. L’information peut ˆtre de n’importe quel type e pourvu qu’on puisse en donner une repr´sentation num´rique : textes. La transmission de ces types de donn´es est omnie e pr´sente dans la technologie. une m´moire ou un disque puis les lit ult´rieurement. Il e e ee est donc n´cessaire de s’appuyer sur de bonnes bases th´oriques pour que cette e e transmission soit fiable. e e e PERTURBATION SOURCE Codage CANAL Décodage DESTINATION Efficacité de la transmission : compression des données Sécurité de l’information : cryptage. Les canaux de transmission peuvent ´galement ˆtre de tous types (r´seaux e e e de cˆbles ou d’ondes). ind´pendamment du type e de support de transmission. et se termine par la reconse titution du message par le destinataire.

On raconte que sa th´orie est n´e e e e e de r´flexions sur la langue (l’anglais. Le but de ce livre est de les rassembler en e un seul volume afin de pr´senter une seule th´orie. il pouvait reconstituer le sens de la phrase de fa¸on certaine. Shannon mit alors e au point une th´orie qui serait ` mˆme de calculer la « quantit´ d’informae a e e tion » dans n’importe quel type de message. R´duire cette redondance est ce qu’aujourd’hui nous appelons la compression.14 Introduction L’information doit ˆtre re¸ue par son destinataire dans son int´gralit´. en le reformulant sans redondance. avec e ee des variations selon le support. Les histoires de codes secrets. il s’agit de rendre le message le plus e court possible. en s´e c e e e curit´. et qu’un message peut ˆtre intercept´ au cours de sa transmission. et e des batailles entre inventeurs de codes et briseurs de codes (qui cherchent ` a connaˆ la signification d’un message sans en avoir la clef) pars`ment l’hisıtre e . dont l’objet est la forme e e donn´e ` l’information au cours de sa transmission. e ou « th´orie de l’information ». et le plus rapidement possible. par fid´lit´ historique. et ` les reconstituer ` a a partir de la partie visible. Claude Shannon posait la premi`re pierre de ce qu’il a appel´ une e e « th´orie math´matique de l’information ». a e ou mieux. et le message est susceptible d’ˆtre lu. Si il en enlevait trop. c’est-`-dire une th´orie e a a e g´n´rale des codes. Pare e tant du principe que les routes (comme les canaux num´riques) ne sont pas e sˆres. Dans a e e un souci d’efficacit´. ce qui revient ` d´terminer son a e taux de redondance. ils n’apportaient rien au sens du message. dans u plusieurs sens du terme : il y a toujours des erreurs au cours des transmissions. tout en minimisant la taille des donn´es. En enlevant quelques mots. e e En 1948. il u e e faut transformer le texte. Ces contraintes e sont les points de d´parts de plusieurs champs d’´tude en math´matiques et e e e en informatique. voire alt´r´. La confidentialit´ dont on veut entourer la transmission d’une information e est une pr´occupation beaucoup plus ancienne que celle de l’efficacit´. souvent d´velopp´s ind´pendamment les uns des autres bien e e e qu’ils traitent des mˆmes objets. en l’occurrence) : Shannon s’amusait ` e a masquer une proportion variable des textes qu’il lisait. Il s’agit alors pour l’´metteur d’envoyer ses messages sous e e une forme qui permette au destinataire de les reconstituer en tenant compte d’´ventuelles alt´rations au cours du transfert ou de la confidentialit´ de cere e e taines informations. C’est que ces mots cach´s ´taient redonc e e dants. le d´corr´ler de sa signification. et e e plus encore de la rapidit´ de transmission. et bien que ce titre e e e puisse convenir ` l’ouvrage entier. qui rel`ve de l’optimisation de l’espace de stockage. on ne peut jamais le supposer « sˆr ». Or quel que soit le canal consid´r´. en ne gardant que ce qui est indispensable ` sa compr´hension. qui d´passe largement cette th´orie. par des tiers plus ou moins e ee bien intentionn´s. en ne laissant qu’` e e a ses destinataires la clef de son d´chiffrement. il lui ´tait impossible de reconstituer le message avec certitude.

Toutes ces m´thodes e e e sont param´trables. e Tous les canaux permettant de transmettre une information num´rique peue vent ˆtre soumis ` des perturbations qui sont susceptibles d’alt´rer une partie e a e des messages. c’est-`-dire adaptables au type de support consid´r´. mais elles permettent aussi de signer des documents ou d’identifier un ´metteur. la s´curit´. en 1949. une preuve th´orique de confidentiae e lit´. Non seulement les m´thodes actuelles garantissent le secret sur la e signification d’un message. Mais sa d´monstration n’est pas c e e e constructive et ce th´or`me motive toujours la construction de m´thodes ine e e cluant de fa¸on ordonn´e et optimis´e de la redondance afin que le destinataire c e e puisse soit s’apercevoir que le message a ´t´ alt´r´ (codes d´tecteurs). et sur l’utilit´ de disposer dans un seul volume de toutes les fa¸ons de e c manipuler l’information avant de l’envoyer ou de la recevoir. L’int´rˆt de les pr´senter ensemble repose sur leur objet commun. dont nous ferons un usage intensif tout au e e long de l’ouvrage. ainsi que de notions g´n´rales sur e a e e l’efficacit´ des m´thodes de calcul. ce qui rend ce livre accessible apr`s une e e e e licence scientifique. la plue a e part des erreurs n’alt´reront pas la perception du lecteur. la e e cryptologie. soit coree ee e riger lui-mˆme les erreurs ´ventuelles (codes correcteurs). Shannon. ils sont donc pr´sent´ en d´tails ici. lui encore. il est possible d’ajouter suffisamment de redondance pour e que le message soit re¸u dans son int´gralit´. e e Les mod`les math´matiques et les premiers d´veloppements algorithmiques e e e qui structurent la notion de code sont introduits dans le premier chapitre de cet ouvrage. Le socle sur lequel s’appuie la th´orie des codes est issu de l’alg`bre lin´aire. la plus petite alt´ration peut en effet entraˆ e ıner des fausses interpr´tations ` l’arriv´e. e e e de l’arithm´tique. La pr´sentation de ces mod`les est assortie d’introductions des e e math´matiques utiles ` leur manipulation. Si les informations sont envoy´es e sans redondance. Dans le cas d’un texte en langue naturelle. Ce sont ces trois pr´occupations — l’efficacit´. et ` e a ee a son taux d’erreur. le plus e e souvent au moment mˆme de leur introduction. Shannon contribua ´galement ` ce domaine en ee e e a apportant pour la premi`re fois. qui structure l’information dans tous les supports technologiques actuels. ee e le code. l’int´grit´ — qui e e e e e e retiennent l’attention des concepteurs de m´thodes de transmission de l’ine formation.Th´orie des codes e 15 toire des soci´t´s et des ´tats. Il sera utile pour lire ce chapitre de disposer d’un bagage th´orique de base en alg`bre lin´aire. des probabilit´s. car la redondance lui e permettra de reconstituer le message original. et donc d’en modifier le sens. Certains ´l´ments d´passent les connaissances classiques ee e des ´tudiants non math´maticiens. a montr´ e un r´sultat sensationnel en 1948 : mˆme sur des canaux dont le taux d’erreur e e est tr`s important. Une discipline scientifique est aujourd’hui consacr´e aux codes secrets. Pour clarifier encore l’utilit´ e e . de l’algorithmique et de la combinatoire. Le e e e e e lecteur se rendra rapidement compte de leur r´elle efficacit´ pratique.

et imm´diatement impl´mentables e c e e e e en n’importe quel langage de programmation. les impl´mentations existantes compar´es. Nous nous sommes efforc´s de pr´senter ` ee e e a la fois les th´ories classiques du codage et les d´veloppements les plus r´cents e e e sur le sujet. la lecture lin´aire n’´tant pas e e obligatoire. avec leurs d´pene e dances.16 Introduction et les d´pendances entre les notions introduites. Nos e e e e sciences sont ` la fois les h´riti`res des math´matiques grecques. les propri´t´s math´matiques ee e des fonctions servent ` rendre efficaces leurs calculs. e e e e le credo de cet ouvrage est algorithmique. la figure 2 les repr´sente. 2: Sch´ma des notions introduites dans le premier chapitre. et des math´matiques e e e e e . Chacun e e de ces trois chapitres est illustr´ par des exemples d’utilisation pratique dans e le contexte des t´l´communications. Mˆme si ce premier chapitre est con¸u pour introduire la th´orie e c e des codes. Fonction d’Euler Théorèmes chinois et de Fermat Entropie Algorithme d’Euclide Fonction Puissance Modulo Test de primalité Générateurs pseudo−aléatoires Test d’irreductibilité Arithmétique des polynômes Complexité des algorithmes Transformée de Fourier discrète Construction des corps finis Compression Détection/Correction Cryptologie Fig. Cette figure permettra aussi au lecteur press´ ou int´ress´ par une partie de e e e l’ouvrage seulement de retrouver son chemin. Ceux-ci reprennent s´par´ment la compression. il peut servir de boˆ ` outils de r´f´rence lors de la lecture des ıte a ee chapitres suivants. et les codes d´tecteurs et correcteurs d’erreur. Ils pr´sentent les r´e e e sultats th´oriques fondamentaux et les algorithmes qui en d´coulent. la cryptoe e graphie. L’efficacit´ des m´thodes est e e toujours calcul´e et discut´e. u En plus de r´unir des th´ories math´matiques qui partagent le mˆme objet. qui faisaient a e e e de l’esth´tique de leurs ´nonc´s leur principale qualit´. Ici. e e Probabilités Structures algébriques Arithmétique. dans la mesure o` un tel livre d’introduction le permettait. Les m´thodes de calcul a e sont toujours donn´es de fa¸on d´taill´e.

e . mues plus souvent par l’utilit´ et le calcul. e e Ce livre est ainsi au confluent de ces fleuves. et c’est un de leurs grands m´rites. sans compter ceux que les e histoires de d´chiffrement de langages obscurs.Th´orie des codes e 17 orientales. de e e faire appel ` des math´matiques rigoureuses et appr´ci´es des esth`tes pour a e e e e construire des m´thodes efficaces appliqu´es dans la communication courante. de machines qui corrigent leurs e propres erreurs et de codes secrets font toujours rˆver. C’est encore ce qui e peut unir toutes les th´ories des codes. il attirera les f´rus de technologie e autant que les amateurs de th´orie des nombres.

.

e e . dans un format qui puisse transiter par le canal. e Le premier proc´d´ de transformation sera assur´ par le scanner de l’appareil.Chapitre 1 Th´orie des codes e On appellera un code une m´thode de transformation qui convertit la repr´sene e tation d’une information en une autre. Ce qu’on demandera ` ce code sera d’assurer les transformaee a tions n´cessaires pour obtenir ` l’arriv´e une image semblable ` l’originale. e Mais pour commencer ` se retrouver dans ces d´finitions et comprendre ce a e qu’est vraiment le code.1 La source : de l’image ` la suite de pixels a La transmission par fax permet de faire transiter des images par un canal t´l´phonique. transe form´es). e a e a rapidement et secr`tement. e 1. dont nous ferons usage tout au long de ce texte. e e e Il consiste ` lire l’image et ` la transformer en une suite de pixels. en voici un consee truit ` partir d’exemples r´ellement utilis´s. soit blancs. actuellement ou par le pass´. c’est-`-dire l’information a e a cod´e et sa structure.1 De Jules C´sar ` la t´l´copie e a ee Pour introduire toutes les propri´t´s importantes des codes. Voici ce que pourrait ˆtre un code qui r´aliserait e e cette op´ration. algorithmes. voici un exemple simple m´langeant les technologies e et les ´poques.1. C’est un code. a e e e Supposons que nous voulions envoyer une information par fax tout en assurant le secret de la transmission. qu’on peut a a se repr´senter comme des petits carr´s soit noirs. Le mot code servira e aussi ` d´signer le produit de ces transformations. Cette d´finition est suffisamment large e pour accueillir plusieurs objets math´matiques (fonctions. e 1.

On pourrait envoyer la suite de pixels sous forme de bits num´riques. Mais on peut alors appliquer quelques principes simples ` cette suite de 0 et de a 1. 10000 z´ros. . et e e e c’est pourquoi nous conservons le terme dans ses multiples acceptions. 1}. l’alphabet source est le r´sultat du scanner. et l’alphabet du code sera l’ensemble de bits {0. ` savoir e a {pixel blanc. Il d´signe aussi bien l’ensemble des transformations e e que leur r´sultat.1. e e e Chaque pixel se voit attribuer la couleur noire si ` cet endroit l’image est sufa fisamment fonc´e. et nous venons d’ailleurs de l’employer. dans un format que nous adopterons tout au long de cet ouvrage. de fa¸on ` e e c a former des carr´s de mˆme taille. et la sortie le code1 . ce qui arrive tr`s e souvent dans les fax. pixel noir}. . On appelle alphabet un ensemble fini V = {v1 . mettons. et V + l’ensemble des chaˆ ınes de longueur non nulle. u car nous avons ´voqu´ cette longue suite sans l’´crire explicitement.2 La compression du message Pour formaliser les messages sources et les codes. ee e Une suite de caract`res de V est une chaˆ On note V ∗ l’ensemble des chaˆ e ıne. C’est la premi`re e e partie de notre code. ınes sur V . Il s’agit e e e simplement d’indiquer que le code est compos´ de 10000 z´ros plutˆt que de e e o Le mot code est tr`s accueillant. Si on imagine que la page ` envoyer ne comporte que a quelques lignes de texte. ainsi que. Comme l’alphabet du code et l’alphabet de la source peuvent diff´rer. afin de la compresser. Par exemple. on d´finit le langage dans e lequel ils sont exprim´s. et qu’une bonne partie est blanche. et nous l’´crirons comme un e e e algorithme. alors n’y a-t-il pas de meilleur moyen de transmettre une suite de. pour la m´thode de compression que nous e allons voir maintenant. Ces carr´s seront les pixels. Cette apparente confusion e permet en fait de saisir les liens entre divers proc´d´s math´matiques et informatiques. 1 . .20 e Chapitre 1 : Th´orie des codes selon la d´finition que nous en avons donn´e. que d’employer effectivement les 10000 z´ros ? e e Bien sˆr. un programme informatique. la longueur est ensuite divis´e en lignes. souvent. e e La m´thode adopt´e sera la suivante : la largeur de l’image source est divis´e e e e en 1728 parties ´gales . Algorithme de codage Entr´es Une image e Sorties Une suite de pixels L’entr´e de l’algorithme est aussi appel´e la source. vk } e d’´l´ments appel´s caract`res. not´ |V |. . Le cardinal d’un ensemble fini V est son nombre ee e e d’´l´ments. on parle d’alphabet source e et d’alphabet du code. 1. il y a un meilleur moyen. puisqu’ils e sont imm´diatement traduisibles en 0 (pour un pixel blanc) et 1 (pour un pixel e noir). et la couleur blanche si l’image est claire.

“11011000000 0”. 1. Une image pixelis´e destin´e ` ˆtre fax´e contient beaucoup de e e ae e paires de pixels cons´cutifs “01”. par exemple. et e que nous d´taillerons dans le chapitre 2. initialis´ ` 0 e ea Pour un indice i parcourant la ligne de pixels (de 1 ` 1728) Faire a Si le pixel d’indice i est le mˆme que le pixel d’indice i − 1 Alors e n←n+1 Sinon ´ Ecrire n et la couleur du dernier pixel dans M n←0 Fin Si Fin Pour Ainsi. on peut d´crire a e pr´cis´ment l’algorithme de codage par l’algorithme 1. c’est ` dire par blocs de 1728 pixels. ce qui veut dire a . les canaux t´l´phoniques ont c ee un taux d’erreur variant de 10−4 ` 10−7 .1.1. Nous verrons les contraintes que cela implique un peu plus tard dans ce chapitre. e e En pratique. – Proposez un code plus efficace. e e Algorithme 1 Codage fax simplifi´. On a donc remplac´ un message de 1728 bits en e un message de 12 bits. Habituellement. e Entr´es Une suite de 1728 pixels. Pour une ligne. puisque c’est la repr´e e e sentation de 1728 en binaire. C’est donc un principe dit de compression des messages. not´ M e e Sorties Le message M compress´ e Soit n un compteur de pixels cons´cutifs. mais par le code “1728 0”.1 De Jules C´sar ` la t´l´copie e a ee 21 les ´crire tous. appel´ RLE pour Run-Length Encoding. “11010000000 0” (alt´ration d’un bit) ou “1101000000 0” e e (destruction d’un bit) soit re¸u. soit. il faudra donc le supprimer.3 La d´tection d’erreurs e Tous nos lecteurs qui ont d´j` utilis´ un canal t´l´phonique ne seront pas ´tonea e ee e n´s d’apprendre que sa fiabilit´ n’est pas infinie. Tout message est susceptible e e d’ˆtre alt´r´. dans un format num´rique e e qui pourra ˆtre envoy´ par le canal. ce qui est nettement plus court. et il n’est pas impossible que si “11011000000 0” est envoy´ sur e ee e le canal num´rique. mais ce caract`re ne fait pas partie de l’alphabet du code. Le code du fax r´alise ce principe de compression ligne par e e ligne. pour une e e meilleure visibilit´.1. une ligne enti`rement blanche ne sera plus cod´e par une e e suite de 1728 z´ros.1. e – Que pensez-vous du code fax pr´sent´ plus haut ? e e Solution page 279. Exercice 1. selon leur nature. Nous nous sommes servis d’un e caract`re d’espacement dans notre repr´sentation (entre 1728 et 0).3.

et l’algorithme substituait chaque lettre e e du message initial M par celle situ´e 3 positions plus loin dans l’alphabet. Pour e les deux derni`res lettres de l’alphabet. si le 1728 envoy´ est devenu 1664 ` e e a cause de l’alt´ration d’un seul bit. il va se produire un d´calage de l’image ` e e a l’arriv´e qui rendra le r´sultat inexploitable. La mise en œuvre du secret e consiste ` transformer le message. on rep`re facilement e e e l’alt´ration ou la perte d’un bit. e e c 1. Pour une image. a e et ` le retransformer dans sa forme originelle ` l’arriv´e. d`s que ce format n’est pas respect´. e e Par exemple le mot T ROY EN devenait W U RBHQ. pour chaque ligne re¸ue. que “0” est ajout´ au d´but de chaque e e ligne. Le canal t´l´phonique. Ainsi. qu’on appelle aujourd’hui algorithme de chiffrement. Les messages ´taient des textes. quand on envoie de longs messages. ceci permet de redemander la transmission de e e la mˆme ligne pour avoir une confirmation. et cela peut ´videme e e ment en alt´rer le sens. ne permet pas le secret en lui-mˆme. pour expliquer le principe. C’est loin d’ˆtre n´gligeable. que nous voulions garder le message secret e pour toute personne except´ son destinataire.4 Le chiffrement Supposons maintenant. a a e C’est une technique employ´e par les hommes depuis qu’ils communiquent. et comme il est tr`s peu probable e e qu’une erreur se produise deux fois exactement au mˆme endroit. et les bi doivent ˆtre altern´s. comme e ee la plupart des canaux. le message e pourra ˆtre corrig´.1. le mettre sous une forme incompr´hensible. Ainsi. le texte n’avait . et “1729” est ajout´ ` la fin de chaque ligne. . En cas e d’erreur d´tect´e sur une ligne. ea On peut alors. ´tudi´s plus en d´tail au e e e e chapitre 4. e e Le code du fax permet de d´tecter de telles erreurs de transmission. e Dans les codes secrets employ´s dans l’antiquit´. Tout message qui e y transite peut ˆtre facilement lu par un tiers. apr`s avoir compress´ le message et apport´ un format e e e qui permette la d´tection d’erreurs. e e Mˆme si ce ne sont pas exactement ces nombres-l` qui sont utilis´s en pratique. Ainsi. . les historiens ont retrouv´ des messages cod´s par les services de Jules e e C´sar. on doit avoir n1 + e · · · + nk = 1728. En particulier.22 e Chapitre 1 : Th´orie des codes qu’ils peuvent commettre en moyenne une erreur tous les 10000 bits. nk bk 1729”. v´rifier qu’elle est de la forme “0 n1 c e b1 . e e e Les principes de d´tection et correction d’erreur. e e Le principe de la d´tection d’erreur dans le code du fax est le suivant : on e fait pr´c´der et suivre dans le message chaque ligne par une suite identifiable. e a e mettons. sont tous bas´s sur ce mˆme principe : ajouter de l’information e e pour v´rifier la coh´rence du message re¸u. et bi la couleur de ces bits. o` ni est un nombre entier qui donne le nombre de bits u cons´cutifs. le secret r´sidait dans la e e e technique mise en œuvre. il fallait renvoyer aux deux premi`res.

e L’attaque et le d´chiffrement e Le message arrive crypt´. Le nombre n est la taille de l’alphabet utilis´.1 . D’autres syst`mes cryptographiques. La discipline qui consiste ` inventer des m´thodes d’attaque a e pour briser les codes existants ou pour construire des codes plus r´sistants e est la cryptanalyse. Il s’agit de le d´coder. ou de e cassage de code.). le destinataire e e devait poss´der un bˆton d’un diam`tre identique ` celui utilis´ pour l’encoe a e a e dage. Pour qui ne poss`de pas e e e la clef ou la m´thode de chiffrement. Ainsi les lettres successives du message apparaissait sur une circonvolution diff´rente du parchemin. ce qui aurait donn´ la fonction f (x) = x + 3 mod n pour tous les e e nombres envoy´s sur le canal.1 De Jules C´sar ` la t´l´copie e a ee 23 plus de signification imm´diate. Cela e revient ` construire une fonction fK (x) = x + K mod n. C’est ce qu’on appelle un principe de sube stitution mono-alphab´tique. la e o m´thode de d´chiffrement est tr`s simple et consiste ` appliquer la fonction e e e a . b). 1. Pour l’instant.1. Sans connaˆ la clef (a. virent alors le jour e e e (chiffrements affines fa. e e toujours la mˆme. comment d´code-t-il le e ıtre e message ? Solution page 279. e e ici par exemple 1730.1.´tudi´s dans les exercices 1.b (x) = a. le chiffrement par e transposition : la scytale ´tait un bˆton sur lequel ´tait enroul´ un parchemin. Cette description ne serait e pas compl`te sans un mot pour pr´senter les principes de l’op´ration compl´e e e e mentaire. . un nombre entier choisi secr`tement entre les communiquants. crype e t´ par chiffrement affine. Exercice 1. . chiffrements par substitution o` chaque lettre est remplac´e par un u e symbole d’un autre alphabet comme le code morse etc. il ıt s’agit de d´chiffrement. e e Ces fonctions de codage et d´codage furent ensuite param´tr´es par une simple e e e clef K. puisqu’aucun nombre sup´rieur ne peut th´oriquement e e ˆtre employ´. il aurait adapt´ son code au format nue e m´rique.x + b mod n . le d´codage.5 Le d´codage e Nous avons vu dans ce qui pr´c`de toutes les techniques pour coder un message e e et en assurer l’efficacit´ de transmission et le secret. car chaque lettre est remplac´e par une autre. dans le message. e Si C´sar avait voulu envoyer un fax. Pour le destinataire du message qui connaˆ la clef. Les spartiates utilia saient eux un algorithme de chiffrement totalement diff´rent.2 e e et 3. Pour le d´chiffrer.2. e a e e Le message ´tait ´crit sur le parchemin enroul´ mais le long du bˆton et non e e e a le long du parchemin. On parlera de l’attaque bientˆt. plus ´labor´s. on parle d’attaque sur le code. Marc-Antoine intercepte un message envoy´ par C´sar.

qui est la mˆme que celle de d´part. 1. pour plusieurs raie sons : . Ou plutˆt une image semblable a o ` l’image de d´part.24 e Chapitre 1 : Th´orie des codes inverse de la fonction de codage. en respectant les principales contraintes que nous rencontrerons en th´orie des codes (l’efficacit´ de la compression. l’information initiale n’est pas enti`rement restitu´e. e Quand. L’image de d´part sera d´e e e grad´e. C’est ce qui est formalis´ pour une ligne e dans l’algorithme 2. redemander une ´mission).Il reste ` appliquer toutes les autres transfore e a mations en sens inverse. puisque les carr´s d’origine n’´taient pas enti`rement noirs ou blancs. la d´tection d’erreur. En effet.1. Il ne reste plus qu’` restituer l’image. la seule information dont nous disposons est a e la valeur des pixels. ´tant donn´e une suite de nombres. en laquelle nous avions transform´ e e e l’image. mais e e arrive sous une forme s’en rapprochant. quand on estime que l’information importante n’est pas alt´r´e. puis e e e appliquer un algorithme de d´codage. e e e e ce qui donne toujours aux fax un aspect peu esth´tique. on obtient une suite de pixels. mais l’essentiel de e l’information est conserv´. comme ici. e e e renverra la suite de pixels initiale. Tout d’abord. le d´e e e e e codage. sous la forme “0 n1 b1 . .6 Les d´fauts de ce code e Nous avons enti`rement d´crit un proc´d´ de codage et son pendant. C’est souvent le cas ee pour les informations audiovisuelles (voir la section 2. 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 d´compression et les pertes e En appliquant cet algorithme pour toutes les lignes. on parle de codage avec perte. et la m´thode consiste donc ` imprimer sur une feuille e a la suite de carr´s noirs ou blancs correspondants. On utilise souvent des codes qui permettent un certain niveau de perte. v´rifier le format de chaque ligne pour e d´tecter d’´ventuelles erreurs (en cas d’erreur. Le message est alors d´chiffr´. soit e e e −1 fK (x) = x − K mod n. Algorithme 2 D´codage fax. ´ventuellement param´tr´e par une clef. Mais les principes utilis´s dans ce code-l` ne sont gu`re utilisables en e a e pratique dans les communications num´riques courantes. le see e e cret). e Entr´es Une suite de nombres.5). . qui.

. Le tae bleau 1. si le message est constitu´ de pixels blancs et noirs altern´s. en recevant une suite de bits “1001011010010”. mais le principe de compression n’est alors e e pas optimal. De plus. Scipion trouve un papier sur lequel se trouve le message chiffr´ e suivant : HJXFW FZWFNY JYJ HTSYJSY IJ ATZX! Aide Scipion ` d´chiffrer ce message.1. et dans le chapitre suivant comment en e e d´duire de bons principes de compression. De plus. on peut supposer que ces fr´quences sont assez repr´sentatives e e d’un texte scientifique fran¸ais ´crit en LaTeX. etc. scientifiques anglais. inclure les bits bi est quasiment inutile puisqu’ils sont altern´s et que la e valeur du premier suffirait ` d´terminer tous les autres. a e Solution page 279. ou de plusieurs nombres concat´n´s ? e e On peut par exemple coder tous les nombres sur le mˆme nombre de bits e pour r´soudre ce probl`me. . e La d´tection d’erreurs : ce principe oblige ` demander un renvoi de l’informae a tion ` chaque erreur d´tect´e. L’efficacit´ de la transmission peut d´pendre de la qualit´ des principes de e e e d´tection et de correction d’erreurs. On ne sait pas quel est le ee taux d’erreur d´tect´ par ce code. comme e savoir s’il s’agit d’un nombre ni . c Exercice 1. Il est bien sˆr possible c e u d’avoir des tables de fr´quences repr´sentatives de textes litt´raires frane e e ¸ais. il est facile de e d´coder. nk . la e e taille du message « compress´ » sera plus grande que la taille du message e original. e Le secret : le code de C´sar est cassable par un d´butant en cryptographie. Une cryptanalyse simple consiste e e ıtre a e ` ´tudier la fr´quence d’apparition des lettres au sein du texte chiffr´ e e et d’en d´duire la correspondance avec les lettres du texte clair. Nous verrons dans la suite de ce chapitre comme s’assurer de la d´chiffrabilit´. Il oblige ` coder “2” par “00000000010”.1 pr´sente par exemple la r´partition 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). . Il devient alors une suite de nombres n1 . Comme ce manuscrit est assez long. e e Pour tous les principes de substitution mono-alphab´tique. Le principe n’a donc aucune garantie de compression. mˆme sans connaˆ la clef. e e D’abord. Le code du fax les a e ´limine.1 De Jules C´sar ` la t´l´copie e a ee 25 La compression : le principe RLE tel qu’il est appliqu´ ici a plusieurs d´fauts. e cod´e en bits (chaque nombre a sa traduction binaire) est plus difficile ` e a d´coder.3. Mais cette suite. aucune garantie th´orique ne vient assurer que ce codage est bien adapt´ e e au taux d’erreur des canaux t´l´phoniques. ce qui augmente a la taille du message. alors qu’on pourra concevoir des codes qui a e e corrigent automatiquement les erreurs du canal (chapitre 4). ni s’il pourrait accomplir la mˆme e e e performance en ajoutant moins d’information dans les messages. En effet.

pendant ce temps l`.88 % 4. celle de la rapidit´ ` e e ea coder et d´coder.49 % 6.59 1.72 % 4.28 % 5. Elle d´pend de la vitesse des ordinateurs. 512 bits font 155 chiffres et e e 1024 bits sont repr´sentables par 309 chiffres.75 % 4. 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. Pour e fixer les id´es.51 0. la e vitesse la plus fantastique de l’univers est celle de la lumi`re : 300000 km/s e = 3.52 % 7.1: R´partition des lettres dans ce manuscrit LaTeX.15 0. soit en chiffres d´cimaux. 1.1.89 0.82 % 7.60 1. votre ordinateur e e a a donc effectu´ 10 op´rations ! ! ! On peut donc dire que les ordinateurs actuels e e calculent ` la vitesse de la lumi`re. e Taille des nombres Nous consid´rons des nombres et leurs tailles. A titre de comparaison. Ainsi.47 1.97 0.108 m/s. e La vitesse des ordinateurs Aujourd’hui n’importe quel PC est cadenc´ ` au moins 1 GHz.16 0.86 % 4.26 E I T N R S A O L D U C M 14. e 1. c’est-`-dire qu’il ea a ` effectue 1 milliard (109 ) d’op´rations par seconde.14 % % % % % % % % % % % % % Tab.90 % 7.7 Ordres de grandeur et complexit´ des algorithmes e Nous avons d´crit un code et expos´ ses qualit´s et ses d´fauts. a e . et surtout de la e e complexit´ des algorithmes. 128 bits font 39 chiffres d´cimaux . un nombre m poss´dera log10 (m) chiffres et log2 (m) bits.76 % 6. Il est une qualit´ e e e e e cruciale des codes que nous n’avons pas encore ´voqu´e.82 1.91 % 6.71 % 3.20 1.37 0.33 % e Chapitre 1 : Th´orie des codes P F B G X H Q V Y K W J Z 3. soit en e e bits.20 0.

La vitesse des ordinateurs augmentant constamment. c’est tout simplement le carr´ du nombre d’´lectrons e e contenus dans l’univers.10−30 ) ∗ 200. division.1. Nous allons voir dans la suite comment construire des algorithmes capables de travailler avec de tels nombres entiers. Bien sˆr. e Ce sont pourtant des nombres que nous aurons ` manipuler. En effet. Complexit´ des algorithmes e Malgr´ la puissance des ordinateurs. une bonne mesure pour estimer ce temps est de compter le nombre d’op´rations arithe m´tiques que n´cessite l’algorithme. et la taille de l’entr´e est la longueur de cette suite.1012 ≈ 1084 ´lectrons. Ce e . La complexit´ d’un algorithme est une mesure du temps que e mettra un ordinateur. En effet. multiplication. il s’agit donc de compter les e e e e quatre op´rations classiques (addition. un ordinateur cadenc´ ` 1 GHz mettrait plus de deux millions de fois ea l’ˆge de l’univers pour simplement compter jusqu’` un nombre de « seulea a ment » 39 chiffres ! Quant ` un nombre de 155 chiffres (ce qu’on utilise courama ment en cryptographie). Comme notre e soleil p`se ` la louche 2. on suppose que l’entr´e e est une suite de bits. e e Pour pouvoir calculer cette taille dans tous les cas. un algorithme mal con¸u pourra se r´v´e c e e ler inexploitable.10−30 kg. e a e e on obtient : Univers = (2. e Ainsi.25 × 24 × 60 × 60 ≈ 5. par souci de simplification. Pour se convaincre a e e ` quel point c’est ´norme.1012 galaxies chacune renfermant grosso modo 200 milliards d’´toiles. En g´n´ral.1017 secondes. soustraction. pour terminer e son calcul. si pour les d´coder sans en poss´der la clef. ce nombre d’op´u e rations d´pend de la taille des nombres qu’on fournit en entr´e.1030 kg et qu’un ´lectron ne p`se que 0.1 De Jules C´sar ` la t´l´copie e a ee Taille et ˆge de l’univers a 27 Cette vitesse de calcul est v´ritablement astronomique . e mais parfois ´galement des op´rations binaires comme les d´calages de bits) e e e et seulement celles-ci.1030 /0. e e il faut des millions d’ann´es de calcul en mobilisant le milliard d’ordinateurs e disponibles sur la Terre dont les plus rapides. notre univers contiendrait environ 3. c’est pourquoi e e l’efficacit´ est toujours une fonction de la taille de l’entr´e de l’algorithme. en mˆme temps qu’une e a e assurance de secret de nos messages. 83.109 ∗ 3. 83. Leur taille sera a l’un des d´fis algorithmiques que nous aurons ` relever. rien que pour compter juse qu’` un nombre de 39 chiffres il faut ´num´rer 1039 nombres. sur lequel on impl´mentera l’algorithme. calculons l’ˆge de l’univers en secondes : a e a ˆge Univers a 15 milliards ann´es × 365. pourtant la taille des e nombres que l’on manipule reste ´norme.

2 Codage par flot et probabilit´s e Afin d’obtenir des m´thodes efficaces. puisque la base ne modifiera la fonction que d’une constante (le logarithme de la base). e Exercice 1. En pratique tous les algorithmes devront pr´senter une complexit´ quasie e lin´aire O(n). La taille d’un entier est donc e son logarithme en base 2. soit par e exemple si sa r´solution n´cessiterait plus de 1050 op´ration. Par exemple. qu’on codera un a e par un. c’est-`-dire pour pouvoir ˆtre utilis´ dans une a e e a e e transmission o` un temps d’attente long n’est pas acceptable (t´l´phonie. o` n est la taille du message source. pour coder un entier a. C’est une op´ration soue e vent assez simple. il faut de l’ordre de log2 (a) bits (on les ´crit simplement en base 2). Si k(n) est le nombre d’op´rations arithm´tiques e e effectu´es par l’ordinateur qui ex´cute l’algorithme sur une entr´e de taille e e e n. on peut consid´rer le message comme un flot de bits. et permet e .28 e Chapitre 1 : Th´orie des codes qui suppose que pour calculer l’efficacit´ d’un algorithme. nous consid´rons qu’un probl`me est impossible ` r´soudre (on e e a e emploie simplement parfois l’euph´misme « difficile ») si on ne connaˆ pas e ıt d’algorithme qui le r´solvent en un temps humainement raisonnable. c’est-`-dire lin´aires en fonction de la e a e taille du message. k(n) c × f (n).4. on dit que k(n) = O(f (n)) s’il existe une constante c telle que pour tout n assez grand. e e e 1. et f une fonction quelconque. Comme la notation de Landau permet de donner la complexit´ ` une constanea te pr`s. . On peut alors dire que la complexit´ de l’algorithme est au plus de l’ordre de f (n). il est par exemple possible d’´crire O(log(n)) sans donner la base du e e logarithme.). pr´sent´ plus haut ? e e e Solution page 279. La taille d’une suite de pixels noirs et blancs est la longueur de cette suite. Comme il n’est souvent pas possible de compter exactement toutes les op´rae tions r´alis´es lors de l’ex´cution d’un programme. e Dans ce livre. pour pouvoir pr´tendre e u e ` une efficacit´ « temps-r´el ». . Tous les ıt e algorithmes connus n´cessitent des temps de calcul astronomiques qui rendent e l’approche du probl`me impossible. Quelle est la complexit´ du code fax. on encadre la complexit´ e e e e d’un algorithme par des majorants et minorants asymptotiques en utilisant la notation dite de Landau. c’est e ` dire une succession potentiellement infinie de caract`res. on doit concevoir e un code qui transforme son entr´e en suite de bits. Une partie de la cryptographie repose sur l’hypoth`se qu’il existe des probl`mes e e pour lesquels on ne connaˆ aucun algorithme d’une telle complexit´. auu ee diovisuel. Cette technique est notamment utilis´e en cryptographie.

Ainsi. Le chiffrement jetable que celui-ci a con¸u est le seul code connu ` l’heure actuelle comme math´matic a e quement prouv´ sˆr. changer e e de clef pour chaque nouveau message ? Solution page 279. ˜ est donn´ par M e e Exercice 1.1.est a un exemple de code par flot ` vis´e cryptographique dont on peut prouver a e la s´curit´ inconditionnelle. la compagnie am´ricaine AT&T e e avait charg´ le scientifique Gilbert Vernam d’inventer une m´thode de chiffree e ment que les Allemands ne pourraient pas casser. cette clef n’est utilis´e qu’une fois. i. moyennant l’introduction de quelques bases de e e probabilit´s et de th´orie de l’information. e a e a e c’est-`-dire que le secret r´side dans un param`tre des fonctions de codage et a e e de d´codage connu uniquement de l’´metteur et du destinataire. Pour d´chiffrer. un obe ee e servateur tiers n’obtient aucune information sur le message clair s’il intercepte le message chiffr´ (hormis la taille de M ). Le d´codage s’effectue grˆce ` la propri´t´ que pour tous e a a ee messages M et clefs K de mˆme longueur. e ee e ee c e ind´pendamment de M et qu’elle n’ait jamais ´t´ utilis´e auparavant. il suffit de calculer M ⊕ K.en Anglais one-time-pad . on a : e (M ⊕ K) ⊕ K = M o` ⊕ (qu’on note aussi xor) d´signe l’op´ration logique « ou exclusif » bit ` u e e a bit. Le secret e a e repose sur le fait qu’une clef est associ´e ` un seul message et est de mˆme e a e longueur que celui-ci. e e 1.2 Codage par flot et probabilit´s e 29 d’obtenir des messages dits inconditionnellement sˆrs. la seule attaque possible est la recherche exhaustive de clef secr`te. C’est cette utilisation du ou exclusif qui a ´t´ brevet´e par Vernam 1919. Il s’agit donc d’une addition modulo 2 de chaque bit. On utilise ´galement le mod`le du e e e codage par flot pour construire des principes de d´tection et correction d’erreur e (voir les codes convolutifs dans le chapitre 4). capitaine e .e. C’est aussi le e e cas du chiffrement de C´sar. Sous r´serve que la clef K ait bien ´t´ g´n´r´e de fa¸on totalement al´atoire.1 Le code de Vernam En 1917. pendant la premi`re guerre mondiale. C’est Joseph Mauborgne. pour lesquels la u connaissance du message chiffr´ n’apporte aucune information sur le message e clair. il faut avoir une clef K secr`te de n bits.e. Pourquoi faut-il jeter la clef apr`s l’avoir utilis´e.5. dans lequel le param`tre est la taille du d´calage e e e des lettres ou des nombres. On parle alors de chiffrement parfait. i. Le message chiffr´ M e e ˜ ˜ = M ⊕ K. Le code dit de Vernam. ou code ` clef jetable .2. Pour envoyer un message ee e M de n bits. e u Le syst`me ` clef jetable est un syst`me cryptographique dit ` clef secr`te. Dans un syst`me ` clef jetable.

comme nous le verrons e e e section 1. c Mais qu’appelle-t-on une d´viance par rapport au hasard. e e On note Ω l’ensemble de tous les ´v`nements possibles pour une exp´rience e e e donn´e. Exercice 1.30 e Chapitre 1 : Th´orie des codes au service secret de l’arm´e am´ricaine qui le premier a propos´ dans les ann´es e e e e 1920 que la clef soit g´n´r´e al´atoirement et c’est ensuite. Les op´rateurs sur les ensembles (∪. il reste ` formaliser ce que veut dire g´n´rer un nombre al´atoire. cette section apportera quelques moyens math´matiques d’aborder le hasard e et ses effets. ∩. puis de cr´er quelque chose qui se rapprocherait du hasard. pour prouver que le syst`me est sˆr. si les num´ros “1 2 3 4 5 6” tombent e au Loto.2. e . si on utilise une clef g´n´r´e au hasard. sauf). et. Pour e cela.4. e e e e e si l’exp´rience est un jet de d´ ` six faces. e ´ e Ev`nements et mesure de probabilit´ e Un ´v`nement est le r´sultat possible d’une exp´rience al´atoire. nous introduisons maintenant les principes fondamentaux de la th´orie e de l’information.2 Un peu de probabilit´s e Dans un syst`me cryptographique.6. une organisation dans un e message. Le hasard a aussi sa part dans les m´thodes de compression. mais les cr´ateurs e de codes vont y voir un moyen d’exprimer le message de fa¸on plus dense. l’obtention du nombre 6 est un e e a ´v`nement. Le mot de passe doit ˆtre crypt´ pour ne pas circuler de e e e e fa¸on visible sur internet ni ˆtre captur´ par la machine utilis´e. qui servent ´galement de base aux principes de compression e des messages. 1. ` base de clefs jetables. \) sont utilis´s pour les e e e e ´v`nements (ils signifient ou. a e e e donner des bons moyens de le faire et. on doutera beaucoup qu’ils aient ´t´ vraiment g´n´r´s au hasard. Claude Shannon e ee e qui a prouv´ la s´curit´ inconditionnelle de ce code.2. ee e ee bien que stricto sensu cette combinaison ait autant de chance d’ˆtre g´n´r´e e e ee que n’importe quelle autre. e e ee toute d´viance par rapport au « vrai » hasard sera un angle d’attaque pour e la cryptanalyse. non seulement les casseurs de codes vont s’en servir. c e e e Solution page 280. ´ Evidemment. e car d`s qu’il y a un ordre visible. e u pr´ciser ce que veut dire « obtenir de l’information » sur le message clair. une redondance. et plus simplement e qu’appelle-t-on le hasard ? Par exemple. Si nous n’irons pas bien loin dans la philosophie. Par exemple. permettant ` a a un utilisateur de se connecter depuis un ordinateur quelconque sur internet ` a un serveur s´curis´. Construire un protocole.

. pi ∗ log pi i=1 Preuve. . ∩ An )P (A2 |A3 ∩ . ` valeur dans e e a [0. Une distribution est dite uniforme si tous e e les ´v`nements ont une mˆme probabilit´ d’occurrence. .1. Par suite. 1]. i=1 n i=1 qi = 1. Si l’ensemble des ´v`nements est un ensemble discret ou fini. e e n qi 0. on montre facilement que pour un ensemble d’´v`nements e e e A1 . . B des ´v`nements disjoints (A ∩ B = ∅). . . si l’exp´rience al´atoire est le jet d’un d´ ` six faces non pip´. sachant que B s’est d´j` produit. . 4. 2. Donc pi ∗ ln i=1 qi pi n pi ∗ ( i=1 qi − 1) . qn ) deux lois de probabilit´ discr`tes. Elle est e ea not´e P (A|B) et d´finie par : e e P (A|B) = P (A ∩ B) P (B) Par r´currence. . . qui v´rifie : e 1. e e e e Le lemme dit de Gibbs est un r´sultat sur les distributions discr`tes qui nous e e sera utile plusieurs fois dans cet ouvrage. . On sait que pour tout x ∈ R+ . L’ensemble des valeurs prises par la fonction de probabilit´ est la distribution e des probabilit´s. e e Par exemple. Soient (p1 . pn ). (q1 . . 3. On e e e appelle probabilit´ conditionnelle de l’´v`nement A par rapport ` l’´v`nement e e e a e e B. An .2 Codage par flot et probabilit´s e 31 Une mesure de probabilit´ P est une application d´finie sur Ω. quels que soient A. on parle de e e probabilit´ discr`te. et la probabilit´ d’occurrence e e e de chacun 1/6. . P (An−1 |An )P (An ) . i=1 pi ∗ log pi − P Probabilit´s conditionnelles et Formule de Bayes e On dit que deux ´v`nements sont ind´pendants si P (A ∩ B) = P (A)P (B). 6}. ou loi de probabilit´. e e ea e l’ensemble des ´v`nements est {1. Lemme 1 (de Gibbs). P (A1 ∩ . pi n i=1 pi q ∗ ( pi − 1) = i n i=1 qi Soit puisque n pi = i=1 n pi = 0 . 5. ∩ An ) . alors n qi 0. P (A ∪ B) = e e P (A) + P (B). ln(x) ∗ n x − 1. . . . . P (Ω) = 1 et P (∅) = 0 . la probabilit´ que A se produise. . . . . ∩ An ) = P (A1 |A2 ∩ . 2.

. . e P (Ak |B) = P (B|Ak )P (Ak ) P (Ak ∩ B) = P (B) i P (B|Ai )P (Ai ) Exercice 1. en construisant la distribution de probabilit´s ` partir de la e a fr´quence des caract`res dans le message. Quelles sont les probabilit´s d’obtenir les chiffres 1. P) o` S = (s1 . Ces brefs rappels ´tant faits sur la th´orie de base permettant d’´tudier des e e e ´v`nements al´atoires. An . Un message est alors un ´l´ment de ee S + . dont l’alphabet est l’enc semble des lettres latines et les probabilit´s d’occurrence sont les fr´quences e e . si la clef est k2 alors a → 2 et b → 3. . B les probabilit´s P (Ak |B) en fonction des P (B|Ak ). . k2 et k3 : si la clef est k1 alors e e a → 1 et b → 2. un texte en fran¸ais est une source.2. P = {pij }. o` pij est la probabilit´ d’occurrence de si sachant que sj u e vient d’ˆtre ´mis. On a alors pi = j pij . On propose le code secret suivant. On peut construire une source d’information ` partir de n’importe e a quel message. e e Par exemple. sinon a → 3 et b → 4. . ee e Une source d’information est constitu´e du couple S = (S. P (K = k2 ) = P (K = k3 ) = 1/4. e e La source est dite markovienne si les probabilit´s d’occurrence des caract`res e e d´pendent des caract`res ´mis pr´c´demment. 2 ou 3 ? Quelles sont les e probabilit´s conditionnelles que le message soit a ou b sachant la valeur du e chiffre ? Peut-on dire intuitivement si ce code secret est un « chiffrement parfait » ? Solution page 280. permettant de coder deux caract`res a et b avec trois clefs diff´rentes k1 . P (M = b) = 3/4 et e e P (K = k1 ) = 1/2 . e e e e 1. Pour tout message. c’est-`-dire que pi est la probabilit´ d’occurrence de si dans une e a e ´mission. on peut calculer les fr´quences d’apparition de chaque e ´l´ment de l’alphabet.7. . e e La source d’information S = (S. . P) est dite sans m´moire lorsque les ´v`nee e e ments (occurrences d’un symbole dans une ´mission) sont ind´pendants et que e e leur probabilit´ reste stable au cours de l’´mission (la source est stationnaire). et construire ainsi une distribution de probabilit´s sur S. On suppose en outre que l’on a des connaissances a priori sur le message M envoy´ et la clef K utilis´e : P (M = a) = 1/4 .32 e Chapitre 1 : Th´orie des codes La formule dite de Bayes permet de calculer pour un ensemble d’´v`nements e e A1 .3 Entropie Source d’information On appelle S l’alphabet du message source. Dans le cas d’un seul pr´d´cese e e e e e e seur. . . e u sn ) est l’alphabet source et P = (p1 . . pn ) est une distribution de probabilit´s sur S. . voyons ce que l’al´atoire signifie pour des ordinateurs. .

pn ) est : n n H(S) = H(p1 . pi On d´signe par extension l’entropie d’un message comme l’entropie de la source e induite par ce message. . . o` e u certaines lettres ou certains mots sont beaucoup plus employ´s que d’autres. . on obtient H(S) log2 n quelle que soit la source S. l’entropie atteint donc son maximum. Enfin. C’est pour cette e raison qu’on l’appelle « mesure du d´sordre ». a e e Entropie d’une source L’entropie est une notion fondamentale pour la manipulation d’un code. Un son est une source dont l’alphabet est un ensemble de fr´quences et d’intensit´s. . . a 1 . le mod`le markovien sera plus e e e adapt´. en supposant que le plus grand e d´sordre est atteint par la distribution uniforme.8. C’est en effet une mesure. P). .. qn ) = ( n . ce qui est une information cruciale pour la cryptographie. . .9 ? Pourquoi une e e e faible entropie est-elle un bon augure pour la compression ? Solution page 280. . Comme les probabilit´s d´pendent dans ce e e e cas fortement des caract`res qui viennent d’ˆtre ´mis (un U est beaucoup plus e e e probable apr`s un Q qu’apr`s un autre U). e e 0 H(S) log2 n . . . 1 Preuve. . L’entropie d’une source S = (S. . . e Une image induit aussi une source. e Exercice 1. . P) une source. e e e a P Remarquons que pour une distribution uniforme. la distribution de probabilit´s ´tant calcul´e ` partir e e e a des fr´quences d’apparition des caract`res dans le message. Elle baisse quand on s’´loigne de la distribution. et du degr´ a e d’ordre et de redondance d’un message. n ). Quelle est l’entropie d’une source qui ´met un caract`re 1 avec e e une probabilit´ 0. ` la fois de la quantit´ d’information qu’on peut attribuer a e ` une source (ce qui sera utile pour la compression des messages). e Ce sera l’angle d’attaque des m´thodes de compression mais aussi des pirates e qui chercheraient ` lire un message sans y ˆtre autoris´s. pn ) = − i=1 pi log2 (pi ) = i=1 pi log2 ( 1 ). Appliquons le lemme de Gibbs ` la distribution (q1 . e e Propri´t´ 1. la positivit´ e est ´vidente puisque les probabilit´s pi sont inf´rieures ` 1. . . sn ).2 Codage par flot et probabilit´s e 33 d’apparition de chaque caract`re. Ce qui n’est ´videmment pas le cas pour les messages courants. . . e e Une source S est dite sans redondance si sa distribution de probabilit´s est e uniforme.1 et le caract`re 0 avec une probabilit´ 0. S = (s1 . P = (p1 . dont les caract`res de l’alphabet sont des e niveaux de couleurs.1. Soit S = (S.

qu’on veuille connaˆ e ıtre la quantit´ d’information contenue dans e une source. j et donc dans cas on montre facilement que H(S1 . connaissant un ´v`nement de l’autre. qui est la quantit´ d’information restant dans S1 si la loi de S2 est connue : e m H(S1 |S2 ) = j=1 pj H(S1 |S2 = s2j ) = i.j ) Par exemple. e On appelle l’entropie conjointe de S1 et S2 la quantit´ e n m H(S1 . par exemple mˆme la connaissance a ıtre e e d’un message et de son cryptage ne devrait pas donner d’information sur la clef utilis´e.n . e e S2 = (s21 . s1n ). P1 ) et S2 = (S2 .j pi. On calcule alors l’entropie e e conditionnelle de S1 relativement ` la valeur de S2 . . puis pi. 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 ind´pendantes . .. pour ne pas que les traces e d’organisation dans un message donnent des informations sur la mani`re dont e il a ´t´ crypt´. . Au contraire. .j log2 pj pi. P1 = (pi )i=1.j Cette notion est cruciale en cryptographie. P2 ) deux sources sans m´moire. S2 ) = H(S2 ) + H(S1 |S2 ) .j = P (S1 = s1i ∩ S2 = s2j ) la probabilit´ d’occurrence conjointe de s1i et s2j et pi|j = P (S1 = s1i |S2 = s2j ) e la probabilit´ d’occurrence conditionnelle de s1i et s2j . .m . on ´tend cette notion ` une entropie conditionnelle de S1 connaissant e a S2 . . si les sources S1 et S2 sont ind´pendantes. Soient S1 = e e a (S1 . dont les ´v`nements ne e e e sont pas forc´ment ind´pendants. il peut arriver. si les ´v`nements de S1 et S2 ne sont pas ine e d´pendants. donn´e par a e n H(S1 |S2 = s2j ) = − i=1 pi|j log2 (pi|j ) Enfin. . On note S1 = (s11 .j = pi pj pour e tous i.j log2 (pi. et encore : e e e H(S1 . alors pi. . s2m ) et P2 = (pj )j=1. Mais il est aussi important que l’entropie reste forte si on arrive ee e ` connaˆ des informations d´pendantes. il est tr`s important que e tous les messages crypt´s aient une entropie forte. En effet. S2 ) = − i=1 j=1 pi.34 e Chapitre 1 : Th´orie des codes Entropies conjointe et conditionnelle On ´tend facilement la d´finition de l’entropie ` plusieurs sources. S2 ) = H(S1 )+H(S2 )..

. e Propri´t´ 2. 4 ) alors S 2 = (s1 s1 . 9 ) . p . sik ∈ S k . pik ik−1 . P = ( 4 . . P k ). et pour un e e c mot s = si1 . donnent une entropie e e e 1 de 6 6 log2 (6) = log2 (6) ≈ 2. s1 s2 . P 16 16 16 16 Si S est une source markovienne. . e e H(S k ) = kH(S) . s2 ). . . et P k est la u distribution de probabilit´ ainsi d´finie : pour un mot s = si1 . . l’entropie de la source ee correspondant ` cette « extension de message » est alors forc´ment inf´rieure a e e ` l’entropie correspondant au message initial. ce qui n’est sans doute pas le e cas du second. dans le cas d’un message.585. Avec la deuxi`me extension de la source e i=1 . La k i`me extension S k de S est le doublet e (S k .6 1. s2 s2 ) et 2 =( 1 . o` S k est l’ensemble des mots de longueur k sur S. 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 mˆme e entropie. e a e Cela semble tout ` fait naturel. Soient S une source. . Par exemple. .1. nous verrons cela plus en d´tails e dans la section 2. Pour prendre en compte ce type d’organisation. on fait appel aux extensions de sources. on d´finit de la mˆme fa¸on S k . . et S k sa k i`me extension. l` nous ne sommes plus du e a tout dans le cadre de la propri´t´ 2 ! Au contraire. cette propri´t´ exprime que la quantit´ d’information d’une ee e source ´tendue ` k caract`res est exactement k fois celle de la source originelle. Cela permet d’utiliser la th´orie e e de l’information pour compresser des fichiers. Extension d’une source e Soit une source S sans m´moire. s ) = p . alors P i1 ik i1 ik 1 3 Exemple : S = (s1 . . s2 s1 . Autrement dit. il est possible de regrouper les caract`res du message k par k. ` partir d’un fichier il est possible de d´nombrer les occurrences a e des caract`res et de donner une entropie correspondant ` la source qui aurait e a les caract´ristiques probabilistes identiques. Attention. . il faut distinguer une source d’un message (un fichier par exemple). 3 .2 Codage par flot et probabilit´s e 35 Mais l’entropie d’une source sans m´moire ` elle seule ne capture pourtant e a pas tout l’ordre ou le d´sordre contenu dans un message. e e k (s) = P (s . Ensuite. Tout d’abord. . a Cependant. . 3 . . du type “1. sik ∈ S k . et pourtant le premier est suffisamment ordonn´ pour qu’on puisse e le d´crire par une formule.6”. 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 mˆme entropie en prenant la premi`re extension de la a e e source : 6 caract`res de probabilit´ un sixi`me chacun. alors P k (s) = pi1 pi2 i1 .

k Ceci nous am`ne au probl`me du hasard et de sa g´n´ration. on aura : e e H(M |C) = H(M ) Exercice 1. 6 .4 Chiffrement parfait Nous disposons maintenant de l’attirail th´orique pour pr´ciser ce que nous e e entendons par chiffrement inconditionnellement sˆr.2. . qui pr´sente une forme d’organisation ais´ment d´tectable. et en particulier e ee e a e avoir une haute entropie. On e e e le serait plus si on rencontrait “3 1 4 6 4 6 2 1 3 5 2 5”. Soient M un message de taille n et SMk la source dont les e e probabilit´s correspondent aux occurrences des k-uplets cons´cutifs de M . Ce qui donne une entropie de e P log2 n . qui a une entropie sup´rieure. En outre l’entropie est maxik male pour le plus grand nombre de k-uplets distincts possibles d’occurrences ´gales. en regroupant les messages par exemple par blocs de deux caract`res. a – De mˆme (31)(46)(46)(21)(35)(25) donnent 5 couples distincts d’entropie e 6 2 1 1 log2 (6) + 6 log2 ( 2 ) + 3 6 log2 (6) ≈ 2. On ne serait pas satisfait de la suite “1 2 3 4 5 6 1 2 3 4 5 6”. 6 .585. en terme d’entropie.9 (Preuve de la perfection du code de Vernam). 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. Une suite de e e e e nombres g´n´r´e au hasard devra r´pondre ` des crit`res forts.252. k 1. Dans ce cas la source ´quivalente serait d’au plus n caract`res tous e e e k 1 distincts et de probabilit´ d’occurrence n . 6 ).36 e Chapitre 1 : Th´orie des codes 1 1 1 1 1 1 ( 6 . Alors e e H(SMk ) log2 n k . 6 . D´montrer que pour un code secret o` la clef K est g´n´r´e al´atoirement e u e e e e pour chaque message M on a H(M |K) = H(M ). 1. ou chiffrement parfait. Preuve. puisque c’est la mesure de la quantit´ d’information que nous avons adopt´e. mais parfois les modes d’organisation et les biais sont plus subtils. 6 Dans les deux cas l’entropie obtenue est bien inf´rieure ` deux fois celle du e a message initial. Il y a n k-uplets dans le message M . on obtient 36 groupes possibles chacun de probabilit´ 36 et e 1 d’entropie conforme ` la propri´t´ 2 : log2 (36) = log2 (62 ) = 2 log2 (6). a ee Toutefois. Nous pr´cisons ceci dans la propri´t´ 3. e et pourtant ils sont de bons angles d’attaque pour les casseurs de codes. 6 . e ee Propri´t´ 3. Un u chiffrement est parfait si le message chiffr´ C ne fournit aucune information e sur le message initial M .

on a e toujours H(M. D´montrer que le chiffrement ` clef jetable de Vernam est un chiffrement e a parfait. e Nous allons voir dans la section suivante comment construire des codes qui r´utilisent une clef unique et rendent le protocole d’´change moins fastidieux..5 Mise en pratique du chiffrement parfait ? On dispose d’une m´thode de cryptage dont on poss`de la preuve de la s´cue e e rit´.. et ce probl`me est loin d’ˆtre trivial.. C’est d’ailleurs la seule m´thode connue pour laquelle on ait prouv´ son e e e caract`re parfait. e e e La deuxi`me id´e est de g´n´rer des nombres al´atoires de bonne qualit´. C) = H(M. ces codes tendent vers cette propri´t´.1: Chiffrement bit ` bit (par flot). les protocoles d’´change des clefs entre ´metteurs et e e e destinataires restent probl´matiques.1. D’autre part.3 Codage par blocs. on utilise des chiffrements pratiquement sˆrs : la connaise u sance du message chiffr´ (ou de certains couples message clair/message chiffr´) e e . comme la e e e clef n’est pas r´utilisable. en d´duire e des relations entre les entropies conditionnelles de M .2. 1. m i+1 m i ci . Ainsi tous les autres syst`mes a e e u e sont th´oriquement cassables. il faut savoir g´n´rer des e e e clefs al´atoires. K. alg`bre et arithm´tique e e Le chiffrement de Vernam est aujourd’hui le seul algorithme cryptographique ` clef secr`te prouv´ inconditionnellement sˆr. d´montrer que dans un code de Vernam (C = M ⊕ K). 3. a e ki mn . e Pour ces syst`mes.3 Codage par blocs.. Solution page 280.1. K) = H(C. C et K. Cela permet de r´aliser un e e e e chiffrement bit ` bit (par flot) comme illustr´ sur la figure 1. K) . En utilisant les entropies conditionnelles et la d´finition du code de Vere nam. a 1. La premi`re id´e e ee e e sera de d´couper le message en blocs et de chiffrer chaque bloc s´par´ment. ou e e e e e e plus pr´cis´ment des nombres pseudo-al´atoires. c1 c0 Fig. C) = H(M. e Mais pour se servir de cette m´thode en pratique. e e Sans ˆtre parfaits. alg`bre et arithm´tique e e 37 2. 1.

a On peut d´cider par exemple. C’est ce qui est appel´ le mode de codage e e ECB. e e e caract`res de contrˆle) est repr´sent´ 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. cette ind´pendance e e e de codage entre les blocs n’est pas requise et les diff´rentes fa¸ons de combiner e c les blocs sont appel´s modes de chiffrement. Plus g´n´ralement. caract`res sp´ciaux. Chacun des 28 = 256 caract`res (majuscules. de choisir une clef unique. pour « Electronic Code Book ». minuscules. 1. est la chaˆ : ıne 0101010101001110010001010010000001000011010011000100010101000110.1. 11111111} . Dans le code ASCII. fonction de la e taille de la clef. . et de la r´utiliser. pour ´viter des protocoles d’´change de clef e e e trop fr´quents. . pour la repr´sene tation num´rique des lettres et signes de l’alphabet latin. le code ASCII (pour ee « American Standard Code for Information Interchange »).3.38 e Chapitre 1 : Th´orie 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 Blocs et modes de chaˆ ınage On peut coder chaque bloc d’un message par un mˆme algorithme de fa¸on e c ind´pendante pour chaque bloc. 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. le codage ASCII du message : UNE CLEF. 1. et l’alphabet du code est V = {0. Par exemple. 1}. . e l’alphabet source est l’alphabet latin.7). 00000001. e . .2: Un extrait du code ASCII. e e C’est aussi le principe de l’un des codes les plus c´l`bres.2 ci-dessous. Les mots de code sont tous les mots de longueur 8 sur V : C = {00000000. Le chiffrement par blocs est un standard qui sera ´galement e largement utilis´ pour la d´tection et la correction d’erreurs. Ceci impose le e e d´coupage des messages sources en blocs d’une certaine taille.

al´atoire par exemple. mn (1. le message M est d´coup´ en blocs mi de taille fixe. m1 m2 mn figure 1.2) IV = c0 Ek Ek Ek c1 c2 cn Fig. e . ECB. Chaque e bloc est d’abord modifi´ par XOR avec le bloc crypt´ pr´c´dent avant d’ˆtre e e e e e lui mˆme crypt´ conform´ment ` la figure 1. 1. C’est le mode de chiffrement le plus utilis´.3 par : e e e a ci = Ek (mi ⊕ ci−1 ) m1 m2 . Ainsi un bloc de message donn´ mi e Ek Ek Ek sera toujours cod´ de la mˆme mae e ni`re.2: Mode de chiffrement par blocs e phie.. parae m´tr´e par une clef k comme sur la e e . Le d´chiffrement n´cessite l’inverse e e e −1 de la fonction de codage Dk = Ek pour d´chiffrer : mi = ci−1 ⊕ Dk (ci ).Fig.1. Le mode CBC : Cipher Bloc Chaining Le mode CBC a ´t´ introduit pour qu’un bloc ne soit pas cod´ de la mˆme ee e e mani`re s’il est rencontr´ dans deux messages diff´rents. 1.3 Codage par blocs.3: Mode de chiffrement par blocs CBC. e e Chaque bloc est alors crypt´ s´pae e ci = Ek (mi ) (1..2..1) r´ment par une fonction Ek . alg`bre et arithm´tique e e Le mode ECB : Electronic Code Book 39 Dans ce mode.. Ce mode de chiffrement est le e plus simple mais ne pr´sente donc e c1 c2 cn aucune s´curit´ et n’est normalee e ment jamais utilis´ en cryptogra. Il faut ajouter une e e e valeur initiale C0 (ou IV pour « initial value »).

Ce mode est donc moins sˆr que le u CBC et est utilis´ par exemple pour les cryptages r´seaux.5. 1. mn (1. e . zi = Ek (zi−1 ) .40 Le mode CFB : Cipher FeedBack e Chapitre 1 : Th´orie des codes Pour ne pas avoir besoin de la fonction inverse pour d´crypter. L’int´rˆt de ce mode est que le d´chiffrement ne n´cessite pas l’impl´mentation ee e e e de la fonction Dk : mi = ci ⊕ Ek (ci−1 ). Ce mode est utile dans les e satellites pour lesquels minimiser le nombre de circuits embarqu´s est crucial.. il est possible e de faire un XOR apr`s le cryptage.. ci = mi ⊕ zi m1 m2 . e z0 = c0 . comme on e peut le voir sur la figure 1.4) IV = c0 1 Ek 0 1 0 1 Ek 0 1 0 1 Ek 0 1 0 c1 c2 cn Fig. c’est le principe du mode CFB.. mi = ci ⊕zi . 1. c’est le mode OFB suivant la figure 1.4. ci = mi ⊕ Ek (ci−1 ) m1 m2 . mn (1.3) IV = c0 Ek Ek Ek c1 c2 cn Fig. Ce qui se d´chiffre par : zi = Ek (zi−1 ) . e e Le mode OFB : Output FeedBack Une variante du mode pr´c´dent permet d’avoir un codage et un d´codage e e e totalement sym´trique.4: Mode de chiffrement par blocs CFB..5: Mode de chiffrement par blocs OFB.

. . il ne sait pas qu’un et un seul des blocs a ´t´ ee transmis incorrectement (par exemple. les fonctions de codage doivent ˆtre inversibles. ce qui n´cessitera des structures o` l’on peut e e u facilement calculer l’inverse d’un bloc. OFB ou CTR a ´t´ utilis´ et ´gal ` 2 si CBC ou ee e e a CFB a ´t´ utilis´.2 Structures alg´briques des mots de codes e L’´laboration des codes par blocs n´cessite de pouvoir faire des op´rations et e e e des calculs sur les blocs.10. rappelons les structures fondamentales. . Pour pouvoir faire ces calculs sur des bases alg´briques solides. mais malheureusement. mn Ek Ek Ek c1 c2 cn Fig. Mn e e qui sont crypt´s dans un sch´ma par blocs en C = C1 . Il fait intervenir le chiffrement d’un compteur de valeur initiale T : e ci = mi ⊕ Ek (T + i) T+1 (1. Bob re¸oit les e e c blocs Ci .3.5) T+n m1 T+2 m2 . Cn . alg`bre et arithm´tique e e Le mode CTR : Counter-mode encryption 41 Ce mode est ´galement totalement sym´trique. e . L’int´rˆt d’un tel mode e ee est que les diff´rents calculs sont ind´pendants.. D’autre part. mais en outre facilement pae e rall´lisable. ee e Solution page 281. e e mais qu’un mˆme bloc n’est a priori jamais cod´ de la mˆme fa¸on.6: Mode de chiffrement par blocs CTR. .3 Codage par blocs. . l’op´ration ⊕ sur un bloc de bits est e l’addition modulo 2 de deux vecteurs de bits..1. 1. Le d´chiffrement est identique : mi = ci ⊕ Ek (T + i). 1. des 1 ont ´t´ chang´s en 0 et vice versa ee e durant la transmission du bloc C1 ). Montrer que le nombre de blocs du message mal d´crypt´s par Bob est ´gal ` e e e a 1 si l’un des modes ECB. Un message M est d´coup´ en n blocs M = M1 . Par exemple. e e e c Exercice 1. . comme pour le mode ECB. .

6 = 33 . +. e a Si un ´l´ment g ∈ G est tel que pour tout a ∈ G. a ∗ (b ∗ c) = (a ∗ b) ∗ c. c ∈ G. ∗) est un ensemble muni d’un op´rateur binaire interne v´rifiant e e les propri´t´s suivantes : ee 1. n − 1}. ∗) et a ∈ G. b ∈ G). Tout ´l´ment a un inverse : pour tout a ∈ G. son cardinal est l’ordre de e a. Propri´t´ 4. et si on choisit pour loi e ee de composition la multiplication modulo 7. 2. 3. On dit qu’un sous-ensemble H de G est un sous-groupe de e G lorsque les restrictions des op´rations de G conf`rent ` H une structure de e e a groupe. . e ee Soient un groupe (G. b. Preuve. l’ensemble des entiers Zn = {0. 5 = 35 . 4 = 34 . . . a×(b+c) = (a×b)+(a×c) et (b + c) × a = (b × a) + (c × a). . e e e pour tout x ∈ G : xn = e. b. not´ < a > ou Ga . Par exemple. car 1 = 30 . . Si G est fini. Soit a un ´l´ment du groupe G. si n = 7. e Anneaux Un anneau (A. i ∈ N} est un sous-groupe de G. Si ce sous-groupe est fini. tel que pour tout a ∈ G. Il existe un ´l´ment neutre e ∈ G. pour un entier e e e n fix´. c ∈ A. b. 1. Donc Im(fa ) = G . l’appliee cation fa : x → a×x d´finie de G dans G est une bijection. on trouve ee a ∗ e = e ∗ a = a. . e 2. e) de cardinal n. 3. muni de la loi d’addition e modulo n est un groupe cyclique g´n´r´ par 1 . alors a est inversible. Ainsi an x∈G x = x∈G x. ∗ est associative : pour tous a. c ∈ A. L’ensemble {ai . on note an la r´p´tition de la loi ∗. Or y∈Im(fa ) y = x∈G a × x = an x∈G x (comu u P mutativit´ de ×). a × (b × c) = (a × b) × c. 3 = 31 . d’o` an = e. il existe a−1 ∈ G tel que ee a ∗ a−1 = a−1 ∗ a = e. . le cardinal de tout sous-groupe de G divise le cardinal de G. ∗) ou encore une racine primitive. × est associative : pour tous a. Un e e groupe est dit cyclique s’il poss`de un g´n´rateur. si la loi est commutative (a ∗ b = b ∗ a pour tous a. 2 = 32 = 9. ∗. ee e e a ∗ · · · ∗ a. De plus. il existe i ∈ Z. × est distributive sur + : pour tous a. 6} est un groupe cyclique g´n´r´ par 3. portant sur n termes ´gaux ` a pour tout n ∈ N∗ . ee alors g est un g´n´rateur du groupe (G. (A. alors G est dit ab´lien. (Lagrange) Dans un groupe fini ab´lien (G.42 Groupes e Chapitre 1 : Th´orie des codes Un groupe (G. . Pour un ´l´ment a d’un groupe G. +) est un groupe ab´lien. Donc. l’ensemble {1. ×) est un ensemble muni de deux op´rateurs binaires internes e v´rifiant les propri´t´s suivantes : e ee 1. tel que a = g i . . e d’o` y∈Im(fa ) y = x∈G x.

e Pour un ´l´ment a d’un anneau A. (Z. le produit a × g reste dans I pour n’importe quel ´l´ment a de l’anneau A. Un id´al I est un sous-groupe d’un anneau A pour e la loi + qui est « absorbant »pour la loi × : pour g ∈ I. ee e c’est leur inverse pour la loi +. A est dit unitaire. e Corps Un corps (A. ×) est un groupe. l’inverse (ou oppos´) de x par la loi + est not´ −x . Ils n’ont cependant pas forc´ment un inverse e pour la loi ×. (A \ {0}. Par exemple. on e e dit que l’anneau est de caract´ristique 0. le plus petit ´l´ment de cet Si l’ensemble {k ∈ N ee ensemble est appel´ la caract´ristique de l’anneau. alg`bre et arithm´tique e e 43 Si de plus × poss`de un neutre dans A. Si de plus × est e commutative. (Q. ×A ) et (B. ×) est commutatif. c’est donc un corps commutatif . +E . e e e autrement dit si pour deux ´l´ments x et y v´rifiant xy = 0 alors forc´ment ee e e l’un deux au moins est nul. A est dit commutatif. ×) un anneau tel qu’il existe une bijection f de E sur A.1. alors E peut ˆtre muni d’une structure d’anneau : e x +E y = f −1 (f (x) + f (y)) et x ×E y = f −1 (f (x) × f (y)) . e . +B . (1. ×) est un anneau unitaire. ×) est un anneau e unitaire commutatif de caract´ristique 0. Pour tout x ∈ A la partie ee Ax = {ax. l’inverse de x par la loi × est not´ e e e x−1 . C’est ce que a nous ferons le plus souvent.3 Codage par blocs. (1. on peut identifier l’un ` l’autre. Lorsque e e a deux anneaux sont isomorphes. Si (A. La caract´ristique d’un corps est sa caract´ristique en tant qu’anneau. +. +. e a ∗ : k · 1 = 0} n’est pas vide. 2. ×E ) ainsi d´fini est ´videmment isomorphe ` A. Un id´al I e e e e e de A est dit principal s’il existe un g´n´rateur x (tel que I = Ax). ×) est un ensemble muni de deux op´rateurs binaires internes e v´rifiant les propri´t´s suivantes : e ee 1. L’ensemble des inversibles pour la loi × est souvent not´ A∗ . +. e e Par exemple. on note n · a (ou plus simplement na) la ee somme a + · · · + a portant sur n termes ´gaux ` a pour tout n ∈ N∗ . Un anneau commutatif est int`gre si il ne poss`de pas de diviseur de z´ro. Dans le cas contraire. +. (A.7) L’anneau (E. +. +A . e Deux anneaux (A. +. a ∈ A} est un id´al de A appel´ id´al engendr´ par x. Tous les ´l´ments de A ont un oppos´. Un anneau e e est principal si et seulement si tout id´al y est principal. ×) est un corps commutatif de caract´ristique 0. ×B ) sont isomorphes lorsqu’il existe une bijection f : A −→ B v´rifiant 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).6) Si E est un ensemble quelconque et (A.

nous dirons d´sormais anneau (respectivement corps) pour d´signer e e un anneau unitaire commutatif (respectivement un corps commutatif).u = (λ + µ). e L’ensemble des mots de code est alors Fn .u) = (λ × µ). L’ensemble {0. qui e sera tr`s utilis´ en th´orie des codes.u. Or e tout anneau euclidien est principal. 4. Toutes ces structures sont e tr`s g´n´rales. Pour tous λ. Ceci implique l’existence d’un plus grand commun diviseur (pgcd) pour tout couple d’´l´ments (a. 2. Les nombres q et r sont respectivement le quotient et le reste2 de la division euclidienne. on peut manipuler les mots de code par des additions et des multiplications.u + λ. e a e a Espaces vectoriels Un ensemble E est un espace vectoriel sur un corps V s’il est muni d’une loi de composition interne + et d’une loi externe “. 3. Zn l’ensemble des entiers positifs ou nuls et strictement plus petits que n. µ ∈ V et u ∈ E. dans la suite.u. alors λ. R le corps des r´els.v. Une particularit´ des codes est qu’ils e e e e e constituent des ensembles finis. Les groupes et corps finis ont des propri´t´s ee additionnelles que nous utiliserons intens´ment au fils de cet ouvrage. L’ensemble Zn muni de l’addition et de la multiplication modulo n est un anneau not´ Z/nZ. et not´s q = a div b et r = a mod b (pour a modulo b). Pour tout u ∈ E. 1}. pour n ∈ N \ {0. enti`res ou vectorielles. Deux corps sont isomorphes lorsqu’ils sont isomorphes en tant qu’anneaux. v ∈ E. mais dans ce cas s = r + |b| v´rifie ´galement e e e e a = (q ± 1)b + s et s = |s| < |b| . (E. 1} muni des op´rations d’addition e et de multiplication est un corps commutatif not´ F2 .44 e Chapitre 1 : Th´orie des codes Puisque tous les anneaux et corps qui nous int´ressent dans ce cours sont come mutatifs. nous prenons donc toujours r positif.u + µ.”. alors λ. b). alors λ. e e e 2 le reste r peut a priori ˆtre n´gatif. e On note Z l’ensemble des entiers. Un ´l´ment d’un espace vectoriel est appel´ un vecteur. +) est groupe commutatif. c’est-`-dire que pour tout couple d’´l´ments a ee a et b (a b) de cet ensemble. 5. µ ∈ V et u ∈ E. . Ce pgcd est le ee g´n´rateur de l’id´al Aa + Ab. et les ´l´ments du ee e ee corps V sont des scalaires. il existe q et r tels que a = bq + r et |r| < |b|.u = u. et classiques en alg`bre. e N l’ensemble des entiers positifs ou nuls. 2 Selon la structure choisie.(µ. Pour tous λ.(u + v) = λ. On dit qu’un anneau est euclidien s’il est e e e muni de la division euclidienne. Pour tous λ ∈ V et u. telles que : 1. On dit qu’un sous ensemble W d’un corps V est un sous-corps de V lorsque les restrictions des op´rations de V ` W conf`rent ` W une structure de corps. alors 1V . L’ensemble des tableaux e de bits de taille n peut donc ˆtre muni d’une structure d’espace vectoriel. Q le corps des rationnels.

1.3 Codage par blocs, alg`bre et arithm´tique e e

45

Si p est un nombre premier, l’anneau Z/pZ est un corps de caract´ristique e p. En effet, le th´or`me classique de B´zout (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 ´l´ment non nul de Zp , cette identit´ appliqu´e ` 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 appel´s corps premiers. e Alg`bre lin´aire e e Des rudiments d’alg`bre linaire sont n´cessaires ` la lecture d’une grande partie e e a de ce livre. Sans pr´tention explicative, nous d´finissions ici les concepts utiles e e et introduisons les notations principales. Un ensemble de vecteur x1 , . . . , xn est un ensemble ind´pendant si pour tous e scalaires λ1 , . . . , λn , n λi xi = 0 implique λ1 = · · · = λn = 0. i=1 La dimension d’un espace vectoriel V , not´e dim(V ) est le cardinal du plus e grand ensemble de vecteurs ind´pendants 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 ind´pendants. e Une application lin´aire est une application d’une structure dans une autre, e qui pr´serve les lois de composition. C’est-`-dire, si (A, +) et (B, ×) sont deux e a groupes, une application f est dite lin´aire 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 pr´serv´e, ` savoir f (λ.x) = λ.f (x). e e a L’image d’une application lin´aire f d’un espace vectoriel E sur un espace e vectoriel F, not´e Im(f ), est l’ensemble des vecteurs y ∈ F tels qu’il existe e x ∈ E, f (x) = y. Le noyau d’une application lin´aire f d’un espace vectoriel E sur un espace e vectoriel F, not´ Ker(f ), est l’ensemble des vecteurs x ∈ E tels que f (x) = 0. e Il est facile de v´rifier que Ker(f ) et Im(f ) sont des espaces vectoriels. e Si Im(f ) est de dimension finie, celle-ci est appel´e le rang de l’application e lin´aire et est not´ Rg(f ) = dim (Im(f )). Si en outre, E est ´galement de e e e dimension finie alors on a dim(Ker(f )) + dim(Im(f )) = dim(E). Une matrice M de taille (m, n) est un ´l´ment de l’espace vectoriel V m×n , ee repr´sent´ par un tableau de m lignes de taille n, ou n colonnes de taille e e m. L’´l´ment de la ligne i et e la colonne j de la matrice est not´ Mi,j . La ee e multiplication d’un vecteur x de taille n par une telle matrice donne un vecteur y de taille m v´rifiant yi = n Mi,k xk pour i de 1 ` m ; cette multiplication e a k=1 est not´e y = M x. e

46

e Chapitre 1 : Th´orie des codes

` A toute matrice M correspond une application lin´aire f de V m dans V n , e d´finie par f (x) = M x. R´ciproquement, toute application lin´aire peut ˆtre e e e e ´crite ainsi sous forme matricielle. Les proc´d´s de codage que nous verrons e e e tout au long de ce livre, et principalement au chapitre 4, font largement appel aux applications lin´aires, ce qui permet de montrer rigoureusement les e propri´t´s de ces fonctions. ee

1.3.3

Codage bijectif d’un bloc

Maintenant que nous disposons de structures dans lesquelles nos blocs peuvent ˆtre additionn´s, multipli´s, divis´s (selon la division euclidienne), et poss´der e e e e e un inverse, nous donnons ici des exemples fondamentaux de calculs qu’il est possible de faire dans des ensembles qui poss`dent une bonne structure alg´e e brique. Les blocs ´tant de tailles finies, les ensembles manipul´s dans cette e e section sont finis. Inverse modulaire : algorithme d’Euclide Le th´or`me de B´zout garantit l’existence des coefficients et donc de l’inverse e e e d’un nombre modulo un nombre premier, et c’est l’algorithme d’Euclide qui permet de les calculer efficacement. Dans sa version fondamentale, l’algorithme d’Euclide 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 effet, si a et u b ont un diviseur commun d alors a − b, a − 2b, . . . sont aussi divisibles par d. Un principe r´cursif se dessine : e Algorithme 3 PGCD : algorithme d’Euclide. Entr´es Deux entiers a et b, a b. e Sorties pgcd(a, b) Si b = 0 Alors Renvoyer a ; Sinon Calculer r´cursivement pgcd(b, a mod b) et renvoyer le r´sultat ; e e Fin Si

1.3 Codage par blocs, alg`bre et arithm´tique e e

47

Exemple : D´terminons 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 d’Euclide ´tendu. La version dite « ´tendue » de l’algorithme e e d’Euclide, celle que nous emploierons tr`s souvent dans cet ouvrage, permet, en e plus du calcul du pgcd de deux nombres, de trouver les coefficients de B´zout. e Il est ´tendu aussi parce qu’on veut le rendre un peu plus g´n´rique en lui e e e donnant la possibilit´ de l’appliquer non seulement ` des ensembles de nombres e a mais aussi ` n’importe quel anneau euclidien. Ce sera le cas des polynˆmes, a o comme nous le verrons dans les sections suivantes. Le principe de l’algorithme est d’it´rer 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 ` l’it´ration 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 −151×522+174×453 = 3. D’o` d = 3, x = −151 et y = 174. u On donne une version de l’algorithme d’Euclide ´tendu qui r´alise ce calcul e e en ne stockant que la premi`re ligne de G. Il affecte les variables x, y et d de e fa¸on ` v´rifier en sortie : d = pgcd(a, b) et ax + by = d. c a e Pour une r´solution « ` la main », on pourra calculer r´cursivement les ´quae a e e tions (Ei ) suivantes (en s’arrˆtant lorsque ri+1 = 0) : e (E0 ) : 1×a + 0×b = a (E1 ) : 0×a + 1×b = b (Ei+1 ) = (Ei−1 ) − qi (Ei ) ui × a + vi × b = ri

48

e Chapitre 1 : Th´orie des codes

Algorithme 4 PGCD : algorithme d’Euclide ´tendu. e Entr´es Deux ´l´ments a et b d’un 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 r´cursivement Euclide ´tendu sur b, a mod b ; e e Soient d, x, y les ´l´ments du r´sultat. ee e Calculer u = x − (a div b) ∗ y ; Renvoyer d, y, u ; Fin Si Un exemple de r´solution par cette m´thode est donn´ en solution de l’exercice e e e suivant. Exercice 1.11 (Algorithme d’Euclide ´tendu). On demande de trouver e les coefficients de B´zout 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 th´or`me de B´zout. e e e e Th´or`me 1 (B´zout). 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| v´rifiant e l’´galit´ de B´zout ax + by = d et l’algorithme d’Euclide ´tendu est correct. e e e e Preuve. Tout d’abord, montrons que la suite des restes est toujours divisible par d = pgcd(a, b) : par r´currence si rj−2 = kd et rj−1 = hd alors rj = e rj−2 − qj rj−1 = d(k − qj h) et donc pgcd(a, b) = pgcd(rj−1 , rj ). Ensuite, la suite des restes positifs rj est donc strictement d´croissante et minor´e par 0 e e donc converge. Cela prouve que l’algorithme termine. En outre, la suite converge forc´ment vers 0, puisque sinon on peut toujours e continuer ` diviser le reste. Il existe donc un indice i tel que ri−1 = qi+1 ri + 0. a Dans ce cas, pgcd(ri−1 , ri ) = ri et la remarque pr´c´dente indique donc que ri e e est bien le pgcd recherch´. e Il reste ` montrer que les coefficients conviennent. Nous proc´dons par r´a e e currence. Clairement le cas initial a mod b = 0 convient et l’algorithme est correct dans cas. Ensuite, notons r = a mod b et q = a div b, alors a = bq + r. Par r´currence, avec les notations internes de l’algorithme 4 on a e que d = xb + yr avec |x| < b et |y| < r. Cette relation induit imm´diatement e

1.3 Codage par blocs, alg`bre et arithm´tique e e que d = ya + (x − qy)b avec |y| < r < b et |x − qy| Ce qui prouve que l’algorithme est correct.

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

´ Exercice 1.12 (Calcul modulaire). L’algorithme d’Euclide Etendu permet aussi de r´soudre des ´quations lin´aires modulaires. Donner une m´thode qui e e e e r´sout 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 l’algorithme d’Euclide. A chaque ´tape, le plus grand e e des nombres est au moins divis´ par deux, donc sa taille diminue d’au moins 1 e bit. Le nombre d’´tapes est par cons´quent 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 ` l’´cole primaire pour effectuer une division euclidienne ont a e 2 un coˆt de O(log2 (a)). Le coˆt total est finalement major´ par O(log3 (a)), soit u u e 2 O(n3 ) si n est la taille des donn´es. Une ´tude plus fine de l’algorithme peut e e toutefois pr´ciser cette complexit´. En effet, le coˆt de l’algorithme d’Euclide e e u est plutˆt de l’ordre de O(log2 (a)) ! La preuve est technique, mais l’id´e est o e 2 assez simple : soit il y a effectivement de l’ordre 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)) op´rations, soit les quotients sont grands e et chaque division et multiplication doit se faire en O(log2 (a)) op´rations, mais e 2 alors le nombre d’´tapes est constant. e Exercice 1.13. Traduisez l’algorithme d’Euclide ´tendu dans votre langage e de programmation pr´f´r´. ee e Solution (en C++) page 282. L’indicatrice d’Euler et le th´or`me de Fermat e e Soit n 2 un entier. On note Z∗ l’ensemble 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 appel´e indicatrice d’Euler. n Par exemple, ϕ(8) = 4. De plus, si p est un nombre premier, ϕ(p) = p − 1. Une formule plus g´n´rale fait l’objet de l’exercice 1.16. e e ee Dans Z∗ , tout ´l´ment x a un inverse : en effet, comme x est premier avec n, n l’identit´ de B´zout assure l’existence de deux entiers de signes oppos´s u et e e e

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

e Chapitre 1 : Th´orie des codes

u.x + v.n = 1 On a alors u.x = 1 mod n, i.e. u = x−1 mod n. On appelle u l’inverse de x modulo n. Le calcul de u se fait grˆce ` l’algorithme d’Euclide ´tendu. a a e Th´or`me 2 (Euler). Soit a un ´l´ment quelconque de Z∗ . On a : aϕ(n) = 1 e e ee n mod n. Preuve. Soit a un ´l´ment quelconque de Z∗ . L’ensemble des produits des ee n ´l´ments de Z∗ par a, Ga = {y = ax mod n pour x ∈ Z∗ } est ´gal ` Z∗ . En ee e a n n n effet, quel que soit y ∈ Z∗ , on peut poser x = a−1 y puisque a est inversible et n r´ciproquement si a et x sont inversibles modulo n alors leur produit l’est aussi e ((ax)−1 = x−1 a−1 mod n). Ainsi, comme ces deux ensembles sont ´gaux, les e produits respectifs de tous leurs ´l´ments sont aussi ´gaux modulo n : ee e x=
x∈Z∗ n y∈Ga

y=
x∈Z∗ 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) ´l´ments dans Z∗ on obtient la formule ee n suivante modulo n : x = aϕ(n)
x∈Z∗ n x∈Z∗ n

x mod n

La conclusion vient alors du fait que les ´l´ments de Z∗ ´tant inversibles, leur ee n e produit l’est aussi et donc, en simplifiant, on obtient 1 = aϕ(n) mod n. P Le th´or`me de Fermat se d´duit directement du th´or`me d’Euler dans le cas e e e e e o` n est un nombre premier. u Th´or`me 3 (Fermat). Si p est premier, alors tout a ∈ Zp v´rifie : ap = a e e e mod p. Preuve. Si a est inversible, alors le th´or`me d’Euler nous donne ap−1 = 1 e e mod p. En remultipliant par a on obtient la relation d´sir´e. Le seul none e inversible de Zp si p est premier est 0. Dans ce cas, on a imm´diatement e 0p = 0 mod p. P Le th´or`me chinois, originellement formul´ par le math´maticien 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 arithm´tique e e

51

Th´or`me 4 (Th´or`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 d’´quations modulaires {x = ai mod mi , pour i = 1..k}. En posant Ni = ni , e cette unique solution est donn´e par : e
k k

x=
i=1

ai Ni Ni−1 mod ni

mod
i=1

ni

Preuve. Nous proc´dons en deux temps : nous montrons d’abord l’existence e de x puis l’unicit´. Comme les ni sont premiers entre eux, Ni et ni sont premiers e entre eux. Le th´or`me d’Euclide nous assure alors l’existence de l’inverse de e e Ni modulo ni , not´e yi = Ni−1 mod ni . Nous posons ensuite x = n ai yi Ni e i=1 mod N et il est facile de v´rifier que x ainsi d´fini convient ! En effet, pout e e tout i, x = ai yi Ni mod ni puisque ni divise tous les Nj avec j = i. Mais alors la d´finition de yi donne x = ai .1 = ai mod ni . e Il nous reste ` prouver l’unicit´ de x. Supposons qu’il 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 proc´dant par e r´currence, comme ni+1 est premier avec le produit n1 n2 . . . ni , on en d´duit e e que x2 − x1 = 0 mod N , ou encore que x2 = x1 mod N , ce qui montre bien l’unicit´ 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 d´duire l’inverse 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 l’indicatrice d’Euler). 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 d´duire la formule g´n´rale la formule d’Euler, en utilisant la d´come e e e position d’un nombre en facteurs premiers. Solution page 282.

52

e Chapitre 1 : Th´orie des codes

L’exponentiation modulaire et le logarithme discret L’exponentiation modulaire est une fonction de codage dont le principe est tr`s largement utilis´ dans les m´thodes modernes de chiffrement. e e e Ea : Zn b −→ −→ Zn ab mod n

Elle est associ´e ` sa fonction de d´codage. 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 l’index) 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 m´thode est appel´e ´l´vation a e e ee r´cursive au carr´. Elle consiste en la d´composition de b en carr´s 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 n´cessite que 5 multiplications : 3 ´l´vae ee tions au carr´ et 2 multiplications. e De mani`re g´n´rale, la complexit´ de l’algorithme 5 est O(log2 n) multiplicae e e e tions modulo n. Algorithme 5 Puissance Modulaire. Entr´es Trois entiers a = 0, b et n 2. e Sorties ab mod n Si b = 0 Alors Renvoyer 1 ; Sinon Calculer r´cursivement la puissance modulaire a e Soit d le r´sultat 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 effet, ` chaque appel, l’exposant b est divis´ par 2. Il y a donc au plus log2 b a e appels r´cursifs. Lors de chaque appel, on effectue au plus 2 multiplications : e

Mais si la puissance modulaire est un calcul r´alisable en temps raisonnable comme nous venons e de le voir. e e e Un g´n´rateur de l’ensemble Z∗ est un nombre g tel que {g i . d’o` g x = g y mod n. . P Mais cela ne permet pas le calcul du logarithme discret avec une complexit´ e x = y. Par contre.17 (Calculs d’inverse). Proposer un algorithme de calcul de l’inverse dans Z/nZ fond´ sur le e th´or`me d’Euler. alg`bre et arithm´tique e e 53 une ´l´vation au carr´ et ´ventuellement une multiplication par a. (⇐) Si x = y mod ϕ(n). u (⇒) Comme la s´quence des puissances de g est p´riodique de p´riode ϕ(n). e e Application : calculer (rapidement) 22−1 mod 63 et 52001 mod 24. On pourra utiliser : 222 mod 63 = 43. Ce coˆt est raisonnable u u 2 par rapport ` O(log2 n) qui est le temps n´cessaire pour la lecture de a ou a e l’´criture du r´sultat.pδ2 . u Le coˆt final de l’algorithme est donc O(log2 b log2 n). il est difficile de calculer x tel que g e m´thode simple consiste en l’´num´ration exhaustive de tous les x possibles. Le probl`me du logarithme discret (qu’on note DLP. e e e et prend un temps O(n). Mˆme en e utilisant les algorithmes de multiplication na¨ (ceux vus ` l’´cole primaire). si n = 10100 . ce e qui. Si g est un g´n´rateur de Z∗ . on a x = y + k ∗ ϕ(n). e e Ainsi. o` les pi sont des entiers premiers distincts. l’´num´ration e e e exhaustive pour calculer le logarithme discret demande 10100 op´rations. donc sur des nombres de log2 n chiffres. u 1 2 k Solution page 283. Aucun algorithme polynomial en log2 n (la taille de l’entr´e) n’est connu pour ce probl`me. nous l’avons vu. ıfs a e 2 le coˆt d’une telle multiplication est O(log2 n). 2. y ∈ N : g Preuve.3 Codage par blocs. le calcul de la puissance modulaire demande moins de 108 op´rations. 224 mod 63 = 22. . il n’en est pas de mˆme pour le logarithme discret. . Donner trois algorithmes diff´rents pour calculer l’inverse de y modulo e N = pδ1 . alors e e e e n x = g y mod n si et seulement si x = y mod ϕ(n). Etant donn´ y. pour Discrete Logarithm e Problem) est le calcul inverse de la puissance modulaire.1. Ces op´raee e e e tions sont faites modulo n. On tirera de e cette dissym´trie des principes fondamentaux pour la cryptographie. 1. Or g ϕ(n) = 1 mod n. pδk . pour tous x. est impensable en un temps raisonnable ! ! ! . i ∈ N} = Z∗ . e e e alors g x = g y mod n =⇒ x = y mod ϕ(n). La seule ´ raisonnable. e e n n Th´or`me 5 (logarithme discret). soit moins de 1 seconde sur un PC. e Le r´sultat suivant est connu sous le nom de th´or`me du logarithme discret. e e Exercice 1.

e ea e e et la difficult´ ` d´coder sans la clef. On parle de fonction ` sens unique (parfois a a a abr´g´ par FSU). il faut trouver une fonction E de chiffrement qui soit rapide ` calculer mais longue ` inverser. e a ˜ – il est difficile (i. – D=E ˜ – il est facile (i. C’est une notion tout ` fait cruciale en cryptographie. plusieurs ann´es par exemple). a Fonctions ` Sens Unique a Dans des syst`mes cryptographiques dits ` clef publique. en rempla¸ant « inconnu » par « extrˆmement long ` calculer sur un c e a ordinateur » (i. e e e e . Ce type de fonctions. e a Autrement dit.7. a Le param´trage par une clef ajoutera la facilit´ ` d´coder en poss´dant la clef. e e e e Dans cet exemple de codage par exponentiation modulaire et d´codage par loe garithme discret.e. les fonctions E et D d’un e syst`me de cryptographie ` clef publique doivent v´rifier : e a e −1 pour garantir D(E(M )) = M . 1. tandis que le syst`me de d´codage doit ˆtre inconnu. appliquer e des principes similaires aux algorithmes de factorisation.54 e Chapitre 1 : Th´orie des codes En pratique. facile x y=f(x) difficile Fig.e. en particulier pour la cryptograe phie ` clef publique. on connaˆ forc´ment D puisque D = E ıt e En fait. tr`s rapide) de calculer M = E(M ) ` partir de M . le fait que la fonction de codage E soit connue et la fonction de d´codage D soit inconnue semble a priori contradictoire : si l’on connaˆ E. ea e De bonnes FSU sont des fonctions telles que la recherche de x ` partir de F (x) a soit un probl`me math´matique r´put´ difficile. Ce sont des m´thodes e qui trouvent les diviseurs des nombres compos´s. que nous verrons en fin de e chapitre. pour tenter de r´soudre le logarithme discret. qu’on peut calculer rapidement dans un sens et pas dans l’autre. est crucial pour la th´orie des codes. sur e e a laquelle sont fond´s tous les codes modernes. tr`s long) de retrouver M ` partir de M . on peut. le « syst`me de coe a e dage » doit ˆtre connu. Le principe est illustr´ dans la e e figure 1.e. e ıt −1 .7: Principe d’une fonction ` sens unique.

la probabilit´ d’erreur devient de plus e e e en plus faible et finalement n´gligeable. s’il l’on r´p`te ce test suffisamment de fois et qu’il e e e e e donne constamment la mˆme r´ponse. Mais « choisir un nombre premier » n’est pas une tˆche ´vidente. On en d´duit que partant de n impair. e e simple calcul´es en arithm´tique modulo n tendent ` avoir un comportement e e a al´atoire. ` la fois pour construire des codes structur´s comme des corps. N´anmoins. La r´ponse done e e n´e par le calcul est donc seulement probabiliste.4 Construction des corps premiers et corps finis Nous avons mentionn´ que nous chercherons le plus possible ` donner ` nos e a a codes des structures de corps. les it´rations d’une fonction F mˆme ıfs.1. 1. c’est-`-dire des algorithmes qui d´terminent si un nombre donn´ est e a e e premier ou non. Le nombre de nombres premiers inf´rieurs ` n est asymptotie a quement n/ ln(n). et de munir l’ensemble {0. En th´orie des codes. e Tests de primalit´ et g´n´ration de nombres premiers e e e Si l’on ne connaˆ pas d’algorithme pour factoriser un entier n en temps polyıt O(1) nomial log2 n. le test de Miller-Rabin est un algorithme qui d´termine si un nombre donn´ est probablement premier. Ce type de calcul est d’ailleurs utilis´ dans la plupart des g´n´rateurs e e e e de nombres al´atoires. . p − 1} de l’addition et de la multiplication modulo p. afin de faciliter les op´rations. s’il est compos´. . on utilise des tests de e u primalit´. et en lui appliquant le test. Connaissant e a F et n grand. ou encore pour fae briquer des syst`mes de cryptographie sˆrs. il apparaˆ difficile de r´soudre l’´quation : trouver x tel que ıt e e F (x) = a mod n. recommencer avec n + 2 jusqu’` trouver un e a nombre premier. en moyenne O(ln(n)) e it´rations suffisent pour trouver un nombre premier en ajoutant 2 ` n ` chaque e a a it´ration. dont a e e a e nous donnons un aper¸u afin de ne laisser aucun vide algorithmique dans nos c m´thodes de codage. alg`bre et arithm´tique e e 55 L’int´rˆt de calculer en arithm´tique modulaire est double. . C’est un domaine d’´tude ` part enti`re. .6. Il suffit e c e e de choisir un nombre premier p. D’une part. comme nous le verrons ` la section 1. c’est-`-dire que celle-ci peut e a ˆtre erron´e.3 Codage par blocs. Pour cela. on peut. En prenant un grand nombre impair n. il est tr`s utile de savoir g´n´rer des nombres e e e e premiers. et rendu effie e e cace en pratique par Rabin. et a e donc ais´ment manipulables pour la correction d’erreurs. donc d’inverser la fonction F . e . Pour cela. e Le test de primalit´ le plus utilis´ est un test propos´ par Miller. il est revanche possible de g´n´rer un nombre premier p rae e pidement. les ee e calculs « modulo n » sont tr`s rapides : ils ont un coˆt O(log2 n) avec les e u algorithmes les plus na¨ D’autre part. Nous avons maine tenant une premi`re fa¸on de g´n´rer un bon code : le corps premier.3.3.

la probabilit´ d’´chouer est donc inf´rieure ` 4 . On proc`de comme suit : e e a e 1. Soit n un nombre impair et soient s et t tels que n − 1 = t2s avec t impair. on en d´duit e e e que n n’est pas premier (il est compos´). donc e e e t − 1 = 0 mod n . e ee Algorithme 6 Test de primalit´ de Miller-Rabin. On applique le test de composition Miller-Rabin pour chaque entier ai . Fin Si On dit que a r´ussit 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. a(n−1) − 1 = 0 mod n . on a a(n−1) − 1 = at 2s − 1 = (at − 1)(at + 1)(a2t + 1) . e Si n est impair et non premier. . a(n−1) − 1 = 0 mod n . e Sorties Soit n est compos´. Alors e e Renvoyer « n est probablement premier ». moins de (n − 1)/4 nombres a ´chouent au test e de composition de Miller-Rabin. On tire au hasard k nombres ai distincts.56 e Chapitre 1 : Th´orie des codes Test de Miller-Rabin. . en utilisant le th´or`me de Fermat. . e Soient s et t tels que n − 1 = t2s Soit a un nombre entier al´atoire entre 0 et n − 1. . . et ` chaque ´tape a e Si q = n − 1 Alors Renvoyer « n est compos´ » e Fin Si Si on n’a pas trouv´ de preuve que n est compos´. e Entr´es Un entier n 4. . On tire au hasard un nombre impair n . En choisissant a au hasard dans {1. e e e a 1 Ce test peut ˆtre utilis´ efficacement pour fabriquer un nombre premier avec e e une probabilit´ inf´rieure ` 4−k de se tromper. Si n est premier. n−1}. – soit a i – soit at2 + 1 = 0 mod n avec 0 i < s. . (a(2 s−1 )t + 1). Le test de composition de Miller-Rabin est bas´ sur cette propri´t´. 2. . 1 < ai < n. . 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. . d’apr`s le th´or`me de Fermat. . dans ce cas. soit il est probablement premier. Pour un entier a < n quelconque. s − 1. En effet.

alg`bre et arithm´tique e e 57 3. e On sait construire des grands corps premiers. on en d´duit que n est e e premier . dˆ ` Agrawal. Kayal et Saxena. e e a 4. il faut e r´duire la taille des polynˆmes (ce qui est fait en effectuant le test modulo e o r − 1) pour r v´rifiant certaines propri´t´s3 ) et il faut suffisamment de (X e ee t´moins a. Les ´tudes e e e e e th´oriques montrent donc que ce test est tr`s efficace et sˆr. la probabilit´ de se tromper est inf´rieure ` 4−k . le test devient alors exponentiel en la taille de n. Le coˆ t moyen de l’algorithme de g´n´ration de d’erreur de l’ordre de 4 u e e nombre premier est donc major´ par O(k log4 n).3 Codage par blocs. mais seulement de l’ordre de log O(1) (n). alors pour tout a e (X − a)n = (X n − a) mod n. c La complexit´ d’un test de Miller-Rabin est similaire ` celle de l’´l´vation ` e a ee a la puissance modulo. le test AKS. Si aucun ai ne r´ussit le test de composition. Malgr´ ce r´sultat e e e th´orique important. un th´or`me de 1990 montre qu’il suffit de tester les 2 log2 n pree e miers entiers. on recommence en rempla¸ant n par n + 2. e e e e en d´veloppant explicitement (X − a)n . Pour rendre le test polynomial. Burgess a prouv´ que e 0. sans le recours de l’hypoth`se de Riemann. Pour construire un corps fini de n’importe quelle taille (y compris si cette taille n’est pas un nombre premier). e e u Test AKS. e ee nettement plus performants ` ce jour. Toutefois. il est possible de rendre d´terministe l’algorithme de Miller-Rabin e en testant suffisamment de nombres a. il faudra en moyenne de l’ordre de ln(n) essais pour trouver un nombre premier.134 ´tait suffisant pour obtenir tester tous les nombres a jusqu’` seulement n a e une certitude. Sinon. L’algorithme AKS v´rifie cette ´galit´ pour un certain nombre de t´moins a. Par exemple. nous aurons besoin d’introduire l’anneau des polynˆmes sur un corps quelo conque.1. puisqu’il y a environ e n e a ln(n) nombres premiers inf´rieurs ` n. en admettant l’Hypoth`se de Riemann G´n´ralis´e. avec ce test il est facile de g´n´rer un nombre premier de 1000 e e chiffres d´cimaux avec une probabilit´ d’erreur arbitrairement faible. Finalement. le plus grand facteur premier q de r doit v´rifier q e e r−1 q √ 4 r log n. et O(k log3 n) si l’on veut une probabilit´ e 2 2 −k . et enfin il faut que n = 1 mod r. 3 r doit ˆtre premier avec n. . En pratique. Mais ce ne sont pas les seuls corps finis qui existent. on pr´f´rera en pratique les algorithmes probabilistes. qui ont montr´ en 2002 e e ua e qu’il existe un algorithme d´terministe polynomial pour tester si un nombre est e premier ou non. Mentionnons enfin pour ˆtre complets un autre test de primalit´ e e tr`s r´cent. soit O(log3 n) . En effet. pourvu qu’il en existe un. e e En outre. a L’id´e est voisine de celle de Miller-Rabin : si n est premier.

l’identit´ de B´zout a e e est valide. ad ) ∈ V d+1 . le degr´ du polynˆme nul est not´ e o e deg(0) = −∞. On appelle degr´ du polynˆme P . on peut d´composer tout polynˆme de degr´ non nul e o e A de V [X] sous la forme d d A = P1 1 . Par convention. Si A est unitaire.Q + R .T = D . et on note d = deg(P ) le plus grand entier e o naturel d tel que ad = 0. on peut d´finir une division euclidienne : pour tous A. Par ailleurs. alors il existe deux polynˆmes S et T dans V [X] tels o que A. . L’algorithme d’Euclide ´tendu permet de calculer effectivement deux polye nˆmes S et T dont les degr´s respectifs sont strictement inf´rieurs ` ceux de o e e a A div D et B div D. Deux polynˆmes A et B sont dits premiers entre eux s’ils admettent le poo lynˆme 1 comme pgcd . . les facteurs Pi peuvent ˆtre choisis unitaires : la d´come e position est alors unique ` une permutation d’indices pr`s. e a Tout comme un entier admet une d´composition en facteurs premiers. B ∈ e V [X]. On dit qu’un polynˆme P de V [X] est un polye o nˆme irr´ductible sur V lorsque P est premier avec tout polynˆme de degr´ o e o e inf´rieur ` deg(P ). e L’anneau V [X] est donc un anneau euclidien. si A et B sont deux polynˆmes dans V [X] et si o D ∈ V [X] est leur pgcd. . Autrement dit. Le polynˆme Q = A div B est le quotient dans la division euclidienne de A o par B . L’anneau des polynˆmes ` coefficients dans V est o a d V [X] = P = i=0 ai X i /d ∈ N. .S + B. Pk k o` les di sont des entiers non nuls et les polynˆmes Pi sont irr´ductibles sur u o e V . A et B n’admettent aucun facteur o commun de degr´ non nul. le reste R est aussi not´ A mod B. R ∈ V [X] uniques avec deg(R) < deg(B) tels que : A = B. ee Dans cet anneau. il existe Q. . La notion de pgcd est d´finie . (a0 . l’algorithme d’Euclide appliqu´ ` deux polye e a nˆmes non nuls A et B fournit un polynˆme de degr´ maximal (unique si on o o e le choisit unitaire) qui divise ` la fois A et B. autrement dit. a e .58 Arithm´tique des polynˆmes e o e Chapitre 1 : Th´orie des codes Soit V un corps. tout e polynˆme de degr´ non nul admet une d´composition unique en produit de o e e puissances de facteurs irr´ductibles sur V . Un polynˆme est unitaire si son coefficient de plus haut degr´ o e est l’´l´ment neutre pour la multiplication de V . on dit que V [X] est un anneau e factoriel. Autrement dit.

Q est inversible dans l’anneau quotient V [X]/P . Exemple : Sur le corps V = F2 : Si P = (X + 1)(X 2 + X + 1) (non irr´ductible). ` savoir. e puisque ce dernier exemple nous fournit un corps ` 4 ´l´ments. 1. on dit que α est racine multiple u de A. X. alg`bre et arithm´tique e e 59 Un ´l´ment α de V est une racine de A ∈ V [X] si A(α) = 0. B de V [X].e.1. On v´rifie ais´ment que X 2 + X + 1 est irr´ductible (les seuls polynˆmes e e e o de F2 [X] de degr´ non nul et inf´rieur ` 2 sont X et X − 1 et aucun e e a d’entre eux ne divise X 2 + X + 1). 1 + X. 1 + X + X 2 . qui admet les polynˆmes 0 et 1 comme o ´l´ments neutres respectivement pour les lois + et ×. l’anneau V [X]/P est : e V [X]/P = 0. Cet anneau est appel´ ee e anneau quotient de V [X] par P . B(α) = 0. .3 Codage par blocs. 1. 1 + X}.B. 1 + X 2 . En effet. alors (X − α) divise A. ×) un corps et soit P un polynˆme de degr´ d o e 1 . Cet anneau n’est pas un corps car (1 + X)(1 + X + X 2 ) = 0 montre que 1 + X n’est pas inversible. L’anneau V [X]/P et les corps finis Soit (V. X + X 2 . Q est P sont premiers o e e a entre eux et l’identit´ de B´zout s’´crit : AQ + BP = 1. dans le cas o` B(α) = 0. si l’on prend P = X 2 + X + 1 (irr´ductible). Sinon. i. Cet anneau est un corps puisque X(X + 1) = 1. On dit que α est racine simple de A si α n’est pas racine de B. si Q o e est un polynˆme non nul de degr´ inf´rieur ` deg P . Au contraire. e l’anneau V [X]/P est : V [X]/P = {0. Exemple : Dans F2 [X] le polynˆme X 3 − 1 se d´compose en : o e X 3 − 1 = (X − 1) · (X 2 + X + 1) . e e a pour tous polynˆmes A. e e e autrement dit. alors V [X]/P est un corps. X 2 . +. 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 C’est un anneau commutatif unitaire. On note V [X]/P l’ensemble des polynˆmes de degr´ inf´rieur strictement ` d muni des o e e a op´rations arithm´tiques d’addition et de multiplication modulo P . Soit B le polynˆme tel que o A = (X − α). X. On dispose donc d’une classe de corps finis plus ´tendue que les corps premiers. soit AQ = 1 mod P . Si P est un polynˆme irr´ductible. qui n’est pas a ee un corps premier. ee Si α est une racine de A.

3. nous commen¸ons par donner un test permettant de a c reconnaˆ les polynˆmes irr´ductibles. Ils sont not´s Fq . r > 0 divise d > 0 si et seulement si pr − 1 divise pd − 1. o e e Pour prouver cette proposition. a e c Polynˆmes irr´ductibles o e Pour fabriquer des corps finis. ıtre o e Un premier test facile ` r´aliser est de s’assurer que le polynˆme est sans carr´. e e a Propri´t´ 6. P ) = 1 Preuve. Propri´t´ 5. Pour p premier et d 1. P ). a e o e c’est-`-dire qu’il ne contient pas comme diviseur le carr´ d’un autre polynˆme. d . Alors P = γf et P = γλ avec f e e et λ deux polynˆmes.4. Il s’en suit que P = 2g gh + g 2 h = g(2g h + gh ) et donc g divise le pgcd de P et P . e e e Pour construire un corps fini. comme nous avions besoin des nombres premiers pour construire les corps premiers. En d´rivant P on obtient γf = γ λ + γλ . nous avons tout d’abord besoin du lemme suivant : Lemme 2. Un polynˆme P est sans carr´ si et seulement si e e o e pgcd(P.60 e Chapitre 1 : Th´orie des codes Les corps finis sont appel´s corps de Galois. o` q est le e e u cardinal du corps. nous allons avoir besoin de polynˆmes irr´duco e tibles. c’est l` un e e e e a sujet ` part enti`re. il faut donc disposer d’un polynˆme irr´ductible o e d’un degr´ fix´. γ et γ sont premiers entre eux. Si P est divisible par un carr´ alors P = g 2 h pour certains polynˆmes e o h et g. a e o Cela se fait sur un corps fini comme dans tout autre corps en examinant sa d´riv´e terme ` terme. e e e ee Proposition 1. Le polynˆme γ ´tant irr´ductible et γ de degr´ strictement o e e e inf´rieur au degr´ de γ. Comme pour la g´n´ration de nombres premiers. le polynˆme X p −X est o le produit de tous les polynˆmes unitaires irr´ductibles dont le degr´ divise d. si g = pgcd(P. Deux corps finis de mˆme cardinal sont isomorphes. le principe du test d’irr´ductibilit´ est donn´ par la propri´t´ suivante. Alors γ divise forc´ment e e e λ et donc γ 2 divise P . La propri´t´ suivante nous permet de caract´riser tous les ee e corps finis et de justifier la notation Fq pour « le » corps fini de cardinal q. ou encore o e γ(f − λ ) = γ λ. dont nous donnons un aper¸u. dans Fp [X]. R´ciproquement. prenons un facteur e irr´ductible γ de g de degr´ au moins 1. De la mˆme fa¸on que pour les tests de primalit´ des nombres e c e vus ` la section 1. P Ensuite.

alg`bre et arithm´tique e e 61 Preuve. o e e Si pgcd (P. P ) = 1 Alors Renvoyer « P est r´ductible ». e Fin Si Soit Q ← X Pour i ← 1 ` deg(P ) Faire a 2 Q ← Qp mod P Si pgcd(Q − X. Or. Dans V . On peut construire ` partir e a de cette propri´t´ le test dit de Ben-Or (voir algorithme 7). Si un polynˆme de degr´ d n’a aucun facteur commun e o e i avec X p − X pour 1 i d/2.1. e o Sorties « P est r´ductible » ou « P est irr´ductible ». Posons p s < pr −1. d R´ciproquement.2). s = 1 mod P . et P divise donc X p −1 − 1. r divise forc´ment d. il est irr´ductible. alors pd = (pr )k = 1 mod pr − 1. avec 0 ou encore. Fp [X]/P est un r corps de cardinal pr et donc X p −1 = 1 dans ce corps par le th´or`me d’Euler. Alors e e V = Fp [X]/P est un corps. e e Soit P le polynˆme d´riv´ de P . e on a pd − 1 = 0 mod pr − 1. P ) = 1 Alors Renvoyer « P est r´ductible » (arrˆt de l’algorithme). Si e e e d −1 r = 1. avec s < r. Le lemme permet de conclure que r divise d bien s. on a alors pd − 1 = pqr ps − 1 = ps − 1 mod pr − 1. X p e = 1 mod P . en utilisant ce test. [de la proposition 1] Soit P irr´ductible de degr´ r divisant d. R´ciproquement. P Preuve. ` savoir pr − 1 (voir la section 1. 0 s < r. s est inf´rieur au degr´ r de P . il est possible de tirer des polynˆmes au hasard et o d’avoir une bonne chance de tomber sur un polynˆme irr´ductible. son a e d polynˆme d´riv´ est pd X p −1 − 1 = −1 mod P et le polynˆme −1 est premier o e e o avec tout autre polynˆme. donc X s = 1. ce qui nous certifie que X p −1 = 1. soit P un diviseur irr´ductible de X p − X de degr´ r. donc X p a = 1 mod P . Il reste ` montrer qu’aucun carr´ ne divise X p − X. En effet. Or. Or. ee Algorithme 7 Test d’irr´ductibilit´ de Ben-Or. Or. e e Entr´es Un polynˆme. l’ordre de tout ´l´ment divise le cardinal ee du groupe de ses inversibles.3. e e r −1 p d −1 = (pr −1)q+s. On applique a r cette propri´t´ ` X ∈ V . e e Fin Si Fin Pour Renvoyer « P est irr´ductible ». e Ainsi. on obtient donc ps − 1 = 0 sur les entiers. Sinon. On note o e . Donc r divise d. ce qui implique que s = 0.3 Codage par blocs. Supposons que d = qr + s. Si r divise d. o P pd − X sont donc tous les polynˆmes irr´ductibles unitaires Les facteurs de X o e de degr´ divisant d. X = 1 mod P . pr − 1 divise eea d −1 d pd − 1 grˆce au lemme. P ∈ Fp [X]. On a donc X e e ce qui n’est possible que si s = 0.

D’un autre cˆt´. au hasard dans Fq [X]. o e e Pour d = 2 ` r − 1 Faire a Pour tout a. a = 0 Faire Si (X r + bX d + a) est irr´ductible Alors e r + bX d + a Renvoyer X Fin Si Fin Pour Fin Pour R´p´ter e e S´lectionner P . donc pr = d|r dmd (p) r /r. et un polynˆme irr´ductible au hasard ` l’aide du test de e o e a Ben-Or. pr est le degr´ de X p − X. tester son irr´ductibilit´. si le pr´c´dent s’av`re trop difficile ` calculer. 1 (pr − p r r 2 +1 ) mr (p). o e Entr´es Un corps fini Fp . . de degr´ r. Cela montre que parmi les polynˆmes de degr´ r. e e Nous proposons l’algorithme hybride 8 produisant de pr´f´rence un polynˆme ee o irr´ductible creux. e a Algorithme 8 Recherche d’un polynˆme irr´ductible creux. o e e r Comme X p − X est le produit de tous les polynˆmes irr´ductibles de degr´ o e e divisant r. la recherche a e syst´matique peut s’av´rer plus efficace en pratique. En moyenne il faudra a o e r tirages pour trouver un polynˆme ad´quat. un entier r > 0. b ∈ Fq . on obtient 1 r (p − p r r 2 +1 ) mr (p) 1 r p r (1. on peut donc en premi`re o e e approche choisir un polynˆme au hasard. et recomo e e mencer jusqu’` tomber sur un polynˆme irr´ductible. Dans ce cas. e e Jusqu’` ce que P soit irr´ductible a e Renvoyer P . o e o c’est-`-dire avec tr`s peu de coefficients non nuls. Cette derni`re est une s´rie g´om´trique p e e e e r d|r p d r/2 p qui vaut p r/2 +1 −1 r p−1 <p r/2 +1 .62 e Chapitre 1 : Th´orie des codes mr (p) le nombre de polynˆmes unitaires irr´ductibles de degr´ r dans Fp [X]. e Sorties Un polynˆme irr´ductible de Fp [X].8) e rmr (p). pour faciliter les o e calculs avec ces polynˆmes. pr = Donc mr (p) p oe rmr (p) implique d|r dmd (p) r − rm d d . unitaire de degr´ r. En effet. Finalement. Cependant. Pour construire un polynˆme irr´ductible. environ un sur r est irr´o e e ductible. Il est fond´ sur l’id´e e e e a e e de prendre des polynˆmes du type X r + g(X) avec g(X) au hasard de faible o degr´ par rapport ` r. il est int´ressant d’obtenir des polynˆmes creux.

1. ` tout vecteur u = [u0 . v ∈ V d . Ceci conf`re ` e a d une structure de corps dans laquelle la multiplication est d´finie par : V e Pour tous u. ` Exercice 1. cons´quent |V | = p e D’apr`s la proposition proposition 5 de la page 60. . Indication : exhiber un sous-corps de K isomorphe ` Fp . a ee a e Preuve. a P Remarque 1. Soit p un nombre premier et Fp [X] l’anneau des polynˆmes ` coefo a ficients dans Fp . ee o` p est un nombre premier. D’apr`s l’´quation (1. A l’aide de l’application Ψ : Z → K.3 Codage par blocs. px = 0. ψ(u + λ · v) = ψ(u) + λ · ψ(v) . + 1K = n. Exercice 1.19. Solution page 284. alors il y a pd restes possibles et par e d. on peut a associer de mani`re bijective le polynˆme ψ(u) = d−1 ui X i et en plus.18. Ψ(n) = 1K + 1K + . on a e o i=0 la propri´t´ suivante : ee Pour tous u. . λ ∈ V. Ainsi. alg`bre et arithm´tique e e Constructions des corps finis 63 Nous disposons de tous les ´l´ments pour construire un corps fini de taille pn . v ∈ V d . dit caract´ristique de K. La m´thode de construction des corps finis est la u e preuve du r´sultat suivant : e Th´or`me 6. . d´finie par : e Pour tout n ∈ Z. ψ est un isomorphisme entre V d et ψ(V d ) = V [X]/P . Suite de l’exercice pr´c´dent e e En d´duire que le cardinal de K est une puissance de p. En effet. ud−1 ] de l’espace vectoriel V d . L’anneau quotient V = Fp [X]/P est alors e e un corps. L’isomorphisme entre V [X]/P et V deg(P ) conf`re ` V deg(P ) e a une structure de corps.1K . u · v = ψ −1 (ψ(u) · ψ(v)) . Puisque P est de degr´ d et que |Fp | = p. . On peut ainsi utiliser une structure de corps avec les vecteurs de V deg(P ) . n fois e montrer qu’il existe un unique nombre premier p. tout corps de cardinal pd e est isomorphe ` V . tel que pour tout x ∈ K. en se servant du e fait que K est un espace vectoriel sur ses sous-corps. Soit K un corps fini de cardinal q > 0. il existe un e e corps K ` pd ´l´ments et ce corps est unique ` un isomorphisme pr`s. il existe au moins un polynˆme P e e o irr´ductible de degr´ d dans Fp [X]. . Pour tout nombre premier p et tout entier d > 0. . .8). a Solution page 284.

puis de repr´senter les ´l´ments de Fq = Fp [X]/P par e e ee des polynˆmes. En d´duire tous les polynˆmes e e e o irr´ductibles de degr´ 2 et 3. o e e b et c dans F2 . e2 . puisque 16 = 24 . 1 + X 2. e o Les ´l´ments du corps sont alors X. e Le polynˆme irr´ductible P s’´crit P = X 4 + aX 3 + bX 2 + cX + 1 avec a. 0) et (1. 1 + X + X 2. 1)}. 1 + X 2 + X 3. 0. e e Solution page 284. b. ou des vecteurs. 1). En d´duire les polynˆmes irr´ductibles de degr´ 4. 1. e Exemple : Construction du corps F16 . Donc.64 e Chapitre 1 : Th´orie des codes Exercice 1. expliciter les tables d’op´rations (+. P =X – Op´rations sur les polynˆmes. 0). 1 est racine de P . 1. (1. e1 .5 Impl´mentations des corps finis e Op´rations sur les polynˆmes e o Une construction classique de l’arithm´tique dans un corps fini est donc. (0. il suffit de chercher le pgcd de P et (1 + X)(X 2 + X + 1). 0. avec la convention e0 ´l´ment neutre pour l’adee dition et e1 ´l´ment neutre pour la multiplication. X 2 . X 3 . c) est donc ` chercher dans {(0. Pour d´terminer P . de chercher un polynˆme irr´ductible e o e P dans Fp [X] de degr´ d. Le calcul (par l’algorithme d’Euclide par exemple) de ces pgcd montre que les seules valeurs de (a.20 (Construction du corps F4 ). e3 }. e e 2. 0)} puisque dans chacun de ces cas. (1. 0. 1 + X 3 . 1. examinons les diff´rentes valeurs pose e sibles pour le triplet (a. Il existe un corps ` 16 ´l´ments.3. 0. 1 + X et X 2 + X + 1. 1). c) pour lesquelles P est irr´ductible sont (0. d’impl´menter Fp . 1 + . 1 + X + X 3 . 0. Faisons ce choix. (1. 0). 1. Donner une condition n´cessaire et suffisante pour qu’un polynˆme dans e o F2 [X] de degr´ 2 n 3 soit irr´ductible. En utilisant la preee mi`re question. (1. X + X 3. X + X 2 + X 3. e o e e 3. e 4 + X 3 + 1 est un choix possible de P . pour e un nombre premier p. Le triplet (a. puis o e e on ´tablit les r`gles de calcul dans F2 [X]/P . 1. (0. 1). Soit F4 = {e0 . 0. e e – D´termination de P . Pour chacun des quatre cas restants. inverse) dans F4 . On ne peut avoir (a. ×. b. 1). 1 + X + ee X 2 + X 3. 1. a ee on cherche d’abord un polynˆme P irr´ductible de degr´ 4 dans F2 [X]. b. 0). 1. c) ∈ {(0. et d’impl´menter les op´rations arithm´tiques o e e e comme des op´rations modulo p et P . (1. 1). b. a Les seuls polynˆmes irr´ductibles sur F2 de degr´ au plus ´gal ` deux sont o e e e a X. c). Pour construire le corps F16 .

e 2 Cela donne le codage suivant pour un ´l´ment x ∈ Fq si Fq est g´n´r´ par g : ee e ee  0 si x = 0  q − 1 si x = 1   i si x = g i En particulier. Soient Fq un corps fini et g un g´n´rateur de Fq . q−1 2 = −1Fq Preuve. il vaut 2 si Fq est de caract´ristique impaire et q − 1 sinon. 1F2n = −1F2n . Or g est un g´n´rateur donc l’ordre de g est q − 1 et e e q−1 P non pas q−1 . avec lesquelles la multiplication pourra ˆtre r´alis´e beaucoup plus rapie e e dement. e Par exemple. en utilisant la proposie e tion suivante : ∗ Proposition 2. l’´quation X 2 = 1 poss`de au plus deux racines. q−1 . X + X 2 . X 2 + X 3 . La seule possibilit´ restante est g 2 = −1. alors. Ainsi. notons q = q − 1 le repr´sentant de 1Fq . et z´ro par un indice sp´cial. L’id´e consiste ` utiliser la propri´t´ des corps finis selon laquelle le groupe e a ee multiplicatif des inversibles d’un corps fini est cyclique. 1 = −1. Si le corps est de caract´ristique 2. alg`bre et arithm´tique e e 65 X. Ce qui donne la possibilit´ d’´crire simplement les e e op´rations arithm´tiques. L’ordre de g divise q − 1 donc g q−1 = 1Fq . c’est-`-dire qu’il existe a au moins un g´n´rateur et que le corps est g´n´r´ par les puissances de ce e e e ee g´n´rateur. 1. (X 2 )(X + X 3 ) = 1 + X. Alors e e g q−1 = 1Fq . Sinon q−1 ∈ Z et donc e 2 e e g 2 ∈ Fq . alors g e et dans le cas contraire. dans notre codage. Les op´rations se font alors modulo P et modulo 2. 1 et −1. Or comme on est dans un corps. tous les inversibles peuvent s’´crire g i . Cette construction o` l’on repr´sente e e u e les ´l´ments par leurs logarithmes est appel´e repr´sentation exponentielle ou ee e e repr´sentation cyclique ou encore construction de Zech. Utilisation des g´n´rateurs e e Il existe d’autres possibilit´s pour impl´menter les op´rations dans les corps e e e finis. e e – La multiplication et la division d’inversibles sont respectivement une addition et une soustraction d’indices modulo q − 1.3 Codage par blocs. e q−1 e Nous notons aussi i−1 l’indice de −1Fq . si la caract´ristique de Fq est impaire. Les op´rations arithe e m´tiques classiques sont alors grandement simplifi´es. comme dans F2 [X]. En outre. si g est un g´n´rateur du groupe multiplicatif d’un corps e e e e fini Fq .1. e On peut choisir d’impl´menter chaque ´l´ment inversible g i simplement par e ee son indice i.

1. nous devons maintenant donner un moyen de trouver des g´n´rateurs e e des corps finis.5 1. On utilise . g i + g j = g i (1 + g j−i ).3: Op´rations sur les inversibles avec g´n´rateur en caract´ristique impaire. alors il poss`de toujours exactement ϕ(p − 1) e racines primitives. par exemple de cette mani`re : si g i et g j sont deux e e ´l´ments non nuls d’un corps fini. e Si p est un nombre premier. celle des successeurs. e e e e Dans le tableau 1. en consid´rant des ´l´ments al´atoires. et de la mˆme fa¸on que nous e e c avons eu besoin de g´n´rateurs de nombres premiers pour construire les corps e e premiers. e 2 – L’addition est l’op´ration la plus complexe.5 1. ee l’addition est impl´ment´e par une soustraction d’indice. Il faut l’impl´menter en utilisant e e les autres op´rations. t plus1[].75 Coˆt u e Tests Acc`s 1 1 1 2 2. Un g´n´rateur 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 not´e χ(m). des successeurs de chaque ´l´ment du corps. Nous indiquons le coˆt des e ee e u calculs en nombre moyen d’additions et de soustractions (+/-). de taille q. Il faut maintenant en calculer au moins une.5 3 3. en nombre de tests et en nombre d’acc`s dans une table. G´n´rateurs des corps premiers. e en consid´rant une seule table de taille q.75 0 0 0 1 1 Tab. un acc`s ` une e e e a table et une addition d’indices.3.66 e Chapitre 1 : Th´orie des codes – La n´gation est donc simplement l’identit´ en caract´ristique 2 et l’addition e e e de q−1 modulo q − 1 en caract´ristique impaire. e Racines primitives Pour mettre en œuvre cette impl´mentation. nous montrons le calcul de ces op´rations sur les indices. Nous nous e int´ressons ici ` la complexit´ du calcul en utilisant le moins de m´moire e a e e possible. Op´ration e Multiplication Division N´gation e Addition Soustraction ´e El´ments gi ∗ gj g i /g j −g i gi gi + − gj gj Indices +/i + j (−q) i − j (+q) i − i−1 (+q) k = j − i (+q) i + t plus1[k] (−q) k = j − i + i−1 (±q) i + t plus1[k] (−q) 1. En construisant ee une table.

alors ah = 1 mod p si et seulement si k|h. alg`bre et arithm´tique e e 67 pour cela le test suivant. Algorithme 9 Test Racine Primitive.2 : soit un entier a. la probabilit´ d’en trouver une est de ϕ(p−1) et donc e p−1 l’esp´rance du nombre de tirages pour tomber sur une racine primitive est de e p−1 ϕ(p−1) . La principale difficult´ est de factoriser p−1.4. p−1 Th´or`me 7. ni une a puissance sur les entiers.3. ni −1. d’ordre k e modulo p. il ne faut e e e e pas trop d’essais pour la trouver. e G´n´rateurs des corps finis. qui teste si l’ordre d’un ´l´ment pris au hasard est ee bien p−1. au moins partiellement. Fin Si Fin Pour Renvoyer « Oui ». e Entr´es Un entier a > 0. e q Dans le cas contraire. la seule valeur possible pour l’ordre de a est p − 1. P Une premi`re m´thode pour trouver une racine primitive est alors d’essayer e e un ` un tous les entiers plus petits que p. si a est une racine primitive de p . premier et divisant p − 1. Entr´es Un entier premier p > 0. On en d´duit que si l’ordre de a est plus petit que p − 1.1. On utilise le r´sultat de la section 1. comme il doit diviser e p − 1. Faire {Factorisation de p − 1} Si a q = 1 mod p Alors Renvoyer « Non ». Etant donn´ qu’il y a e ϕ(p−1) racines primitives. Non dans le cas contraire. e e Preuve. qui ne soient ni 1. n´cessairement l’une des valeurs p−1 sera un multiple de l’ordre de a. et de trouver ainsi la plus petite racine primitive de p. Pour tout q. de l’ordre de χ(p) = O r4 (log(r) + 1)4 log2 (p) avec r le nombre de facteurs premiers distincts de p Une autre m´thode est de tirer al´atoirement des entiers plus petits que p et e e ´ de tester si ceux-ci sont une racine primitive ou non. De nombreux r´sultats th´oriques existent prouvant qu’en g´n´ral. Nous savons maintenant trouver un g´n´rae e e e teur pour un corps premier.3 Codage par blocs. L’algorithme Test Racine Primitive est correct. e nous verrons comment faire cela en section 1. e Sorties Oui.3. Nous nous int´ressons maintenant aux corps finis : e . Ce qui nous donne une meilleure chance que la force brute (essayer toutes les possibilit´s).

o sur un corps premier. e e Exemple : Reprenons l’exemple du corps F16 . a e e Algorithme 10 Test Polynˆme G´n´rateur. rappelons qu’il faut d’abord construire Fp . On peut donc e e e e mener les calculs avec les puissances de X. Nous montrons tout a d’abord un algorithme testant si un polynˆme est g´n´rateur dans Fp [X]. e Nous utilisons ` nouveau un algorithme probabiliste. construit avec le polynˆme o 4 + X 3 + 1. e o Entr´es Un polynˆme F irr´ductible de degr´ d dans Fp [X]. o e e Entr´es Un polynˆme A ∈ Fp [X]. toujours par souci d’obtenir o e des polynˆmes creux. g´n´rateur X e e L’algorithme 10 test´ avec X r´pond que X est un g´n´rateur. e e est alors ais´. En outre. Le codage et les op´rations sont o e alors les mˆmes que ceux des corps premiers. e e Pour tout q. un polynˆme irr´ductible pour lequel X est une racine o e primitive. o e e pour les corps finis de taille comprise entre 4 et 232 . une fois le corps construit.68 e Chapitre 1 : Th´orie des codes les Fpk . Identification des ´l´ments de F16 et r`gles pour les op´rations. il est possible de montrer que plus d’un polynˆme irr´ductible sur 12 est X-Irr´ductible ! Un algorithme o e e recherchant un polynˆme X-irr´ductible au hasard n´cessite ainsi moins de 12 o e e essais en moyenne. Il s’agit maintenant de trouver o e e un polynˆme g´n´rateur de ce corps pour pouvoir coder les ´l´ments non plus o e e ee par des polynˆmes. L’algorithme pour trouver un polynˆme irr´ductible ayant o e X comme g´n´rateur est donc une simple modification de l’algorithme 8 ne e e s´lectionnant pas le polynˆme irr´ductible trouv´ si l’algorithme 10 r´pond e o e e e que X n’est pas un g´n´rateur. Un tel polynˆme est appel´ X-Irr´ductible. Toutefois. puis un polynˆme de degr´ k irr´ductible sur ce corps. ou primitif. ee e e Le calcul des puissances successives de X donne pd −1 . mais par leurs indices. Un algorithme cherchant au hasard un g´n´rateur. e o e e Sorties Oui. on peut restreindre l’ensemble de recherche ` des e a polynˆmes de faible degr´ (O(log(n))). En pratique. Non dans le cas contraire. si A est g´n´rateur du corps Fp [X]/F . Fin Si Fin Pour Renvoyer « Oui ». Cet o e e algorithme est similaire ` celui d´velopp´ pour les racines primitives dans Fp . premier et divisant pd − 1 Faire {Factorisation de pd − 1} Si A q = 1 mod F Alors {Calcul r´cursif par carr´s} e e Renvoyer « Non ». Pour les construire. nous montrons qu’il est possible de trouver rapidement.

on tente de proc´der de mˆme pour g´n´rer e e e e e des nombres al´atoires. e ee e e Donc : F16 = {0. ´tant donn´ l’´tat de nos connaissance. e e e e La production de nombres al´atoires est une tˆche tr`s complexe. X 11 . 14} compte du fait que X tels que k > t. On a donc tout int´rˆt ` se parer ee a d’une th´orie solide concernant le hasard et l’al´a pour concevoir des codes e e efficaces et sˆr. Avec F16 donn´ sous cette forme. la description du e e e mouvement brownien des ´lectrons dans une r´sistance. X 10 . X 2 = X 2 mod P . qui ne r´pondent par d´finition qu’` des proc´dures d´termin´es et e e a e e e pr´visibles. g´n´rer des nombres al´atoirement est une condition de la perfection e e e du code ` clef jetable de Vernam (voir page 29). X 4 = 1 + X 3 mod P . . . Il est temps maintenant de a s’attaquer ` ce probl`me qui m´rite un petit d´veloppement. X 14 }. En pare ticulier. tout e e message qui pr´sente un mode d’organisation descriptible par une formule plus e courte que le message lui-mˆme est un angle d’attaque pour la compression. X 13 = X + X 2 mod P .3 Codage par blocs. X 15 = 1 mod P . e aussi bien que pour le cassage des codes. X 12 = 1+X mod P . X. a e e e Les d´finitions du hasard sont cruciales pour la th´orie des codes. X 13 . e e Mais il est possible que cette production ne soit appel´e hasard que parce que e nous sommes incapables. la multiplication et le calcul de l’inverse dans e F16 se font plus ais´ment. X 5 = 1 + X + X 3 mod P . et souvent encore dans ce livre. X 7 = 1 + X + X 2 mod P . 1. . qui a sollie a e . X 14 = X 2 + X 3 mod P . X 12 . d’en explie e e quer le fonctionnement. X 4 . X 6 = 1 + X + X 2 + X 3 mod P . il faut faire appel ` des ph´nom`nes e a e e physiques r´put´s impr´visibles. X 3 = X 3 mod P . comme le bruit thermique. et seule les th´ories probabilistes permettent de l’ape pr´hender. C’est ce qu’on appelle les g´n´rateurs pseudo-al´atoires. X 7 . X 10 = X+X 3 mod P .1. alg`bre et arithm´tique e e 69 X 1 = X mod P . Avec les ordinateurs. On applique des proc´dures qui rendent impr´visible le e e e r´sultat en pratique. 1. L’addition s’en trouve aussi simplifi´e si l’on tient e e k + X t = X t (1 + X k−t ) pour tout k et t dans {1.3. X 8 . X 9 = 1 + X 2 mod P . . X 11 = 1+X 2 +X 3 mod P . En effet. X 5 . Pour obtenir des valeurs qui seraient la production du « vrai » e hasard (mˆme si cette notion n’est pas tout ` fait absolue.6 G´n´rateurs pseudo-al´atoires e e e La g´n´ration de nombres au hasard est employ´e tr`s souvent dans toutes les e e e e m´thodes que nous venons de voir. u La production d’un ´v`nement vraiment al´atoire est insoluble par des ordie e e nateurs. X 2 . X 9 . X 8 = X + X 2 + X 3 mod P . Il en r´sulte que X est un ´l´ment g´n´rateur du groupe multiplicatif F16 . X 3 . et fait r´f´rence ` e a ee a ce qu’on peut en observer et en pr´dire). X 6 .

e e Par exemple. Il y a plusieurs fa¸ons de tester e a e ee c si un g´n´rateur est acceptable. aucun algorithme ne pourra pr´dire le e fonctionnement du g´n´rateur. et casser une clef g´n´r´e au hasard. sans en connaˆ la clef. a Les propri´t´s requises pour un g´n´rateur pseudo-al´atoire ressemblent foree e e e tement aux propri´t´s qu’on attend d’un message crypt´. Mais ce g´n´rateur. Si on n’accorde pas assez d’attention ` ce probl`me crucial. ` la fois les concepteurs de machines e e a (production mat´rielle « hardware ». e e ee Si la machine qui g´n`re la combinaison gagnante du loto n’ob´it pas ` un e e e a bon processus de g´n´ration du hasard. des m´a e e thodes efficaces (nous en verrons quelques-unes) existent pour rep´rer toutes e les composantes non al´atoires dans une s´quence suppos´e l’ˆtre. et il est possible de reconstituer leur come portement ` partir d’analyses statistiques. reconstie e e e tuer ainsi la m´thode qui l’a produite. a des d´fauts. Un g´n´rateur doit v´rifier certaines propri´t´s pour ˆtre qualifi´ de pseudoe e e ee e e al´atoire. ou les utilisent. comme le bruit thermique) que de logie ciels (production logicielle « software ». lui faire passer des tests statistiques e e pour v´rifier que la distribution qu’il produit ne diff`re pas significativement e e de celle qui est attendue par un mod`le th´orique du hasard. on e e peut aussi employer des principes de complexit´ algorithmique : il est possible e de prouver qu’en temps raisonnable. . On g´n`re souvent une s´quence de nombres pseudo-al´atoires en calculant e e e e chaque nombre ` partir du pr´c´dent (ce qui bien sˆr rend le processus coma e e u pl`tement d´terministe et donc ´limine tout hasard). C’est pourquoi certaines e ee ıtre m´thodes de g´n´ration de nombres al´atoires ressemblent aux m´thodes de e e e e e cryptographie. Ou alors. avoir une grosse entropie. un g´n´rateur peut ˆtre construit sur le mod`le de la suite de Fie e e e bonacci. on pourra aussi pr´dire la prochaine e e e combinaison gagnante. comme nous allons en voir quelques exemples). en produisant les nombres xn = xn−1 +xn−2 mod m. et le modulo permet un comportement a e e a e difficilement pr´visible. ou un nombre. comme la plupart des g´n´rateurs e e e e e simples et classiques. En effet. d’une fa¸on suffisamment e e e c compliqu´e pour qu’en examinant la s´quence sans connaˆ la m´thode. et aucune r`gle ne doit pouvoir ˆtre reconse e titu´e ` partir de la suite des nombres g´n´r´s. on e e ıtre e puisse croire au hasard. il doit ˆtre ee e e impossible en recevant un message. D’abord. m ´tant l’entier e maximum pouvant ˆtre produit.70 e Chapitre 1 : Th´orie des codes cit´ depuis plusieurs dizaines d’ann´es. Cette m´thode a l’avantage d’ˆtre tr`s simple e e e e ` impl´menter. Tous les nombres g´n´r´s doivent ˆtre ind´pendants les uns des e e ee e e autres. tr`s rapide ` ex´cuter. de reconstituer la mani`re dont il a ´t´ produit.

on choisit m = 2. On parle alors de registres ` d´calage lin´aire. Il existe mˆme des puces sp´cialis´es r´alisant les e e e e e e op´rations n´cessaires. Il existe un r´sultat d´crivant tous e e e e les g´n´rateurs de p´riode m avec b = 0 : e e e Th´or`me 8. mais plusieurs des pr´c´dentes valeurs. . b = 0. d’avoir de tr`s grandes p´riodes. m. mˆme avec e e un petit modulo. ´ Evidemment. les op´rations peuvent ˆtre r´alis´es tr`s rapidement sur machine par des e e e e e « ou exclusifs » (xor) pour l’addition modulo 2 et par des d´calages des bits xi e pour g´n´rer les bits suivants.32. m de fa¸on ` e e c a ce que la p´riode soit suffisamment grande. pour m = 10. e e Par exemple. une grande p´riode n’est pas un crit`re suffisant pour les g´n´e e e e rateurs al´atoires. b. La figure 1. . i ∈ N est la suite de nombres al´atoires g´n´r´s.8 en r´sume le fonctionnement. Le g´n´rateur congruentiel lin´aire d´fini par a. on calcule e e ee xi ` partir de son pr´d´cesseur : xi = axi−1 + b mod m. e e e La p´riode maximale est ´videmment m. Par exemple. page 94 est une approche des m´thodes d’attaque des g´n´rae e e teurs congruentiels lin´aires. e . e Les registres ` d´calage lin´aire a e e Une g´n´ralisation des g´n´rateurs congruentiels lin´aires consiste ` ne plus e e e e e a utiliser seulement la pr´c´dente valeur pour fabriquer l’´l´ment suivant de la e e ee s´quence.1. alg`bre et arithm´tique e e Les g´n´rateurs congruentiels e e 71 On appelle g´n´rateur congruentiel lin´aire un g´n´rateur qui suit le principe e e e e e suivant : si xi . . xn−k . o` m est un grand a e e u nombre. il faudra choisir a. e e L’exercice 1. et a. pour g´n´rer des suites al´atoires de bits. b ∈ Zm . c’est-`-dire que xn est calcul´ e e e a e par des combinaisons lin´aires de xn−1 . On choisit habituellement pour m le plus grand nombre premier descriptible par une machine (on a vu comment g´n´rer ce nombre dans cette section ` la e e a page 55). b = 1. abr´g´ e e a e e e e par LF SR (de l’anglais Linear Feedback Shift Registers). + ak xn−k ) mod m Ces g´n´rateurs sont particuli`rement int´ressants si m est un nombre premier e e e e car leur p´riode maximale est alors mk − 1. et ce g´n´rateur n’est pas du tout satisfaisant. la p´riode est 4.3 Codage par blocs. Autrement dit : e xn = (a1 xn−1 + . x0 e e e e e e est de p´riode m si et seulement si x0 est premier avec m et a est une racine e primitive de m. . e e Une telle s´quence est toujours p´riodique. Dans e e e ce cas. x0 = e a = b = 7. . Le g´n´rateur est dit multiplicatif si b = 0. Ainsi il est possible. en t´moignent les choix a = 1.

. xk−1 . . o e e pourvu que 2k valeurs successives aient ´t´ intercept´es. .4. e u e o Th´or`me 9. . ak x n x n−1 x n−2 . miale : soit Π(X) = X 1 k Ainsi. 1.. le LF SRΠ modulo un nombre e e o e premier p est de p´riode maximale pk − 1 si et seulement si Π est primitif dans e Fp . ee e Ces g´n´rateurs sont utilis´s en pratique pour g´n´rer rapidement des bits e e e e e avec de bonnes propri´t´s statistiques mais doivent ˆtre combin´s ` d’autres ee e e a g´n´rateurs pour ˆtre cryptographiquement sˆrs.72 e Chapitre 1 : Th´orie des codes .. e Pour certains calculs.. Elle a ´t´ con¸ue dans le but de e ee c remplacer les cˆbles entre les ordinateurs et leurs p´riph´riques comme les a e e . Produire les 8 premi`res valeurs g´n´r´es par le registre ` e e e e a d´calage lin´aire LF SRX 4 +X 3 +X 2 +1 (0.. 1. e e e e e e Nous verrons cependant en section 1. Enfin. − a . . . a1 a2 . x n−k x n−k−1 .. x 0 Fig. Ces g´n´rateurs sont tr`s rapides et poss`dent en outre une tr`s grande p´riode. xk−1 ) d´signe la s´quence infinie des xi lin´airement e e e g´n´r´e par le polynˆme Π avec pour k valeurs initiales les x0 . nous avons l’´quivalent du th´or`me 8 des g´n´rateurs congruentiels e e e e e lin´aires o` la racine primitive est remplac´e par un polynˆme primitif. . e ee o Exercice 1. e e e u Exemple : S´curisation du protocole Bluetooth e Bluetooth est une technologie radio courte distance destin´e ` simplifier les e a connexions entre les appareils ´lectroniques.. 1. . .3 que l’algorithme de Berlekamp-Massey permet de pr´voir les bits suivants sans connaˆ e ıtre le polynˆme g´n´rateur. .. Pour un polynˆme Π de degr´ k. il est int´ressant d’´crire LFSR par une forme polynoe e k − a X k−1 − . 0).8: Sch´ma de fonctionnement d’un LFSR.21. e e Solution page 285. LF SRΠ (x0 . .. .

ch0 } = IV ∈ {0.1) mais avec un g´n´rateur pseudo-al´atoire ` base de e e e a LF SR : l’algorithme de chiffrement utilise quatre LFSR de longueurs respectives 25. clt+1 = slt+1 ⊕ clt ⊕ clt−1 ⊕ cht−1 . sht+1 ) . e 3. Les 4 bits {a. e La s´curisation de ce protocole utilise un sch´ma de type chiffrement de Vere e nam (voir page 1. alg`bre et arithm´tique e e 73 imprimantes. cht+1 = sht+1 ⊕ cht ⊕ clt−1 . zt = at ⊕ bt ⊕ ct ⊕ dt ⊕ clt .1. Les 128 bits de la valeur initiale repr´sentent la clef secr`te du chiffrement Bluetooth. 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 c X 39 + X 36 + X 28 + X 4 + 1 d Fig. ch−1 . cl0 . 225 − 1) = 7 · 23 · 31 · 79 · 89 · 601 · 1801 · 8191 · ppcm(2 121369 · 599479 · 2147483647 ≈ 2125 . cod´ sur deux bits (slt+1 . .9 indique le sch´ma de fonctionnement de ce chiffrement. 33 et 39. 231 − 1. les scanners.2. Nous voyons que les quatre polynˆmes utilis´s sont : o e 39 + X 36 + X 28 + X 4 + 1 . pour un total de 25 + 31 + 33 + 39 = 128 bits. les t´l´phones portables. 4. les PC de poche ee ou encore les appareils photos num´riques. les souris.9: Chiffrement Bluetooth. – X 25 + X 20 + X 12 + X 8 + 1. 1}4 ) et des a e valeurs successives des LFSR.3 Codage par blocs. par l’algorithme suivant : 1. – X – X 33 + X 28 + X 24 + X 4 + 1 . e e La figure 1. b. – X 31 + X 24 + X 16 + X 12 + 1 . 1. 233 − 1. 31. st+1 = at +bt +ct +dt +2cht +clt 2 ∈ [0. c. Ces quatre polynˆmes sont primitifs modulo 2 pour une p´riode totale de o e 39 − 1. 2. 3]. e e ` partir de son seul ´tat initial ({cl−1 . d} produits par ces 4 LFSR successifs sont ensuite combin´s e par une fonction discr`te non-lin´aire f qui produit le prochain bit de sortie zt .

et tester si elles s’´cartent de ce e e qu’on attend d’un g´n´rateur vraiment al´atoire. de pr´dire avec une bonne probabilit´ e e e (significativement sup´rieure ` la probabilit´ de la distribution attendue). . car on vient de calculer f (x) = αx mod p. xi ← u ee f (xi−1 ) pour i > 0. xk . trouver une racine primitive et calculer e e une exponentiation modulaire. mais difficile ` inverser (temps de calcul trop important) a a pour d´cider de la qualit´ d’un g´n´rateur. on peut prouver que trouver B(xi ) est aussi difficile que de calculer le logarithme discret. on dispose de la valeur de logα x. qui rendaient impossible la pr´diction du e e comportement des g´n´rateurs. La s´quence de bits pseudo-al´atoire b1 .74 e Chapitre 1 : Th´orie des codes G´n´rateurs cryptographiquement sˆ rs e e u On peut utiliser le principe de la fonction ` sens unique. – Soit f la fonction d’exponentiation modulaire f (x) = αx mod p. bk est alors calcul´e suivant la s´e e e e quence x0 x1 . car on ne connaˆ aucun algorithme efficace pour le logarithme discret. Pour mesurer la qualit´ d’un g´n´rateur. Enfin. C’est une tˆche difficile. et e a e en un temps de calcul raisonnable. au moment de calculer B. – B(x) = 0 si logα x > (p − 1)/2. le g´n´rateur dit de Blum et Micali fonctionne de la fa¸on suie e c vante : – G´n´rer un grand nombre premier p. e ee e Si on peut prouver qu’il n’existe aucun algorithme efficace qui permettra cette pr´diction. e e u Quelques tests statistiques Les m´thodes pr´c´dentes ´taient fond´es sur la r´putation de difficult´ ale e e e e e e gorithmique de certains probl`mes. c’est-`-dire une fonca a tion facile ` calculer. alors e il ne peut pas ˆtre consid´r´ comme al´atoire. Par contre. e e e e Si. e e . . . o` x0 est un ´l´ment non nul quelconque de Fp . sans connaˆ ıtre la m´thode. xk . – Soit B la fonction ` valeurs dans {0. et ´tant donn´e une s´quence produite. 1} : a – B(x) = 1 si 0 logα x (p − 1)/2 . on e e e e e peut aussi examiner les s´quences produites. . . Cette fonction est facile ` calculer : on a vu dans les paragraphes pr´c´dents a e e comment g´n´rer un nombre premier. alors le g´n´rateur est dit cryptographique. le nombre suivant dans la s´quence. e e – Soit α une racine primitive de p (un g´n´rateur du groupe des inversibles e e de Fp ). ou cryptographiquement e e e sˆr. car e e e a les crit`res sont nombreux et pas forc´ment triviaux. en ne disposant pas de la suite x0 x1 . pour un g´n´rateur donn´. On a alors bi = B(xi ). C’est donc un probl`me e difficile. . u Par exemple. il est e e e e e e possible. ıt et le g´n´rateur est cryptographiquement sˆr.

57 50. Par exemple.39 12.68 21. Voici comment fonctionne le test du χ2 . e e e On choisit ce nombre ´gal ` |V | − 1.67 23.83 34.21 24.31 19. puisque pr´cis´ment le g´n´rateur est al´atoire. on a une probabilit´ attendue pi . de taille n. il faut e e e donc d´cider ` partir de quel degr´ de divergence le g´n´rateur n’est plus e a e e e consid´r´ comme al´atoire.80 p = 0. e On mesure l’´cart entre la distribution attendue et observ´e avec le param`tre : e e e n K= i=1 (ei − npi )2 npi Il reste ` d´cider quelles sont les valeurs acceptables pour le param`tre K. dont nous donnons un extrait Elles sont donn´es par des tables dites du χ e ici dans le tableau 1.4: Extrait de table du χ2 .22 30. la premi`re colonne donne le nombre de « degr´s de libert´ ». on consid´rera donc e e comme tr`s peu probable qu’elles aient ´t´ g´n´r´es par un bon g´n´rateur e ee e ee e e (mˆme si ce n’est pas impossible).89 Tab. 9 10 11 12 15 20 30 p = 0. Par exemple. Un g´n´rateur pseudo-al´atoire cens´ g´n´rer e e e e e e des nombres entre 0 et 10 selon une loi uniforme donne la s´quence : 0 0 5 2 e .00 31.41 43.4.22 (Test du χ2 ). a e e 2 . la probabilit´ que K d´passe e a e e 24. pour un alphabet de taille 21.01. la e a ligne not´e 20. 95 16. 1.03 25.25 23. La premi`re ligne donne la probabilit´ que la valeur K soit e e e inf´rieure ` la valeur du tableau. e Pour tout caract`re vi de l’alphabet V .58 37.3 Codage par blocs. e le test du χ2 (khi-deux) permet de mesurer la d´viance par rapport ` une loi e a discr`te uniforme attendue. ee e Il faut garder ` l’esprit qu’avec un g´n´rateur al´atoire. e e et un effectif observ´ ei sur la s´quence g´n´r´e.72 26. Les fr´quences e e e ee e attendues ne seront jamais exactement ´gales aux fr´quences observ´es. mˆme celles dont la distribution est compl`tement diff´rente de e e e celle attendue. Ces s´quences e e e e e e seront seulement tr`s peu probable.72 pour un alphabet de taille 12 est 0.70 14. Exercice 1. alg`bre et arithm´tique e e 75 Les statistiques nous fournissent ici l’outil ad´quat pour ces tests. toute s´quence est a a e e e e priori possible. 99 21. Soit.85 18.55 13. Si on les obtient. Dans ce tableau.92 18.77 p = 0.1. 75 11.

Il est important e e de noter que chaque test permet de rejeter un g´n´rateur. c’est-`-dire ne disposant pas des informations dont e e a ne jouit que le destinataire. Nous e e avons d´j` vu ` plusieurs reprises que le d´codage n’est pas une entreprise triea a e viale consistant ` inverser les fonctions de codage. qui rendent codage et d´codage dissye e m´triques . . il e e ne permettra pas de rejeter la s´quence 123456123456123456. lors d’une compression par exeme ple . on a vu que l’image fax perdait en qualit´ . mais seul l’ensemble e e de tous les tests permettra de l’accepter. et encore. cassage ou attaque pour le e e d´chiffrement non autoris´. il existe de nombreuses e m´thodes de codage « avec pertes ». s’il est utile. comme dans le codage fax d´taill´ en d´but de chapitre. reconstituer sans ambigu¨ e le message source en red´ıt´ e coupant la suite selon les blocs dont elle est constitu´e requiert une forme e particuli`re du code . e e On peut par exemple renforcer ce test en l’appliquant aux extensions de la source induite par le message. si le codage e e n’inclut pas toute l’information de d´part. souvent e e e e largement biais´e par de fausses intuitions sur ce qu’est vraiment l’al´atoire). 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 d´codage totalement diff´rents . Que e pensez-vous de ce g´n´rateur ? Que pensez-vous ce ce test ? Solution page 285. Nous allons d´velopper tous ces points. nous allons d´velopper des m´thodes e e de codage en adoptant le point de vue de l’op´ration inverse. le message cod´ e e e e est une suite de bits. sans rigueur math´matique. et ce pour plusieurs raisons : a – si. e e Il est ´vident qu’un test de ce type.4 D´coder. en employant le mot d´codage comme e e un terme g´n´ral permettant de retrouver la source ` partir d’un message cod´.76 e Chapitre 1 : Th´orie des codes 3 6 4 2 0 2 3 8 9 5 1 2 2 3 4 1 2. le d´codage. Par exemple. et s’il peut ˆtre suffisant e e pour rejeter un g´n´rateur. le g´n´rateur ne se r´v`le fragile au e e e e e e x + 1i`me . Faites le test du χ2 sur cette s´quence. attaquer e e Pour terminer ce chapitre d’introduction. e Il n’est pas garanti qu’ayant pass´ x tests. 1. e – le d´codage exact n’est parfois mˆme pas totalement possible. e e il se peut qu’il existe un algorithme efficace pour l’une et pas pour l’autre. n’est pas suffisant pour l’accepter. alors qu’un œil e mˆme peu exerc´ y verra la r´gularit´ (bien qu’il faille se m´fier de l’impression e e e e e de r´gularit´ qu’on peut soi-mˆme avoir en regardant une s´quence. e e a e d´chiffrement pour le d´codage cryptographique. Il existe de nombreux tests statistiques qui renforcent la confiance qu’on pourra avoir en un g´n´rateur. d´chiffrer.

01. . 10. . n) . . f (J) = 9. cm = x1 . f (B) = 1. BUJ ou MAJ ou BCAJ. . Z} par les entiers C = {0. d´chiffrer.f (an ). f (Z) = 25 . chaˆ sur un alphabet source quelconque.1 D´coder sans ambigu¨ e e ıt´ La premi`re qualit´ que doit avoir un code est de pouvoir ˆtre d´cod´. . Un code C sur un alphabet V est non ambigu si et seulement e e si pour toutes s´quences c = c1 . il existe au plus une s´quence c = c1 . xn . en tant qu’ene semble des mots de codes. . Le code. . f (K) = 10. cn et d = d1 . 10} est uniquement d´chiffrable. . . est alors l’image de la fonction de codage f . On a alors le message cod´ c1 . e e ıt´ e Prenons l’exemple du codage des lettres de l’alphabet S = {A. . dm de C + : e c = d =⇒ (n = m et ci = di pour tout i = 1.cn = f (a1 ). . attaquer e e 77 1. . . Le th´or`me de Kraft donne une condition n´cessaire et suffisante sur e e e la longueur des mots de code pour assurer l’existence d’un code uniquement d´chiffrable. . . e . . e – le code C = {01. . e e e Supposons que le code est une fonction bijective. . pour tout e x = x1 .4. e – le code C = {0. mais pas forc´ment un probl`me trivial.1. avec ci ∈ V + pour tout i. . et pour un ıne alphabet de code V . Il est donc n´cessaire d’ajouter des contraintes sur le code pour qu’un message e quelconque puisse ˆtre d´chiffr´ sans ambigu¨ e.. La propri´t´ suivante est une simple reformulation : ee Propri´t´ 7.. Le fait que f soit bijective ne suffit cependant pas pour que le message puisse ˆtre e d´cod´ sans ambigu¨ e par le r´cepteur. . 25} ´crits en base 10 : e f (A) = 0. Pour un e e message source a1 .. appelons f la fonction de codage... xn ∈ V + . . 001} n’est pas uniquement d´chiffrable. 110} est uniquement d´chiffrable. qui transforme le message compos´ par l’´metteur en message qui est transmis par le canal. . . . f (L) = 11. – le code C = {0. Le mot de code 1209 peut alors correspondre ` diff´rents messages : par exema e ple. . Exemple : Sur l’alphabet V = {0. .4 D´coder. C’est e e e e e une ´vidence. . cm ∈ C + telle que e c1 . . . e La contrainte de d´chiffrabilit´ implique une longueur minimale aux mots de e e code. ..an . . . 1}. Un code C sur un alphabet e e e ıt´ V est dit non ambigu (on dit parfois uniquement d´chiffrable) si.

.. puis n q1i 1 quand u tend vers l’infini.r i Une fois d´velopp´e. e Pour 1 k m. N(s) est le nombre de combinaisons de i=1 l mots de C de longueur totale s. Comme C est d’arit´ q.. Cela donne n i=1 1 q li u mu − u + 1 mu . .. . . ln si et seulement si n i=1 1 |V |li 1. Preuve. b = 01. que nous e e e e verrons plus loin dans ce chapitre. ce qui n’est pas toujours le cas e e e . alors N (s) q s . Soit m la longueur du plus long mot de C. + iu . (mu)1/u ..+iu =s ri1 . . Soit N (s) = i1 +.78 e Chapitre 1 : Th´orie des codes Th´or`me 10 (Kraft). ... (⇒) Soit C un code uniquement d´chiffrable. e Grˆce ` la propri´t´ du pr´fixe. Et donc n q1i i=1 l i=1 l (⇐) La r´ciproque est une cons´quence du th´or`me de McMillan. e Exemple : a = 101000. . c2 n’est pas un pr´fixe de c1 . Il existe un code uniquement d´chiffrable sur un e e e alphabet V dont les n mots sont de longueur l1 .. r . c = 1010 : b n’est pas un pr´fixe de a mais e c est un pr´fixe de a. on obtient les termes ri1 .. pour un entier quelconque u. Nous d´veloppons e l’expression suivante.+iu =s qs mu N (s) s’´crit : ( n q1i )u = e s=u q s . d’arit´ q (le vocabulaire e e du code comporte q caract`res). on peut d´chiffrer les mots d’un tel code d`s a a ee e e e la fin de la r´ception du mot (instantan´it´). P Propri´t´ du pr´fixe e e e On dit qu’un code C sur un alphabet V a la propri´t´ du pr´fixe (on dit parfois ee e qu’il est instantan´ . soit rk le nombre de mots de longueur k. c2 ). et que N (s) est inf´rieur au nombre total de e e messages de longueur s sur cet alphabet. L’expression initiale i1 +. ou irr´ductible) si et seulement si pour tout couple de e e mots de code distincts (c1 . chaque terme de cette somme est de la forme qi11 iuu . riu . Comme C est uniquement d´chiffrable. deux e combinaisons de mots de C ne peuvent ˆtre ´gales au mˆme mot sur l’alphabet e e e de C.riu . avec u 1 : n i=1 1 q li u m = k=1 rk qk u . e e +.+i Et en regroupant pour chaque valeur s = i1 + ... .

Est-ce un code instantan´ ? e 3. ee e P La r´ciproque e est fausse : le code C = {0. cj = dj ). Les deux r`gles de codage sont : e – Une chaˆ de quatre “0” cons´cutifs (sans “1”) est cod´e par 0. c. il faut attendre l’occurrence suivante c d’un 0 pour pouvoir d´chiffrer le second mot (0 ou 01 ?). . e On propose le code suivant : on compte le nombre d’occurrences de “0” avant l’apparition d’un “1”. on aurait ci = di .125 0. . Preuve. si V = 0. ce qui est en contradiction avec la d´finition de i.1.5 0. les ci et di ´tant ıne e des mots de C et ci = di pour au moins un i. 01} est uniquement d´chiffrable. ci est un pr´fixe de di et dans le cas contraire di est un pr´fixe e e de ci . Si e l(ci ) < l(di ). Tout code poss´dant la propri´t´ du pr´fixe est uniquement d´e e e ee e e chiffrable.4 D´coder. . 01. on code la chaˆ ıne par le mot de code “1e1 e2 ”. sinon. La propri´t´ suivante est ´vidente. 11.. Coder adbccab. 1) est l’alphabet source et P = e u (P (0) = p. d´chiffrer. ıne e e – Si moins de quatre “0” apparaissent avant un symbole “1”. . o` e1 e2 est la repr´sentation binaire du nombre u e de “0” apparus avant le “1”. attaquer e e 79 pour les codes uniquement d´chiffrables : par exemple. P) (suppos´e infinie) o` S = (0. D´coder 1001101010. .25 0.125 a b c d 0 10 110 111 On code S avec le code suivant : 1. et si on e re¸oit le message m = 001111111111 . ee e Exercice 1. d} et de probabilit´s : e U P (U ) s1 = a s2 = b s3 = c s4 = d 0. C n’a donc pas la propri´t´ du pr´fixe.23. . Choisissons le plus petit i tel que ci = di (pour tout j < i. mais ne poss`de e e pas la propri´t´ du pr´fixe. b. vu le choix de i. e 2. Alors e il existe une chaˆ a ∈ V n telle que a = c1 . Soit S la source d’alphabet {a. Alors l(ci ) = l(di ). On veut construire un code compresseur binaire sur une source S = (S. e Propri´t´ 8. Exercice 1. . Calculer l’entropie de la source.24. cl = d1 . mais assure la ee e ee e d´chiffrabilit´ d’une cat´gorie de code tr`s usit´e. P (1) = 1 − p) est la loi de probabilit´ de S. e e e e e Propri´t´ 9. Solution page 285. dk . Tout code dont tous les mots sont de mˆme longueur poss`de la e e e e propri´t´ du pr´fixe. Soit un code C sur V qui n’est pas uniquement d´chiffrable.

dans notre cas o` l’on suppose la source sans m´moire. p(s1 ) ∗ u e p(s2 ). e 1. L’arbre de Huffman L’arbre de Huffman est un objet permettant de repr´senter facilement tous les e codes qui ont la propri´t´ du pr´fixe. En d´duire le taux de compression de ce code. Dans ce dernier cas. mais e elles sont g´n´ralisables pour des codes d’arit´ quelconque. 3. a . calculer le nombre de bits de code n´cessaires e par bit de source. e e e tandis que l’occurrence “001” est cod´ par “110” car deux “0” sont apparus e avant le “1” et que “10” est la repr´sentation binaire de deux. on peut associer un mot de {0.10: Exemple d’arbre de Huffman. 1. et cette repr´sentation facilite grandeee e e ment leur manipulation. ` A chaque feuille d’un arbre de Huffman. Solution page 285. On donne ici les d´finitions dans le cas binaire. Le code poss`de-t-il la propri´t´ du pr´fixe ? e ee e 2. a e 1 0 1 0 10 1 0 1 0 1 0 010 1 0 111 110 1 0 001 1 0 0111 0110 0001 0000 Fig. on assigne le symbole “1” ` l’arˆte reliant la racine locale au fils gauche et “0” au fils droit. Expliciter les 5 mots de code. 1}+ : c’est la chaˆ des symboles marquant les arˆtes d’un chemin depuis la racine ıne e jusqu’` la feuille. Pour chaque mot du code. e e e On appelle arbre de Huffman un arbre binaire tel que tout sous-arbre a soit 0 soit 2 fils (il est localement complet).80 e Chapitre 1 : Th´orie des codes Par exemple. l’apparition de quatre z´ros cons´cutifs “0000” est cod´e par “0”. calculer la probabilit´ d’occurrence dans S d’une chaˆ de k “0” e ıne suivis d’un “1”. Sachant que la probabilit´ d’apparition de deux symboles successifs s1 et e s2 est. c’est ` e a dire la longueur moyenne par bit de source.

Mais ils ne permettent pas de repr´senter tous les codes uniquee e ment d´chiffrables. 0110. attaquer e e 81 Le maximum sur l’ensemble des longueurs des mots d’un arbre de Huffman est appel´ hauteur de cet arbre. ee e P Propri´t´ 11. 10.1. Soit un arbre de Huffman complet (toutes les feuilles sont ` distance a constante de la racine) de hauteur l. 0001. et le code de e e Huffman a la propri´t´ du pr´fixe. Repr´sentation des codes instantan´s e e L’introduction des arbres de Huffman est justifi´e par les deux propri´t´s suie ee vantes. la hauteur de cet arbre est appel´e aussi hauteur du code C. d´chiffrer. . Un code de Huffman poss`de la propri´t´ du pr´fixe. 0111. alors le chemin repr´sentant e e c1 dans l’arbre de Huffman est inclus dans le chemin repr´sentant c2 . En effet. 110. On a finalement un arbre de Huffman e e contenant tous les mots de C. qui assurent que tous les codes instantan´s pourront ˆtre manipul´s e e e avec de tels arbres. On e a a peut alors ´laguer le sous-arbre dont ce nœud est racine (tous les mots pouvant e ˆtre repr´sent´s dans les nœuds de ce sous-arbre ont ci pour pr´fixe). Propri´t´ 10. par d´finition. associ´s ` des feuilles de l’arbre. Comme e c1 et c2 sont. 010. e e e ee e Preuve. e Exemple : le code correspondant ` l’arbre de la figure 1.4 D´coder. Tout code qui poss`de la propri´t´ du pr´fixe est contenu dans e e e ee e un code de Huffman. 001.10 est : a {111. Le th´or`me de McMillan certifie que les codes uniquement e e e d´chiffrables (non ambigus ) n’ayant pas la propri´t´ du pr´fixe ne sont pas e ee e indispensables. On peut effectuer e la mˆme op´ration pour tous les mots. c1 = c2 . 0000} . Preuve. P Th´or`me de McMillan e e On a vu que les arbres de Huffman permettaient de repr´senter tous les codes e instantan´s. Si un mot de code c1 est un pr´fixe de c2 . il existe toujours un autre code qui a la propri´t´ du ee pr´fixe avec les mˆmes longueurs de mots. Ne pas consid´rer les codes ambigus e e e ne fait donc rien perdre en compression. Chaque mot ci de C est associ´ ` un chemin depuis la racine jusqu’` un nœud. Tous les e e e e mots de C sont toujours dans les nœuds de l’arbre r´sultant. On appelle code de Huffman l’ensemble des e mots correspondant aux chemins d’un arbre de Huffman . Il n’existe e e a donc pas deux mots diff´rents dont l’un est le pr´fixe de l’autre. la longueur du plus long mot de C.

bien que le code ajout´ ` chaque ligne ne d´pendait pas du contenu de la ligne. e e le destinataire peut v´rifier en recalculant l’empreinte que l’empreinte re¸ue e c est bien l’empreinte du message re¸u. cn } sont de longueur l1 . . e e . . mais l’image ou le son avec des diff´rences qui ne seront pas e perceptibles. Corollaire 1. . ni mˆme bijece e tif. 1. C’est une cons´quence des th´or`mes de Kraft et McMillan. |V |li i=1 ` Exercice 1. e Ne sont cod´es que les informations qui permettront de reconstituer non pas e le message entier. On a vu un exemple de codage de ce type pour le code du fax. il existe un code qui poss`de e e e la propri´t´ du pr´fixe dont les mots {c1 . . pour des raisons diverses. . . Les codes d´e e e e chiffrables qui ne poss`dent pas la propri´t´ du pr´fixe ne produisent pas de e ee e code aux mots plus courts que les codes instantan´s. Sur un alphabet V . Pour le mot m = s1 .4. e e Solution page 285. . e e e e Le premier principe d’ajout d’une empreinte pour la d´tection d’erreurs est e l’ajout d’un simple bit de parit´ aux blocs cod´s. que des fonctions de codage ne codent qu’une empreinte d’un message.82 e Chapitre 1 : Th´orie des codes Th´or`me 11 (McMillan). . ln . ou alors seulement l’information jug´e e suffisante aux besoins de la transmission. A l’aide de la repr´sentation des codes instantan´s par des e e arbres de Huffman.25. sk . .2 Les codes non injectifs Tous les codes n’assurent pas ainsi le d´codage non ambigu. auxquels on peut donc e se restreindre pour la compression d’information (leurs propri´t´s les rendent ee plus maniables). . ee La compression avec perte est utilis´e par exemple pour les images ou les sons. . S’il existe un code uniquement d´chiffrable dont les mots sont e de longueur l1 . L’empreinte de v´rification e Le principe le plus simple de la d´tection d’erreur est un exemple de calcul e d’empreinte. . Il peut arriver. et ainsi v´rifier que la transmission n’a c e pas alt´r´ le tout. donner une preuve du th´or`me de McMillan. . alors il existe un code instantan´ de mˆmes longueurs e e de mots. ln si ee e et seulement si n 1 1. ea e Cela n’assurait d’ailleurs qu’une efficacit´ de d´tection tr`s limit´e. . Les empreintes sont par exemple utilis´es pour la d´tection d’erreur : en envoyant un message et son empreinte.

1}∗ −→ {0. e Taille quelconque Chaine d’entrée Taille fixe Fonction de hachage n bits empreinte Fig. mais code une empreinte plus e ´volu´e. mais qui permet de l’identifier. D’autre part. Nous e verrons plus en d´tails ce m´canisme dans le chapitre 4 en particulier sur la e e figure 4. Ainsi.11: Principe d’une fonction de hachage. d´chiffrer. l’ajout d’un bit de parit´ e permet de d´tecter une erreur portant sur un nombre impair de bits. . Il est ´vident que cette dere e i=1 ni`re ´galit´ devient fausse lorsque des bits en nombre impair dans l’ensemble e e e « message+empreinte » changent de valeurs.11. 1. non de le reconstituer. car elle est cens´e identifier le message. e Formellement.2 page 220. ainsi que de v´rifier l’int´grit´ d’un doe e e cument.5. attaquer e e 83 le bit de parit´ vaut b(m) = ( k si ) mod 2. qui lui-mˆme est une fonction de e e e hachage particuli`re. Les fonctions de hachage La fonction de hachage suit le mˆme principe.4 D´coder. Cela fonctionne comme une e empreinte digitale qui ne permet pas de reconstituer d’autres caract´ristiques e d’un individu. C’est la d´finition d’un r´sum´ e e e e e e du message qui permettra. une fonction de hachage H : {0.1. comme illustr´ sur la figure 1. on peut e par exemple ne crypter que l’empreinte. 1}n est une application qui transforme une chaˆ de taille quelconque en une chaˆ de taille ıne ıne fixe n. elles permettent de mettre au point des protocoles de signature ´lectronique et d’authentification e des messages (voir la section 3. Les fonctions de hachage sont particuli`rement utiles en cryptographie. Si e a l’image de x par la fonction de hachage est appel´e l’empreinte de x. mais de l’identifier si on dispose au pr´alable d’une table de correspondance.2). au mˆme titre que le bit de parit´. Elles e permettent notamment de diminuer la quantit´ d’information ` crypter.

ee D’autres propri´t´s peuvent ˆtre souhait´es : ee e e – R´sistance ` la pr´image : ´tant donn´ y. Exercice 1. Soit f : Fm → 2 Fm une fonction quelconque. En outre. Une fonction de hachage ` sens unique est une fonction de hachage qui v´rifie a e les propri´t´s de r´sistance ` la pr´image et ` la seconde pr´image. . ` l’instar des e e a bits de parit´ .26 (S´curit´ des fonctions de hachage). les collisions sont in´vitables. e – les codes d’authentification de messages (MAC pour Message Authentification Code) qui g`rent ` la fois l’int´grit´ et l’authentification de la source e a e e d’une donn´e. Une des contraintes de base dans l’´laboration d’une fonction de hachage est e l’efficacit´ : une empreinte doit ˆtre facile ` calculer. On propose comme fonction de hachage ` it´rer a e 2 g : F2m → Fm . la fonction telle que pour un x de 2m bits. on ne peut pas trouver en e a e e e temps raisonnable un x tel que y = H(x). – R´sistance aux collisions : on ne peut pas trouver en temps raisonnable e x et x tels que H(x) = H(x ) . alors x est appel´e ant´c´dent ou pr´image de y (on rappelle que y e e e e est l’empreinte de x). on ait g(x) = g(xh ||xl ) = f (xh ⊕ xl ). on ne peut pas e a e e e trouver en temps raisonnable x = x tel que H(x) = H(x ) . les fonctions e e a de hachage ont une propri´t´ naturelle de compression. e a e Solution page 287. e Nous verrons plusieurs exemples de telles utilisations au chapitre 3. Montrer.84 e Chapitre 1 : Th´orie des codes On parle de collision entre x et x lorsque x=x H(x) = H(x ) Dans la mesure ou l’entr´e d’une fonction de hachage peut avoir une taille e quelconque (en particulier > n). que la r´sistance aux collisions implique la r´sistance ` la seconde pr´e e e a e image qui implique la r´sistance ` la pr´image. Les fonctions de hachage peuvent ˆtre utilis´es pour : e e – les codes de d´tection de manipulation (MDC pour Manipulation Detection e Code) qui permettent de s’assurer de l’int´grit´ d’un message. par contrae e pos´e. e a e Solution page 286. – R´sistance ` la seconde pr´image : ´tant donn´ x. d´coup´ en deux e e 2 2 blocs xh et xl . Montrer que g n’est pas r´sistante ` la seconde pr´image. Si y est tel que e y = H(x). ee e a e a e Exercice 1.27 (Une mauvaise fonction de hachage).

1. 1}n Une telle fonction est illustr´e dans la figure 1. Un th´or`me prouv´ ind´pendamment par Ralph Merkle et Ivan e e e e Damg˚ permet de circonscrire les propri´t´s th´oriques d’une telle construcard ee e tion : Th´or`me 12 (Merkle-Damg˚ e e ard). .4 D´coder. L’une des constructions les plus connues de fonction de hachage fait intervenir une fonction de compression h : {0. . Le message M est d´coup´ en blocs de b bits M1 .12: Fonction de compression d’une fonction de hachage. Si h est r´sistante aux collisions. d´chiffrer. alors e H l’est aussi. 1}b × {0. .13. Mk (il faut ´ventuellement e e e rajouter des bits fictifs afin que la taille de M divise exactement b).12. 1}n −→ {0. .13: Construction de Merkle-Damg˚ ard. . IV (Initial Value) est une chaˆ (de taille n) fix´e par l’algorithme ou l’impl´ıne e e mentation. M1 M2 Mk |M| h IV (de taille n) h h h H(M) (de taille n) Fig. 1. On it`re la fonction de compression h selon le mod`le pr´sent´ dans la fie e e e gure 1. e b bits n bits h h i−1 n bits h i Fig. 1. attaquer e e 85 Construction de fonction de hachage de Merkle-Damg˚ ard.

Soit f : F2m → Fm 2 2 une fonction de hachage. e e 2. la construction de Davies-Meyer (voir figure 1. alors h(x1 ||x2 ) = e 2 2 2 f (f (x1 )||f (x2 )). particuli`rement robuste d’un point de vue crype e e tographique.28. La construction de Miyaguchi-Preneel (voir figure 1.14) d´finit hi = EMi (hi−1 ) ⊕ hi−1 . EMi ´tant une fonction de cryptographie ` clef e e a secr`te par blocs. u e e e 1. Prouver le th´or`me de Merkle-Damg˚ par la contrapos´e.14: Construction de Davies-Meyer. La fonction g est une fonction d’adaptation ` la taille de clef de la fonction de a chiffrement E.29 (Construction par composition).86 e Chapitre 1 : Th´orie des codes C’est ce r´sultat qui fait de Merkle-Damg˚ la construction la plus utilis´e e ard e dans les calculs d’empreintes. Par exemple. On a ainsi hi = Eg(hi−1 ) (Mi ) ⊕ hi−1 ⊕ Mi . Montrez que si f est r´sistante aux collisions alors h l’est ´galement. x2 ∈ F2m . Aussi les e fonctions de compression utilisant cette construction sont moins robustes. Exercice 1. Soit maintenant une deuxi`me fonction de hachage e d´finie par h : F4m → Fm telle que pour x1 . . Exercice 1. Quel est l’inconv´nient de cette construction ? e Solution page 287. Il reste ` expliciter la construction des fonctions de compression h r´sistantes a e aux collisions. e e ard e Solution page 287. Mais une attaque de la r´sistance ` la pr´image fut con¸ue en 1999 par Drew e a e c Dean qui exploitait la d´finition de point fixe sur cette construction. e b bits Mi h K n bits n bits x i−1 h E E K(x) h i Fig. o` || d´signe l’op´ration de concat´nation.15) est une am´lioration e de la construction pr´c´dente. 1.

le fax n’est qu’une mauvaise e e copie de l’original. variant avec le temps not´ t. e e Il arrive donc que le codage agisse sur des fonctions plutˆt que sur des entit´s o e discr`tes ou num´riques. pourvu que la perte ne soit pas visible ` l’œil ou ` l’oreille. Le codage sera e e alors une fonction particuli`re. et c’est le principe de cette section. ou une partie de ce message. attaquer e e b bits Mi 87 h g K n bits n bits h i−1 x E E K(x) h i Fig. On e e a vu que des donn´es continues ou analogiques. de p´riode e e e . On peut aussi coder une image ou un son sans en garder toutes les informations. e Il se peut pourtant que cette num´risation naturelle ne soit pas le meilleur e mod`le pour bien des codes.1. on peut e e e coder ` chaque instant une fr´quence et une amplitude. ou transformation. on a e les d´compose en pixels et on peut coder une couleur pour chaque pixel. pour les images par exemple les coue leurs de deux pixels voisins ne sont pas ind´pendantes.15: Construction de Miyaguchi-Preneel. e e a e et un d´codage int´gral impossible. o e Transform´e de Fourier et transform´e discr`te e e e Supposons qu’un message. Pour les images. d´chiffrer. On code alors par blocs de pixels. par une fonction p´riodique ou presque p´riodique. a a Les informations num´riques sont par essence des informations discr`tes. Par exemple. et e e qu’on appellera alors plutˆt transform´e. puisse s’exprimer comme une fonction p´riodique h.4 D´coder. mais on estime qu’elle remplit son devoir de faire passer l’information contenue dans la feuille. qui s’applique elle-mˆme sur des fonctions. Pour les sons. Souvent. et il sera plus judicieux e de coder un ensemble de pixels comme une fonction que chacun ind´pendame ment comme une valeur. Transformations avec perte D’autres proc´d´s de transformation aboutiront ` un message cod´ avec perte. pouvaient facilement ˆtre num´ris´es. 1. comme par exemple les sons e ou les images.

C’est le cas par exemple des sons. . . e e Transform´e de Fourier Discr`te (DFT) 1 Codage : Hk = √ n 1 e D´codage : hj = √ n n−1 hj ω kj j=0 n−1 Hk ω −kj k=0 ou encore. .88 e Chapitre 1 : Th´orie des codes 2π. . c’est-`-dire des vecteurs h0 . puisqu’il tire parti de la p´riodicit´ de h. . ω v´rifie par exemple −1 e 2iπ e− n −1 − 2inπ n n−1 k k=0 ω = n−1 k=0 e− 2iπ n k = = 0. H(f ). puisque par essence. e La transform´e de Fourier dite discr`te suit le mˆme principe. e La transform´e de Fourier est un proc´d´ de codage permettant de passer d’une e e e repr´sentation ` une autre. . . h(ω n−1 )] n . mais avec des e e e fonctions discr`tes. . Hn−1 de variables e a 2iπ discr`tes. Puisqu’on fait l’hypoth`se que h est e p´riodique. variant e e en fonction d’une fr´quence f . si h(X) = n−1 j j=0 hj X alors (1. On exprime alors ainsi la transformation en notant ω = e− n une e e e e racine ni`me de l’unit´. souvent. Hn−1 ] = √ [h(ω 0 ). . et est exprim´ par les formules suivantes. Comme tout proc´d´ de codage. hn−1 et H0 . si le codage naturel et imm´diat est plutˆt h(t). e o qui code exactement la mˆme information puisque le codage est r´versible. e e Transform´e de Fourier e ∞ Codage : H(f ) = −∞ ∞ h(t)e2πif t dt H(f )e2πif t dt D´codage : h(t) = e −∞ Pour un son. le mˆme message peut s’exprimer comme une amplitude H. . e e est beaucoup plus ´conomique. e e e nos messages num´riques doivent ˆtre cod´s par des informations discr`tes. e e e e Supposons maintenant que nos fonctions h(t) et H(f ) soient des fonctions discr`tes. . . il est associ´ ` e a e e e a son inverse. La e e e transform´e est donc directement efficace pour la compression. Elle nous sera ´videmment tr`s utile. le d´codage. . .9) 1 DF T (h) = [H0 .

est e une fonction de l’espace (ce qui permet de coder une image). il est possible lors d’un tel codage de ne garder que certains coefficients de la DFT ou DCT. et ne e a change pas forc´ment le r´sultat audiovisuel obtenu. ou quasi-p´riodique. j) cos( i=0 j=0 La DCT est ´galement un bon principe de compression pour les images. y) cos( x=0 y=0 n−1 n−1 (2x + 1)iπ (2y + 1)jπ ) cos( ) 2n 2n (2x + 1)iπ (2y + 1)jπ ) cos( ) 2n 2n 1 D´codage : h(x. Algorithme de la DFT On peut ´crire la transformation DFT sous forme matricielle e 1 H = √ Ωh n 1 o` Ωk. La transformation inverse s’´crit alors (Ω−1 )k. C’est par exemple la couleur d’un a e pixel aux coordonn´es x et y.4 D´coder. ce qui r´duit la taille de l’information ` coder. Elles peuvent d´j` se r´v´ler de e ea e e bons proc´d´s de compression en elles-mˆmes. j) = 1 n n−1 n−1 h(x. pour une fonction h discr`te. il est possible de repr´sene e c e ter la mˆme information diff´remment. e . repr´sentant une analyse spectrale de l’image. En ea a a effet.1. u e e e Un algorithme imm´diat pour le calcul de la transform´e utilise le produit matrice-vecteur et a donc une complexit´ O(n2 ). d´chiffrer. mais au lieu d’ˆtre une e e e e fonction du temps (ce qui est par exemple un bon mod`le pour un son). e e Toutes ces transformations sont r´versibles. y). De la mˆme fa¸on. par une fonction H de deux variable e e discr`tes i.j = √n ω −kj . j. attaquer e e Le d´codage est correct car e 1 hj = √ n n−1 k=0 89 1 √ n n−1 hi ω ki ω −kj = i=0 1 n n−1 n−1 hi i=0 k=0 (ω i−j )k = 1 n n−1 hi × i=0 0 si i = j n sinon e e e La transform´e discr`te en cosinus (DCT) d´rive directement de la transform´e de Fourier discr`te. y) = e n H(i. ainsi e que pour tout signal p´riodique. mais leur int´rˆt est aussi dans e e e ee la facilit´ ` choisir des informations importantes et ` ne garder que celles-l`. e e Transform´e en Cosinus Discr`te (DCT) e e Codage : H(i.j = ω kj . c’est donc une fonction ` deux variable discr`tes h(x. Nous allons d´tailler ces e e e principes dans le chapitre 2.

. a e e DFT et racines ni`mes de l’unit´ dans un corps fini e On consid`re dans un corps Fq le polynˆme X n − 1. m = n 2 m−1 n−1 Hk = j=0 m−1 hj ω kj + j=m hj ω kj n−m+1 = j=0 m−1 hj ω kj + j=0 m−1 hj+m ω k(j+m) hj+m ω kj ω km j=0 = j=0 m−1 hj ω kj + = j=0 (hj + ω km hj+m )ω kj e Or. Une racine e o e ni`me de l’unit´ dans Fq est une racine simple. Ici. s’il y en a. . soit C(n) = O(n log n). alors on d´finit le vecteur e ˜ hp = (h0 + hm . ce qui e e sera extrˆmement important pour le codage. . on d´finit le vecteur e e ˜ hi = (h0 − hm .Si k est pair. qui a une taille de la moiti´ de h. En e e e supposant que n est pair. . e ˜ e On obtient l’algorithme 11. . La complexit´ de cet algorithme est C(n) = e 2C(n/2) + n. . comme ω est racine ni`me de l’unit´. e . si k est impair. C’est une complexit´ quasiment lin´aire. avec n < q. Le principe de « diviser pour e r´gner » est de couper le probl`me en sous-probl`mes ´quivalents de taille e e e e inf´rieure.90 e Chapitre 1 : Th´orie des codes Un algorithme de type « diviser pour r´gner » diminue la complexit´. hm−1 + hn−1 ) et les coefficients pairs de la transform´e H de h sont les coefficients de la e ˜ transform´e H p de hp . du polynˆme X n − 1. on s´pare l’expression de la transform´e en deux parties. . hm−1 − hn−1 ) et les coefficients impairs de la transform´e H de h sont les coefficients de la e ˜ transform´e H i de hi .De mˆme. e ˜ e . . . qui a une taille de la moiti´ de h. e o L’ordre d’une racine de l’unit´ γ est le plus petit entier o tel que γ o = 1. ω km vaut 1 ou −1 selon la parit´ de e e k. e e et donc un gain important par rapport ` l’algorithme imm´diat.

˜ Calculer r´cursivement H e ˜ Les coefficients pairs de H sont les coefficients de H p et les coefficients ˜ i. d´chiffrer.4 D´coder.3. e e C’est cette derni`re notion qui est essentielle au fonctionnement de la DFT. son ordre divise ee a ee forc´ment q − 1. impairs de H sont les coefficients de H Fin Si Puisque γ est une racine de X n − 1. clairement o < n.5. Les corps supportant la DFT pour n des e tives n e puissances de 2 sont bien entendu particuli`rement int´ressants pour applie e quer l’algorithme rapide diviser pour r´gner. Si a est une racine primitive ni`me alors an = 1 et n est l’ordre e de a. Mais comme a est un ´l´ment du corps ` q ´l´ments. attaquer e e 91 Algorithme 11 Transform´e de Fourier Discr`te Rapide. le corps ` 786433 e a ´l´ments permet de multiplier des polynˆmes de degr´ jusqu’` 218 par l’algoee o e a rithme rapide car 786433 − 1 = 218 · 3. le th´or`me suivant nous permet de savoir dans quels corps il est e e e possible d’effectuer des calculs rapides pour des vecteurs de taille n donn´e : e Th´or`me 13. De la mˆme fa¸on que pour ces e e c derni`res.1. qui est primitive dans C. les DFT de hi et hp .5. e e Entr´es Le vecteur h dont la taille est une puissance de 2 e Sorties Sa transform´e le vecteur H e Si h est de taille 1 Alors retourner h Sinon ˜ ˜ Calculer les vecteurs hi et hp . une racine primitive (q −1)i`me de l’unit´ est ce que nous avons simplement e appel´ racine primitive dans la section 1. e D´monstration. Soient q une puissance d’un nombre premier et n un entier e e e premier avec q. Le corps fini Fq contient une racine primitive ni`me de l’unit´ e si et seulement si n divise q − 1. dans e e e Fq . autant dans un corps fini on n’est mˆme pas assur´ de leur existence. En effet. car en posant n = ob + r on obtient γ r = 1 et donc r = 0. En outre o divise n. Par exemple. R´ciproquement. nous avons utilis´ une racine ni`me e 2iπ particuli`re.3. . Ainsi. ˜ ˜ ˜ i et H p . on utilise un g´n´rateur g du corps (une e e e e e racine primitive (q − 1)i`me ) dont on est assur´ de l’existence par l’algorithme e e de la section 1. e− n . e e Pour le calcul de la DFT dans le corps C. si q − 1 = kn alors g k est une racine primitive ni`me de l’unit´. e e Autant dans C des racines primitives ni`me sont disponibles pour tout n. e On dit qu’un corps supporte la DFT ` l’ordre n s’il existe des racines primia i`me de l’unit´ dans ce corps. e e Une racine primitive ni`me de l’unit´ est une racine ni`me de l’unit´ d’ordre n.

Trouver une racine primitive 6i`me de l’unit´ modulo 31.5 : tirer au hasard une racine ni`me (une racine du polynˆme o n − 1 dans F ) et tester si son ordre est bien n. am 0 . on peut toujours se placer dans un corps contenant Fq et dans a lequel le polynˆme X n − 1 se factorise compl`tement en polynˆmes de degr´ o e o e 1. e s’´crivent forc´ment sous la forme g e e alors g un = 1 et donc un = t(q − 1) car g est un g´n´rateur.92 e Chapitre 1 : Th´orie des codes e Il nous reste ` calculer de telles racines primitives ni`me de l’unit´. e D´monstration. que nous utilisons fr´quemment en th´orie des codes (en o e e t´moignent toutes les constructions ` base de polynˆmes dans ce chapitre). on note A = DF T (P ) et B = DF T (Q) les transform´es de Fourier · · ·+bn X e discr`tes respectives des vecteurs a = a0 . Il est noter qu’il y a une solution pour travailler n´anmoins avec des racines e e ` primitives ni`me dans un corps qui n’en contient pas.31. . e Solution page 287. ou plutˆt directement une variante de l’algorithme de e e o e la section 1. . Enfin les racines primitives ni`me tk : si g u est une racine primitive ni`me . le produit e c e e de deux polynˆmes. Si un corps fini poss`de une racine primitive ni`me de l’unit´ e e alors il en poss`de exactement ϕ(n). Tous ces g tk sont distincts sans quoi g ne serait pas un g´n´rateur . e o` les coefficients des polynˆmes sont ´tendus par des z´ros jusqu’au degr´ u o e e e . . Ce corps est une extension du corps Fq et est appel´ le corps de scindage de e X n − 1.30. Alors e e e e g k est une racine primitive ni`me . Cela prouve que e e u est de la forme tk. 0. Soit g un g´n´rateur du corps. ´ Etant donn´s deux polynˆmes P = a0 + a1 X + · · · + am X m et Q = b0 + b1 X + e o n . e Exercice 1. e e La transform´e de Fourier discr`te et l’algorithme de calcul que nous venons e e de voir permettent de faire ce calcul en temps O(n log(n)). e Solution page 288. . bn 0 . Il est possible a e d’utiliser un g´n´rateur. e e Corollaire 2. 0 et b = b0 . . Trouver une racine primitive 4i`me de l’unit´ dans un corps e de caract´ristique 31. de mˆme que tous les g tk pour t entre 1 e et n − 1 premier avec n. . . e Exercice 1. et ce sont les seuls car g tk avec t non premier avec n e e e est d’ordre strictement plus petit que n. . A la fa¸on de C par c rapport ` R.3. Produit rapide de polynˆmes par la DFT o De la mˆme fa¸on que pour la transform´e de Fourier discr`te. Le corollaire suivant nous X q donne la probabilit´ de bien tomber : ϕ(n) chances sur n. On note q − 1 = kn. a e a o un algorithme imm´diat de complexit´ O(n2 ).

puisque le produit terme ` terme est lin´aire. Calculer DF T (P ) et DF T (Q) les transform´es de Fourier discr`tes des vece e teurs de coefficients de P et Q. L’une e e e d’entre elles. Cette propri´t´ permet de construire l’algorithme 12 calculant le produit de ee deux polynˆmes en temps seulement O(n log(n)).1. e e ee e e e ee . o On ´tend les polynˆmes par des z´ros jusqu’au degr´ m + n (degr´ du proe o e e e duit). autrement dit e e C = DF T (P Q).DF T (Q)). simplement en utilisant l’arithm´tique des polynˆmes. calculer le vecteur DF T (P ). a Calculer la transform´e e inverse pour obtenir PQ = DF T −1 (DF T (P ). la plus importante sans doute en cryptographie. o Entr´es Deux polynˆmes P = a0 + a1 X + · · · + am X m et Q = b0 + b1 X + e o · · · + bn X n . o Algorithme 12 Produit rapide de deux polynˆmes. La complexit´ est bien O(n log n).DF T (Q). d´chiffrer.6. sont de complexit´ O(n log n). Par multiplication terme ` terme. aussi bien que son inverse. la valeur du produit e o PQ ´valu´ en ω k : Ck = Ak Bk = P (ω k )Q(ω k ) = (P Q)(ω k ) . e a e et que la transform´e. c Les codes cryptographiques utilisent des g´n´rateurs pseudo-al´atoires pour la e e e g´n´ration de clef secr`te. e e 1. est celle qui diff´rencie le d´chiffrement (par le destinataire) du cassage (par un tiers). attaquer e e 93 n + m (degr´ du produit). Nous exposons a a s´par´ment des attaques connues de chacune de ces ´tapes. Connaˆ les teche e e ıtre niques d’attaques est indispensable pour g´n´rer des codes qui puissent leur e e r´sister. Sorties Le polynˆme produit P Q. e Attaque des g´n´rateurs congruentiels lin´aires e e e Les g´n´rateurs congruentiels lin´aires ont ´t´ abord´s en section 1. La d´finition de la transform´e nous donne alors e e e n+m imm´diatement chacun des coefficients comme Ak = i=0 ai ω ki = P (ω k ) et e Bk = Q(ωk ).4.3 Cryptanalyse Nous avons explor´ certaines dissym´tries entre le codage et le d´codage. e e Nous consacrons un petit d´veloppement ` des techniques d’attaques qui se e a basent sur des faiblesses de codes trop rapidement con¸us.4 D´coder. Un e e e ee e nombre al´atoire xi est g´n´r´ en fonction du nombre pr´c´dent g´n´r´ xi−1 . et e e e les fonctions ` sens unique pour les techniques ` clef publique. En multipliant simplement ces deux scalaires on obtient alors.3. les fonctions de hachage pour l’authentification.

pk premiers distincts. ce e o polynˆme est appel´ un polynˆme annulateur de la s´quence. Si l’on utilise ces constantes pour d´finir un polynˆme. e e ee Il s’agit. il existe un polynˆme annulateur o unitaire de degr´ minimal.. Π(X) = Π0 X d − Π1 X d−1 − Π2 X d−2 − . Algorithme de Berlekamp-Massey pour la synth`se de registres ` e a d´calage lin´aire e e L’algorithme de Berlekamp-Massey permet de d´tecter. notamment pour cryptanae e lyser des g´n´rateurs al´atoires et des clefs cryptographiques. o e o Comme cet ensemble est un anneau principal. L’ensemble des o e o e polynˆmes annulateurs est un id´al de l’ensemble F[X] des polynˆmes sur F. comment r´cup´rer a et b ? e e – Maintenant m est inconnu et l’on supposera tout d’abord que b = 0. i ∈ N d’´l´ments d’un corps F. de trouver les Π0 .114.3. + St−d Πd pour tout t d.. quelle est la p´riode maximale d’un e g´n´rateur congruentiel lin´aire ? e e e Enfin. − Πd . En particulier il permet de retrouver le polynˆme g´n´rateur d’un LFSR (voir §1. e e Cet algorithme est tr`s utile en th´orie des codes.107 ? Solution page 288. . e e e – Si m est premier. C’est ee e e e ee ce qu’on appelle une suite r´currente lin´aire. . quelle est la p´riode maximale d’un g´n´rateur congruene e e tiel lin´aire ? En particulier. . .. λ(pek )) si m = λ(2 1 k e p11 .910. Πd ∈ F telles que Π0 St = St−1 Π1 + St−2 Π2 + . il est possible de d´montrerque si λ(m) est la p´riode maximale. e Chapitre 1 : Th´orie des codes Exercice 1.666.4. alors e e e ) = 2e−2 pour e > 2 et que λ(m) = ppcm(λ(pe1 ) . Que pouvez-vous dire de 950706376 ? – Pour m = pe avec p premier impair. . pour une s´quence e e infinie (Si ). la propri´t´ qu’` partir d’un certain ee ee a rang. ou encore pour e e e corriger les erreurs d’un code correcteur cyclique (voir §4. i ∈ N. ses ´l´ments sont une combinaison lin´aire des pr´c´dents ´l´ments. appel´ polynˆme minimal de la s´quence..94 par la formule xi = axi−1 + b mod m. . Comment casser le g´n´rateur ? Indication : on pourra ´tudier xn+1 − xn .4). Que e e e se passe-t-il si b = 0 ? – Quel entier est le suivant dans la liste : 577. pek avec p1 . k – En supposant que m est connu. . pour la suite (Si ). e e o e Comment trouver ce polynˆme ` partir des seuls coefficients de la s´quence ? Si o a e l’on connaˆ le degr´ d de ce polynˆme.6) en ne o e e connaissant que les premiers termes de la s´quence g´n´r´e par ce LFSR. il faut poser d ´quations lin´aires corıt e o e e respondant ` la propri´t´ de r´currence lin´aire pour 2d coefficients et r´soudre a ee e e e .32 (Attaque des g´n´rateurs congruentiels lin´aires). . Fishman et Moore ont ´tudi´ en 1986 les g´e e e e n´rateurs modulo 231 − 1 = 2147483647 et ont d´termin´ que celui pour e e e a = 950706376 est de p´riode maximale et pr´sente de bonnes propri´t´s e e ee statistiques.

S2d      95 (1.. Sd . attaquer e e le syst`me lin´aire antisym´trique ainsi produit : e e e      S0 S1 . Sd−1 S2 . . L ← 0 . . e ← 1 Fin Si Si e > T erminaisonAnticipee Alors Arrˆter l’algorithme e Fin Si Retourner Π(X) Fin Pour . . Π1       =   Sd Sd+1 . il est possible de tirer parti de la structure antisym´trique du syst`me e e pour le r´soudre directement. e e ee Sorties Le polynˆme minimal de la s´quence. tout en ajoutant des ´l´ments de la s´quence e ee e au fur et ` mesure. . Si o e la suite est r´ellement infinie. o e b ← 1 . Entr´es S0 . . . .1.. .   Πd Πd−1 . e Algorithme 13 Algorithme de Berlekamp-Massey. . d´chiffrer. Une premi`re id´e est a e e o e e d’essayer ` la suite chaque degr´ possible par degr´s croissants et tester chaque a e e polynˆme produit sur la suite de la s´quence pour voir s’il est annulateur.4 D´coder. e ← 1 . . . . e Si. . Cet o e ee algorithme n´cessite de r´soudre plusieurs syst`mes lin´aires ` la suite. Π ← 1 ∈ F[X] . . S2d−1       . si 2L > k Alors Π ← Π − δ X eψ b e←e+1 Sinon Π ← Π − δ X eψ b ψ←Π L ← k + 1 − L. .10) Il reste ` d´terminer le degr´ du polynˆme minimal. la suite est finie. Sn une s´quence d’´l´ments d’un corps K. . ψ ← 1 ∈ F[X] Pour k de 0 ` n Faire a δ ← Sk + L Πi Sk−i i=1 Si (δ = 0) Alors e←e+1 Sinon. Sd . . Sd−1 S1 . au contraire. b ← δ.. . En e e e e a pratique. . . cela peut ne jamais se terminer. Cela donne l’algorithme de Berlekamp-Masseysuivant de a complexit´ simplement O(d2 ). . on voit sur le syst`me que le degr´ maximal e e du polynˆme minimal est la moiti´ du nombre d’´l´ments de la suite.

Si le d´faut est nul. Il est alors possible de combiner ces deux δ3 polynˆmes pour annuler ´galement la s´quence S1 . S1 . S3 ]. On peut alors continuer jusqu’` ˆtre sˆr d’obtenir e ae u le polynˆme minimal des n + 1 termes de la s´quence ou terminer l’algorithme o e de mani`re anticip´e sans v´rifier les derniers d´fauts. S0 Ainsi. la boucle termine apr`s 2d + T erminaisonAnticipee et au e e plus n + 1 it´rations. S1 . Le degr´ du polynˆme e o minimal augmente donc d’au plus un tous les ajouts de deux coefficients de la s´quence. le calcul du d´faut n´cessite 2 k e e e e 2 k op´rations. Le deuxi`me d´faut est donc e e e e 2 1 − S0 X appliqu´ ` la s´quence S0 . . on obtient δ3 = Π[S1 . soit δ1 = S1 − S0 . Le premier e e e d´faut est le premier terme de la suite. e Il est possible d’utiliser un algorithme rapide pour encore r´duire cette come plexit´. . Le troisi`me d´faut vaut ensuite δ2 = S2 − S1 e e e 0 δ S1 et les deux polynˆmes Π et ψ valent alors respectivement 1 − S0 X − S2 X 2 o 0 et 1 − S1 X. S2 . L’astuce du test o a e 2L > k permet de faire chacune de ces deux ´tapes alternativement. S3 . toutefois. comme la multiplication par X de ces annulateurs revient ` d´caler de a e 1 leur application sur la s´quence initiale. e En pratique. e e e e Pour la complexit´. δ0 = S0 et Π(X) devient 1 − S0 X. on voit que calculer Π. en O(dlog(d)).. Q et R peut se faire par l’algorithme d’Euclide arrˆt´ au milieu. cela veut dire que le polynˆme d´j` obtenu est annulateur o ea de la suite de la s´quence. S1 . Π est annulateur de S0 . Les δ sont appel´s d´fauts (discrepancy en anglais). tant que les d´fauts e e e e suivants sont nuls. l’algorithme de Berlekamp-Massey reste plus efficace . + S2n−1 X 2n−1 ) − Q(x) · X 2n = R(x) (1. La mise ` jour de ea e a Π est donc Π − δ1 δ0 Xψ = (1 − S0 X) − 2 S1 −S0 S0 X. D´roulons e e l’algorithme sur les trois premiers termes de la suite. soit un total e a o e e de (2d + T A)(2d + T A + 1) op´rations. L’id´e est de voir la s´quence ´galement e e e e comme un polynˆme. S2 . les termes de degr´ au plus d. e Les d´fauts correspondent ` la valeur que prend le polynˆme sur la suite de e a o la s´quence. S2 . la mise ` jour du polynˆme 2 2 op´rations ´galement.96 e Chapitre 1 : Th´orie des codes L’id´e de l’algorithme est de calculer explicitement les coefficients du polye nˆme. Dans chaque it´ration. Alors le polynˆme minimal de la s´quence poss`de la o o e e 2 + . Par la suite. S2 ] = (Xψ)[S1 . c’est-`-dire d`s que le degr´ de R est plus petit que n. S2 et ψ annulateur de S0 . S1 . La ee a e e complexit´ du calcul est alors celle de l’algorithme d’Euclide. Il est possible de r´´crire e ee ceci de la fa¸on suivante : c Π(x) · (S0 + S1 X + .) n’a qu’un nombre fini propri´t´ que le produit Π(X)(S0 + S1 X + S2 X ee de termes non nuls. au moins asymptotiquement. par Π− δ2 Xψ. La mise ` jour de Π se fait donc en deux ´tapes. Ainsi.11) Ainsi. ce qui o e e est pr´cis´ment ce que r´alise l’algorithme. alors le polynˆme que l’on avait est annulae e o teur d’une partie suppl´mentaire de la s´quence. soit Π = 1 − S1 S0 X qui est bien S2 annulateur de la s´quence S0 . S3 ] et e δ2 = ψ[S1 ..

e e e a Preuve. comme k est positif. avec k tirages est 1 − Ak . Or. e e . sachant que le nombre de jours dans l’ann´e est n. de plus d’une chance sur deux dans un groupe de 23 personnes et de 99. . attaquer e e pour des valeurs de d jusqu’` des dizaines de milliers. k ≈ 22.18 n ´l´ments choisis al´atoirement e e ee parmi n possibilit´s. Dans un ensemble de 1. pour α = 0. k = 2 + n 4n − 2 ln(1 − α).4 D´coder. Ainsi. d´chiffrer. P Ce type de probabilit´s de collision. Il est a e utilis´ dans plusieurs m´thode d’attaque en cryptanalyse. appel´ paradoxe e e e parce qu’il semble contraire ` la premi`re intuition qu’on pourrait avoir. en consid´rant 365 jours. permet de construire des attaques contre des syst`mes e dont la mˆme intuition minimiserait les chances de r´ussir. il faut que k(k − 1) = 2n ln(1 − α). Donc la probabilit´ pour que deux personnes e e n au moins aient leur anniversaire le mˆme jour est e k 1− Ak n . cette probabilit´ est environ d’une chance sur e e 10 dans un groupe de 9 personnes. √ k ≈ 1. e √ 1 1 soit. Plus g´n´ralement. a e e Il y a 365 jours dans l’ann´e.5. et pourtant dans un groupe de plus de 23 pere sonnes il y a plus d’une chance sur deux pour qu’au moins deux d’entre elles aient leur anniversaire le mˆme jour ! e En effet.18 n (on retrouve pour n = 365. la probabilit´ de collision est sup´rieure ` 50%. pour x positif.4% dans un groupe de 60 personnes. le nombre de combinaisons de k anniversaires diff´e e n! e rents est Ak = n−k! . Il faut estimer cette probabilit´ : 1 − Ak = n n 2 1 1 − (1 − n )(1 − n ) . 1 − x < e−x . a Le paradoxe des anniversaires 97 Le paradoxe des anniversaire est un r´sultat de probabilit´s. Donc la probabilit´ que toutes les personnes aient des n n anniversaires diff´rents est Ak . qu’on penserait plus faible si on se laissait e faire par son intuition. donc n 1− Ak n >1− nk k−1 i=1 e− n = 1 − e− i k(k−1) 2n Alors. nk Ainsi.5). .1. pour que cette probabilit´ vaille α. nous avons le th´or`me suivant : e e e e √ e Th´or`me 14. prenons une population de k personnes. (1 − k−1 ). Nous avons vu que le nombre de collisions sur un espace de taille k k n n e n = 2m . Il apprend ´galement e e e ` se m´fier des intuitions en ce qui concerne les probabilit´s.

98 e Chapitre 1 : Th´orie des codes Attaque de Yuval sur les fonctions de hachage La r´sistance ` la collision des fonctions de hachage peut se mesurer : il faut e a d´terminer la probabilit´ d’obtenir des collisions. Il s’agit de faire passer un message corrompu M ` la place d’un message l´gitime M . e e Est-ce que cette attaque est vraiment r´alisable ? Un calcul simple permet de e s’en convaincre : pour une empreinte num´rique sur 128 bits. e ˜ M l´gitime. une fonction de hachage h. ce qui ressemble fort ` la e e a probabilit´ des collisions des dates d’anniversaires (les dates d’anniversaire e jouent le rˆle des empreintes des individus). sur m bits. ce qui reste pour l’instant inatteignable. ce qui est r´alisable sur des machines grand public e aujourd’hui : un ordinateur tournant ` 3 GHz effectue 3 ∗ 109 ∗ 24 ∗ 3600 ≈ 248 a op´rations par jour. √ erance du nombre de tirages de M dans e e e l’esp´ m ). On pourra alors par exemple changer frauduleusement M en M . e e a ˜ En cons´quence du th´or`me 14. de fa¸on ` ce que la corruption ne soit pas d´tectable e c a e ˜ . 1}m une fonction de hachage. Ceci d´montre que la force brute peut ˆtre efficace si e e e une fonction de hachage n’est pas prot´g´e contre la collision. l’attaque de Yuval est O(t) = O( 2 Si on utilise l’attaque de Yuval pour envoyer M . Mais savoir par quels nombres il est compos´ est un probl`me e e e apparemment nettement plus difficile. G´n´rer t = 2 2 = 2 e e e Pour tout t. Mais si l’on utilise des fonctions de hachage sur 160 bits. calculer h(M ). donc il faudrait un peu plus de deux mois sur les 1000 PC e d’une entreprise pour trouver une collision. modifications mineures de M . e . ˜ ˜ G´n´rer des M . on a plus d’une chance sur deux de soutenant que M ee e √ r´ussir en 2m essais. Factorisation des nombres compos´s e On sait relativement facilement reconnaˆ ıtre un nombre premier ou un nombre compos´. ou ˜ . tels que h(M ) = par une fonction de hachage h. Entr´es h : {0. M frauduleux. √ m m modifications mineures de M . C’est le probl`me de la factorisation. e ˜ ˜ ˜ Sorties M ≈ M et M ≈ M tels que h(M ) = h(M ). On cherche alors M et M ˜ ˜ h(M ). il faudra effectuer e de l’ordre de O(264 ) essais. o C’est pourquoi on appelle l’attaque des fonctions de hachage de Yuval l’attaque ˜ a par anniversaires. ce contre quoi devrait prot´ger h ! envoyer M et pr´tendre avoir envoy´ M e e e Algorithme 14 Attaque des anniversaires de Yuval. not´es M . 1}∗ −→ {0. puis le r´pudier plus tard en e ˜ avait en fait ´t´ envoy´. le coˆt est multipli´ u e par 216 = 65536. jusqu’` collision avec un M .

. Un algorithme a tr`s efficace est celui de Pollard.5). ou alors sur la difficult´ d’un autre probl`me ´quivalent. e De nombreux algorithmes tr`s diff´rents existent. 1. comme on en voit l’illustration sur la figure 1. Une premi`re version de l’algorithme consiste ` produire des ui e e a et ` chaque nouvel ´l´ment de calculer les pgcd avec tous les pr´c´dents uk . e de sorte que les uk soient distincts le plus longtemps possible. donc on veut trouver les facteurs. 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. le cycle sera donc d´tect´ seulement e e pour u2a = u2a +j−i avec 2a−1 < i 2a . l’id´e est que si p est un facteur de m. est inutilisable pour des nombres de plus de 10 chiffres). puisque les uk sont g´n´r´s par e ee une fonction. le but de cette section n’est e e pas de les ´num´rer tous mais plutˆt de donner une id´e de ceux qui sont les e e o e plus efficaces pour diff´rentes tailles de nombres ` factoriser. si ui = uj . e En ne stockant que des puissances de 2. La difficult´ de ce probl`me et l’efficacit´ des m´thodes d’attaque sont tr`s e e e e e importantes. en outre.1.4 D´coder. La deuxi`me astuce de Pollard est e d’utiliser la d´tection de cycle de Floyd. En effet. il n’a pas. attaquer e e 99 Bien qu’il puisse s’exprimer de mani`re relativement simple. d´chiffrer. Chercher de bons algorithmes de factorisation est donc quasiment en soi une m´thode de cryptanalyse. e e e comme le logarithme discret..16. le calcul se termine alors en au plus p ´tapes. mˆme si il n’est pas visible directement... Dans ce cas.. les uk distincts modulo m le e seront moins souvent modulo p (voir Tableau 1. ui+h = uj+h et un cycle se cr´e e modulo p. a ee e e Cette version pr´sente deux d´fauts : tout d’abord il faut stocker de l’ordre e e de p ´l´ments .L’algorithme ne n´cessite que quelques lignes e e de code (une quarantaine seulement au total) et est tr`s simple ` programe a mer. 0 1 2 ui . ul p p+1 uk p+2 . Si les ui sont bien tous distincts. alors pour tout h 0. Il faut tout e d’abord calculer une suite du type uk+1 = f (uk ) mod m de grande p´riode. kp uh kp+1 kp+2 uj .5: Distribution des multiples de p modulo m. c’est-`-dire les nombres qui ont moins de 20 chiffres. Soit le nombre m compos´.. 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. e a Le Rho de Pollard (Nombres de quelques chiffres).Il s’agit de stocker uniquement les uk e tels que k soit une puissance de 2. juse ´ qu’` pr´sent. a e ee e par exemple. car beaucoup de fonctions ` sens unique reposent sur la difficult´ a e de la factorisation. Ensuite. m-1 Tab. . La premi`re cae t´gorie de nombres ` factoriser est celle des « nombres compos´s de tous les e a e jours ». de solution vraiment efficace (le c´l`bre crible d’Eratosth`ne.

e Preuve. 2a + j − i < 2i + j − i = i + j < 2j. L’algorithme Rho de Pollard a plus d’une chance sur deux de e e √ se terminer en O( p) ´tapes. p ← 1. e e e k ← 0. Tant que (p ← 1) Faire Si k est une puissance de 2 Alors x ← y. un facteur non trivial de m. de sorte que les ui soient bien tous distincts modulo m par exemple.100 e Chapitre 1 : Th´orie des codes X4 = X10 Xj = Xi X5 X2 X8 X6 X1 X7 X0 Fig. 1.16: D´tection de cycle de Floyd. compos´. e e Algorithme 15 Factorisation de Pollard. Cela donne l’algorithme e e extrˆmement simple donn´ dans l’algorithme 15. sous forme de rho. La preuve est encore du type de celle du c´l`bre paradoxe des anniee . p ← pgcd(y − x. e Or. il faudra au pire 2p it´rations si p est le plus petit facteur de e m. Un seul pgcd est calcul´ ` chaque ´tape et un seul ´l´ment e e ea e ee suppl´mentaire est stock´ au long de l’algorithme. m) . Donc on effectue au plus le double d’´tapes n´cessaires. Si on prend f (u) = u2 + 1. e Fin Tant que Renvoyer p. Incr´menter k . e e Sorties p. G´n´rer al´atoirement y . Entr´es Un entier m. Fin Si y ← f (y) mod m . mais beaucoup moins en g´n´ral : e e Th´or`me 15.

Celle-ci utilise des courbes elliptiques (courbes du type y 2 = x3 +ax+ b) dont l’´tude d´passe le cadre de ce livre. celle-ci peut e permettre de factoriser tr`s rapidement : le projet ECMNET (Elliptic Curve e Method on the Net) consiste ` fournir une impl´mentation de cet algorithme. cet algorithme factorise en quelques secondes les nombres de 25 ` 40 chiffres (avec deux facteurs de tailles semblables). Toutefois. qui. cela donne environ 10 millions d’it´rations !) et devient tr`s rapidement inutilisable pour des facteurs e e au-del` de 15 chiffres. attaquer e e 101 versaires.18 p. voir la section 3. N´anmoins.5 + 1. d´chiffrer. Pour que la probabilit´ de trouver un facteur soit plus grande que 1/2 il faut donc d’apr`s e e √ P le th´or`me 14 que k > 0. la m´thode des courbes elliptiques de Pollard et Lenstra est une e solution. ee e de plus petit facteur p. Ainsi. crible de corps de nombre ou parfois crible alg´brique en fran¸ais.4.4 D´coder. a e disponible sur internet Ce projet a permis de factoriser des nombres avec des facteurs jusqu’` 58 chiffres Le probl`me est que les bonnes courbes elliptiques a e varient pour chaque nombre ` factoriser et qu’il n’existe pas encore de moyen a de trouver la bonne courbe pour un nombre donn´. si l’on a a de la chance et si l’on choisit une courbe elliptique particuli`re. pour face c toriser un nombre m compos´ de deux facteurs de tailles respectives similaires. sa programmation reste e e e simple (environ 150 lignes de code) et nous pouvons donner quelques id´es des e propri´t´s de cet algorithme : il est conjectur´ que pour factoriser un entier m. Cribles de corps de nombre (Le champion du monde). de nombreux internautes peuvent r´cup´rer le programme ECM et le lancer pour qu’il essaye diff´rentes e e e courbes elliptiques. Enfin. e . cet algorithme n´cessite un nombre moyen d’op´rations e e de l’ordre de √ O (ln m)2 e 2 ln p ln(ln p) En pratique.2) est l’algorithme Number Field Sieve. cet algorithme factorise en quelques secondes les nombres de 1 ` a environ 25 chiffres (avec des facteurs de 12 ou 13 chiffres. le champion actuel pour la factorisation des clefs RSA (produits de deux grands nombres premiers. un nombre tr`s important de courbes elliptiques e peuvent ˆtre explor´es dans le mˆme temps et acc´l´rer potentiellement la e e e ee recherche de facteurs premiers. Si k valeurs distinctes ui sont tir´es au hasard. il y a Ak combinaisons e p qui ne donnent pas de collisions entre les ui sur un total de pk . a Courbes elliptiques (Nombres de quelques dizaines de chiffres).1. En outre. e e En pratique. cette rapidit´ e e de calcul lorsque l’on a une « bonne » courbe elliptique est ` l’origine du a programme de factorisation sur internet : en effet. Pour aller plus loin.

Autrement dit.. Par souci de simplification. .. Alors. e 832 872 882 .11112) ln(m) ln(ln(m))2 Un corps de nombre est la g´n´ralisation des extensions de corps au corps e e des rationnels (on travaille dans un corps infini Q[X]/P ). D’apr`s cette table.6: Crible quadratique pour 7429. Pour cela.. et 7429 = 17·347.102 e Chapitre 1 : Th´orie des codes semble n´cessiter un nombre moyen d’op´rations de l’ordre de e e O e √ 3 (7.6. On obtient 140 = 2 ´crire (227)2 = (87 · 88)2 = (2 · 3 · 5 · 7)2 = (210)2 mod 7429. .. . ee nous ne presentons que l’id´e de ce dernier. l’un de ces deux nombres permet donc de d´composer e m. Le crible de corps de nombre est une g´n´ralisation du crible quadratique pour lequel le corps e e consid´r´ est l’ensemble des entiers modulo m. Nous calculons au hasard certains a carr´s : 872 = 7429 + 140 et 882 = 7429 + 315. . par exemple avec la m´thode a a e 2 · 5 · 7 et 315 = 32 · 5 · 7 et l’on peut donc de Pollard. 1. il faut trouver un vecteur binaire x tel que xM est pair. Nous avons donc e une relation du type x2 = y 2 mod 7429 qui nous donne un facteur de 7429 : (227−210) = 17. e Il s’agit de trouver des couples de nombres tels que leurs carr´s soient congrus e 2 = y 2 mod m. il faut calculer des carr´s de nombres a e et conserver ceux dont les restes modulo m sont suffisamment petits pour ˆtre e factoris´s par une autre m´thode. . il faut trouver une combinaison e e lin´aire de ces carr´s qui donne un autre carr´ : dans une matrice mettons en e e e colonne les exposant et en ligne les carr´s comme dans la table 1. . Tab. x2 −y 2 = (x−y)(x+y) est un multiple de modulo m : x m et. Or 140 et 315 sont petits par e rapport ` 7429 et donc plus faciles ` factoriser. Ensuite.. .. (87 ∗ 88)2 est un carr´ si et seulement si la ligne de 872 e e ajout´e ` la ligne de 882 ne donne que des exposants pairs. si e a M est la matrice des exposants. Toute la difficult´ de l’algorithme consiste e ` trouver de tels entiers x et y. . avec de la chance. Exemple : Cherchons ` factoriser 7429. Exposant de 2 2 2 0 Exposant de 3 3 0 2 de 5 1 1 1 de 7 0 1 1 de . ou encore trouver une solution modulo 2 au syst`me lin´aire associ´ : e e e x tel que xM = 0 mod 2.

sinon il suffit d’essayer pour p ou q les e √ e entiers proches de m (attaque par racines carr´es de Fermat). Calculer l ← (2sr−2 mod r)s − 1. et de la difficult´ ` factoriser leur produit m. les nombres premiers utilis´s e e doivent v´rifier un certain nombre de propri´t´s : e ee – Pour r´sister ` la factorisation par courbes elliptiques. Retourner p le plus petit premier de la forme l + 2hrs.33. e e Chercher r premier de la forme 2kt + 1. – Pour r´sister 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 e a e de tailles similaires et suffisamment grands.4 D´coder. Par exemple. c’est ` dire qu’ils doivent chacun v´rifier : a e – p − 1 poss`de un grand facteur. Afin de ea r´sister aux m´thodes de factorisations diverses (dont certaines sont pr´sene e e t´es dans les exercices du chapitre 3. la programmation est un peu plus e d´licate que pour les pr´c´dents algorithmes mais cet algorithme d´tient les e e e e records actuels. pour travailler sur 1024 bits ils devraient tous les deux ˆtre de taille environ 512 bits. Entr´es Un nombre de bits b.1. Exercice 1. e – r − 1 poss`de un grand facteur. Solution page 288. e e – p + 1 poss`de un grand facteur. e Sorties Un nombre premier robuste d’au moins 2b + 1 bits. d´chiffrer. Algorithme 16 Algorithme de Gordon. page 174). e – p − q doit ˆtre relativement grand. G´n´rer deux nombres premiers s et t de b bits. Montrer que la sortie de l’algorithme de Gordon est un nombre premier robuste. p et q doivent ˆtre des e nombres premiers robustes. not´ r. attaquer e e 103 Si l’id´e de base est relativement simple. Le temps de calcul n´cessaire pour cette derni`re e e factorisation a ´t´ gigantesque : plus d’un an et demi de calcul sur plus de 80 ee machines ! Nombres premiers robustes La cryptographie RSA (voir le chapitre 3) est fond´e sur l’utilisation de deux e nombres premiers p et q. Il permit en particulier la factorisation en 2005 d’une cl´ RSA e de 200 chiffres (665 bits). . e L’algorithme 16 dit de Gordon permet de g´n´rer des nombres premiers roe e bustes.

sont applicables dans certains groupes.O( n) -. Cette m´thode. tests de g e e e √ √ x sur un certain intervalle. e e L’astuce qui fait diminuer cette complexit´ consiste ` trier d’abord 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 am´lior´e. En effet. Z∗ . La complexit´ au pire et en moyenne est en a e O(n). avec i et j e e √ n . ` trouver le logarithme discret de b en base g. b=g L’algorithme na¨ pour r´soudre ce probl`me est d’essayer un ` un tous les x ıf e e a possibles jusqu’` trouver le bon.O(n1/3 ) . Mˆme pour un nombre d’op´rations abordable (autour de n = e e 2128 aujourd’hui) l’espace m´moire n´cessaire est alors de l’ordre de plusieurs e e milliards de Gigaoctets. ou encore compris entre 1 et e √ − n )i = g j . et des calculs d’index . Il faut alors calculer tous les g j possibles (pas de b´b´). Ces algorithmes sont la plupart e du temps d´riv´s des algorithmes de factorisation : nous allons voir que des e e √ variantes du rho de Pollard . les algorithmes de factorisation ont e une complexit´ qui d´pend du plus petit facteur premier : O(p1/3 ) = O(n1/6 ). On pourra consid´rer e e e e par exemple le groupe des inversibles modulo un nombre premier p. e e b(g √ − n )i possibles pour essayer de voir s’il n’y en a pas deux et tous les b(g qui correspondent (pas de g´ant). Mais les complexit´s sont ´lev´es au carr´ e e e e par rapport ` la factorisation. d´velopp´e par Shanks. donc exponentielle par rapport ` la taille de n.104 R´solution du logarithme discret e e Chapitre 1 : Th´orie des codes Apr`s l’exponentiation modulaire. Ainsi. ´tant donn´ une racine primitive g et un ´l´ment b de e e e ee G. e Soit G un groupe de taille n. pas de g´ant. e e e Pas de b´b´. l’autre grande classe de fonctions ` sens e a unique repose sur le probl`me du logarithme discret. on peut ´crire b = g x = (g n )i g j . malheureusement la complexit´ e e e e en espace est telle que cet algorithme est impraticable : il faut stocker les √ n entiers. se e e e e e e x en g x+1 pour tous les d´roule en deux phases : la phase des b´b´s. a Les meilleurs algorithmes connus ` ce jour pour r´soudre ce probl`me sont a e e √ e e de complexit´ O( n) dans le cas g´n´ral. Si fabriquer toutes ces valeurs ne n´cessite e e √ que 2 n multiplications. e √ L’id´e est de d´composer x en deux morceaux x = i n√ + j. e e C’est pourquoi le logarithme discret permet de travailler sur des nombres deux fois plus petits avec la mˆme s´curit´. . si l’on travaille modulo un nombre a compos´ de deux nombres premiers n = pq. c’est-`-dire trouver x tel que a a x. chercher les correspondances par une m´thode na¨ e ıve √ √ n´cessite de tester n n possibilit´s dans le pire cas. sauts de g x n en g (x+1) n . p Le probl`me consiste. et la phase des g´ants. poss´dant un g´n´rateur.

Nous avons alors uk = g ik bjk = g il bjl = ul et en mˆme temps jk = jl . e toujours comme pour la factorisation. n = p−1 et jk −jl . n’est pas p forc´ment inversible. . Exemple : Comment trouver x. Nous montrons l’id´e de l’algoe rithme sur un exemple. tel que 17 = 11x mod 1009 ? On sait que 1009 est premier et que 11 est une racine primitive . e Calcul d’index de Coppersmith. On d´finit alors la fonction g´n´ratrice f par e e e uk+1   buk si uk ∈ S1 u2 si uk ∈ S2 = f (uk ) =  k guk si uk ∈ S3 Ainsi. ce qui veut dire. . Or. mˆme si jk = jl et ik = il .1. tout ´l´ment de la suite peut s’´crire sous la forme uk = g ik bjk pour un ee e certain ik et un certain jk . S2 . L’algorithme rho de Polard va nous permettre de modifier la m´thode pas de b´b´. il est possible de modifier les algorithmes de crible. que dans l’espace des indices on obtient directement x : x = (il − ik ) · (jk − jl )−1 mod n Attention. d´chiffrer. . pas de g´ant pour y introduire e e e e la d´tection de cycles de Floyd. bien que non nul. Tout comme nous venons de modifier l’algorithme de Pollard pour l’adapter au calcul du logarithme discret. que cette collision va ˆtre reproduite e constamment apr`s k et donc il est possible de trouver y tel que uy = u2y grˆce e a ` l’algorithme de Floyd en une complexit´ m´moire de seulement quelques a e e entiers de taille O(log(n)). La fonction f assure. Dans e ce cas on obtient bjk −jl = g il −ik . pour i = 1 .e. Si ce n’est pas le cas.4 D´coder. attaquer e e 105 Le retour du rho de Pollard. Par rapport ` l’algorithme de factorisaa a tion. comme pour la factorisation par la m´thode e rho. on peut prendre S1 = {u = 1 mod 3}. S2 = {u = 2 mod 3} et S3 = {u = 0 mod 3}). les uk sont r´partis modulo p et donc une collision uk = ul arrive en e √ e moyenne apr`s p tirages. tout en r´duisant drastiquement la complexit´ en m´e e e moire ` seulement O(log(n)) octets. Celle-ci permet de conserver la complexit´ en e e √ temps O( n log(n)). puisque b = g x . ϕ(1009) = 1008}. S3 de G de tailles semblables (par exemple dans Fp . soit Z1009 = {11i . il faudra recommencer l’algorithme. compos´ de e petits facteurs premiers). il faut modifier la fonction g´n´ratrice de la s´quence de la fa¸on suivante : e e e c Construire trois sous ensembles S1 . L’id´e consiste ` tirer au hasard des valeurs de i e a de sorte que vi = 11i mod 1009 soit facilement factorisable (i. dans Z∗ par exemple.

e e et donc x = 886 + 102 + 694 + 1 − 218 = 457 mod 1008 v´rifie bien 17 = 11457 e mod 1009. 7. Toujours avec la mˆme m´thode. . on obtient a la valeur 1. 11}. Il reste alors ` trouver un nombre de la forme 17 · 11y dont le reste se factorise a dans la base B = {2. 5. pour chaque nombre premier pj ∈ B. Nous savons construire les objets dont nous nous servirons a e tout au long de ce livre. on se donne une base de facteurs premiers. selon les besoins des objectifs sp´cifiques auquel il s’attaque : ee e compression. par exemple B = {2. Si ` la fin de ce processus. puis log11 (2) = (308−553+1)/2 = 886 mod 1008 et log11 (5) = 308−4∗886−102 = 694 mod 1008. 11}. 3. Le record est d´tenu par une ´quipe fran¸aise qui. on obtient un syst`me lin´aire dans l’espace des e e exposants. 5. 3. dont les inconnues sont les logarithmes discrets de 2. 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 4 11708 = 1000 = 23 · 53 En passant au logarithme. Les algorithmes d’index ainsi obtenus sont les plus performants dans certains corps particuliers. 104. 7. 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.106 e Chapitre 1 : Th´orie des codes En pratique. on divise vi par la plus grande puissance de pj divisant vi . et nous avons d´crit les algorithmes courants qui e font les fondements de la th´orie des codes. e Apr`s quelques tirages al´atoires. vi sera d´composable selon les facteurs de B. Ensuite. cryptage ou correction. on trouve e e par exemple apr`s quelques essais al´atoires :17 · 11218 = 2 · 3 · 5 · 11 mod 1009. Chacun des chapitres suivants y e fera r´f´rence. r´ussit ` calculer un logarithme discret dans le corps F2613 ) en e a seulement 17 jours sur les 64 processeurs du supercalculateur Teranova de Bull. en noe e c vembre 2005. Nous disposons ` la fin de ce chapitre d’un arsenal suffisant pour commencer a ` nous sp´cialiser. 308.

qui peuvent autoriser des pertes sur la qualit´ visuelle ou sonore. A cette fin. e L’objectif est une optimisation du temps de transit de chaque message. la gestion des erreurs est ´tudi´e e e au dernier chapitre. il faut construire des codes qui optimisent la taille des messages. et de ` l’espace de stockage.Chapitre 2 Th´orie de l’information et e compression Nous avons vu dans le chapitre pr´c´dent quelques principes de codes pour la e e compression : le code du fax. 1. et de connaˆ ainsi la « valeur » d’un code e ıtre donn´. Au contraire. le principe de l’entropie. c’est-`-dire que la compression suivie d’une d´compression ne modifie a e pas le fichier initial. en fin de chapitre nous introduirons quelques techniques pour compresser des images ou du son. e Exercice 2. Nous allons construire des techniques d’encodage permettant de choisir des codes efficaces ainsi qu’une th´orie importante permettant e de quantifier l’information contenue dans un message. les codes instantan´s. Nous nous int´ressons principalement ` la compression de donn´es sans e e a e perte. Nous supposons ici que le canal n’est pas soumis aux perturbations (on parle de codage sans bruit). Combien y-a-t-il de fichiers distincts de taille strictement inf´rieure ` N e a bits ? 3. Conclure. . e Le but de ce chapitre est de faire une ´tude plus pouss´e et plus exhaustive de e e ces principes.1 (De l’impossibilit´ de compresser sans perte TOUS les e fichiers). et de donner des exemple de codes compresseurs couramment utilis´s en informatique. Combien y-a-t-il de fichiers distincts de taille exactement N bits ? 2. . de calculer la taille minimale d’un sch´ma de codage. . Solution page 289.

On rappelle qu’une source d’information est constitu´e d’un alphabet S et d’une distribution de probabilit´s P sur S. 1}. b.1 Th´orie de l’information e La th´orie de l’information donne le cadre math´matique aux codes comprese e seurs. et l(m) d´signe la longueur d’un mot m (de source ou de code). 110} est un code binaire d’arit´ 2. 4 . Sa longueur est not´e ee e e l(m). L’ensemble a e des lettres du message source est l’alphabet source et l’ensemble des lettres du code l’alphabet du code. 1}. e . c. La longueur moyenne du code C est : n l(C) = i=1 l(f (si ))P (si ) 1 1 1 1 Exemple : S = {a. dont la fonction u de codage est f (C est l’image de S par f ). e a tout simplement. . surtout en th´orie de l’information. . sn }. V = {0. ` qui on donne parfois le nom de code. l’alphabet latin est l’ensemble des lettres que nous utilisons pour ´crire ce texte. 1} est l’alphabet qui sert e ` ´crire les messages qui doivent transiter dans la plupart des canaux num´ae e riques. on s’int´resse plus particuli`rement aux codes ee e e binaires. C = {0. On rappelle qu’un alphabet est un ensemble fini qui sert ` former les a messages contenant l’information ` coder ou l’information cod´e. P (si ) est la probabilit´ d’occurrence e de si . et l’image e e de l’alphabet source par la fonction de codage est un sous-ensemble de V + appel´ l’ensemble des mots de code. 2. f (d) = 11}. ou {0. f (b) = 01.108 e Chapitre 2 : Th´orie de l’information et compression 2. et C un code de S. la longueur moyenne du sch´ma est 2. sur l’alphabet e V = {0. e e Par exemple. e Un code C sur un alphabet V est alors un sous-ensemble fini de V + . P). Un code d’arit´ 2 est dit binaire. Si C = {f (a) = 00. . 8 . . d}. dans un souci de simplicit´ et de part leur importance e pratique en t´l´communications. L’ensemble des s´quences sur un alphabet V est not´ V + . on utilise e e une mesure d´pendant des fr´quences d’apparition pour estimer la longueur des e e messages qui coderont une source. Le code est constitu´ des briques de base ` partir desquelles les messages transmis seront e a construits. Tous les mots de code n’´tant pas toujours de la mˆme longueur. Pour e e un symbole si d’une source S = (S. P = ( 2 . P) o` S = {s1 . e Soient S = (S. Par exemple. Un ´l´ment m de C est appel´ mot de code. 8 ). f (c) = 10. L’arit´ du code est le cardinal de V . La plupart des r´sultats sont cependant g´n´ralisables ` des codes e e e a quelconques. 10.1 Longueur moyenne d’un code Dans toute cette partie.1.

Il est ainsi naturel de choisir l’entropie pour mesure. P).1 Th´orie de l’information e 109 Si C = {f (a) = 0.5. Si la premi`re question est : « est-ce 1 ? » dans la e moiti´ des cas une question aura suffit.2 L’entropie comme mesure de la quantit´ d’information e Nous arrivons aux notions fondamentales de la th´orie de l’information. la longueur moyenne 1 1 1 1 du sch´ma est : 1 ∗ 2 + 2 ∗ 4 + 3 ∗ 8 + 4 ∗ 8 = 1. 3. e 2. ` savoir. e e L’entropie d’une source sera utilis´e comme mesure de la quantit´ moyenne e e d’information contenue dans cette source. deux questions suppl´e e e mentaires seulement seront n´cessaires pour trouver 2 ou 3. Suppoe sons maintenant que le d´ est pip´. 6. . P). Soit e une source S = (S. e Nous utilisons la longueur moyenne d’un sch´ma de codage pour mesurer son e efficacit´. e e e il est encore possible de faire mieux si les questions ne s´parent pas toujours de e la mˆme fa¸on. Ainsi le nombre moyen de questions n´cessaires sera e e 1 1 1 1 1 1 2 ∗ 1 + 2 ∗ 4 = − 2 log2 ( 2 ) − 5 ∗ 10 log2 ( 10 ) = 2. P = (p1 . et seuls 5 et 6 ne e pourront ˆtre d´partag´s qu’en trois questions. Par exemple. 3 et 4. . cette incertitude est plus grande si le nombre de symboles dans S est plus grand. pi . ce raisonnement implique e e a que la moyenne des questions n´cessaires pour les 5 possibilit´s vaut log2 (10) ! e e La quantit´ d’information contenue dans ce jet de d´ (facilement g´n´ralie e e e sable ` toute source) est ainsi d´finie intuitivement par le nombre moyen de a e questions. Par exemple. pn ). imaginons un jet de d´ dont la valeur ne nous est commue niqu´e que par des comparaisons ` un nombre que nous pouvons choisir. Sur un grand nombre de tirage. pour une source a (S. Elle est faible si la probabilit´ d’occurrence d’un symbole est proche de 1. il est encore possible d’affiner ce r´sultat en remarquant qu’il n’est pas toujours n´cessaire de poser e e 3 questions pour d´terminer lequel de 2. 6. En fait.875 . . dans l’autre moiti´ il faudra 3 quese e tions suppl´mentaires. et nous cherchons ` mesurer quantitativement ` quel point e a a nous ignorons le comportement de S. le 1 sort une fois sur deux et les cinq e e autres une fois sur 10. 6 a ´t´ tir´ : si la dichotomie e ee e s´pare ces 5 possibilit´s en deux groupes 2. n H(S) = i=1 pi log2 ( 1 ). Nous ne connaissons de cette source qu’une distribution de probabilit´. Pouss´ ` l’infini.1. 3. e a combien faut-il de questions pour d´terminer quelle est la valeur obtenue ? e En proc´dant par dichotomie. 5. et plus forte en cas e d’´quiprobabilit´. pour que deux questions soient e c alternativement n´cessaires. il suffit de 3 = log2 (6) questions. 5. par exemple en 2.2. f (b) = 10. 4. etc. . f (c) = 110. 5 et 4. f (d) = 1110}.

. autrement dit i=1 pi log2 1 pi n pi li log2 q + log2 K. qui v´rifie : e l< H + 1. . . . on a donc H(S) l ∗ log2 q .3 Th´or`me de Shannon e e Ce th´or`me fondamental de la th´orie de l’information est connu sous le nom e e e de th´or`me de Shannon ou th´or`me du codage sans bruit. . 1] pour tout i. Soit K = i=1 q li . Tout code e e e uniquement d´chiffrable de S sur un alphabet V de taille q (i. . . . P e e e i=1 . . uniquement d´chiffrable. il existe un code uniquement d´chiffrable de S sur un alphabet de e taille q. et (l1 . . Premi`re partie : Soit C = (c1 . . pn ) H( n . On a qi ∈ [0. d’o` le r´sultat. Ce qui i=1 i=1 s’´crit H(S) > log2 q (( n pi li ) − 1) log2 q(l − 1) et prouve le th´or`me. . . Le lemme de Gibbs (voir page 31) s’applique. . .e.1. Nous avons vu qu’il y a plus d’incertitude dans ea le r´sultat de ce jet si le d´ est normal que si le d´ est biais´. ce qui est toue a e jours illustr´ par l’exemple du d´ : On consid`re la variable al´atoire (source) e e e e issue du jet d’un d´ ` n faces. Soient (q1 . . . . . et on obtient e n −li pi log2 i=1 q −li Kpi n 0 .110 e Chapitre 2 : Th´orie de l’information et compression C’est une mesure de l’incertitude li´e ` une loi de probabilit´s. par suite. . cn ) un code de S uniquement e d´chiffrable sur un alphabet de taille q. . . il existe un code de S sur un alphabet de taille q. u e 1 1 1 (car q li Seconde partie : Soient li = logq pi . e avec des longueurs de mots ´gales ` (l1 . de e longueur moyenne l. n pi log2 pi > n pi li log2 q − log2 q. qn ) tels que qi = qK pour tout i = 1. . donc (q1 . v´rifie : e H . . n. . La propri´t´ de partie enti`re sup´rieure nous donne ensuite ee e e i=1 1 1 logq pi + 1 > li et. Soit une source S sans m´moire d’entropie H. . H(p1 . ln ) les longueurs des mots e n 1 1 d’apr`s le th´or`me de Kraft (voir ` la e e e a de C. comme log2 K 0. i=1 Or. de longueur moyenne l. . Ce qui se traduit e e e e 1 1 par : pour tous p1 . et n qi = 1. . . n ) = log2 n. . ln ) et donc de longueur moyenne e a n l = pi li . pn . l log2 q De plus. . . K page 78). comme nous l’a appris la propri´t´ 1 du chapitre 1. Th´or`me 16. q = |V |). e e e e Nous commen¸ons par ´noncer le th´or`me dans le cas d’une source sans m´c e e e e moire. Comme n q1i i=1 l pi ). . log2 q Preuve. . ee 2. . . qn ) est une distribution de i=1 probabilit´s.

Les mots de codes associ´s (les plus longs) ne seront pas e utilis´s. et de lone e e gueur moyenne l. Dans le cas contraire. Pour toute source stationnaire d’entropie H. La preuve de ce th´or`me est imm´diate d’apr`s la propri´t´ 2 de e e e e ee k ) = k ∗ H(S). e 2.2 Codage statistique Les codages statistiques utilisent la fr´quence de chaque caract`re de la source e e pour la compression et.1 Algorithme de Huffman Cette m´thode permet de trouver le meilleur sch´ma d’encodage d’une source e e sans m´moire S = (S. Tout code e e e uniquement d´chiffrable de S k sur un alphabet de taille q. L’alphabet de codage est V . e En th´orie. Il est e n´cessaire ` l’optimalit´ du r´sultat de v´rifier que q − 1 divise |S| − 1 (afin e a e e e d’obtenir un arbre localement complet).2. jusqu’` ce que a e a q − 1 divise |S| − 1. il est donc possible de trouver un code s’approchant ind´finiment e e de l’entropie. la page 35 selon laquelle H(S P Pour une source stationnaire quelconque. si le proc´d´ de codage consiste ` coder les e e a mots d’une extension de la source. on est limit´ ´videmment par le nombre de ee ces mots (|S k | = |S|k . en codant les caract`res les plus fr´quents par des mots e e plus courts. il existe un proe e c´d´ de codage uniquement d´chiffrable sur un alphabet de taille q. de longueur moyenne lk . de longueur moyene ne lk . le th´or`me peut s’´noncer : e e e Th´or`me 18. v´rifie : e H lk . de probabilit´s d’occurrence nulle. En pratique pourtant. e e Nous allons voir dans la suite plusieurs proc´d´s de codage et leur relation e e avec cette borne th´orique. aussi proche que l’on veut de sa borne inf´rieure H/ log2 (q). k log2 q k Preuve. e .2 Codage statistique e On en d´duit le th´or`me pour la k i`me extension de S : e e e 111 Th´or`me 17. P). il existe un code uniquement d´chiffrable de S k sur un alphabet de e taille q. ce qui peut repr´senter un tr`s grand nombre de mots). se positionnent proches de l’entropie. 2. de taille q.2. qui v´rifie : e H 1 lk < + . Soit une source S sans m´moire d’entropie H. il est facile de rajouter des symboles ` S. k log2 q De plus.

dont la racine est un nouveau e nœud et auquel on associe la probabilit´ pi1 + . . .2 montre un exemple de cette op´ration pour q = 2. jusqu’` n’obtenir qu’un arbre (` chaque it´ration. dont les mots ee de S sont les feuilles. e e Le code de Huffman construit est alors : .10 0. .19 0. On construit un e arbre (sur le mod`le des arbres de Huffman). . 2. + piq . et dont les mots de code associ´s dans le sch´ma ainsi e e construit sont les mots correspondant aux chemins de la racine aux feuilles.05 Les ´tapes successives de l’algorithme sont d´crites par la figure 2. piq les q symboles de plus faibles probabilit´s. .2 : Algorithme de Huffman : premi`re ´tape (q = 2).1 : Algorithme de Huffman : d´part.25 0. On construit avec l’alphabet source S un ensemble de nœuds isol´s auxquels e on associe les probabilit´s de P. . e p1 s1 1 pi si 0 sj pj pi+pj pn sn Fig.06 0. et dont les branches e sont incidentes aux nœuds pi1 .3. 1} a Symbole a b c d e f Probabilit´ e 0. e e On recommence ensuite avec les q plus petites valeurs parmi les nœuds du plus haut niveau (les racines). 2. il y a a e a q − 1 ´l´ments en moins parmi les nœuds de plus haut niveau). . e Soient pi1 . . .112 e Chapitre 2 : Th´orie de l’information et compression Algorithme 17 Description de l’algorithme de Huffman. La figure 2. piq . .35 0. e p1 s1 p2 s2 p3 s3 pn sn Fig. Exemple : Soit la source ` coder sur V = {0.

21 0.10 b 0.41 0.25 d 0.11 0.19 c 0.10 b 0.25 d 0.11 0.05 f 0.19 c 0.35 a 0.19 c 0. .35 a 0.25 d 0.10 b 1 0.35 a 0 0.2.05 f 0.21 0.05 f 0.40 1 0.19 c 0.3: Exemple de construction d’un code de Huffman. 2.35 a tri dans l’ordre croissant 0.25 d 0.06 e construction de l’arbre et tri du niveau le plus haut 0.25 d 0.35 1 a arbre final Fig.11 0 0.11 0.10 b 0.06 e 0 0.05 f 1 0.60 0 0.06 e 0.19 c 0 0.06 e étape suivante 0.10 b 0.21 1 0.06 e 0.05 f étape suivante 0.2 Codage statistique 113 0.

Donner le code g´n´r´ par l’algorithme de Huffman sur la troisi`me exe e e e tension S 3 . o` e e e u S = (0. e ea e e a 1. Quel est son taux de compression ? 3. 3. e e e e Soit A l’arbre repr´sentant un code optimal. Exercice 2.114 e Chapitre 2 : Th´orie de l’information et compression Symbole a b c d e f Mot de code 11 010 00 10 0111 0110 Exercice 2. . Cet exercice introduit des ´l´ments th´oriques sur la valeur ee e du code g´n´r´ par l’algorithme de Huffman. page 79 ? Cela est-il conforme au th´or`me de Shannon ? e e Solution page 289. Calculer l’entropie de S. 1. On va donc chercher ` e e a coder un d´ non pip´ ` 6 faces avec une pi`ce non pip´e ` deux faces.24. et H l’arbre repr´sentant le code e e issu de l’algorithme de Huffman.3 (Pile ou Face pour jouer au 421). e Preuve. P). 1). Ce codage est-il optimal ? Solution page 289. Calculer la longueur moyenne de ce codage. On d´sire jouer au lanc´ e e de d´. On suppose dans la preuve pour all´ger les notations que q = 2. avec pour unique moyen une pi`ce de monnaie.99 et P (1) = 0. 4. Quelle est l’entropie d’un d´ ? e 2. Le code issu de l’algorithme de Huffman est optimal parmi e e tous les codes instantan´s de S sur V . Soit la source S = (S. e mais on peut ` toutes les ´tapes g´n´raliser automatiquement.2. et P (0) = 0. Proposer un algorithme de codage. 2. L’algorithme de Huffman est optimal Th´or`me 19.01. Que pouvez-vous dire de l’optimalit´ de l’algorithme de Huffman en come parant les taux de compression obtenus avec ceux de l’exercice 1. a e e e On sait qu’un code instantan´ peut ˆtre repr´sent´ par un arbre de Huffman.

6875/2 = 0. les codes jouent sur le mod`le a e en choisissant un mod`le de source adapt´.2 Codage statistique 115 Remarquons que dans A. ee e Dans la pratique (voir ` la fin de ce chapitre). l2 satisfont l1 e l2 (en effet. En particulier. les probabilit´s e d’apparition respectives p1 . la longueur moyenne de e e H est inf´rieure ` la longueur moyenne de A. c2 : l1 . 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. il n’existe pas de nœud avec un seul fils dont les feuilles contiennent des mots du code (en effet. on remplace un tel nœud par son fils et on obtient un meilleur code). l = 1. et d’apr`s les premi`res remarques. le r´sultat est ´vident. p2 satisfont p1 < p2 . c2 de plus faibles probabilit´s e d’apparition p1 . e a P Il faut bien comprendre la signification de ce th´or`me : il ne dit pas que e e l’algorithme de Huffman est le meilleur pour coder une information dans tous les cas . il n’y a pas de code plus efficace qui a la propri´t´ du pr´fixe. c1 e et c2 sont des feuilles sœurs dans H. 6875 La longueur moyenne de ce code est donc l = 1. c2 }. S = (s1 . c2 } ∪ {c}. p2 dans A. On peut donc supposer que A repr´sente un code optimal pour lequel les deux e mots de plus faibles probabilit´s sont deux feuilles “sœurs” (elles ont le mˆme e e p`re). On d´finit alors H = H \ {c1 .2. dans le cas contraire. alors les hauteurs respectives des feuilles repr´sentant c1 . s2 ). c2 . on peut obtenir des e e codes plus efficaces ` partir des extensions de la source. c ´tant un mot de e probabilit´ d’apparition p1 + p2 . Pour n 2 quelconque. Remarquons maintenant que dans A. c2 }. 84375. ce . Donc. et sa longueur moyenne est 1. on remplace c1 par c2 dans l’arbre et on obtient un code meilleur). et en comparaison avec le code sur S (les mots de S 2 sont de longueur 2). C’est e un codage de Huffman pour le code C = C \ {c1 . e Pour n = 1. P). si pour des mots c1 . on consid`re les e e e deux feuilles sœurs correspondant aux mots c1 . e On raisonne maintenant par r´currence sur le nombre de feuilles n dans A. mais qu’en fixant pour mod`le une source S sans m´moire sur un e e alphabet V . D’apr`s le principe de construction de Huffman. Un codage de Huffman pour S donne ´videmment s1 → 0 et s2 → 1. P = (1/4. e Un codage de Huffman pour S 2 = (S 2 . donc de longueur moyenne inf´rieure ` A = e e a A \ {c1 . H repr´sente par le principe de r´currence le e e e meilleur code instantan´ sur C . comme on peut le voir a sur l’exemple suivant : Soit S = (S. 6875. 3/4).

en particulier) qui permettent un meilleur codage. L’organisation de la m´moire o` l’on stocke le e u code impose parfois une longueur fixe aux mots de code. Exercice 2.4.5.62. Comment est cod´e la s´quence “6664” par Tunstall ? par Huffman ? e e . l’ensemble des candidats est e l’ensemble des mots de longueur 1 (ici.3. et on remplace ce mot par ces s´quences dans a e l’ensemble des candidats (ici. Il est e aussi possible d’affiner le codage par une meilleure mod´lisation de la source : e souvent.4. Au d´part. Sur un alphabet binaire. les probabilit´s d’occurrence sont conditionnelles et il existe des mod`les e e (le mod`le de Markov. e 1. {1.0.4.116 e Chapitre 2 : Th´orie de l’information et compression qui est meilleur que le code sur la source originelle. En voici la m´thode de construction dans le cas d’un alphabet binaire. Nous pouvons encore am´liorer ce codage en examinant la source S 3 .65. pour e des longueurs de mots de code k = 4. Quelle est l’entropie de cette source ? 2.5.22).61. Soit dans cet ensemble le mot le plus probable (ici. on obtient alors {1. Exercice 2.2.15. par exemple).3.6). e Les codes dits de Tunstall sont les codes optimaux qui suivent ce principe.5.17. Dans ce e e cas. Mˆme question pour un code binaire.63.64. On cherche ` coder des jets successifs (en nombre suppos´ a e infini) d’un d´ fauss´. 6).2.0.66}).16. Proposer un code ternaire (sur un alphabet ` trois chiffres) issu de l’algoa rithme de Huffman pour cette source. Quelle est sa longueur moyenne ? Quelle longueur moyenne minimale peut-on esp´rer pour un tel code tere naire ? 3. construire un code de Tunstall pour le d´.2. Les symboles de la source sont not´s (1. e Solution page 290. en-de¸` duquel on ne peut pas trouver de ca code.12. On code alors toutes ces s´quences par des mots de longueur k.0. On construit toutes les s´quences r´alisables en e e rajoutant un chiffre ` ce mot.4. et e e e suivent la loi de probabilit´ d’apparition (0. il faut trouver les 2k s´quences de chiffres e de source qu’on va choisir de coder. et on code alors des s´quences de longueur variable des chiffres de la source. e 1. On recommence alors cette op´ration tant que la taille de l’ensemble des cane didats n’est pas strictement sup´rieure ` 2k (on arrˆte avant d’avoir d´pass´ e a e e e cette valeur).5. l’occurrence d’un symbole n’est pas ind´pendante des symboles pr´e e c´demment ´mis par une source (dans le cas d’un texte. 2.6}). L’entropie reste e e a e un seuil pour la longueur moyenne.0. Si la lone gueur choisie des mots de code est k. (Suite de l’exercice pr´c´dent) L’algorithme de Huffman conse e truit un code o` des mots de source de longueur fixes sont cod´s par des mots u e de code de longueur variable.0.18.3. Mais e ces proc´d´s ne conduisent pas ` des am´liorations infinies.

1 [0. La e e e sortie d’un code arithm´tique est un simple r´el entre 0 et 1 construit de la e e mani`re suivante : ` chaque symbole on associe une portion de l’intervalle [0. Si le message ` coder est “bebecafdead”.1 [0.9. L’ordre d’association n’importe e pas pourvu que soit le mˆme pour le codage et le d´codage. Pour chaque mot de code. 0.19 − 0.15633504500”. e e Symbole Probabilit´ e Intervalle a 0.15. Par e e exemple. 0. on attribue e la portion [0. calculer le nombre de bits de code n´cessaires e par caract`re de source.15. 158[. 0. en attribuant la portion qui correspond au caract`re. 0.1[ Un message sera cod´ par un nombre choisi dans un intervalle dont les bornes e contiennent l’information du message.5. la taille optimale e ıt e 9/10 log2 (10/9)+1/10∗log2 (10/1) H du codage de ce caract`re pourrait ˆtre de log Q = e e log2 10 2 soit environ 0.9. Par exemple.15 + (0. Le programme ıne de codage est donc tr`s simple et peut s’´crire sch´matiquement par l’algoe e e rithme 18.2.1 [0. choisissons par exemple “0.0. soit [0.19[.2[ c 0.1. 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 encod´es sur un seul entier ou r´el machine.5[ e 0.3[ d 0.19 − 0. on affine e l’intervalle.154.2 = 0.0. Nous allons donc voir comment le codage arithm´tique e permet de faire mieux. une e e source et les intervalles associ´s sont donn´s dans le tableau suivant. Arithm´tique flottante e L’id´e du codage arithm´tique est d’encoder les caract`res par intervalles.14 bits alors qu’un algorithme de type Huffman utiliserait sˆu rement 1 bit entier. e si l’intervalle courant est [0.15633504640 correspondent ` la e a chaˆ “bebecafdead”. Par exemple.1 : tous les r´els entre 0.0.15) ∗ 0.2.0.3.2 Codage arithm´tique e Le codage arithm´tique est une m´thode statistique souvent meilleure que le e e codage de Huffman ! Or nous avons vu que Huffman ´tait optimal.2[ relative ` [0. 1[ e a qui a pour taille sa probabilit´ d’occurrence.4 [0.9[ f 0. En d´duire la longueur moyenne par bit de e e source du code de Tunstall Solution page 290. . 2.15 + (0.1[ b 0.2 Codage statistique 117 3.1 = a 0.2.2 [0.1 [0. quelle ope timisation est donc possible ? En codage arithm´tique. si un caract`re apparaˆ avec une probabilit´ de 0.15) ∗ 0.19[ et qu’on code le caract`re b.1.15633504384 et 0.0. A chaque caract`re du message. cela donne l’intervalle r´el de la table a e 2.

2. 0.1563344 0. borneSup ← borneInf + taille ∗y borneInf ← borneInf + taille ∗x Fin Tant que Retourner borneSup Pour le d´codage.15633504500 − 0.1 0. La suite du d´codage est indiqu´ table 2.156335040 0.15633504384 Borne sup´rieure e 0.1)/0.15633504640 Tab.1 = a 0.15648 0.0 Tant que il y a des symboles ` coder Faire a C ← symbole ` coder a Soient x.15632 0. donc la premi`re lettre est un ’b’. e Soit borneInf ← 0.15633520 0.1560 0.15 0.2[. l’encodage r´duit progressivement l’intervalle proportionnellement e e e aux probabilit´s des caract`res. il suffit alors de rep´rer dans quel intervalle se trouve e e “0. e Algorithme 18 Codage arithm´tique.156335040 0.1563350528 0.5633504500.156335168 0. Il faut e ensuite se ramener au prochain intervalle.158 0.154 0. et le programme est d´crit dans e e e l’algorithme 19. ` savoir (0.1576 0.1563360 0.1 a taille ← borneSup − borneInf . on retire la valeur inf´rieure et on e divise par la taille de l’intervalle de ’b’.156320 0.118 e Chapitre 2 : Th´orie de l’information et compression Symbole b e b e c a f d e a d Borne inf´rieure e 0.156336 0.2 0. Ce nouveau nombre nous indique que la valeur suivante est un ’e’. En r´sum´. .0 Soit borneSup ← 1. y les bornes de l’intervalle correspondant ` C dans la table 2. Le d´codage fait l’inverse en augmentant cet e e e intervalle.15633504500” : c’est [0.15633488 0. 2.19 0.1.1: Codage arithm´tique de “bebecafdead”.

0.99999] entier qui est utilis´.1 0. Par exemple.1 0.0.9.1 0.0.5. Il peut donc ˆtre e . c’est un intervalle du type [00000. et adapt´ au nombre de bits du mot machine.15633504500 0.19999]. le codage est le mˆme. e e Soit r le nombre en entr´e ` d´coder e a e Tant que r = 0.0.5.1.1.5[ [0. e e Algorithme 19 D´codage arithm´tique.0.4 0.0 Faire Soit C le symbole dont l’intervalle correspondant dans la table 2. o a e Une arithm´tique enti`re plutˆt que flottante est alors plus naturelle : au lieu e e o d’un intervalle [0.1) donne [10000.3[ [0.0.209403125 0.2[ [0.0[ [0.2 0.390625 Intervalle [0.09403125 0.5[ Symbole b e b e c a f d e a d Taille 0.3.515625 0.2.1 0.0.2[ [0. On peut alors remarquer que d`s que le chiffre le plus significatif est idene tique dans les deux bornes de l’intervalle.58376125 0.15633504500”. b les bornes de l’intervalle correspondant ` C dans la table 2.1 0.403125 0. une premi`re e e e apparition de ’b’ (avec les fr´quences de la table 2.5.0. Les d´cimales e e e sont plutˆt produites une ` une.1[ flottant. Ensuite.18999].2.4 0. e puis ’e’ donnerait [15000.0.9[ [0.0.0.158376125 0.1[ [0.9[ [0. 2.9403125 0.5633504500 0.0. Il e e e n’est donc pas utilis´ tel quel avec de l’arithm´tique flottante.1.2 Codage statistique R´el e 0. il ne change plus.4 0.0390625 0.2 119 Tab.1 a taille ← b − a r ←r−a r ← r/taille Fin Tant que Arithm´tique enti`re e e Le codage pr´c´dent est d´pendant de la taille de la mantisse dans la repr´e e e e sentation informatique des r´els et n’est donc pas forc´ment tr`s portable.3.1[ [0.2: D´codage arithm´tique de “0.9[ [0.1 0.1 contient r Afficher C Soient a.

et plus rien n’est affich´ ! e . 60007].3: Codage arithm´tique entier de “bebecafdead”. e e e l’intervalle converge vers [59999. Pour le message “bebecafdead”. 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 inf´rieure e 10000 00000 50000 54000 40000 60000 63200 32000 32000 20000 34400 44000 48800 50400 04000 04000 40000 43840 Borne sup´rieure e 19999 99999 89999 57999 79999 75999 64799 47999 33599 35999 35999 59999 51999 51679 16799 05279 52799 46399 Sortie 1 5 6 3 3 5 0 43840 Tab.19999]. ce e e e qui permet de ne manipuler que des nombres relativement petits pour les bornes. e En pratique Ce sch´ma d’encodage rencontre un probl`me si les deux chiffres de poids fort e e ne deviennent pas ´gaux au fur et ` mesure du codage.89999]. on affiche ’1’ que l’on retire et l’intervalle devient [00000. Le ’e’ donne ensuite [50000. e Le d´codage suit quasiment la mˆme proc´dure en ne lisant qu’un nombre fixe e e e de chiffres ` la fois : ` chaque ´tape.120 e Chapitre 2 : Th´orie de l’information et compression affich´ en sortie et supprim´ des nombres entiers repr´sentant les bornes. La taille des entiers qui e a bornent l’intervalle augmente. si le chiffre de poids fort est identique pour l’entier courant et les bornes. et la suite est dans le tableau 2. 2. on trouve l’intervalle (et donc le caract`re) a a e e contenant l’entier courant. mais ne peut augmenter ind´finiment ` cause e a des limitations de toute machine. 60000].4.99999].3. On est confront´ ` ce probl`me si l’on obtient ea e un intervalle de type [59992. Le r´e sultat est 156335043840. Apr`s quelques it´rations suppl´mentaires. on d´cale le tout comme dans le tableau 2. la premi`re occurrence de ’b’ donne e [10000. Ensuite.

puis 84000 Avec les mˆmes probabilit´s. 51599]2 [48400.4: D´codage arithm´tique entier de “156335043840”. e e Pour pallier ce probl`me.2 Codage statistique D´calage e 1 Entier 15633 56335 56335 56335 63350 63350 63350 33504 33504 35043 35043 50438 50438 50438 04384 04384 43840 43840 Borne inf´rieure e > 10000 00000 > 50000 > 54000 40000 > 60000 > 63200 32000 > 32000 20000 > 34400 44000 > 48800 > 50400 04000 > 04000 40000 > 43840 Borne sup´rieure 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 5 6 3 3 5 0 Tab. e Exercice 2. 59999] [48000. 53999]1 shift 0 et 9 : [42000. le codage e de la chaˆ “bbbbba” est donn´ ci-dessous : ıne e Symbole b b b b b a Intervalle [40000. e e e ıne . b : 2/10. en format e e binaire. l’indice 1 indiquant qu’on a d´e e e cal´ le deuxi`me chiffre. Alors. come parer ´galement les suivants si les poids forts diff`rent seulement de 1. outre comparer les chiffres de poids fort. En format d´cimal ou hexad´cimal. 49679]2 D´calage e Sortie shift 0 et 9 : [46000. d´coder la chaˆ 49991680. 96799] 499.2. il faut d´caler ceux-ci et conserver en m´moire e e que le d´calage est au niveau du deuxi`me chiffre de poids fort. il faudrait stocker un bit e e e suppl´mentaire indiquant si l’on a converg´ vers le haut ou le bas . c : 4/10). cette information se d´duit directement. 50799]1 [48400. 51999] [49600. Solution page 291. Par exemple. 2. il faut. 57999]2 shift 4 : [84000. 50399] [49200. e e si les suivants sont 9 et 0. Avec les probabilit´s ( a : 4/10. il faudra afficher ce chiffre suivi de k e e e z´ros ou k neufs. 60456] est d´cal´ en [51230. Ensuite. 64569]1 .6. lorsque les chiffres de poids fort deviennent e e ´gaux (apr`s k d´calages de 0 et de 9). e e [59123.

2.1/6. il existe des variantes dynamiques (` la vol´e) qui permettent de a e s’affranchir ` la fois du pr´-calcul des fr´quences et des tables de correspona e e dances. Ces e e codages n´cessitent en outre une table de correspondances (ou un arbre) entre e les mots de source et les mots de code afin de pouvoir d´compresser.’d’). Donner la taille toe tale du fichier compress´. ` la diff´rence de l’algorithme statique e a e d’Huffman. l’autre pour le codage). a Algorithme de Huffman dynamique – pack L’algorithme de Huffman dynamique permet de compresser un flot ` la vol´e a e en faisant une seule lecture de l’entr´e .’c’.2. Donner la table de correspondances de l’algorithme de Huffman statique pour cette source. il ´vite de faire deux parcours d’un fichier d’entr´e (un pour le e e calcul des fr´quences. e 1. mais la calculent au e e fur et ` mesure de l’occurrence des symboles. Quel serait l’espace m´moire n´cessaire pour stocker la table de correse e pondances de l’extension de source ` 3 caract`res ? a e 4. e . Quelle est la taille du fichier ASCII contenant la s´quence “aaa aaa aaa e bcd bcd bcd” non compress´e ? e 5.1/6. b. La table des fr´quences est e e ´labor´e au fur et ` mesure de la lecture du fichier .122 e Chapitre 2 : Th´orie de l’information et compression 2. ainsi l’arbre de Huffman e e a est modifi´ ` chaque fois qu’on lit un nouveau caract`re.7. Cette e table peut devenir tr`s grande dans le cas d’extensions de sources. En pratique.’b’. c et d sont ´crits en ASCII (8 bits). e e quel espace m´moire minimal est n´cessaire pour stocker cette table ? e e 3. ea e La commande « pack » de Unix impl´mente cet algorithme dynamique.3 Codes adaptatifs Le codage pr´sent´ par arbre de Huffman (avec param´trage de l’extension e e e de source) ou le codage arithm´tique sont des codages statistiques qui fonce tionnent sur le mod`le de source introduit au chapitre 1. Est-il int´ressant d’utiliser une extension de e e source ? Solution page 291. de loi de proe babilit´ d’apparition (1/2. e Exercice 2. ` savoir sur la connaise a sance a priori de la fr´quence d’apparition des caract`res dans le fichier. Ce sont ces variantes qui sont les plus utilis´es dans les utilitaires de e compression.1/6). En supposant que les caract`res a. Elles utilisent la fr´quence des caract`res. Soit un alphabet sur 4 caract`res (’a’. Compresser cette s´quence par Huffman statique.

En prenant en compte les moe e difications de fr´quence. on appelle donc « caract`re » un tel bloc. les fr´quences sont donc e e e calcul´es dynamiquement. on incr´mente e e e e de 1 le nombre d’occurrences du caract`re ´crit. e a a e Algorithme 20 Algorithme de Huffman dynamique : compression.2 Codage statistique Compression dynamique 123 La compression est d´crite par l’algorithme 20. On suppose qu’on doit coder e un fichier de symboles binaires. ` chaque fois que l’on rencontre un nouveau a caract`re pas encore rencontr´. on met ` jour l’arbre de Huffman ` chaque it´ration. e Apr`s avoir ´crit un code (soit celui de @. Sinon Afficher le code de c dans AH Fin Si nb(c) ← nb(c) + 1 Mettre ` jour AH avec les nouvelles fr´quences a e Fin Tant que L’arbre existe donc pour la compression (et la d´compression) mais n’a pas e besoin d’ˆtre envoy´ au d´codeur. Le nouveau caract`re est alors entr´ dans e e e l’arbre de Huffman. e e e Enfin. Soit nb(c). Lors du codage. le nombre d’occurrence d’un caract`re c e Initialiser l’arbre de Huffman (AH) avec le caract`re @. on compte le noma bre d’occurrences de chaque caract`re et le nombre de caract`res d´j` lus . la fr´quence de chaque caract`re ıt a e e depuis le d´but du fichier jusqu’au caract`re courant . ` chaque nouvelle lecture. A l’initialisation. il y a plusieurs choix pour le nombre d’occurrences de @ : dans l’algorithme 20 c’est le nombre de caract`res distincts (cela permet d’avoir peu de e . on le code sur la sortie par le code de @ suivi e e des k bits du nouveau caract`re. soit celui d’un caract`re d´j` rene e e ea contr´. soit les k bits non compress´s d’un nouveau caract`re). Pour construire l’arbre de Huffman et le mettre ` jour. nb(@) ← 1 e Tant que on n’est pas ` la fin de la source Faire a Lire un caract`re c de la source e Si c’est la premi`re occurrence de c Alors e nb(c) ← 0 nb(@) ← nb(@) + 1 Afficher en sortie le code de @ dans AH suivi de c. lus ` la vol´e par blocs de k bits (k est souvent a e ` un param`tre) . e e ea on connaˆ donc.2. e e on d´finit un caract`re symbolique (not´ @ dans la suite) et cod´ initialement e e e e par un symbole pr´d´fini (par exemple comme un 257`me caract`re virtuel du e e e e code ASCII).

avec ce nouveau caract`re. il trouve les k bits e ea e du caract`re associ´ au code. via son arbre de Huffman. ea e Il faut bien noter que le codeur et le d´codeur maintiennent chacun leur propre e arbre de Huffman. mais utilisent tous les deux le mˆme algorithme pour le e mettre ` jour ` partir des occurrences (fr´quences) des caract`res d´j` lus. nb(c) ← 0 Sinon Afficher le caract`re correspondant ` c dans AH e a Fin Si nb(c) ← nb(c) + 1 Mettre ` jour AH avec les nouvelles fr´quences a e Fin Tant que Puis. le nombre d’occurrence d’un caract`re c e Initialiser l’arbre de Huffman (AH) avec le caract`re @.124 e Chapitre 2 : Th´orie de l’information et compression bits pour @ au d´but). il est aussi possible de lui attribuer par exemple une e valeur constante tr`s proche de z´ro (dans ce cas le nombre de bits pour @ e e ´volue comme la profondeur de l’arbre de Huffman. il lit les k bits correspondants ` un nouveau caract`re. Sinon. a a e e ea Ainsi. les a e ´crit sur la sortie et ajoute le nouveau caract`re ` son arbre de Huffman (le e e a nouveau caract`re est d´sormais associ´ ` un code). Il lit alors 0 qui est le code associ´ ` ea @. Il en d´duit que les k bits suivants contiennent un nouveau caract`re. A l’initialisation. les arbres de Huffman calcul´s s´par´ment par le codeur et le d´codeur e e e e sont exactement les mˆmes. en laissant aux caract`res e e tr`s fr´quents les codes les plus courts). nb(@) ← 1 e Tant que on n’est pas ` la fin 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 afficher en sortie. e Algorithme 21 Algorithme de Huffman dynamique : d´compression. S’il e e s’agit du code de @. qui contient a d´j` @. Il incr´mente alors de 1 e e e e le nombre d’occurrences du caract`re qu’il vient d’´crire (et de @ si c’est un e e . et les ´crit sur la sortie. le d´codeur connaˆ un e e ıt seul code. Il e e recopie sur sa sortie ces k bits et met ` jour l’arbre de Huffman. celui de @ (par exemple 0). il s’agit du code e e ea d’un caract`re d´j` rencontr´ . e Soit nb(c). e e D´compression dynamique e ` Elle est d´crite par l’algorithme 21. le d´codeur lit le code suivant et le d´code via son arbre de Huffman.

1[ est divis´ en e a e e e segments de longueurs ´gales. outre la compression souvent meilleure par un codage arithm´tique. mises e ` jour. l’intervalle [0. ea e – apr`s chaque ´tape. ces nouveaux sege e ments sont maintenant de longueurs correspondantes aux probabilit´s. Cependant. e c e Ceci doit ˆtre fait toujours de la mˆme mani`re afin que le d´codeur puisse e e e e faire de mˆme ` son tour. Quel serait le codage de Huffman dynamique de cette s´quence ? e 2. e a Cette id´e s’impl´mente tr`s bien ´galement dans le cadre du codage arithe e e e m´tique : le code est construit essentiellement comme le code arithm´tique. e a Cette m´thode dynamique est un peu moins efficace que la m´thode statique e e pour estimer les fr´quences. Mais elle ´vite le stockage de l’arbre et de la table des fr´quences. e Enfin. plus la proa c babilit´ calcul´e sera proche de la probabilit´ r´elle. c’est en g´n´ral l’inverse dans le e e e cas adaptatif. . Plus le nombre de symboles re¸us est grand. Le d´codeur peut faire les mˆmes calea ee e e e culs et reste ainsi synchronis´. Comme pour Huffman e e e e dynamique.2 Codage statistique 125 nouveau caract`re) et met ` jour l’arbre de Huffman. Quel serait le codage de Huffman dynamique de l’extension ` 3 caract`res a e de cette s´quence ? e Solution page 291. des symboles. il e est ` noter que si les impl´mentations de Huffman statique sont plus rapide a e que celles du codage arithm´tique statique. est la suivante : – ` chaque ´tape le code courant correspond au code statique que l’on aurait a e obtenu en utilisant les occurrences d´j` connues comme fr´quences. Le codeur arithm´tique adaptatif travaille en e e arithm´tique flottante : ` la premi`re it´ration.2. Nous reprenons la s´quence “aaa aaa aaa bcd bcd bcd”. il n’y a aucun surcoˆt dˆ ` l’envoi pr´liminaire de la table des u u a e fr´quences et pour des sources variables l’encodeur est capable de s’adapter e dynamiquement aux variations de probabilit´s. Il est probable que le message cod´ sera donc un e e peu plus long. l’encodeur met ` jour sa table d’occurrence avec le noue e a veau caract`re qu’il a re¸u et cr´e un nouveau code statique correspondant. l’algorithme e c calcule la nouvelle distribution de probabilit´s et le segment du symbole re¸u e c est lui-mˆme re-divis´ en nouveaux segments. e e sauf que la distribution de probabilit´s est calcul´e au vol par l’encodeur sur e e les symboles qui ont d´j` ´t´ trait´s.8. e 1. Chaque fois qu’un symbole est re¸u. Ceci explique son utilisation e en pratique dans des utilitaires courants. e e ce qui rend le r´sultat final souvent plus court. Exercice 2. Codage arithm´tique adaptatif e L’id´e g´n´rale du codage adaptatif qui vient d’ˆtre d´velopp´e pour l’algoe e e e e e rithme de Huffman.

de e fa¸on ` ce que le nouveau message ait une entropie plus faible.3. e Nous donnons ici trois exemples de r´duction d’entropie. le codage statistique codera le 0 par un petit mot de code. Il lit chaque caract`re ` la e a suite mais.9. mais chaque 0 sera ´crit. charg´ de r´duire l’entropie. e e 2. e e e e e la chaˆ “aabbbcddddd@ee” est cod´e par “@a2@b3c@d5@@1@e2” (il est n´ıne e e cessaire d’employer une petite astuce si le caract`re sp´cial est rencontr´ pour e e e rendre le code instantan´). u ıt. sp´cialement pour les pages contenant de grandes parties blanches. avec @ comme caract`re de r´p´tition.126 e Chapitre 2 : Th´orie de l’information et compression 2. e e il affiche plutˆt un code sp´cial de r´p´tition suivi du caract`re ` r´p´ter et du o e e e e a e e nombre de r´p´titions. et soit donc c a compressible plus efficacement. Quel serait le codage RLE de l’image suivante ? 2. e Exercice 2. Ces autres proc´d´s ne sont pas toujours e e e e optimaux en th´orie mais ils font des hypoth`ses raisonnables sur la forme des e e fichiers ` compresser (ce sont des mod`les de source) pour diminuer l’entroa e pie ou accepter une destruction d’information suppos´e sans cons´quence pour e e l’utilisation des donn´es. Par exemple. ce qui le rendra beaucoup moins efficace que le code du fax pr´sent´ au e e e chapitre 1. mais abe solument pas de leur position dans le texte.3 Heuristiques de r´duction d’entropie e En pratique. l’algorithme de Huffman (ou ses variantes) est utilis´ en conjonce tion avec d’autres proc´d´s de codage. par une transformation r´versible. 1. Le principe est de e transformer un message en un autre. il peut ˆtre utile de coder simplement le e ee e e nombre de fois o` il apparaˆ Par exemple. Si un mˆme caract`re apparaˆ e e ıt souvent r´p´t´ plusieurs fois d’affil´e. lorsque au moins 3 caract`res identiques successifs sont rencontr´s. Il s’agit donc d’un codage pr´alable ` la come a pression. Y-a-t-il un gain ? .1 RLE – Run Length Encoding Le codage statistique tire parti des caract`res apparaissant souvent. pour transmettre une page par fax. e Le codage RLE est une extension de ce codage fax.

Par exemple. L’id´e est que lorsque 3 ou plus caract`res identiques e e e sont rencontr´s. Enfin. le message ` coder est donc une suite de nombres entre 1 et 1728.4. Ce type de codage est donc tr`s utile par exemple pour des images noir et blanc ou des pixels de mˆme couleur sont tr`s souvent e e accol´s. Les mˆmes tables existent pour les noirs. Il faut bien sˆr e e u convenir d’un nombre de bits fixe ` attribuer ` ce compteur. ces trois caract`res sont affich´s suivis d’un compteur indie e e quant le nombre d’apparitions suppl´mentaires du caract`re. il existe un grand nombre m dans la table. la chaˆ “aabbbcddddd” est coe ıne d´e par “aabbb0cddd2”. Et en colonnes ? Solution page 292. la suite sera cod´e par plusieurs blocs des 3 mˆmes e e e caract`res suivi d’un compteur. avec lequel nous avons commenc´ notre expos´ de e e th´orie des codes (chapitre 1). Rappelons que l’information scann´e est un ensemble de pixels noirs ou blancs e qui subissent un RLE par lignes de 1728 caract`res. e a Ils seront cod´s par leur traduction en bits. e e Le code du fax (suite et fin) Revenons au code du fax. Si le compteur a a d´passe son maximum.3 Heuristiques de r´duction d’entropie e 127 3. il est clair qu’une compression statistique peut ˆtre effectu´e e e e ult´rieurement sur le r´sultat d’un RLE. le gain de compression est n−m(L−4) si le e e n e compteur est sur un octet. 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. Les pixels noirs et blancs e sont altern´s. Des extraits de tables montrant les nombres codant e e les pixels blancs sont reproduits sur la figure 2. si une chaˆ de n octets contient m e ıne r´p´titions de longueur moyenne L. avec e diff´rents codes. Pour ne pas avoir le probl`me du caract`re sp´cial de r´p´tition qui se code e e e e e forc´ment comme une r´p´tition de taille 1. le tout formant un code uniquement d´chiffrable. pour le compl´ter et donner son principe de e e compression en entier. les modems utilisent une variante e e e de RLE appel´e MNP5. e e . Les nombres compris entre 1 et 64 sont appel´s « Terminating White Codes » et les nombres sup´rieurs e e « Make Up White Codes ». a n r´p´titions sont alors repr´sent´es par deux codes successifs : m r´p´titions.2. Et en 255 niveaux de gris (avec au plus 16 pixels identiques cons´cutifs) ? e 5. Dans ce cas. Un code e uniquement d´chiffrable contient le codage de tous les nombres entre 1 et 63. e e e e e e puis n − m r´p´titions. e puis quelques nombres sup´rieurs. selon le principe suivant. de fa¸on ` ce que pour tout nombre sup´e c a e rieur ` n. tel que 0 n − m 64.

. C’est aussi l’entropie de ee e la source.. Exercice 2. Ce « Move-to-front » permet e e e e e d’avoir plus de codes proches de 0 que de 255. Mais le code d’un Move-to-front sera “00005000”.2 Move-to-Front Un autre pr´-calcul est possible lorsque que l’on transforme un caract`re ASCII e e en sa valeur entre 0 et 255 : en modifiant ` la vol´e l’ordre de la table. ’b’. c’est e ce qu’on appelle la r´duction d’entropie. L’entropie e du code (consid´r´ lui-mˆme comme source) est 1. ’n’. au lieu de le placer en e e premi`re position. ’o’. 2.10. 010011010 1600 011000 1664 010011011 1728 Terminating White Codes Code Run --------------------------00110101 0 000111 1 0111 2 1000 3 1011 4 . l’entropie est modifi´e. On associe ` chaque symbole un num´ro entre 0 et 7. Quels nombres repr´sentent “abcddcbamnopponm” et e e “abcdmnopabcdmnop”? . et sera dor´navant cod´ par 0. Ainsi. et donc le message de d´part. il est d’abord cod´ par e e ıt e sa valeur. puis il passe en d´but de liste. Par a e exemple. Dans ces conditions.e.. Elle est alors cod´e par “00005555”. tous e e e les autres caract`res ´tant d´cal´s d’une unit´.. 2. la chaˆ “aaaaffff” peut ˆtre mod´lis´e par une source d’entropie ıne e e e 1. Cette id´e pr´figure les codages adaptatifs et les e e e codages par dictionnaires des sections suivantes. si la table est (a.d. Ainsi.128 e Chapitre 2 : Th´orie de l’information et compression | | | | | | | | | | | | Make Up White Codes Code Run --------------------------11011 64 10010 128 010111 192 0110111 256 00110110 320 . ’m’. ’c’. on peut coder e beaucoup plus efficacement le message obtenu. d’entropie H = 7/8 log2 (8/7)+log2 (8)/8 ≈ 0. ’p’). selon leur posia e tion alphab´tique.. les caract`res les plus fr´quents vont se retrouver e e e vers le d´but de la liste.55.c. d`s qu’un caract`re apparaˆ dans la source. ’d’. Le code lui-mˆme est alors compressible. 1..b. .3.f).. e Une variante de cette m´thode peut ˆtre de d´placer le caract`re dans la e e e e liste d’un nombre fixe de caract`res vers le d´but. 00110010 61 00110011 62 00110100 63 Fig..4: Code du fax. e Par exemple. Soit A l’alphabet sur 8 symboles suivant : A = (’a’.

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. de meilleure entropie o ıne e que la chaˆ initiale. Mais si seule la colonne F est envoy´e. mais d’envoyer plutˆt une chaˆ interm´diaire. u e e il n’est pas n´cessaire de stocker toute la matrice des d´calages. e Bien sˆr. e 5.5. pour calculer F (la premi`re colonne) et L (la derni`re colonne). e e Encoder les deux chaˆ ınes pr´c´dentes avec k = 1 puis k = 2 et comparer e e les entropies. La e ıne e derni`re colonne s’appelle L. Comment pourrait-on qualifier l’algorithme compos´ d’un « Move-toe Front » suivi d’un code statistique ? 7. Cette premi`re phase est e c ıne e donc assez simple. ces indices e e e permettent de simplifier la vision de la transformation mais n’interviennent pas dans l’algorithme de d´codage : en effet l’ordre des caract`res est forc´ment e e e conserv´ entre L et F. ıne ıne Prenons par exemple. un simple e e pointeur se d´pla¸ant dans la chaˆ est suffisant. La premi`re colonne F de la nouvelle matrice e e des d´calages est donc la chaˆ tri´e de toutes les lettres du mot source. Solution page 292. Codez les deux chaˆ ınes pr´c´dentes en utilisant la technique « Move-toe e Front ».2. la chaˆ “COMPRESSE”. Combien de bits sont n´cessaires pour coder les deux nombres obtenus e apr`s « Move-to-Front » ? Comparer les entropies. Il s’agit de cr´er tous les ıne e d´calages possibles comme sur la figure 2. e par Huffman par exemple ? 4.3. puis de trier les lignes dans l’ordre e alphab´tique et lexicographique. et qui permette cependant de retrouver la chaˆ initiale.3 BWT : Transformation de Burrows-Wheeler L’id´e de l’heuristique de Michael Burrows et David Wheeler est de trier les e caract`res d’une chaˆ afin que le Move-to-front et le RLE soient les plus e ıne efficaces possible. comment effectuer e la r´ciproque ? e . Que constatez-vous ? 3. Combien de bits sont n´cessaires pour coder les deux premiers nombres. Le probl`me est bien sˆr qu’il est impossible de retrouver la e u chaˆ initiale ` partir d’un tri de cette chaˆ ! L’astuce est donc de trier la ıne a ıne chaˆ ıne. Seules la premi`re et la derni`re colonne sont e e e ´crites. 2. car elles sont seules importantes pour le code. Sur la figure et dans le e texte nous mettons des indices pour les caract`res qui se r´p`tent .3 Heuristiques de r´duction d’entropie e 129 2. Que donne Huffman ´tendu ` deux caract`res sur le dernier nombre ? e a e Quelle est alors la taille de la table des fr´quences ? e 6.

Il ne reste plus alors qu’` suivre cet a enchaˆ ınement de lettres deux ` deux pour retrouver la chaˆ initiale. 3.. 0. cela donne H = {4. la derni`re lettre devient ıne e e la premi`re et la premi`re devient la deuxi`me. c’est-`-dire l’indice dans L de chaque caract`re pris dans l’ordre tri´ a e e de F. 8. par d´calage.5: BWT sur COMPRESSE. 7}. On peut donc esp´rer qu’elle conserve des e e e propri´t´s issues du tri et que l’entropie en sera r´duite. dans chaque ligne deux lettres se suivant doivent se suivre dans la chaˆ initiale : en effet. 5. il faut se rendre compte qu’en pla¸ant c L avant F en colonnes. e ıne simplement d´cal´e d’une lettre. 2. c’est 4 – en num´rotant de 0 ` 8) permet de r´cup´rer e a e e la chaˆ initiale. l’index primaire. elle est cependant issue du tri d’une chaˆ quasiment semblable. ıne F ← tri de L .5. Ensuite. Ensuite. comme a ıne dans l’algorithme 22. La solution est alors d’envoyer la chaˆ L au lieu de la chaˆ F : si L n’est ıne ıne pas tri´e. sur l’exemple 2. Pour l’exemple 2.130 e Chapitre 2 : Th´orie de l’information 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 . puis E2 est en position 0 dans L. Pour i de 0 ` Taille de L Faire a Afficher L[index] index ← H[index] Fin Pour . 1. 2.5. etc. Algorithme 22 R´ciproque de la BWT. Calculer le vecteur de transformation H tel que L[H[j]] = F [j] pour tout j. dans L. e On dispose de la chaˆ L et de l’index primaire index. puis E1 est en position 8. car C est en position 4. L[H[j]] = F [j]. 6. La magie du d´codage ee e e vient de ce que la connaissance de cette chaˆ ıne. Fig. Ceci se traduit ´galement par e e e e le fait que pour tout j. on calcule un ıne e e vecteur de transformation H contenant la correspondance des indices entre L et F. Il suffit de trier L pour r´cup´rer F.. conjugu´e ` celle de l’index e a primaire (le num´ro de ligne contenant le premier caract`re de la chaˆ e e ıne initiale.

4. e (a) Donner un indice qui soit capable de d´signer et diff´rencier les e e permutations de la chaˆ de d´part. Calculer L et sa compression Move-toıne front. En sortie de la transformation BWT.2. En fait il faut seulement trier ces permutations et pour les trier. Impl´mentation pratique : BWT est efficace sur de longues chaˆ e ınes S de taille n. on obtient donc en g´n´ral une chaˆ e e ıne d’entropie plus faible. 3. 131 1. L’utie a litaire de compression bzip2 d´taill´ sur la figure 2.3 Heuristiques de r´duction d’entropie e Exercice 2. Toutefois. e (c) Conclure sur l’espace m´moire n´cessaire pour calculer la BWT. Soit la chaˆ S=”sssssssssh”. e e (d) Comment calculer L et l’index primaire ` partir du tableau des pera mutations ? Solution page 293. BWT Move to−front RLE Huffman Fig. la premi`re colonne F se compresserait encore e mieux puisqu’elle est totalement tri´e.2 que cette technique est parmi les plus efficaces actuellement. il suffit d’ˆtre capable de comparer deux permutations. La derni`re colonne L de la matrice tri´e de la transformation BWT e e contient des concentrations de caract`res identiques. . Cet algorithme doit d´cider si la chaˆ d´cal´e i fois est e ıne e e avant la chaˆ d´cal´e j fois. Pourquoi s´lectionner L plutˆt que e e o F comme code ? 2.6 utilise cette suite de e e r´ductions d’entropie avant d’effectuer un codage de Huffman. c’est pourquoi L se e compresse bien. calculant une fonction bool´enne qui a pour entr´e une chaˆ S et deux entiers e e ıne i et j. Nous verrons e section 2. ıne e (b) Construire un algorithme comparer_permutations. En pratique il est donc impensable de stocker toute la matrice n × n des permutations.6: bzip2. bien adapt´e ` un Move-to-front suivi d’un RLE. dans l’ordre obtenu en triant toutes ıne e e les permutations par ordre alphab´tique. 2.11 (Analyse du code BWT).

4.1.1 Algorithme de Lempel-Ziv et variantes gzip L’algorithme invent´ par Lempel et Ziv est un algorithme de compression par e dictionnaire (ou encore par substitution de facteurs) . A chaque it´ration. comme pour les algorithmes dynaa miques. LZ77.132 e Chapitre 2 : Th´orie de l’information et compression 2. e 2. il a relanc´ les e recherches en compression. e e – c est le premier caract`re du tampon diff´rent du caract`re correspondant e e e dans le dictionnaire. c) o` : u – i est la distance entre le d´but du tampon et la position de la r´p´tition e e e dans le dictionnaire . la seconde partie (tampon de lecture) e rencontre le texte en premier. Il est ` noter que. 0. Par exemple. u e e e le caract`re c qui a provoqu´ la diff´rence est cod´ alors (0. L’id´e est de faire de la r´duce e tion d’entropie.4 Codes compresseurs usuels Comme nous venons de le voir pour L’utilitaire de compression bzip2 les impl´mentations usuelles combinent plusieurs algorithmes de compression.est. mais par mots entiers. parmi celles-ci. la fenˆtre coulisse de j + 1 caract`res vers e e e e e e la droite. Parmi les techniques les plus r´pandues. Initialement. (publi´ par Lempel et Ziv en 1977) est le premier algorithme de type e dictionnaire.3. permettent de compter des groupes entiers de caract`res. ce facteur est cod´ e e e e par le triplet (i.bon. les m´thodes par dictionnaire ne n´cessitent qu’une seule lecture du e e fichier. – j est la longueur de la r´p´tition . Cela e permet de tirer parti des avantages de chacun et de minimiser les cas de mauvaise compression. non plus par caract`re. Il existe plusieurs variantes de cet algorithme . les techniques par e dictionnaire de Lempel et Ziv. Cette fenˆtre est divis´e en deux parties : la prea e e mi`re partie constitue le dictionnaire . Alternative efficace aux algorithmes de Huffman. Dans le cas o` aucune r´p´tition n’est trouv´e dans le dictionnaire. et le codage devient alors : e ea e “un. LZ77 est bas´ sur une fenˆtre qui coulisse sur le e e texte de gauche ` droite.2”. on peut associer dynamiquement des num´ros aux mots d´j` rencontr´s. j. LZ77 et LZ78 sont libres de droits. c). il consiste ` remplacer a une s´quence de caract`res (appel´e facteur) par un code plus court qui est e e e l’indice de ce facteur dans un dictionnaire. la fenˆtre est situ´e de fa¸on ` ce e e c a que le tampon de lecture soit positionn´ sur le texte. et que le dictionnaire n’y e ` soit pas. e e e e . e dans la phrase « un gars bon est un bon gars ». Apr`s avoir cod´ cette r´p´tition. l’algorithme cherche dans le dictionnaire le plus e long facteur qui se r´p`te au d´but du tampon de lecture .gars.

est une am´lioration qui consiste ` remplacer la fenˆtre coulissante e a e par un pointeur qui suit le texte et un dictionnaire ind´pendant. c). 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 arithm´tique entier. de plus le fichier est lu bit par bit. (Lempel-Ziv-Welch) est une autre variante de Lempel-Ziv propos´e e par Terry Welch.12 (Codage d’une r´p´tition par LZ77). e e 1. Puis. e LZW. On ´crit alors sur la sortie le couple (n. e e Algorithme 23 LZW : compression. on lit la chaˆ sc o` s est une chaˆ qui est ` l’index n dans le ıne u ıne a dictionnaire et c est un caract`re tel que la chaˆ sc n’est pas dans le dictione ıne naire. Coder cette s´quence avec LZ77 et une taille de fenˆtre de recherche e e tenant sur 3 bits. dans lequel e on cherche les facteurs situ´s au niveau du pointeur.4 Codes compresseurs usuels Exercice 2. la table ASCII). Coder la s´quence “abcdefabcdefabcdefabcdef ” avec LZ77. le caract`re c concat´n´ e e e e au facteur num´ro n nous donne un nouveau facteur qui est ajout´ au dice e tionnaire pour ˆtre utilis´ comme r´f´rence dans la suite du texte. Supposons que. d´crite par l’algorithme 23.2. Seules deux e e ee informations sont cod´es au lieu de trois avec LZ77. Il consiste ` ne coder que ee e a l’indice n dans le dictionnaire . e La compression. lors du e codage. il est n´cessaire d’avoir un dictionnaire initial (par exemple. est alors imm´diate : on reme e place chaque groupe de caract`re d´j` connu par son code et on ajoute au e ea dictionnaire un nouveau groupe form´ par ce groupe et le prochain caract`re. e LZ78. Enfin. e 133 2. LZW a ´t´ brevet´e par Unisys. Une des impl´mentations les plus connues de LZ77. Solution page 294. Soit chaine ← ∅ la chaˆ courante ıne Tant que on n’est pas ` la fin 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 Afficher le code de chaˆ ıne Ajouter chaine|c au Dictionnaire chaine ← c Fin Si Fin Tant que .

dans ce e e ıne cas le nouveau code n’est pas encore connu ` la d´compression. a e e comme c’est le seul cas o` l’on recontre ce type de probl`me. . mais avec a e e un d´calage car il faut connaitre le prochain caract`re. L’algorithme 24 d´crit u e ıne e ce fonctionnement : on part du mˆme dictionnaire initial que l’on augmente e au fur et ` mesure de la mˆme mani`re que pour la compression. 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 ! " # \$ % & ’ ( ) * + .13. on sait que c’est u e le mˆme d´but de chaˆ qui se pr´sente et l’on peut donc deviner la valeur e e ıne e du groupe. Algorithme 24 LZW : d´compression. En utilisant la table ASCII hexad´cimale (7bits) ci-dessous e comme dictionnaire initial. En effet. / 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 . compresser et d´compresser la chaˆ “BLEBLBLe ıne BA” avec LZW. car il faut traiter un cas particulier e o` la mˆme chaˆ est reproduite deux fois de suite. e Lire un octet prec du message cod´ e Tant que on n’est pas ` la fin 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 Afficher 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 L’exercice suivant illustre ce principe. Exercice 2. Ce d´calage induit un e e e probl`me si la mˆme chaˆ est reproduite deux fois de suite.134 e Chapitre 2 : Th´orie de l’information et compression La d´compression est un plus complexe. N´anmoins.

le codage du @ de Huffman dynamique e ´tant fix´ ` un seul bit.gz” et “f2.txt’) ? Solution page 294. ind´pendamment de la compression a e e d´j` effectu´e jusqu’` ce caract`re. longueurs et caract`res).gz les r´sultats associ´s ` la compression de deux fichiers sources e e a f1 et f2. soient e e e f1. En d´compressant avec e e gunzip f3. 4.gz” e (par exemple par la commande unix cat f1. que constateze e vous ? Solution page 294.gz” dans un fichier “f3. 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 pr´fixes de ’chaˆ e e ıne + prochain mot’ sont ajout´s au dictionnaire. et appliquer gzip. ea e a e Cette particularit´ fait qu’il n’y a pas de diff´rence structurelle entre un seul e e fichier compress´ par gzip et une s´quence de fichiers compress´s.14 (gzip).gz > f3. 3. 1. D´couper le codage pr´c´dent en trois chaˆ e e e ınes (distances. e La commande compress de Unix impl´mente LZ77. Quel est le r´sultat ? En e e d´duire l’utilit´ de ne pas omettre le premier @. On suppose que la chaˆ pr´c´dente est en deux morceaux. les compressions de “f1” et “f2” par gzip. “abbarbarb” ıne e e et “babbarbaa”.2. .gz” et “f2.gz”. On concat`ne les deux fichiers “f1. Comment gzip peut-il ˆtre param´tr´ par un niveau de compression (par e e e ex.gz. que l’on concat`ne dans un fichier f3. e e 5. Encoder la chaˆ “abbarbarbbabbarbaa” par LZ77.gz” par gunzip.gz et f2.gz. 1. on obtient en r´sultat un fichier dont le contenu est identique e ` la concat´nation de f1 et f2. En outre. il utilise deux arbres de Huffman dynamiques : un pour les chaˆ ınes de caract`res.4 Codes compresseurs usuels 135 D´compresser le r´sultat sans le traitement du cas particulier. plusieurs variantes ont ´t´ propos´es. puis l’on d´compresse le fichier “f3.txt’ ou gzip -9 xxx. le premier @ n’est pas e ea omis. L’utilitaire gzip est bas´ e e sur une variante . gzip -1 xxx. ıne 2.gz f2. on r´initialise la compression en red´marrant une come e pression ` partir du caract`re courant. Ainsi. dans gzip. Les dise tances entre deux occurrences d’une chaˆ sont born´es : lorsque la distance ıne e devient trop grande. dans deux fichiers distincts “f1” et “f2”. l’autre pour les distances entre occurrences. Enfin.gz. Donner le contenu de “f1. a e Exercice 2.

5 -2 (LZ77) WinZip-9.09s 0.54% 30. mais plus lentement.96% 51.09s 0.34s 0. Les logie ciels g´n´raux essayent en g´n´ral plusieurs m´thodes pour trouver la meilleure e e e e e compression.01 -2 (LZW+ ?) pack (Huffman) Fichier compress´ e 5.136 e Chapitre 2 : Th´orie de l’information et compression 2. Algorithme 7-Zip-4. e e Les programmes gzip et compress utilisent des variantes de Lempel-Ziv et sont d´crits ` la section pr´c´dente.57s 3. Si le taux de compression est donc am´lior´. 2.99% 51.73s 0.0. e e .11s 6.94s 12.3.45s 0.51 ( ?) rzip-2.00s 1.57% 61.26s 7. etc. rzip est sp´cialis´ pour les gros fichiers et utilise e e donc LZ77 avec une tr`s large fenˆtre.72 Mo 9. impl´mente un codage e e e e e de Huffman simple.31% 41. images.01 -9 (LZW+ ?) lzop-1. ex´cutables.3.46s 2.21% codage 23.4. associ´e ` un codage arithm´tique.07% 61.5 les taux de compression et les vitesses de codage et d´codage des utilitaires classiques sous unix/linux sur l’exemple e d’un fichier de courriels (contenant donc texte.55% 41.92 Mo de texte.1 -9 (LZ77+Go) ppmd-9.20 Mo 6.09% 60.68 Mo 8.3 (BWT) gzip-1.32% 32.33s d´codage e 6.27s 0.27s Tab.77% 47.3.5: Comparaison de la compression d’un fichier de courriels (15. En conclusion le comportement pratique refl`te la th´orie : LZ77 compresse e e mieux que LZW.26 Mo 6. mais moins bien qu’un codage entropique avec une bonne heuristique de r´duction d’entropie.28 Mo 7.5GHz. WinZip utilise ´galement plusieurs variantes suivant le type de fichier e e pour finir par un codage LZW.42 (LZMA+ ?) RAR-3.34s 5s 0. fichiers binaires).2 Comparaison des algorithmes de compression Nous comparons dans le tableau 2.34 Mo 9. bzip2 utilise des r´ductions d’entropies e a e e e comme la BWT avant de faire un codage entropique et est d´crit section 2.3.32s 0. le temps de come e pression en souffre fortement en g´n´ral. ppmd utilise un mod`le probabiliste e e e de Markov pour pr´voir le prochain caract`re grˆce ` la connaissance des e e a a caract`res qui le pr´c`dent imm´diatement. images. pack.41s 2.96 Mo 6.35 Mo 10.74 Mo 11.14s 5s 1.71% 57. Les algorithmes par dictionnaires compressent mieux que les codages entropiques simples.5 -9 (LZ77) gzip-1. et e a e un certain nombre d’heuristiques suppl´mentaires suivant le type de fichier en e entr´e.16s 0. sur un PIV 1.69 Mo 7.0 (LZW+ ?) compress (LZW) lzop-1.51s 9. e 7-Zip utilise la variante LZMA de LZ77.) par diff´rents algorithmes.11 Mo Taux 62.20 Mo 6.93s 14. enfin.1 (Pr´dictif) e bzip2-1.26s 11.

64. la s´quence de couleurs e des pixels est compress´e par l’algorithme de compression dynamique LZW e (Lempel-Ziv-Welch).2. Il existe deux versions de ce format de fichier d´velopp´es e e respectivement en 1987 et 1989 : – GIF 87a permet un affichage progressif (par entrelacement) et la possibilit´ e d’avoir des images anim´es (les GIFs anim´s) en stockant plusieurs images e e au sein du mˆme fichier. il y a 16.5 La compression avec perte 137 2. e ceci permet d’avoir un facteur 3 de compression. 4. e – GIF 89a permet en plus de d´finir une couleur transparente dans la palette e et de pr´ciser le d´lai pour les animations. e a et de son utilisation. chaque pixel a une valeur qui d´crit sa couleur. e a a 8. au d´triment du format GIF. d’une image ou d’un texte. Prenons l’exemple d’un image num´rique. le format GIF (Graphic Interchange Format) est un format de fichier graphique bitmap propos´ par la soci´t´ Compuserve. Les compresseurs sans perte transe mettront le fichier sans utiliser l’information qu’il s’agit d’un image. e ee C’est un format de compression pour une image pixellis´e. e Mais aucune de ces m´thodes ne tenait compte du type de fichier ` compresser. e 2. C’est une des raisons pour lesquelles le format PNG est de a plus en plus pl´biscit´. et le fichier . 128 ou 256 qui est le d´faut). et que les heuristiques de r´duction de a e l’entropie permettaient d’abaisser ce seuil en changeant le mod`le de la source. e a e Parmi les formats d’images. La couleur de chaque pixel est e donc approch´e par la couleur la plus proche figurant dans la palette.4. 16.5 2.5. 32. Le format PNG est un e e e format analogue .3 Formats GIF et PNG pour la compression d’images Les formats de donn´es compacts usuels tiennent compte de la nature des done n´es ` coder. tous e ee e les ´diteurs de logiciel manipulant des images GIF auraient pu payer une ree devance ` Unisys. Puis.1 La compression avec perte D´gradation de l’information e Nous avons vu que les compresseurs sans perte ne permettent pas de compresser au-del` du seuil de l’entropie. e e Comme l’algorithme de d´compression LZW a ´t´ brevet´ par Unisys. Ils sont diff´rents s’il s’agit d’un son. e Le principe de compression est en deux ´tapes.8 millions de couleur cod´es sur 24 e bits RGB) sont limit´es ` une palette contenant de 2 ` 256 couleurs (2. Tout d’abord. c’est-`-dire d´crite e a e comme une suite de points (pixels) contenus dans un tableau . mais l’algorithme de compression utilis´ est LZ77. les couleurs e pour les pixels (initialement. Tout en e gardant un nombre important de couleurs diff´rentes avec une palette de 256.

Cela permettra un codage tr`s efficace e e e des zones de basse fr´quence. e comme l’apparition des contours. Ils codent non pas pixel par pixel. tandis que la fr´quence d’une partie dont les couleurs. e o` la taille des donn´es et les calculs sont tr`s importants. e e e En outre. Nous pr´sentons donc les formats standards. donc parfaie e tement acceptable. mais aussi de la mani`re dont elle est e per¸u par des ˆtres humains. les r´gularit´s. un autre crit`re important viene dra se greffer au taux de compression : la rapidit´ de la d´compression. de sons ou de vid´o utilisent toue jours des sources ´tendues. si une partie de l’information est perdue. la visualisation n´cessite des calculs e e extrˆmement rapides pour lire les fichiers compress´s. Les fichiers ne pourront donc pas e ˆtre restitu´s dans leur ´tat initial. puisqu’elle n’induit aucune diff´rence e e e visuelle. ou l’intensit´ des variations. Ce qui veut dire que la qualit´ qui ´tait cod´e e e e e dans le fichier de d´part ´tait superflue. Par e e e exemple. et utilisent cette a e information en codant le r´sultat visuel du fichier plutˆt que le fichier luie o mˆme. une suppression pure et simple des e zones de tr`s haute fr´quence sera souvent invisible ou inaudible. Mais il peut exister des fore e e e mats beaucoup plus efficaces pour lesquels. e e e Ces donn´es seront trait´es sous la forme de signaux pseudo-p´riodiques. mais prennent e en compte un pixel et son entourage. u e e Les compresseurs avec perte vont permettre de d´passer le seuil de l’entropie e et obtenir des taux de compression tr`s importants. pour les informations audiovisuelles. e 2. Ils tiennent compte non e plus seulement de l’information brute. e On pourra mesurer l’efficacit´ de ces compresseurs avec le taux de compression. la fr´quence du e e e signal sera faible. En e e particulier pour les sons ou les vid´os. son et vid´o pour la plupart). e mais la qualit´ des images produites n’est ´valu´e que grˆce ` l’exp´rience des e e e a a e utilisateurs. la diff´rence ne soit jamais visible.5. par exemple.138 e Chapitre 2 : Th´orie de l’information et compression pourra toujours ˆtre restitu´ dans son int´gralit´. largement ´prouv´s. les e textures varient beaucoup sera ´lev´e. En outre.2 Transformation des informations audiovisuelles Les formats compacts de stockage d’images. si un morceau d’une image est un d´grad´ doux. mais leur ´tat permettra de visualiser des e e e e images d’aussi bonne qualit´. La complexit´ algoe e e rithmique des d´compresseurs est donc une contrainte aussi importante que la e taille des messages compress´s lorsqu’on traite des informations audiovisuelles. pour observer des param`tres globaux. e Ce type de compression est obligatoire pour les formats vid´o. ce qui n´cessite une mod´lisation de la persistance c e e e r´tinienne ou auditive par exemple. Les compresseurs avec perte sont donc sp´cifiques du type de donn´es ` transe e a mettre ou ` stocker (images. .

la luminance de l’image 2. 2. et se d´roule en plusieurs ´tapes. L’id´e est donc d’appliquer la DCT de la section 1.587 ∗ G + 0. la DCT va transformer cette matrice en une matrice contenant les hautes fr´quences en haut ` droite et les basses fr´quences en bas ` gauche. De plus.2. Le principe de base est que les e e couleurs des pixels voisins dans une image diff`rent peu en g´n´ral.114 ∗ B. L’algorithme de codage est complexe.7: Image 8 × 8 en les mod`les physiques de la lumi`re. on calcule les fr´o e quences (transform´e de Fourier DFT ou transform´e en cosinus discr`te DCT e e e dans le cas de JPEG).5 La compression avec perte 139 2. vert et bleu sur fond e e classique pour trouver la luminance est celle-ci : blanc (ici en niveaux de gris).2 sur la matrice des e luminances. En effet. et il se trouve que les images num´riques sont principalement come pos´es de basses fr´quences DCT quand on ree e garde la luminance des couleurs (dans le codage d’une image en mode luminance / chrominance. Or. on peut consid´rer qu’une image est une e matrice de couleurs des pixels . e a e a Ainsi.3 Le format JPEG Le codage au format JPEG (pour Joint Photographic Experts Group) compresse des images fixes avec perte d’information.4.299 ∗ R + 0. YUV par exemple) plutˆt qu’en mode rouge / o vert / bleu (RGB).5.7 est transform´e par DCT de L → D de la e fa¸on 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           . Il existe plusieurs formules pour passer du mode RGB au mode YUV selon Fig. e e e une image est un signal : plutˆt que les valeurs des pixels. Y = 0. Une formule rouge.

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 l’exemple qu’apr`s quantification.j) o` Q est une matrice de quantification u Q(i. Enfin. L’algorithme JPEG se termine alors par un codage statistique. l’œil humain donne plus d’importance ` la luminosit´ qu’aux couleurs. Cette op´ration est appel´e quantification et c’est la seule ´tape de e e e tout le codage JPEG qui soit avec perte d’information. on perd un peu d’information mais l’image reste visible. j) = DCT (i. a e En ne gardant que les premiers termes de la d´composition en luminance e DCT (les plus importants). il est ` noter que le standard JPEG. Le nombre de niveaux e ou bandes conserv´s influe directement sur le taux de compression d´sir´.8). e e e . par e exemple Huffman. L’op´ration consiste ` e a arrondir la valeur C(i. ou encore DCT-JPEG. beaucoup de valeurs sont idene tiques et proches de z´ro. e L’image est finalement cod´e comme une suite de nombres (une valeur quantie fi´e de DCT suivie du nombre de pixels ayant cette valeur qui sont cons´cutifs e e selon le balayage en zigzag la figure 2. Les faibles valeurs obtenues permettent d’esp´rer que l’entropie obtenue apr`s ce RLE a ´t´ consid´rablement e e ee e r´duite.140 e Chapitre 2 : Th´orie de l’information et compression Enfin. tend ` a a ˆtre remplac´ par le nouveau standard JPEG-2000 o` la transformation en e e u cosinus et la quantification sont remplac´es par une transform´e en ondelettes e e dans laquelle ne sont conserv´s que certains niveaux. Le choix de la matrice de quantification respece tivement avec valeurs proches de 1 ou loin de 1 permet d’augmenter ou de diminuer le niveau de d´tails.

5 La compression avec perte 141 Fig.5.8: Balayage en zigzag de JPEG.. . e a Un film vid´o ´tant compos´ d’images et de son. il faut ´galement compresser e e e e le son. Une sortie MPEG-1 contient 4 sortes d’images : des images au format I (JPEG).9: Compression JPEG. L’algorithme de codage utilise JPEG pour coder une image e mais prend en compte le fait que deux images cons´cutives dans une s´quence e e vid´o sont tr`s voisines. Le groupe MPEG a d´fini trois formats : les MPEG-1 Audio Layer I. Image Blocs 8x8 DCT Quantification RLE zigzag Huffman ou Arith.2.10. Fig. il e suffit d’une nouvelle image compl`te I toutes les 10 ` 15 images. 2. avec les images P et B.4 Le format MPEG Le format MPEG (pour Motion Picture Experts Group) d´finit la compression e d’images anim´es. e II et III. des images P cod´es par diff´rences avec l’image pr´c´dente (par e e e e compensation du mouvement deux images cons´cutives sont tr`s voisines). e e des images bidirectionnelles B cod´es par diff´rence avec l’image pr´c´dente e e e e et la suivante (en cas de diff´rences moins importantes avec une image future e qu’avec une image pr´c´dente).) d’une image ` la a a suivante. Le MPEG-1 est la combinaison de e e compressions d’images et de son. enfin des images basse r´solution utilis´es pour e e e e l’avance rapide sur un magn´toscope. 2. le troisi`me ´tant le fameux MP3. En pratique. 2. associ´es ` une synchronisation par marquage e a temporel et une horloge de r´f´rence du syst`me comme indiqu´ sur la figure ee e e 2. Une des particularit´s des normes MPEG est de chere e e cher ` compenser le mouvement (un zoom par exemple etc.

11 : le son e analogique est d’abord filtr´ et modifi´ par des transform´es de Fourier ( avec e e e perte) et simultan´ment en cosinus (DCT ). u e pour r´duire le fichier au niveau de son entropie finale. suppl. MP2 et MP3. de 6 a ` 8 pour le MP2. ` MPEG-2 en 1996 (avec quatre r´solutions de 352 × e a e 288 ` 1920 × 1152 pixels plus un flux de sous-titres et de langues multiplex´s. une compression statistique est bien sˆr appliqu´e. a e celui-ci est l’actuel format des DVD) ou encore ` MPEG-4 en 1999 (format a des vid´os conf´rences et du DivX o` la vid´o est devenue une sc`ne orient´e e e u e e e objet). Enfin. MP1. e Son Filtrage non audible DCT Controle distorsion Quantification non uniforme Controle taux info. Ensuite. suivant les e e taux de compression (et donc les pertes) d´sir´s. Au final. Depuis 1992. utilis´ par exemple dans les vid´os CD et de 10 ` 12 pour le a e e a MP3. le format MPEG ` ´volu´ passant de MPEG-1 (320×240 pixels et ae e un d´bit de 1. Nous donnons une id´e de la transformation MP3 sur la figure 2. Huffman Formatage FFT Modèle psycho− accoustique Fig.10: Compression MPEG-1. e .5 Mbits/s).11: Compression du son MP3. En pratique. 2.142 e Chapitre 2 : Th´orie de l’information et compression Codeur Audio Signal audio Horloge Multiplexage MPEG−1 Signal vidéo Codeur Vidéo Fig. la combinaison de ces deux transformations permet de faire une quantification et de contrˆler le r´sultat obtenu pour ne conserver que la partie auo e dible principale. 2. le son est d´compos´ en trois couches. les taux de e e compression par rapport ` l’analogique sont d’un facteur 4 pour le MP1.

Litt´ralement « science du secret ». c’est-`-dire le processus de a . elle. la cryptologie comporte deux composantes e compl´mentaires que sont la cryptographie (qui consiste ` ´tudier et concevoir e ae des proc´d´s de chiffrement des informations) et la cryptanalyse (qui analyse e e ` des textes chiffr´s pour retrouver les informations dissimul´es). Nous allons syst´matiser les approches vues e au chapitre 1. d’une donn´e num´rique ou de n’importe c e e quoi d’autre. qu’elles soient commerciales ou militaires. A noter qu’il e e ne faut pas confondre la cryptographie avec la st´ganographie qui. qui a acc`s aux informations qui u e circulent sur le canal de communication. consiste e ` dissimuler l’existence mˆme de l’information secr`te (par l’utilisation d’une a e e encre sympathique par exemple). ne puisse pas comprendre ce qui est ´chang´. Le codage.Chapitre 3 Cryptologie Il s’agit maintenant d’´tendre le codage au cas o` on souhaite cacher une e u information.1 3. Oscar. Les applications sont ´videmment tr`s e e nombreuses.1 Principes g´n´raux et terminologie e e Terminologie L’objectif fondamental de la cryptographie est de permettre ` deux personnes. Mais seul le destinataire doit pouvoir reconstituer le message d’origine. e L’information qu’Alice souhaite transmettre ` Bob est appel´e texte clair. Il a e peut s’agir d’un texte en fran¸ais. Le canal peut ˆtre par exemple une ligne t´l´phonique ou tout autre e e e ee r´seau de communication. de structure arbitraire. e a 3.1. reprendre depuis le d´but les principes et protocoles e associ´s ` la cryptologie. On doit supposer que les routes ne sont pas contrˆl´es. et pour cela. a appel´es traditionnellement Alice et Bob de communiquer ` travers un canal e a peu sˆr de telle sorte qu’un opposant. et que oe le message transmis est lisible par tous.

e e e – les syst`mes ` clef publique d’autre part : aucune information secr`te n’est e a e partag´e a priori par plusieurs protagonistes . e Donc E est injective (ou encore un chiffr´ poss`de au plus un message source e e associ´) et D est surjective (un chiffr´ poss`de toujours un message source e e e associ´). qu’on notera Ke et Kd . 3. En e e e pratique.144 Chapitre 3 : Cryptologie transformation d’un message M de mani`re ` le rendre incompr´hensible est e a e appel´ chiffrement. la s´curit´ des messages est toujours assur´e par ce qu’on appelle des e e e clefs.1) Ke M E F C Coucou! Texte clair zgk&$qw Texte chiffré Kd Fig.4. . Le processus de reconstruction du message clair ` partir du message chiffr´ est appel´ d´chiffrement et utilise une a e e e fonction de d´chiffrement D. Ce sont des param`tres des fonctions E et D.3 . On g´n`re ainsi un message chiffr´ C obtenu ` partir d’une e e e e a fonction de chiffrement E par C = E(M ). ces syst`mes sont d´crits dans e e e la section 3. ces syst`mes sont d´crits dans la section 3.1: Relation fondamentale de la cryptographie. e Un algorithme cryptographique est un algorithme qui calcule la valeur des fonctions math´matiques utilis´es pour le chiffrement et le d´chiffrement. Le type de relation qui unit les clefs Ke et Kd utilis´es dans le chiffrement e et le d´chiffrement permet de d´finir deux grandes cat´gories de syst`mes e e e e cryptographiques : – les syst`mes ` clef secr`te d’une part : la clef est un secret partag´ entre e a e e ´metteur et destinataire . Il est donc requis que : D(C) = D(E(M )) = M .1) : EKe (M ) = C DKd (C) = M (3. e On aboutit ainsi ` la relation fondamentale de la cryptographie (illustr´e dans a e la figure 3. e qui peuvent prendre l’une des valeurs d’un ensemble appel´ espace des clefs.

ou alors qu’elle a envoy´ M et que le message a e . Il s’agit de v´rifier e e e e e que le message n’a pas subi d’alt´rations lors de son parcours (voir fie gure 3. pour Confie e dentialit´. Par exemple. et non plus contre un tiers. e M M ALICE f f BOB A A = f(M) ? Fig.1.2.3. par exeme e ple.2). Authentification. La cryptographie apporte un certain nombre de fonctionnalit´s e permettant de pallier ces menaces. Int´grit´. voir la sece e tion 3. Si Alice envoie e un message M . Sur la figure 3. le contrˆle d’int´grit´ sur un message M se fait grˆce ` une fonction o e e a a f telle qu’il doit ˆtre tr`s difficile de trouver deux messages M1 et M2 e e ayant la mˆme image A par f . Ces modifications sont en g´n´rales masqu´es par e e e le tiers pour ˆtre difficilement d´tectables.2). elle ne doit pas pouvoir pr´tendre ensuite devant Bob e qu’elle ne l’a pas fait. e 2. a Ils peuvent lire les messages crypt´s transmis sur le canal mais ne peuvent e pas les d´chiffrer. o e e 4. Int´grit´ des informations stock´es ou manipul´es.1 Principes g´n´raux et terminologie e e 145 3. Elle concerne plutˆt une modification o volontaire et malicieuse e l’information provoqu´e par un tiers lors du e transfert sur le canal. Non-r´pudiation : e e e e 1. 3.2. r´sum´es dans le sigle CAIN.2: Principe d’un algorithme de contrˆle d’int´grit´. La confidentialit´ consiste ` empˆcher l’acc`s e a e e aux informations qui transitent ` ceux qui n’en sont pas les destinataires. Confidentialit´ des informations stock´es ou manipul´es par le biais des e e e algorithmes de chiffrement. Authentification des protagonistes d’une communication (ou plus g´e n´ralement de ressources). C’est une protection des protagoe nistes d’un ´change entre eux. 3.2 ` A quoi sert la cryptographie ? Les communications ´chang´es entre Alice et Bob sont sujettes ` un certain e e a nombre de menaces (elles sont d´velopp´es un peu plus loin. Alice peut s’identifier en prouvant ` Bob qu’elle cone a naˆ un secret S qu’elle est la seule ` pouvoir connaˆ ıt a ıtre. Non-r´pudiation des informations. Cette v´rification ne se place pas au mˆme niveau que celle e e que nous verrons au chapitre 4. Il faut pouvoir d´tecter une usurpation d’idene e tit´.

et la taille des messages chiffr´s.6.2 Attaques sur les syst`mes cryptographiques e Pour construire un bon syst`me cryptographique.6). e ea Jusqu’` une p´riode r´cente.3) sont efficaces mais utilisent des clefs priv´es .2. On associe pour cela des algorithmes de type signature. Malheureusement. 3. il faut ´tudier les diff´e e e rents types d’attaques que peut employer Oscar pour comprendre les messages ´chang´s. ee Cet aspect sera plus d´taill´ ` la section 3.1) ou. le code ADFVGX e e . les syst`mes ` clef publique peuvent assurer l’authentificae e a tion mais sont inefficaces pour le chiffrement de grandes quantit´s de donn´es e e car trop coˆteux. assurer le secret. Les op´rations portant sur de e e e grandes quantit´s de donn´es. l’authentification et e l’int´grit´. e – une partie de la clef doit ˆtre publique. Un syst`me de chiffrement id´al devrait r´soudre tous ces probl`mes simule e e e tan´ment : utiliser des clefs publiques. qui sont bas´s ` la fois sur des clefs publiques et des clefs e a secr`tes. e 3. c’est la rapidit´ des calculs de chiffrement et e e d´chiffrement.1 Principes de Kerckhoffs Longtemps.5. ` l’instar de PGP (Pretty Good Privacy) a (section 3. Les syst`mes e e conventionnels comme le DES (voir la section 3. Un dernier crit`re est primordial. Cette compl´mentarit´ a motiv´ le d´veloppement de prou e e e e tocoles cryptographiques hybrides. C’est 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 destin´e a e pour ´viter les contestations . le chiffrement ne tenait compte que de la confia e e dentialit´. afin de ne pas provoquer une exe plosion du nombre de clefs n´cessaires pour communiquer avec un grand e nombre de personnes. Une bonne connaissance de tous les types de menaces qui p`sent sur e e e le secret permettra de le garantir. et seules les m´thodes ` clefs secr`tes ´taient d´velopp´es. On citera comme exemple le e e chiffrement de C´sar (voir la section 1.146 Chapitre 3 : Cryptologie ´t´ mal compris. la s´curit´ d’un syst`me cryptographique a repos´ sur le secret qui e e e e entoure les algorithmes utilis´s dans ce syst`me. le tout le plus rapidement possible. Les trente e e a e e e e derni`res ann´es ont vu ´merger l’´tude de nouvelles tendances : e e e e – l’authentification devient aussi voire plus importante que le secret. le crit`re d’efficacit´ est tr`s important afin de e e e e e pouvoir chiffrer « ` la vol´e » des flux audio ou vid´o par exemple en utilisant a e e au minimum la bande passante. il n’existe e e pas encore de technique unique qui satisfasse tous ces crit`res. plus r´cemment.3.

Ce principe est notamment utilis´ au niveau des cartes bleues et e dans le chiffrement des images et du son sur Canal+ . Un syst`me cryptographique dont les m´a e e e canismes internes sont librement diffus´s et qui r´siste aux attaques continues e e de tous les cryptanalystes pourra ˆtre consid´r´ comme sˆr. e 3. La s´curit´ repose sur le secret de la clef et non sur le secret de l’algoe e rithme. les syst`mes e e e e publics sont souvent meilleurs car ils font l’objet d’attaques continuelles. Parmi les exemples r´cents les e e plus m´diatiques. Trouver la clef ` partir du clair et du chiffr´ est impossible (en temps a e raisonnable). e e 3. on citera le cas des algorithmes de chiffrement A5/0 et A5/1 e utilis´s sur GSM et surtout le logiciel de protection anti-copie de DVD CSS e (Content Scrambling System) introduit en 1996 qui s’av´ra ˆtre contourn´ en e e e quelques semaines en d´pit du secret entour´ autour de l’algorithme de chife e frement utilis´. tandis que le second peut entraˆ e ıner l’alt´ration des informations ou des usurpations d’identit´. on d´plore malgr´ tout un certain nombre d’industriels qui continuent e e d’ignorer (volontairement ou non) ces r`gles. et les attaques actives. Son article comporte en r´alit´ six principes.2 Les grands types de menaces Attaques passives/actives On distingue d´j` les attaques passives. Le d´chiffrement sans la clef doit ˆtre impossible (en temps raisonnable) . e ee u Le premier ` avoir formalis´ ce principe est Auguste Kerckhoffs en 1883 dans a e l’article « La cryptographie militaire » paru dans le « Journal des Sciences Militaires ». toute attaque doit ˆtre envisag´e en supposant que l’attaquant e e connaˆ tous les d´tails du cryptosyst`me.3. 2. e e Cryptanalyse et attaques sur un chiffrement On suppose g´n´ralement qu’Oscar connaˆ le syst`me cryptographique utie e ıt e lis´ (selon les principes de Kerckhoffs). On en r´sumera ici que trois. Bien que connues depuis longıt e e temps. On distingue les niveaux d’attaques e . Ainsi. les d´tails de l’algorithme seront connus et e o e sa faiblesse ´ventuelle pourra alors ˆtre exploit´e. dans lesquelles e e Oscar peut modifier le message au cours de sa transmission. et sont donc soumis ` rude s´lection.2. les plus e utiles aujourd’hui : 1.2 Attaques sur les syst`mes cryptographiques e 147 utilis´ durant la Premi`re Guerre Mondiale par les forces allemandes. o` Oscar se contente d’´couter les ea u e messages ´chang´s entre Alice et Bob. Le premier type menace la confidentialit´ des informations. La s´e e e curit´ est illusoire car tˆt ou tard. D’autre part. connus depuis sous e e le nom de « principes de Kerckhoffs ».

on cherche le plus souvent ` d´couvrir la valeur a e de ces clefs. Cette attaque peut r´ussir si l’algorithme de chiffrement laisse apparaˆ e ıtre les mˆmes r´gularit´s que le message original. On peut par exemple dire qu’une clef est bonne si son entropie (voir la d´finition au chapitre 1) est ´lev´e car cela signifie qu’elle ne contient e e e pas de motifs r´p´t´s qui donnent des informations sur sa forme. a e Pour une clef de 64 bits. La complexit´ de cette m´thode apparaˆ imm´diatement : e e ıt e une clef de 64 bits oblige ` essayer 264 combinaisons diff´rentes. e sur un ordinateur essayant un milliard de clefs par seconde il faudra 584 ans pour ˆtre sˆr de trouver la clef1 .M3 . Oscar peut choisir un texte clair M et obtenir le texte chiffr´ associ´ C. e . e – trouver la m´thode de d´chiffrement D ` partir d’une s´quence {E(Mi )} e e a e pour une s´quence quelconque de messages clairs {M1 . . Pour « casser » e e un algorithme de chiffrement. bas´e sur la pr´c´dente. Oscar ne connaˆ que le message chiffr´ C. . Ce type d’attaque consiste ` supposer e a connue une certaine partie du message en clair (par exemple les entˆtes e standards dans le cas d’un message transmis par courrier ´lectronique) e et de partir de cette connaissance pour essayer de deviner la clef.M2 . le syse t`me doit ˆtre sˆr vis-`-vis des attaques avec du texte en clair. e u Attaque par s´quences connues. e e Texte chiffr´ choisi. e e u a Les fonctions de chiffrement sont param´tr´es par des clefs. le syst`me de chiffrement doit ˆtre r´sistant a e e e aux attaques sur le message cod´. e ıt e Texte clair connu.. il existe un cere e e e tain nombre d’algorithmes g´n´raux qu’Oscar va pouvoir utiliser : e e Attaque par force brute.148 possibles : Chapitre 3 : Cryptologie Texte chiffr´ connu. Oscar dispose ` la fois d’un texte clair M et de sa cora respondance chiffr´e C. }. e ee Parall`lement aux niveaux d’attaques d´finis pr´c´demment. Elle consiste en l’´num´ration de toutes les vae e leurs possibles de la clef. 1 ou un an avec 584 ordinateurs tournant en parall`le. c’est-`-dire ` une exploration compl`te de l’esa a e pace des clefs. garantir la confidentialit´ des communications entre Alice e et Bob signifie qu’Oscar ne peut pas : – trouver M ` partir de E(M ) .844 ∗ 1019 combinaisons diff´rentes. e e e Attaque par s´quences forc´es Cette m´thode. il existe 1. e Texte clair choisi. e e e Dans tous les cas. Oscar peut choisir un texte chiffr´ C et obtenir le texte e e d´chiffr´ associ´ M . e e e e e e consiste ` faire chiffrer par la victime un bloc dont l’attaquant connaˆ a ıt le contenu.

Alice et Bob conviennent secr`tement d’une clef secr`te K qui est donc utilis´e ` la fois pour le chiffree e e a ment et le d´chiffrement. la faiblesse de ce syst`me vient du secret absolu qui doit entourer e la clef K. Oscar. 3. a e e On utilise souvent l’analogie au coffre-fort pour caract´riser 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 d’ouvrir le coffre. tant pour le chiffrement que pour le d´chiffrement.1 Syst`me cryptographique ` clef secr`te e a e Principe du chiffrement ` clef secr`te a e En reprenant les notations de l’´quation (3. De tels syst`mes ont l’avantage principal d’ˆtre efficaces en terme e e e de temps de calcul. qui ne la poss`de pas. devra forcer e ´ le coffre s’il veut acc´der ` son contenu. a e Notons qu’on emploie ´galement l’expression « chiffrement sym´trique » pour e e mentionner un chiffrement ` clef secr`te (par opposition aux chiffrements asya e m´triques).3 3. e e ALICE Clé secrète K Connue seulement de Alice et bob Clé secrète K BOB Chiffrement Déchiffrement salut Texte clair rzh!k Texte chiffré Canal non sécurisé rzh!k Texte chiffré salut Texte clair Fig.3 Syst`me cryptographique ` clef secr`te e a e 149 Attaque par analyse diff´rentielle Cette attaque utilise les faibles diff´e e rences existant entre des messages successifs (par exemple des identifiant (logs) de serveur) pour essayer de deviner la clef. Autrement dit. Plue sieurs exemples de ce type (le chiffrement de C´sar et le chiffrement parfait e de Vernam) ont ´t´ d´velopp´s au chapitre 1.3: Principe du chiffrement ` clef secr`te. Ils conviennent ´galement d’un algorithme cryptoe e graphique de chiffrement et d´chiffrement. Evidemment. Le principe g´n´ral de l’utilisation e e e d’un algorithme de chiffrement ` clef secr`te est illustr´ dans la figure 3. En e revanche. .3. Voyons d’autres exemples de ce ee e e type sous la forme d’un exercice. si Oscar parvient par un e a moyen quelconque ` obtenir cette clef.3. Il s’agit historiquement du premier type de chiffrement utilis´.1). il pourra d´chiffrer tous les messages a e ´chang´s entre Alice et Bob.3. 3. le chiffrement ` clef secr`te ree a e pose sur le principe Ke = Kd = K.

" On compte les occurrences de chaque lettre de l’alphabet dans le texte chiffr´. on peut ´crire la fonction de chiffrement e n affine d’un message M ∈ Zn ` partir d’une clef K = (a. b) ∈ Z∗ × Zn : a n E(a.23 1.1.92 0.12 % % % % % % % % Tab.b) . yko nske ohoe dsja ! yko nske mo eomfjoz fock ! ecpe mophab.53 0.26 0. et notant e Z∗ l’ensemble des inversibles de Zn . Etant donn´e une bijection entre A et Zn .83 6. On a vu en page 19 le cas du chiffrement de C´sar d´fini sur un alphabet A de n caract`res. ainsi que la bijection lettre par lettre qui sera utilis´e e c e dans la suite. La r´partition statistique des lettres dans un texte e ´crit en fran¸ais. ea nshbo bcmcuo eo bcvvsbho ` nshbo vjkmcuo. donner le chiffrement de x ∈ {0. mspeaokb lk isbfock.29 7. mcahbo bopcbl. Si le texte chiffr´ par le chiffrement affine semble incompr´hensible. 3. et en utilisant la clef K = (15. vcb j’slokb cjjoixo jka haph c vok vboe io jcpucuo : "xo ! fspdskb. On obtient ainsi le tableau 3. 2}. a nske ohoe jo vxopat loe xshoe lo ioe fsae.87 7. ekb kp cbfbo vobixo.20 2. Toujours pour n = 26. Expliciter |Z26 26 2.43 % % % % % % % % % S → 18 T → 19 U → 20 V → 21 W → 22 X → 23 Y → 24 Z → 25 8. 3. il ne e e modifie pas pour autant la fr´quence d’apparition des diff´rentes lettres e e qui composent le texte.74 % 7. e c Alice envoie ` Bob le message texte suivant o` par convention.28 0. Vous avez intercept´ e e e ce message : mcahbo isbfock. 1.11 % 0. 7) (qu’on justifiera).19 % 0. 1.13 % 1.18 0. hopcah op esp foi kp rbsmcuo.69 % 1. est fournie dans le tableau 3.28 % 17.81 % 3.1 (Chiffrement affine).b) : Zn −→ Zn x −→ E(a. e .150 Chapitre 3 : Cryptologie Exercice 3.44 5. les caraca u t`res qui ne sont pas dans A ne sont pas chiffr´s. A→0 B→1 C→2 D→3 E→4 F→5 G→6 H→7 I→8 8.68 5.38 % 4. e 4.b) (x) = ax + b mod n ∗ | et Z∗ .06 0.99 2.24 % J→9 K → 10 L → 11 M → 12 N → 13 O → 14 P → 15 Q → 16 R → 17 0. Expliciter la fonction de d´chiffrement affine D(a.2. Il s’agit d’un cas particulier e e e ´ du chiffrement affine.02 5.1: Fr´quence d’apparition des lettres en fran¸ais.

41% . Ce e e principe est illustr´ dans la figure 3.11% b→1 9. 3.2 Classes de chiffrements sym´triques e Comme on l’a vu au chapitre 1.2: Analyse de fr´quence du texte chiffr´ et comparaison aux r´f´rences. Leur utilisation repose sur un g´n´rateur de e e e e nombres pseudo-al´atoires (1.82% e→4 . .11% .4: Chiffrement sym´trique par flot (Stream cypher). .3. . 7. 151 Tab.6) et un m´canisme de substitution bit-`-bit e e a rapide comme l’op´ration ’ou exclusif’ (XOR ⊕) utilis´e dans Vernam.3.1). . sections 1.3 Syst`me cryptographique ` clef secr`te e a e Dans le texte chiffr´ e o → 14 18. e K Générateur de nombres pseudo−aléatoires M Substitution bit−à−bit C Fig.2. RC4 e e .3. 3.05% c→2 7. Les chiffrement sym´triques par flot e Ceux-ci effectuent un traitement ` la vol´e pour se rapprocher du mod`le de a e e Vernam (pr´sent´ section 1. . .3. e e e Parmi les exemples les plus connus (pas forc´ment les plus sˆrs) de chiffrement e u par flot. 3.2 et 1. e On peut tout de suite remarquer en cons´quence des principes de Kerckhoffs e que la s´curit´ d’un algorithme de chiffrement sym´trique par flot repose sur e e e la qualit´ du g´n´rateur de clef. on distingue deux types de codes qui se traduisent en autant de types de chiffrements. .87% a→0 8. . e e e (b) En d´duire la clef de d´chiffrement et le message clair. .69% s → 18 8. on citera LFSR (voir le fonctionnement du g´n´rateur page 71). e e ee ` (a) A partir de ce r´sultat. R´f´rence (texte fran¸ais) ee c e→4 17. d´duire la clef utilis´e par Alice.4. e e Solution page 296.

sous r´serve que la clef secr`te soit totalement e e al´atoire et utilis´e une seule fois. La combinaison avec un mode de chiffrement e (ECB. Les chiffrements sym´triques par blocs e Ceux-ci d´coupent 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 signification e afin que sa taille soit un multiple de r). Chiffrement inconditionnellement sˆ r u On rappelle qu’un chiffrement est dit inconditionnellement sˆr ou parfait si la u connaissance du message chiffr´ n’apporte aucune information sur le message e clair.1) d´crit compl`tement e e le chiffrement du message M comme illustr´ dans la figure 3.3. e Les syst`mes classiques comme les DES et AES d´crits plus loin utilisent le e e chiffrement par blocs. le seul chiffrement prouv´ inconditionnellement sˆr e e u est le chiffrement de Vernam. Py. OFB ou CTR .5: Chiffrement sym´trique par bloc (Bloc cypher). CBC. E0 (utilis´ dans les communications par Bluetooth) et A5/3 (utilis´ e e dans les communication par GSM). Ainsi. qui utilise une clef aussi longue que le texte clair (voir la section 1. la seule attaque possible sera la recherche exhaustive de la clef ` secr`te. e n bits r bits M M1 M2 Ms r bits K Fonction de chiffrement + mode de chiffrement K E C C1 r bits C2 Cs Fig. CFB. A l’heure actuelle. Un algorithme de chiffrement par blocs op`re sur des blocs de r bits.5.2.152 Chapitre 3 : Cryptologie (notamment utilis´ dans le protocole SSL pour prot´ger les communications e e Internet ou encore dans le protocole WEP utilis´ pour s´curiser les connexions e e WiFi). 3. e . pour produire en g´n´ral un bloc de r bits afin e e e d’assurer la bijectivit´ du code. tous les autres syst`mes sont e e e th´oriquement cassables.1).voir la section 1. En particulier.

3. e . e 3. 1 e e i 16 suivant la r`gle : e Li = Ri−1 Ri = Li−1 ⊕ f (Ri−1 . Soit x un bloc de texte clair de 64 bits. l’une de 32 bits (correspondant ` Ri−1 ` la ieme it´ration) a a e et l’autre de 48 bits (il s’agit de Ki ). La permutation inverse IP −1 est appliqu´e ` R16 L16 pour obtenir un bloc e a de texte chiffr´ y = IP −1 (R16 L16 ) (` noter l’inversion de L16 et de R16 ). e a Le mˆme algorithme. On lui applique une permutation initiale IP fix´e pour obtenir une chaˆ x0 . La fonction f sera d´taill´e plus loin. e e La sˆret´ du DES vient de la fonction f . L’algorithme se d´roule en trois ´tapes : e e e 1. On effectue 16 it´rations (qu’on appelle e tours de chiffrement ou encore rondes par analogie sonore avec le terme anglais “round”) d’une certaine fonction f d´e pendant de la clef K.3 Syst`me cryptographique ` clef secr`te e a e 153 On consid`re donc aujourd’hui des algorithmes de chiffrement pratiquement e sˆrs dans lesquels un message chiffr´ ne permet de retrouver ni la clef secr`te u e e ni le message clair en un temps humainement raisonnable.2) L i−1 R i−1 f Ki Li Ri Fig. On calcule Li Ri . est utilis´ pour d´chiffrer.1. Il fonctionne par blocs de texte clair de 64 bits en utilisant une clef K de 56 bits2 .3. d´velopp´e un e e peu plus bas. avec la mˆme clef mais en r´alisant les tours de chiffree e e ment dans l’ordre inverse.3 Le syst`me DES (Data Encryption Standard) e Pr´sentation exhaustive du syst`me DES e e Ce syst`me de chiffrement ` clef secr`te est le plus connu et fut propos´ comme e a e e standard de chiffrement par le NIST en 1977. Il permet d’obtenir des blocs de texte chiffr´ de 64 bits. 3. 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 contrˆle e o de parit´. u 2. Nous allons maintenant pr´senter les deux e standards les plus importants pour les chiffrements sym´triques par blocs. La figure 3.2.6: Un tour de DES. Ki ) (3.6 pr´sente un tour de chiffree ment. On a donc : x0 = IP (x) = e ıne L0 R0 o` L0 contient les 32 premiers bits de x0 et R0 les 32 restants. Les ´l´ments Ki sont obtenus par ce ee qu’on appelle la diversification des bits de la clef initiale K. La fonction f est une fonction ` a deux variables. voir section 4. ce qui permet d’utiliser des clefs de plus petite taille. 3.

C8 est ensuite r´ordonn´e suivant une ıne e e permutation fix´e P . . J).2 (D´chiffrement du DES). Le r´sultat P (C) d´finit f (A. Chacune des sous-chaˆ ınes Bi est ensuite pass´e en entr´e ` 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. J) Fig. 3. . Montrer qu’il n’est pas n´cessaire e e d’inverser f pour inverser un tour de DES et en d´duire l’algorithme de d´e e chiffrement du syst`me DES. e ıne 2. ıne e Le calcul de f (A. Exercice 3. La chaˆ de 32 bits C = C1 . B8 . e e e A 32 bits 48 bits J E fonction d’expansion 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. A est augment´e en une chaˆ de 48 bits par une fonction d’expansion E.B2 . ıne a – une chaˆ J de 48 bits (une clef diversifi´e). J) se d´roule en plusieurs ´tapes. B = E(A) ⊕ J est calcul´ et d´coup´ en 8 sous-chaˆ e e e ınes cons´cutives de 6 e bits chacune : B = B1 .154 Chapitre 3 : Cryptologie – une chaˆ A de 32 bits (la partie droite du bloc ` chiffrer) . . . e Solution page 297. .7: La fonction f de DES. illustr´es dans la figure 3.7 : e e e 1.C2 .

D0 . Toutes ces ´tapes sont illustr´es dans la figure 3. .3. .3) LSi est une rotation circulaire vers la gauche d’une ou deux positions selon la valeur de i et PC-2 une autre permutation des bits. e e K 1 8 16 24 32 40 48 56 64 bits suppression des bits de parité bits de parité PC−1 28 bits 28 bits C0 LS 1 C1 LS 2 D0 LS 1 D1 LS 2 PC−2 48 bits K1 LS 16 C 16 LS 16 D 16 PC−2 48 bits K 16 Fig. Ci .16.64).Di ) (3. Di et Ki (1 vante : i 16) sont calcul´s r´cursivement de la fa¸on suie e c  Ci = LSi (Ci−1 )  D = LSi (Di−1 )  i  Ki = PC-2(Ci . 1.3 Syst`me cryptographique ` clef secr`te e a e Diversification 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. La clef K de 64 bits est r´ordonn´e dans une permutation initiale PCe e 1 qui supprime les bits de parit´s (ceux situ´s en position 8. 2.. 3.8: La diversification de clef dans DES. . Ce paragraphe d´taille l’algorithme utilis´ pour e e obtenir les 16 sous-clefs {Ki }1 i 16 . . o` C0 est compos´ des 28 premiers bits de u e PC-1(K) et D0 des 28 restants.8. e e On note PC-1(K) = C0 .

en terme d’entropie. e e e e de l’ordre de 40Mo/s il y a une dizaine d’ann´es. ou encore. e on arrive ` des d´bits de l’ordre de 190 Mo/s. . H(M |C) = H(M ) .3 (Confidentialit´ de D. . ce qui est aujourd’hui possible avec les capacit´s actuelles des disques durs. e .E. Il s’agit de stocker le r´sultat du chiffrement de DES e e sur un texte choisi pour toutes les clefs K possibles. Cryptanalyse de DES D`s sa parution. Cette m´thode peut ´videmment ˆtre appliqu´e quel e e e e que soit le syst`me. ) seront ind´tectables. le r´sultat de DES est statistiquement « plat ». d’abord sur un nombre r´duit de tours puis sur la version e compl`te. Voir le livre e de Bruce Schneier (en bibliographie) pour plus de d´tails.S).156 Avantages et applications de DES Chapitre 3 : Cryptologie Apr`s 16 tours. e 1. de nombreux efforts de recherche furent investis dans la crype tanalyse de DES. avec une puce sp´cifique bas de gamme (de l’ordre de 60 euros). Ainsi.4) v´rifie |K| |M |. e Solution page 297. il est donc possible d’obtenir des vitesses de chiffrement tr`s ´lev´es. voir la section 1. e e e Aujourd’hui. le nombre d’espaces. avec du mat´riel sp´cifique. en obtenant un chiffr´ de ce texte. e Exercice 3. Des avanc´es significatives (notamment dans les techniques utilis´es) e e e apparurent au d´but des ann´es 90. e Le gros avantage du DES est qu’il repose.2. Cela suppose qu’on soit capable de stocker 256 blocs de 64 bits. e – Pr´calcul exhaustif. . c’est-`-dire e e a que les caract´ristiques g´n´rales du message source (la fr´quence des carace e e e t`res. Montrer qu’un chiffrement parfait (le chiffr´ ne donne aucune informae tion sur le message. on peut facilement remonter ` la clef utilis´e (en coˆt e a e u constant). Discuter de la confidentialit´ parfaite du DES pour un bloc. des e protocoles d’authentification dans les r´seaux tels que Kerberos et la messagerie e ´lectronique avec par exemple PEM pour Privacy-Enhanced Mail. a e Le syst`me DES est actuellement utilis´ pour chiffrer les paiements par cartes e e de cr´dit (par exemple UEPS pour Universal Electronic Payment System). e 2. On peut aujourd’hui distinguer quatre m´e e e thodes de cryptanalyse de DES : – Recherche exhaustive. sur des op´rations facilement impl´mentables au niveau mae e e t´riel. De plus il dispose d’une e e caract´ristique tr`s importante pour ´viter les attaques par analyse diff´rene e e e tielle : une l´g`re modification de la clef ou du texte ` chiffrer provoque des e e a changements importants dans le texte chiffr´. tant pour le chiffrement que pour le d´chiffrement.

Cette attaque marqua une avanc´e signifie e cative dans la cryptanalyse de DES. Le r´sultat de cette ´tude est fourni dans le tableau 3. e e e Attaquant Hacker PME Grande Entreprise Multinationale Gouvernement Budget 300 e 7500 e 225 Ke 7. u Aujourd’hui. Il apparut rapidement que le cassage effectif .5 Me 225 Me Outil Logiciel Circuit Circuit ASIC ASIC ASIC Clef 56 bits 38 ans 18 mois 19 j.4. diff´rentielle 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. – Cryptanalyse lin´aire.4: Coˆt et performance des attaques sur DES en 1996. Il s’agit d’´tudier des diff´rences de e e chiffrement entre des textes similaires pour s´lectionner un sous-ensemble e de clefs probables. Un petit calcul simple peut en donner une id´e : il u e y a 256 clefs possibles c’est-`-dire moins de 1017 = 108 109 . e e M´thode d’attaque e Recherche exhaustive Pr´calcul exhaustif e Crypta. Ce fut une autre ´tape majeure dans la cryptae e nalyse g´n´rale des chiffrements par blocs. le DES avec sa longueur de clef fixe de 56 bits n’est plus consid´r´ ee comme pratiquement sˆr.3: Complexit´ des cryptanalyses sur DES. lin´aire e Crypta. en supposant que a l’on dispose de 1000 PC tournant ` 1GHz = 109 Hz. il faut 105 secondes. soit a 30 heures pour donc effectuer 1000 ∗ 109 ∗ 105 = 1017 op´rations . Il s’agit d’utiliser des relations e e lin´aires sur certains bits du message chiffr´ et du message clair pour intere e poler des bits de la clef. 3 h 6 min 12 s Tab. 3.3 r´sume les complexit´s des attaques sur DES. Le tableau 3. une ´tude fut demand´e en 1996 e e pour estimer le coˆt et les performances des attaques sur DES pour un budget u donn´. e Avec les progr`s r´alis´s dans le domaine de la cryptanalyse et la progression e e e de la puissance de calcul des processeurs.3. une premi`re solution consistait ` come e e e a biner deux clefs.3 Syst`me cryptographique ` clef secr`te e a e 157 – Cryptanalyse diff´rentielle. On obtient ainsi le syst`me “double DES” pour lequel C = e E2 (E1 (M )) et M = D1 (D2 (C)). 3. le cassage e par force brute n’est donc pas impossible en un temps raisonnable ! Pour am´liorer la s´curit´ de DES.

On proposa donc l’utilisation de “triple DES” avec cette fois-ci une clef effective de 112 bits mais le temps de calcul est tripl´.Ce syst`me a ´t´ choisi e ee apr`s une comp´tition organis´e par le NIST. Toutes les op´rations d’AES sont des op´rations sur des octets consid´r´s e e ee 8 ´l´ments.5 issue du rapport NESSIE-D21. un nouveau standard plus rapide a pris sa place depuis 2000.4 Le nouveau standard AES (Rijndael) Rijndael est le chiffrement ` clef secr`te qui a ´t´ retenu par le NIST (National a e ee Institute of Standards and Technology) comme le nouveau standard am´ricain e de chiffrement (AES : Advanced Encryption Standard). En effet. Mars). qui donne une s´curit´ de 112 bits mais e e permet d’ˆtre compatible avec le cryptage DES simple en prenant K1 = K2 . c’est Rijndael qui s’est av´r´ le plus r´sistant ee e et est donc devenu le nouveau standard am´ricain. e e e Serpent. vement 56 × 2 e 3. On pr´f`re donc souvent utiliser seulement deux clefs et un cryptage ee C = E1 (D2 (E1 (M ))). Fpm est isomorphe ` Fp [X]/g(X). les clefs recherch´es sont i0 et j0 . Quand Xi0 = Yj0 . Effectuer tous les d´cryptages Yj possibles de C par une seule clef j : . C’est e c un code par blocs encodant 128 bits avec des clefs de 128.3. Des cinq finalistes (Rijndael. Cela peut ˆtre r´alis´ avec e e e e 3 clefs et un cryptage C = E3 (E2 (E1 (M ))). ou DES − EEE . Advanced Encryption Standard. e 4. 3. e −1 Yj = DESj (C) . Twofish. comparer au fur et ` mesure les Yj avec les Xi (ces a derniers ´tant tri´s ceci ne n´cessite qu’au pire log(n) ´tapes par Yj en e e e e proc´dant par dichotomie). Trier ces Xi avec un tri rapide en O(n log(n)) ´tapes. ou DES−EDE. 2. dans ce cas l’attaque pr´c´dente donne une clef ´quivalente plutˆt aux alentours de 120 e e e o bits. 192 ou 256 bits. e La taille ´quivalente de clef d’un double DES est donc aux alentours de 64 bits e seulement. On rappelle que pour p premier. soit approximatie 56 op´rations.158 Chapitre 3 : Cryptologie de ce syst`me n’´tait qu’environ 100 fois plus difficile que le cassage de DES e e (et non 256 fois plus difficile comme on aurait pu s’y attendre en prenant deux clefs). RC6. F comme des ´l´ments du corps fini ` 2 e e ee a 256 . rempla¸ant le DES.4). e comme on peut le voir dans la table 3. Il s’agit de l’AES. l’attaque “Meet-in-the-middle” utilise un tri rapide pour casser le double DES ` peine plus difficilement que le simple DES : a 1.3. e Finalement. Effectuer les 256 cryptages possibles Xi d’un message M . Il est important de noter que Rijndael ´tait parmi les propositions les plus rapides. o` g(X) est un polynˆme irr´duca u o e tible sur Fp [X] de degr´ m (voir la section 1. e .

– La multiplication est une multiplication de polynˆmes modulo g(X). qui est l’octet correspondant o e en notation hexad´cimale. Ainsi. o Par extension. l’octet b7 b6 b5 b4 b3 b2 b1 b0 sera vu o e comme le polynˆme b7 X 7 + b6 X 6 + b5 X 5 + b4 X 4 + b3 X 3 + b2 X 2 + b1 X + b0 .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 Twofish 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 D´cryptage 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. le polynˆme g(X) s’´crira 0x11B.3. e e Pour AES. e 1.4 (Op´rations sur F256 ). 3. e – L’addition de deux polynˆmes est l’addition terme ` terme des coefficients o a (l’addition dans F2 = Z/2Z ) et correspond ` l’op´ration ou exclusif (XOR a e ⊕) sur les octets. ee . On consid`re les octets a = 0x57 et b = 0x83 (en notation h´xad´cimale. p = 2 et m = 8 et g(X) = X 8 + X 4 + X 3 + X + 1 qui est bien un polynˆme irr´ductible sur F2 [X]. o Exercice 3.5: Vitesses compar´es de quelques m´thodes de chiffrements par blocs. e e e ou encore not´s a = [57] et b = [83] si il n’y a pas d’ambigu¨ e) vus comme e ıt´ des ´l´ments de F256 .

3.160 (a) Calculer a + b (b) Calculer a × b Chapitre 3 : Cryptologie 2. Soit w(X) un g´n´rateur de F256 . e a – avec une clef de 192 bits. dans AES. . 0 e e i < 255.a(X). tout ´l´ment non nul de e e ee F256 se repr´sente de mani`re unique par w(X)i mod g(X). De mˆme : e – la matrice associ´e ` une clef de 128 bits aura 4 lignes et Nk = 4 colonnes . On utilise cette fois une notation polynomiale. Dans ce cas. w(X) = X + 1 = 0x03. En d´duire un moyen efficace d’effectuer la multiplication de deux e ´l´ments dans F256 . (a) Donner un algorithme permettant de calculer l’´l´ment de F256 coree respondant ` X. e ee 3.9: Repr´sentation matricielle d’un bloc de 16 octets. On note Nb le nombre de colonnes dans une matrice pour ´crire un bloc d’octets. correspondent ` e a des s´quences de 16 octets. Remarque : Pour AES. Cette matrice aura n´cessairement 4 lignes et un nombre e e de colonnes fonction de la taille choisie du bloc. a (b) En d´duire un algorithme calculant l’´l´ment de F256 X i a(X). on obtiendra des matrices de 4 lignes et Nb = 4 e colonnes. la matrice aura 4 lignes et Nk = 8 colonnes . la matrice aura 4 lignes et Nk = 6 colonnes . Des blocs d’octets sont organis´s sous forme matricielle. Soit a(X) ∈ F256 .9. ee Solution page 298. – pour une clef de 256 bits. 128 bits = 16 octets a0 8 bits a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 Flux de données Représentation matricielle a0 4 lignes a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a1 a2 a3 N colonnes Fig. e Par exemple. et Nk ce mˆme nombre e e pour une clef. pour les flux d’entr´e/sortie qui. selon un mod`le illuse e tr´ dans la figure 3.

2. Ce dernier supporte des tailles de blocs plus nombreux qu’AES. 4. L’algoe e e rithme 25 d´crit le chiffrement AES. chacun divis´ en quatre e ´tapes : e 1. e . e e AES-128 AES-192 AES-256 Nk 4 6 8 Nb 4 4 4 Nr 10 12 14 Tab. Le chiffrement AES consiste en une addition ee initiale de clef(AddRoundKey). alors que l’algorithme de a Rijndael utilise des clefs de 128. Ce nombre e e d´pend des valeurs de Nb et de Nk .3. AES op`re sur des blocs vus comme une e e e matrice 4×Nb d’´l´ments de F256 . AES fixe la taille de blocs ` 128 bits (Nb = 4). La d´rivation de la clef de chiffrement K dans le tae bleau RoundKeys[] est not´e KeyExpansion et sera d´taill´e plus loin. e Comme on l’a vu pr´c´demment. 192 ou 256 bits. MixColumns effectue un produit matriciel en op´rant sur chaque colonne e de la matrice. vue comme un vecteur. Les diff´rentes configurations possibles e e sont d´taill´es dans le tableau 3. Enfin. un tour final FinalRound est appliqu´ (il correspond ` un tour dans e a lequel l’´tape MixColumns est omise). e e a 3. SubBytes est une substitution non-lin´aire lors de laquelle chaque octet e est remplac´ par un autre octet choisi dans une table particuli`re (une e e Boˆ ıte-S ). l’algorithme AES n’est pas stricto sensu celui e a de Rijndael.3 Syst`me cryptographique ` clef secr`te e a e 161 Pour ˆtre tout ` fait exact.6. On note Nr le nombre de tours qui doivent ˆtre effectu´s. ShiftRows est une ´tape de transposition o` chaque ´l´ment de la mae u ee trice est d´cal´ cycliquement ` gauche d’un certain nombre de colonnes. 3. suivie par Nr − 1 tours. Principe de l’algorithme Comme DES. La clef de tour pour l’´tape i sera noe e t´e RoundKeys[i]. et RoundKeys[0] r´f´rencera un des param`tres de l’ade ee e dition initiale de clef.6: D´tail des configurations possibles. AES ex´cute une s´quence de tours qui seront d´taill´s dans la e e e e suite. AddRoundKey combine par addition chaque octet avec l’octet correspondant dans une clef de tour obtenue par diversification de la clef de chiffrement.

1 b0.10: Etape SubBytes dans AES.3 a 1.1 b1. il est envoy´ sur 0 pour cette ´tape). la boˆ e ee e ıte-S est construite en combinant cette fonction inverse avec une transformation affine inversible f . AddRoundKey(State.2 b1. RoundKeys) AddRoundKey(State.2 b3. une clef K e Sorties Une matrice State correspondant au bloc chiffr´ e KeyExpansion(K.0 b1. Dans cette ´tape. Cette fonction est connue pour ses bonnes propri´t´s de non-lin´arit´ (0 ee e e n’ayant pas d’inverse.2 b2.2 a 1.2 a 3. Cette ´tape correspond ` la seule transformation e a non-lin´aire de l’algorithme. pour tout a ∈ F256 Les concepteurs ont ´galement fait en sorte que cette boˆ e ıte-S n’admette pas . MixColumns(State) . RoundKeys[Nr ]) . Entr´es Une matrice State correspondant au bloc clair.2 a 0.10 illustre par exemple la transformation de l’´l´ment a2.0 a 0. AddRoundKey(State.2 a 2. ShiftRows(State) . RoundKeys[r]) .3 b2. La e e figure 3. RoundKeys[0]) .0 a 3.3 b1.2 = S[a2.1 a 0. a 0. 3. ´ Etape SubBytes(State).0 b2. ShiftRows(State) .0 a 1.162 Chapitre 3 : Cryptologie Algorithme 25 Chiffrement AES.1 b3.2 b0.3 a 2.1 a 2. Remarque : la table SBox d´rive de la fonction inverse t : a −→ a−1 sur e F256 .3 b2.3 a 2. On a donc : SBox[a] = f (t(a)) .0 b0. Afin d’´viter des e e e attaques bas´es sur de simples propri´t´s alg´briques.0 b3.3 S SubBytes b0. chaque ´l´ment de la matrice e e ee State est permut´ selon une table de substitution inversible not´e SBox.2 en l’´l´ment ee ee b2.2 a 3.1 a 3. // Addition initiale Pour r = 1 ` Nr − 1 Faire a SubBytes(State) . Fin Pour // Tour final SubBytes(State) .2 ].2 b3.1 b2.1 a 1.3 ´ Fig.0 a 2.

7 (InvShiftrows). D´tailler l’op´ration inverse de cette ´tape. si bien que l’´l´ment en ee e e ee ee position j de la ligne i est d´plac´ en position (j − Ci ) mod Nb . Les valeurs e e de Ci d´pendent de la valeur de Nb et sont d´taill´es dans la table 3.3. Exercice 3.7. ni de point fixe oppos´ : e SBox[a] + a = 00. Exercice 3. 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. Solution page 299. On pose a = 0x11 ∈ F256 e (notation hexad´cimale) avec les conventions de repr´sentation utilis´es dans e e e AES.3 Syst`me cryptographique ` clef secr`te e a e de point fixe. cette table n’est fournie qu’` titre indicatif dans la mesure o` a u AES fixe la taille de bloc ` Nb = 4. L’´tape ShiftRows est illustr´e dans la a e e figure 3. 3. 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 Enfin. Cette ´tape op`re sur les lignes de la matrice e e State et effectue pour chaque ´l´ment d’une ligne un d´calage cyclique de ee e n ´l´ments vers la gauche. la fonction affine f est d´finie 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.7: ShiftRows : d´calage des lignes en fonction de Nb dans l’algorithme Rijne dael.11. Calculer SBox[a]. ´ Etape ShiftRows(State). D´tailler l’op´ration inverse de cette ´tape. ´ Evidemment. Le nombre d’octets d´cal´s d´pend de la ligne ee e e e consid´r´e. e e e Solution page 299. La ligne i est d´cal´e de Ci ´l´ments. e e e Solution page 300.6 (Op´rations autour de SubBytes).5 (InvSubBytes). . SBox[a] + a = FF.

on r´alise donc e e e 3 + X 2 + X + 02) × a(X) mod (X 4 + 1) Matriciellement.0 b1.12) s’´crit : 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.2 b1.3 1.2 a 3.1 b1.2 a 2.2 b0.1 a 0.3 b 02 01 01 03 03 02 01 01 01 03 02 01 01 01 03 02 = Fig.0 a 3.1 a a 1.3 a b3. 3. l’op´ration : (03X e cette op´ration (illustr´e dans la figure 3.2 b2.2 a 1.11: Op´ration ShiftRows dans AES.2 a 0.12: Op´ration MixColumns dans AES. Dans MixColumns.1 b3.1 b2. c(X) est bien inversible modulo X 4 + 1 et la transformation MixColumn est ´galement inversible.1 b b0. La transformation MixColumns op`re sur les e colonnes c de la matrice State en les consid´rant chacune comme un polye nˆme a(X) de degr´ 3 ` coefficients dans F256 .1 3.3 a 2.1 a 2.0 a 1. e ´ Etape MixColumns(State).1 a 3. e En outre.1 a 1. 3. Elle consiste ` effectuer pour o e a a chaque colonne une multiplication par c(X) = 03X 3 + X 2 + X + 02.1 3.1 a 3.2 b3. e .164 Chapitre 3 : Cryptologie Décalage: 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.0 b2.3 0.0 b0. comme c(X) et X 4 + 1 sont premiers entre eux. e ce qui permet de d´crypter.3 b 2.1 b0.3 0.1 b2.3 1.0 a 0.0 a 2.1 a 2. modulo le polynˆme X 4 + 1 (les coefficients des polynˆmes sont des ´l´ments de F256 o o ee not´s comme des nombres hexad´cimaux).0 b3.1 MixColumns b b1.

Donner un algorithme de multiplication par X en binaire dans F256 . [52][1D] = [F 0]. Cette e e fonction sera not´e InvMixColumns dans la suite. 6. le tout modulo o le polynˆme M = Y 4 + [01].3 Syst`me cryptographique ` clef secr`te e a e 165 Exercice 3. 8. On reprend la repr´e sentation des ´l´ments de F256 utilis´e dans AES. −[03]. [52][F 6] = [C7]. On disposera e ainsi de Nr + 1 clefs de tours (chacune de 4N b octets . 2. . expliciter la fonction r´ciproque de MixColumn dans l’AES. . [F D] − [F 0]. Par exemple.voir figure 3.+an )2 e modulo 2. e e 1. X 7 +X 6 +X 2 +1 e e s’´crit en binaire 11000101 et [C5] en hexad´cimal. o donner une relation de B´zout entre c et M . X 9 . not´e KeyExpansion. En d´duire l’inverse de [03] dans F256 . [23] + [45]. Il s’agit d’une simple addition des deux matrices State et Ki. ´ Etape AddRoundKey(State. Calculer le polynˆme Q tel que M = cQ + R o o avec R(Y ) = [A4]Y 2 + [A5]Y + [A5]. X 10 .9 (InvAddRoundKey).3. En d´duire les valeurs binaires de X 8 . En supposant connus deux polynˆmes U et V tels que U c + V R = 1. e e e Solution page 300. e 4. L’addition op´rant sur des ´l´ments de F256 . Quel est le r´sultat de la division euclidienne de g(X) par X + 1 sur e F2 [X] ? 3. e Qu’est-ce que la multiplication par [02] ? 5. D´duire des deux questions pr´c´dentes la valeur de [F 6]2 . Solution page 300. l’´tape MixColumn est r´alis´e par la multiplication d’une e e e colonne par le polynˆme c(Y ) = [03]Y 3 + Y 2 + Y + [02]. Les ´l´ments sont ´crits sous ee e ee e forme de deux chiffres hexad´cimaux encadr´s. X 11 . e e e 7.13). D´tailler l’op´ration inverse de cette ´tape. Calculer [0B] + [A2].8 (Retour sur F256 et InvMixColumns). [F D] + [F 0]. Application : U = [A0]Y + [F E] et V = [1D]Y 2 + [1C]Y + [1D] sont donn´s. e [52][1C] = [A2]. Que vaut (a+b)2 modulo 2 ? En d´duire l’expression de (a1 +a2 +. X 13 et X 14 . On pourra se servir des e r´sultats suivants : [F 6][1D] = [0B]. X 12 . [F 6][1C] = [F D]. La diversification de la clef dans AES Cette ´tape. c’est une e ee op´ration ou exclusif ⊕ bit ` bit sur les octets. Dans l’AES. . e 9.Ki). permet de diversifier la clef de chiffrement e e K (de 4Nk octets) dans une clef ´tendue W de 4Nb (Nr + 1) octets. e a Exercice 3.

a1 . 3. . c a a3 .13: Op´ration KeyExpansion dans AES. e a3 ] et effectue une permutation circulaire de fa¸on ` renvoyer le mot [a1 .14. – La fonction RotWord qui prend en entr´e un mot de 4 octets a = [a0 . a0 ].14: Vision de la clef ´tendue W comme une succession de colonnes. (Nr+1)*Nb colonnes W W[0] W[Nr] c[6] : 7ème colonne de W Fig. a2 . on e e notera c[i] (respectivement k[i]) la (i + 1)`me colonne de W (respectivement de K).166 Chapitre 3 : Cryptologie Nb W Nk 4 W[0] W[1] 4 KeyExpansion K W[Nr] Fig. 3. e Les tableaux K et W peuvent ˆtre vus comme une succession de colonnes. chae cune constitu´e de 4 octets. Dans tous les cas. Dans la suite. comme l’illustre la figure 3. e e a e e KeyExpansion utilise notamment les deux fonctions et le tableau de constantes suivants : – SubWord qui est une fonction prenant en entr´e un mot de 4 octets et ape plique la boˆ ıte-S SBox sur chacun des octets. e L’algorithme utilis´ pour la diversification de clef diff`re l´g`rement selon e e e e que Nk 6 ou Nk > 6. a2 . Les coe e lonnes suivantes sont d´finies r´cursivement ` partir des colonnes pr´c´dentes. les Nk premi`res colonnes de K e sont recopi´es sans modifications aux Nk premi`res colonnes de W.

00.E. Exercice 3. Mode CBC : (a) En supposant que l’on chiffre un disque dur de 32Go de donn´es e avec Triple-DES en mode CBC. ee 1. e e 2. 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. On rappelle que les diff´e rents modes de chiffrement ont ´t´ introduits section 1. quel est le nombre de blocs crypt´s e et quelle est la probabilit´ d’obtenir une collision entre deux blocs e crypt´s Yi et Yj ? e (b) Comment exploiter cette faille ? (c) Qu’en est-il avec l’AES ? Conclure sur l’importance de la taille des blocs.1. 00]. e Algorithme 26 Diversification des clefs dans AES. Solution page 301. Fin Si W[i] = W[i-Nk ] + tmp Fin Pour Exercice 3. si (Nk > 6) ET (i mod Nk = 4) Alors tmp = SubWord(tmp) . qui est d´fini e e r´cursivement par : e Rcon[i] = [xi−1 . ind´pendant de Nk .11 (Tailles de blocs et collisions).S).3 Syst`me cryptographique ` clef secr`te e a e 167 – Le tableau de constantes de tours Rcon[i]. ∀i 1 L’algorithme 26 r´sume la diversification des clefs dans AES. . D´tailler l’algorithme de d´chiffree e e ment du syst`me AES. 00.10 (D´chiffrement A. Mode ECB : D´crire un sc´nario illustrant la faiblesse de ce mode.3. Entr´es Une clef K de 4Nk octets.3. e Solution page 300.

4.1). MixColumn est e e un code lin´aire de distance maximale (voir section 4.1). a – seul Bob peut lire le courrier d´pos´ dans sa boˆ aux lettres. Par ailleurs. on a cette fois Ke = Kd . elle permet qu’apr`s plusieurs tours chaque e e bit de sortie d´pende de tous les bits en entr´e.6. d`s u e e le milieu des ann´es 1970. e e e Enfin. le chiffrement ` clef publique est ´galement appel´ a e e chiffrement asym´trique. e e ıte Pour comparaison. 3. ni e e ¯ −1 (a).5) de telle sorte que n’importe qui pourra r´cue p´rer cette clef. N´anmoins. en tester l’origine et chiffrer un message avec. Comme e e a e les deux clefs sont distinctes. l’op´rateur ShiftRows permet de de point fixe inverse S(a) = S e diffuser largement les donn´es en s´parant les octets originellement cons´cutifs. e Il n’y a actuellement aucune attaque significative sur AES.1 Syst`me cryptographique ` clef publique e a Motivations et principes g´n´raux e e Nous avons vus que les syst`mes cryptographiques ` clef secr`te peuvent ˆtre e a e e pratiquement sˆrs et efficaces en termes de temps de calcul. par analogie avec une e a boˆ aux lettres dont Bob est le seul ` poss´der la clef : ıte a e – toute personne peut envoyer du courrier ` Bob . elle ne poss`de pas de point fixe S(a) = a. Ensuite.4 3. de nouvelles interrogations furent soulev´es : e e – Avant d’utiliser un syst`me de chiffrement ` clef secr`te. e Dans le cadre d’un tel syst`me et toujours pour reprendre les notations de e l’´quation (3.4. combin´e avec MixColumn. comment convenir e a e d’une clef ? – Comment ´tablir une communication s´curis´e entre deux entit´s sans aucun e e e e ´change pr´alable de clef ? e e C’est pour r´pondre ` ces questions qu’en 1976. En particuee e e a lier. un syst`me de chiffrement ` clef secr`te ´tait vu comme un e a e e coffre-fort dont la clef est partag´e par Alice et Bob.168 S´curit´ de AES e e Chapitre 3 : Cryptologie La « S-box »a ´t´ construite pour ˆtre r´sistante ` la cryptanalyse. Pour ˆtre plus pr´cis. Diffie et Hellman pos`rent les e a e bases des syst`mes cryptographiques ` clef publique. e . ni de point oppos´ S(a) = a. Kd est une clef e priv´e et secr`te que Bob garde pour lui et qui lui servira ` d´chiffrer. Il convient cependant de temp´rer notre propos dans la mesure o` ce standard est encore e u relativement r´cent et n’est donc soumis ` la cryptanalyse mondiale que depuis e a un peu plus de 7 ans. Ke est une clef e e e publique qui est publi´e dans une sorte d’annuaire (en fait sous la forme d’un e certificat : voir la section 3.

a Peut-on caract´riser un tel syst`me de chiffrement ` l’aide des outils de la e e a th´orie de l’information ? Dans ce cadre. Rivest.3. du e e nom de ses concepteurs. est le syst`me RSA. Shamir et Adleman. L’outil a math´matique permettant de caract´riser cette difficult´ est la th´orie de la e e e e complexit´ algorithmique.4 Syst`me cryptographique ` clef publique e a 169 "ANNUAIRE" Bob −> Cle publique de Bob ALICE Clé Publique de Bob Clé privée de Bob BOB Chiffrement Déchiffrement salut Texte clair rzh!k Texte chiffré Canal non sécurisé rzh!k Texte chiffré salut Texte clair Fig. on peut e e e e obtenir une relation de congruence commune ` tous les ´l´ments de Zn lorsque a ee . Cela induit u que la clef Kd est parfaitement d´termin´e d`s que la clef publique Ke est e e e ´galement connue : il suffit d’inverser la fonction EKe . un algorithme asym´trique doit v´rifier e e −1 DKd = EKe o` les fonctions D et E sont parfaitement connues. Le secret d’un cryptosyst`me ` clef publique ne peut donc pas e a ˆtre caract´ris´ par la th´orie de l’information de Shannon . En th´orie du moins. ce secret ne vient e e e e pas de l’incertitude sur la clef priv´e Kd mais sur la difficult´ intrins`que ` e e e a calculer Kd ` partir de la seule connaissance de la clef Ke et de C. 3. e e 3. introduit ` la a a section 1. e L’exemple le plus connu et le plus utilis´ d’algorithme de chiffrement ` clef e a publique. Par ailleurs. cela e e implique que H(Kd |Ke ) = 0 et donc qu’un syst`me asym´trique ne pr´sente e e e aucun secret. La difficult´ de RSA est e bas´e sur la difficult´ de factoriser un nombre entier. la mesure du secret consiste ` calculer e a l’information restant ` trouver sur la clef priv´e.3.3.15: Principe du chiffrement ` clef publique.2 Chiffrement RSA En combinant le th´or`me d’Euler et le th´or`me chinois (page 49). principalement en raison de sa simplicit´. les deux clefs Ke et Kd sont donc li´es mais choisies e de telle sorte qu’il soit trop difficile de calculer la valeur de la clef Kd ` partir a de Ke .4. sachant que la clef publique a e est connue :H(Kd |Ke ). En pratique. On utilise pour cela le principe des fonctions ` sens unique.

170 Chapitre 3 : Cryptologie n est le produit de deux nombres premiers. Shamir e et Adleman. 1. ` l’origine de la cryptographie ` clef publique RSA. Si au contraire a = 0 mod p. Quel que soit l’entier positif k. on obtient akϕ(n)+1 = a a mod p. D´terminer la cl´ publique et la cl´ priv´e pour p = 47 et q = 59. 6. Comme p et q sont premiers entre eux. Preuve. En ´levant ` la e e e a puissance k et en remultipliant par a. Il faut que p et q contiennent au moins 150 chiffres d´cimaux chacun. Exercice 3. on a ´galement forc´ment akϕ(n)+1 = 0 = e e a mod p. C’est un r´sultat de Rivest. e e Dans le deuxi`me cas. l’inverse de e par la multiplication modulo ϕ(n). n) comme sa clef publique RSA. on a : DKd (EKe (M )) = M . En ´levant e ` la puissance k(q − 1) et en remultipliant par a. Soit n = pq un produit de deux nombres e e e e premiers. clef priv´e) en utilisant la proc´dure suivante : e e 1. 5. on obtient la relation d´sir´e. Calculer d. Soit a un ´l´ment quelconque de Zn . Il y a deux cas : si a est inversible dans Zn . alors ap−1 = 1 mod p. e e e e e DKd (EKe (M )) = M ed mod n = M 1+αϕ(n) mod n = M . En effet. Choisir deux grands nombres premiers p et q. n) qui est sa clef priv´e RSA. il suffit maintenant d’appliquer l’unicit´ e du th´or`me chinois. e e On a alors : Chiffrement RSA : E(M ) = M e mod n ˜ ˜ D´chiffrement RSA : D(M ) = M d mod n e On v´rifie ais´ment que. De la mˆme mani`re on obtient une relation similaire modulo q : e e akϕ(n)+1 = a mod q. ee akϕ(n)+1 = a mod n. d’apr`s le th´or`me RSA. dans lequel un utilisateur cr´e e e e son couple (clef publique. e . Garder secr`te la paire Kd = (d. e e P Nous en d´duisons le syst`me de codage RSA. a a Th´or`me 20 (Th´or`me RSA). et sinon e e on utilise deux fois le th´or`me de Fermat modulo chacun des deux nombres e e premiers p et q. Calculer n = pq 3. Choisir un petit entier e premier avec ϕ(n) = (p − 1)(q − 1) 4. si a est non nul modulo p premier. On e e e e prendra e = 17 (et on justifiera la possibilit´ de ce choix). alors on applique directement le th´or`me d’Euler et donc aϕ(n) = 1 mod n.12 (Chiffrement RSA). la relation modulo n est imm´diate. e 2. de 1978. pour 0 M < n. En effet. Publier la paire Ke = (e. pour avoir akϕ(n)+1 = a mod pq. si a est nul.

Pour cela. Oscar envoie ` Eve la longueur de la clef qu’il a e e a r´ussit ` d´terminer. 5). e e Solution page 302. 4. . On consid`re la clef e e publique RSA Ke = (e. il utilise la clef publique RSA de Eve e a e (n. Ivan intercepte le message chiffr´ RSA de la longueur e de la clef : il obtient 10. Ivan intercepte ainsi le chiffr´ de K1 (il obtient 48) et e . e e Mk . e e e Solution page 302. B. Oscar et Eve travaillent aussi sur la cryptanalyse de ce texte qu’ils ont ´galement intercept´. Voici un texte fran¸ais chiffr´ e c e qu’Oscar 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. Ci = Mi + Ki mod 27 C’est ce qu’on appelle le chiffrement de Vigen`re. .3. Fournir une m´thode de cryptanalyse d’un chiffrement de Vigen`re en e e commen¸ant par d´terminer la taille de la clef. Exercice 3. Quelle est la longueur de la clef ? 3. . C.14 (Chiffrement de Vigen`re et RSA). Le message cod´ 625 peut-il r´sulter d’un codage avec la cl´ publique ? e e e Mˆme question avec la cl´ priv´e. k]. c e 2. } dont chaque e e symbole est d´sign´ 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 donn´s une cl´ K = K0 K1 . Kk et un message clair M = M0 M1 . On consid`re un e e syst`me de chiffrement op´rant sur l’alphabet {A. e) = (35. Chiffrer la lettre B en syst`me ASCII (66) avec la cl´ publique et v´rifier e e e que la cl´ priv´e permet bien de retrouver le message initial. le chiffr´ C = C0 C1 . e e a e 3. . On pourra se servir du r´sultat : 13325 = e e 133 (mod 319). n) = (11. e a e e e Elle les envoie ` Oscar en utilisant la clef publique RSA de ce dernier a (n. Exercice 3. . e) = (65. 319).4 Syst`me cryptographique ` clef publique e a 171 2. Quel est le chiffrement avec cette cl´ du message M = 100 ? e 2. . . D´chiffrer le message C = 133. Calculer d la cl´ priv´e correspondant ` la cl´ publique e. Ck est donn´ par : e e Pour tout i ∈ [0. Eve a r´ussi ` d´chiffrer la deuxi`me et la troisi`me clef de chiffrement. .13 (Chiffrement/D´chiffrement RSA). Z. 1. . . 7).

tout au moins en accepe e tant un taux d’erreur (voir le test de Miller-Rabin.8. si l’on commet une erreur en croyant que p et q sont premiers.. e e c Solution page 302. d) est extrˆmement facile : il suffit d’appliquer l’algoe rithme d’Euclide ´tendu . page 56).. Pr´ciser la clef utilis´e pour le chiffrement et le d´chiffrement e e e (sous forme de chaˆ de caract`res). section 1.40% 6. d´chiffrez le e texte. Tab. . Maintenant que vous disposez de la longueur de la clef. on peut proc´der ` un changement de syst`me RSA (recalcul e a e de p et q). e c e e E S A N .97% 6. Donc. e e e Dans ce cas.86% 6.23% . si un attaquant peut factoriser le nombre n = pq de la clef publique.172 Chapitre 3 : Cryptologie de K2 (4). Nous avons vu que cette exponentiation pouvait ˆtre r´alis´e assez e e e efficacement. si l’on dispose d’un algorithme rapide pour factoriser e de grands entiers. La r´partition (en %) des symboles ıne e e utilis´s dans un texte en fran¸ais est r´sum´e dans le tableau 3. Dans le cas de RSA.35% 14.3. Efficacit´ et robustesse de RSA. e Grˆce aux algorithmes vus dans les sections pr´c´dentes : a e e – Il est facile de g´n´rer des grands nombres premiers..4. e – enfin chiffrement et d´chiffrement sont r´alis´s par exponentiation modue e e laire. 3. l’erreur n’est pas trop grave : en effet. casser RSA devient facile aussi. le destinataire se rendra rapidement compte que les nombres ne sont pas premiers : soit la clef d n’est pas inversible. 18. – le calcul du couple (e. Quelles ´taient les valeurs de K1 et de K2 ? e Note : on pourra utiliser les r´sultats suivants : e 482 = 29 mod 65 et 485 = 3 mod 65 4. La s´curit´ fournie par RSA repose essentiellement sur la difficult´ ` factoriser e e ea de grands entiers. soit certains blocs du message d´crypt´ sont incompr´hensibles.. En effet.8: R´partition fr´quentielle des symboles dans un texte fran¸ais. il peut alors d´duire directement ϕ(n) = (p − 1)(q − 1) et e donc calculer la clef priv´e Kd ` partir de la clef publique Ke par l’algorithme e a d’Euclide ´tendu.

Ainsi.e et d pour e petit). Soit s = max{v ∈ N. Les limites actuelles de factorisation concernent des nombres e a de 200 chiffres environ (au moment ou ce livre est r´dig´. Proposer alors un algorithme permettant de factoriser n. On peut cependant montrer l’´quivalence entre ”d´terminer d ` partir de (n. e.e de d´terminer p et q. Cependant. i. On consid`re donc aujourd’hui un modulo n de 2048 voire e seulement 1024 bits comme sˆr. 2. d). la r´ciproque : « si factoriser ee e e de grands entiers est dur alors casser un message crypt´ par RSA est dur »n’a e pas ´t´ prouv´e. e 3. il est aussi difficile de casser RSA en cherchant ` calculer la clef priv´e a e d ` partir de la clef publique (e.16).4 Syst`me cryptographique ` clef publique e a 173 Apr`s 20 ans de recherche. d) peut ˆtre obtenu : e a e – par un algorithme d´terministe si e est petit (e log n typiquement . 2. Montrer qu’il existe k ∈ Z. e e Exercice 3. on ne sait pas aujourd’hui si casser RSA est ee e aussi difficile que factoriser n.15) . – par un algorithme probabiliste (une variante de l’algorithme de MillerRabin) dans le cas g´n´ral (exercice 3. d) avec e ”petit”.loria. Solution page 304.voir e exercice 3. on peut facilement calculer d puisque c’est ce qui est fait dans le cadre de la g´n´ration de clef. n) que de factoriser n (un probl`me r´put´ a e e e difficile si p et q sont tr`s grands). e 1. soit une erreur.fr/~zimmerma/records/factor. Combien d’appels ` cet algorithme sont en moyenne n´cessaires pour a e aboutir ` la factorisation de n ? a Solution page 305. Montrer que k 2e. Autrement dit.3. C’est sur ce point que r´side la confiance e e port´e ` RSA. calculer p et q ` partir de (n. e. e e R´ciproquement. 1. e)” e e a et ”factoriser n”. . u 3 voir http://www. Boehm. e.html pour les derniers records de factorisation. On suppose p et q diff´rents de 2 et 3. On pr´cisera l’algorithme qui effectue un seul tirage e e et renvoie soit les facteurs de n. tel que ed − 1 = k mod n − (p + q) + 1. Exercice 3. le record actuel3 fut e e ´tabli par Bahr. On suppose a disposer dans un syst`me RSA de (n. tel que 2v e divise ed − 1} (Autrement dit : ed − 1 = t2s ). Un sens est trivial : connaissant p et q.16 (Factorisation de n ` partir de n. Montrer qu’une variante de Miller-Rabin permet de factoriser n. aucun moyen plus efficace que la factorisation de e n n’a ´t´ publi´ pour casser RSA. e et d).15 (Factorisation de n ` partir de n. a On suppose disposer dans un syst`me RSA de (n. Franke et Kleinjung en mai 2005 dans le cadre du e challenge RSA200).

3).c mod nA . e e Solution page 307. 2. Eve intere cepte le message c chiffr´ envoy´ par Bob ` Alice : c = meA mod nA . 2 kui Solution page 307.18 (Attaque RSA par module commun). dB ) diff´rentes. A . Montrer que Lucky Luke. nA ).) sont r´sum´es dans la e e e e e norme PKCS#1.17 (Attaque RSA par exposant commun). On rappelle (ou on admettra !) que pour a et k entier. On e suppose de plus que eA et eB sont premiers entre eux (ce qui est le plus g´n´ral). nJ .. e e Les recommandations concernant l’impl´mentation de syst`mes cryptograe e phiques bas´s sur RSA (g´n´rations des clefs etc. en temps O(log a). Eve demande ` Alice de signer y avec sa clef priv´e . dA ) et (eB . Ces pr´cautions r´sultent d’attaques e e e qui exploitent telle ou telle relation sur les param`tres d’un chiffrement RSA. e Certaines attaques seront pr´sent´es dans la suite sous forme d’exercices. 3) et (nA . e e Supposons alors que Alice et Bob chiffrent un mˆme message M et que Oscar e intercepte les deux messages cA = M eA mod nA et cB = M eB mod nB qu’il sait ˆtre deux chiffrements du mˆme message M . Moralit´ ? (on calculera u. Eve choisit un entier 0 < r < nA au hasard et calcule x :=reA mod nA . e e Montrer qu’Oscar peut alors tr`s facilement d´couvrir le message M . e cJ = x3 mod nJ et cA = x3 mod nA peut facilement calculer x. Cette norme est r´guli`rement mise ` jour (en fonction des e e a avanc´es dans la cryptanalyse de RSA).r e Solution page 307. Exercice 3. Eve calcule y = x. William. et il convient en e e e e e pratique de prendre quelques pr´cautions. Jack et Averell ont respectivement les clefs RSA publiques (nW . Indication. Une impl´mentae tion de RSA donne ` deux personnes (Alice et Bob) le mˆme nombre n (produit a e de deux nombres premiers) mais des clefs (eA . u=y A Montrer que Eve peut alors facilement d´couvrir le message m ´mis par Bob e e −1 mod n ). Exercice 3. 3). Pour e e a d´chiffrer c.. e Exercice 3. 3. Joe envoie en secret ` chacun d’eux le mˆme message x avec 0 a e x < min(nW . la m´thode e a 1 de Newton-Raphson (faire converger la suite ui+1 = ui (1 − k ) − k−1 ) permet de calculer tr`s rapidement e a1/k . Alice renvoie ` Eve a e a dA mod n .174 Attaques sur RSA Chapitre 3 : Cryptologie La g´n´ration des clefs pr´sent´e plus haut est simplifi´e. Eve proc`de comme suit : e e 1.19 (Attaque RSA par texte chiffr´ bien choisi). (nJ . qui voit passer sur le r´seau cW = x3 mod nW .

soit B un entier tel que B! (factorielle de B) est multiple de p − 1. alors un attaquant qui connaˆ ıt n mais pas p ni q peut faire l’attaque suivante : il pr´suppose un majorant e C petit de B (C B) puis il calcule : A = 2C! mod n et G = pgcd(A − 1. En d´duire une borne sur le coˆt du calcul de A = aB! mod n en fonction e u de B et log n. Soit A = aB! mod n . en d´duire que (A − 1) est un multiple de p. le chiffrement e e El Gamal exploite le probl`me du logarithme discret (DLP) abord´ dans la e e section 1. quel est le coˆt du calcul de ak mod n ? u 5. e a Chiffrement El Gamal : Soit M le texte clair ` chiffrer et k ∈ Zp−1 un a nombre al´atoire secret. e y1 = g k mod p EKe (M ) = (y1 . Soit p1 un facteur premier de (p − 1). Soit a un entier < n.3. g.4. 2.20 (Attaque factorielle ou p-1 de Pollard). Si (p-1) est un diviseur de B! avec B petit. Quelle est la parade ? Solution page 307. y2 ) avec y2 = M. – La clef priv´e correspond ` Kd = s. e 4.3. L’entier p − 1 est pair . p – Soit s un nombre et β = g s .β k mod p . On suppose que p − 1 est un diviseur de B! avec B = α log n .3. β). 3. on suppose de plus α petit (par exemple α 1000). Montrer que aB! = 1 mod p.4 Syst`me cryptographique ` clef publique e a 175 Exercice 3. La g´n´ration des clefs s’op`re de la fa¸on suivante : e e e c – Soit p un nombre premier tel que le probl`me du logarithme discret est e difficile dans Z∗ . n).3 Chiffrement El Gamal Si RSA est bas´ sur le probl`me de la factorisation d’entiers. u 8. Montrer que p1 B. 3. – La clef publique est alors le triplet Ke = (p. 6. Montrer que cette attaque permet de casser RSA : on donnera un majorant du coˆt de cette attaque. Soit p et q les deux nombres premiers secrets utilis´s pour la construction du modulo n = pq e d’une clef publique RSA. e 7. p – Soit g ∈ Z∗ une racine primitive. il existe un entier µ tel que : µ(p − 1) = B! 1. Autrement dit. Soit k un entier . Montrer que si G est diff´rent de 1 et n alors l’attaquant a forc´ment e e cass´ RSA avec n comme modulo.

avec p un facteur du modulo n. suivie de l’algorithme e d’Euclide ´tendu pour trouver l’inverse d’un nombre dans Z est suffisant. e e e 3. On fournit maintenant quelques analyses plus sp´cifiques.g s. Int´grit´. Enfin. une exponentiation modulaire.4. y2 ∈ Z∗ . alors qu’elle est au mieux en O( 3 (p)).(g k.16 dresse un rapide historique des principales fonctions de hachages en explicitant les d´rivation de construction. y2 . Le d´chiffrement sans la clef priv´e est ´quivalent au logarithme discret.s )−1 = M. Non-r´pudiation e e e En plus du secret. Il est donc possible de coder facilement un message par exponentiation modulaire. page 83.(y1 )−1 s En effet. La section 1. on demande aujourd’hui aux codes cryptographiques d’assurer une fonction d’authentification des messages. et donc plus rapidement e que le chiffrement RSA. ` savoir la v´rification e e a e que le message arrive bien tel qu’il a ´t´ ´mis. on peut ´tendre e e El Gamal sur d’autres groupes o` le probl`me du logarithme discret est encore u e plus difficile. Le e principal int´rˆt de ce chiffrement est que pour un niveau de s´curit´ fix´. Le destinataire doit pouvoir ˆtre certain que le message a ´t´ ´mis par l’´metteur qui pr´tend l’avoir ´mis. e . e eee e e e Pour cela. ee e e e il n´cessite de travailler avec de plus petits entiers. On introduira ´galement la construce tion de codes d’authentification. La taille du modulo n´cessaire pour RSA est donc au moins deux fois plus importante. e e 3.β k . on assure aussi une fonction d’int´grit´.(y1 )−1 = M. e En outre. ou p est le modulo. de mˆme que DLP peut s’exprimer dans tout groupe.5 Authentification. La eaee figure 3. L’´tude de ces groupes particuliers d´passe n´anmoins le cadre de cet ouvrage. y2 ) = y2 . qui permettent de v´rifier ` la fois l’int´grit´ et l’authentification de la source e a e e d’une donn´e.5. la complexit´ des attaques sur RSA est en e O( 3 (p)) = O( 6 (n)).k . le concept de signature ´lectronique sera pr´sent´ avec e e e e les principaux sch´mas de signature utilis´s aujourd’hui.176 Chapitre 3 : Cryptologie D´chiffrement El Gamal : Pour y1 . ou MAC pour Message Authentification Code. On utilise pour cela les fonceee tions de hachage.s )−1 = M .2 page 83 a permis d’introduire ces fonctions. C’est le cas notamment pour les groupes de points d’une courbe elliptique dans lesquels les attaques par calcul d’index ne fonctionnent pas. En effet.(g k. pour le logarithme discret. on d´finit : e e p s DKd (y1 . notamment sur les e fonctions de hachage les plus connues. e e e Mais en poss´dant la clef.1 Fonctions de hachage cryptographiques Les fonctions de hachage ont d´j` ´t´ introduites au chapitre 1.

160 1999 Whirlpool−0 2002 2003 2004 SHA−256. Une construction de type Merkle-Damg˚ fournira alors une fonction de hachage r´sistante ard e aux collisions. On utilise pour cela une fonction ` sens unique (ici. SHA-256 et Whirlpool.384. Ainsi.16: Historique des principales fonctions de hachages. Les fonctions de hachage cryptographiques les plus connues sont MD5.voir la section 1. SHA1. 3.4. le e a logarithme discret pour m = 1024 bits = 64 octets typiquement).3. Elles sont toutes sans clefs et non pr´dictibles (les e entr´es et les sorties sont pratiquement ind´pendantes).512 SHA−224 Whirlpool−T Whirlpool Fig. La propri´t´ de r´e e ee e sistance aux collisions (page 84) est particuli`rement recherch´e pour assurer e e des sch´mas de signature ou de chiffrement cryptographiquement sˆr.21 (Construction d’une fonction de compression r´sise tante aux collisions). Non-r´pudiation e e e 177 1990 1991 1992 1993 1994 HAVAL MD4 MD5 Extended−MD4 RIPEMD SHA SHA−1 1996 RIPEMD−128. u Exercice 3. On proc`de comme suit : e . On se propose de construire une fonction de compression h : {0. e u une fonction de hachage sera consid´r´e comme cass´e lorsqu’il existera un ee e algorithme permettant de trouver des collisions pour cette fonction avec une n complexit´ meilleure que l’attaque de Yuval (en O(2 2 ) calculs d’empreintes e successifs o` n est la taille d’empreinte . 1}2m−2 −→ {0.3).5 Authentification. 1}m r´sistante aux collisions. Int´grit´.

αp−2 } = {β 0 . pgcd(y2 − x2 . q) = 1 et on pose u = (y2 − x2 ) 1. p = 2q +1. . Quels sont les diviseurs de p − 1 ? En d´duire que d ∈ {1. b. Soient α et β deux e p q g´n´rateurs de Z∗ (α = β). Autrement 2 dit. x2 ) ∈ Z2 et y = (y1 . Autrement dit : e e p Z∗ = {α0 . . q = 41. e c. Montrer que λ = (x1 − y1 )(y2 − x2 )−1 mod p − 1. e d. . e . . Application num´rique : pour p = 83. on pose d = pgcd(y2 − x2 . Conclure en donnant un algorithme qui prend en entr´e une collision x = e u (x1 . β 1 . on raisonne par l’absurde : e – On suppose disposer d’une collision. On d´taille maintenant les fonctions de hachage les plus connues avec notame ment un ´tat des lieu sur leur cryptanalyse. h. On choisit p et q deux nombres premiers tels que q = p−1 . On consid`re alors les groupes multiplicatifs Z∗ et Z∗ . On suppose que p comporte m bits (ainsi q en comportera m − 1). . 34). q. Majorer le coˆt de cet q q algorithme et en d´duire que h est r´sistante aux collisions. calculer e l’empreinte de (12. Montrer que x = y. β 2 . . y2 ) ∈ Z2 et renvoie λ. y2 ) ∈ Z2 avec x = y tel que h(x) = h(y) q q – On montre qu’on peut alors facilement calculer λ. e 2. 2. Montrer que αx1 −y1 = β y2 −x2 mod p. Sur quel calcul repose la r´sistance aux collisions de e la fonction h ? Pour montrer que h est r´sistante aux collisions. . e f. on suppose disposer de x = (x1 . On suppose que d = 1. On suppose que d = 2 = pgcd(y2 − x2 . On suppose α. En d´duire que d = p − 1. β et p connus publiquement et on d´finit : e h : Zq × Zq −→ Zp (x1 . 2q). e. p − 1). Dans toute la suite. α = 15 et β = 22. α1 . Montrer que −q < y2 − x2 < q et en d´duire que d = q. x2 ) ∈ Z2 et y = (y1 .178 Chapitre 3 : Cryptologie 1. α2 . Montrer que β q = −1 mod p. . e u a 3. On suppose que λ n’est pas connu et extrˆmement coˆteux ` calculer. 2. x2 ) −→ αx1 β x2 mod p a. e e Solution page 308. Autrement dit. p − 1}. Montrer que soit λ = u(x1 − y1 ) mod p − 1 soit λ = u(x1 − y1 ) + q mod p − 1. β p−2 } p On pose λ = logα (β) (donc αλ = β mod p). En d´duire : β u(y2 −x2 ) = ±β mod p. On suppose que d = p − 1. On en d´duit donc e −1 mod q. g.

3.5 Authentification, Int´grit´, Non-r´pudiation e e e MD5

179

MD5 fut propos´ par Rivest en 1991. On s’int´resse ici ` la fonction de come e a pression utilis´e 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 figure 1.12 page 85). Chaque bloc B est d’abord d´coup´ en 16 sous-blocs {Bi }0 i 15 de 32 bits e e chacun. MD5 utilise ´galement 64 constantes {Ki }0 i 63 fix´es. L’algorithme e e travaille avec un ´tat sur 128 bits qui est lui-mˆme divis´ en 4 mots de 32 e e e bits : A, B, C et D (initialis´s au d´but avec des constantes). 64 tours sont e e alors effectu´es (et fournissent en sortie l’empreinte r´sultat de la fonction de e e compression). Le d´tail d’un tour MD5 est donn´ dans la figure 3.17. Les tours sont divis´s 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

B

C

D

Bj Ki

A

B

C

D

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

i

63).

S´curit´ de MD5. La taille d’empreinte 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 d’empreintes. Pourtant, plusieurs algorithmes ont ´t´ propos´s ee e r´cemment pour trouver des collisions avec MD5 en seulement 242 op´rations, e e voire 230 . C’est pourquoi MD5 n’est plus consid´r´ comme sˆ r aujoure e u d’hui.

180 SHA-1

Chapitre 3 : Cryptologie

SHA-1 fut publi´ en 1995 par le NIST sous la forme d’une norme. La fonction e de compression utilis´e 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 figure 1.12 page 85). Comme pour MD5, le bloc B est d’abord d´coup´ 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 fix´es. e L’algorithme travaille donc sur un ´tat de 160 bits subdivis´s en 5 mots de 32 e e bits chacun : A, B, C, D et E (initialis´s au d´but avec des constantes). 64 e e tours sont effectu´es (et fournissent en sortie l’empreinte r´sultat de la fonction e e de compression). Le d´tail d’un tour SHA-1 est fourni dans la figure 3.18. e
A B C D E

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

A

B

C

D

E

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

i

79).

Les tours sont divis´es 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 S´curit´ de SHA-1. La taille d’empreinte 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 d’empreintes. R´cemment, une technique similaire ` celle e e a utilis´e contre MD5 a permis d’obtenir des collisions en seulement O(263 ) cale culs d’empreinte. On consid`re donc que SHA-1 est cass´, mˆme si l’attaque e e e

3.5 Authentification, Int´grit´, Non-r´pudiation e e e

181

reste difficile. De part sa popularit´, cette fonction de hachage est encore lare gement utilis´e (notamment au niveau des sch´mas de signature). e e SHA-256 SHA-256 est une am´lioration plus robuste (et supportant une taille d’eme preinte plus grande) que SHA-1 publi´e en 2000. Elle se base sur un chiffree 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 figure 1.12 page 85). Nous n’entrerons pas ici dans les d´tails du fonctionnement interne de SHA-256. e S´curit´ de SHA-256. La taille d’empreinte dans SHA-256 est de 256 bits. e e La recherche de collisions par force brute (attaque de Yuval) n´cessite 2128 cale ` culs d’empreintes. A l’heure actuelle, il n’y a pas d’attaque efficace connue contre SHA-256 qui est donc consid´r´e comme encore sˆre. ee u Whirlpool Whirlpool est l’une des fonctions de hachage recommand´e par le projet NESe SIE (en 2004), dont la fonction de hachage est bas´e sur une construction de e Miyaguchi-Preneel (´voqu´e ` la section 1.4.2). Le chiffrement ` 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 chiffrement ` clef secr`te ` la base du standard AES a e a voir page 158). Le tableau 3.9 r´sume les principales diff´rences entre les deux e e fonctions de chiffrement. Taille Bloc Nb tours Polynˆme de o r´duction 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 −→ a−1 sur F256 polynˆmes xi sur F256 o W 512 10 8 + x4 + x3 + x2 + 1 x (0x11D) structure r´cursive e entr´es successives e de la S-Box

Tab. 3.9: Principales diff´rences 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 figure 1.12 page 85). Nous n’entrerons pas ici dans les d´tails de son impl´mentation. e e

182

Chapitre 3 : Cryptologie

Remarque : les noms choisis pour les fonctions de hachage ou de chiffrement ` 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

S´curit´ de Whirlpool. Une recherche de collisions sur Whirlpool n´cessite e e e 256 calculs d’empreintes. A l’heure actuelle, il n’y a pas d’attaque efficace ` 2 connue contre Whirlpool si bien qu’elle est encore consid´r´e comme sˆre. ee u ´ Etat des lieux sur la r´sistance aux collisions pour les principales e fonctions de hachage Comme on l’a vu, l’un des principaux crit`re de robustesse d’une fonction de e hachage est sa r´sistance aux collisions : elle sera consid´r´e comme sˆre s’il e ee u n’existe pas d’attaque permettant de trouver des collisions avec une complexit´ e meilleure que celle de l’attaque de Yuval. Le tableau 3.10 r´sume les r´sistances e e aux collisions pour les fonctions de hachage les plus significatives. Il s’agit d’un survol r´alis´ au moment o` cet ouvrage est r´dig´ et est donc susceptible e e u e e d’´voluer 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 ) R´sistance e aux collisions Cass´e e Cass´e e Cass´e (2004) e Sˆ re u Sˆ re u Complexit´ e de l’attaque O(230 ) O(263 ) O(210 )

Tab. 3.10: R´sistance aux collisions pour les fonctions de hachage les plus connues. e

Il convient ´galement de noter que la r´sistance aux collisions n’est pas toujours e e suffisante. On d´nombre ainsi d’autres propri´t´s sur les fonctions de hachage e ee qui peuvent ˆtre requises. On citera par exemple : e – la r´sistance aux collisions proches : il doit ˆtre difficile de trouver des collie e sions (x, x ) pour lesquelles la distance de Hamming (d´finie au chapitre 4) e entre les empreintes d(H(x), H(x )) est faible. – la r´sistance aux pseudo-collisions dans laquelle on autorise la modification e du vecteur d’initialisation IV de la fonction de hachage pour trouver des collisions. – enfin, le caract`re pseudo-al´atoire o` il s’agit de rendre difficile la distinction e e u entre H et une fonction al´atoire. e

3.5 Authentification, Int´grit´, Non-r´pudiation e e e

183

3.5.2

La signature ´lectronique e

Contrˆle d’int´grit´ par les fonctions de hachage o e e L’int´grit´ des donn´es sur un canal non sˆr peut ˆtre assur´e par des codes e e e u e e correcteurs d’erreur (voir chapitre 4) mais aussi par des fonctions de hachage. On distingue pour cela trois m´thodes : e 1. Utiliser un canal s´curis´ pour transmettre l’empreinte de fa¸on sˆre, e e c u le message ´tant transmis sur le canal non sˆr. On est alors capable e u de v´rifier la correspondance entre l’empreinte du message re¸u et celle e c r´ceptionn´e sur le canal fiable. Cette configuration est illustr´e dans la e e e figure 3.19.

Fonction de Hachage

H(M) 10110...10

Canal sécurisé

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

Message M
blablabbla blablabbla blablabbla blablabbla Canal non sécurisé

blablabbla blablabbla blablabbla blablabbla

Fonction de Hachage

H(M’) 10110...10

Fig. 3.19: V´rification d’int´grit´ par des fonctions de hachage en disposant d’un e e e canal s´curis´. e e

2. Utiliser une fonction de chiffrement E (et la fonction de d´chiffrement e D associ´e) pour chiffrer ` la fois le message et l’empreinte avant de e a l’envoyer sur le canal non sˆr. Cette configuration est illustr´e dans la u e figure 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 sécurisé

Fig. 3.20: V´rification d’int´grit´ par des fonctions de hachage ` partir d’une fonction e e e a de chiffrement.

184

Chapitre 3 : Cryptologie

3. Utiliser un code d’authentification. Cette approche fait l’objet du prochain paragraphe. Codes d’authentification, ou MAC On peut utiliser les fonctions de hachage pour faire ` la fois de l’authentifia cation et du contrˆle d’int´grit´ de message. On parle alors de MAC, pour o e e Message Authentification Code : c’est une fonction de hachage ` sens unique a param´tr´e avec une clef secr`te K (on notera du coup HK (x) le calcul de e e e l’empreinte de x) qui respecte la propri´t´ 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 r´sumer, seul celui qui poss`de la clef K peut calculer et donc v´rifier e e e une empreinte : – Alice et Bob partagent une clef K. – Alice envoie ` Bob un message M et r = HK (M ). a – Bob v´rifie que le r re¸u est bien ´gal ` HK (M ) pour M re¸u. e c e a c Cette configuration est illustr´e dans la figure 3.21. Les MAC permettent de e garantir ` la fois l’int´grit´ du message transmis (tous les possesseurs de K a e e peuvent v´rifier que M n’a pas ´t´ modifi´ puisqu’il correspond ` l’empreinte e ee e a r) mais aussi l’authentification de la source de donn´e : sous r´serve que Alice e e et Bob soient les seuls ` partager la clef K, ils sont les seuls ` pouvoir g´n´rer a a e e l’empreinte 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 sécurisé

MAC

Fig. 3.21: Principe d’utilisation d’un MAC.

3.5 Authentification, Int´grit´, Non-r´pudiation e e e

185

Remarque : si un MAC fournit l’authentification et l’int´grit´, il ne garantit e e ´videmment pas la confidentialit´ du message. Il faudra pour cela le coupler e e avec d’autres techniques. En pratique, on cherche ` rendre le cassage du MAC a aussi difficile que le cassage de la fonction de hachage elle-mˆme. e Construction d’un MAC. Il y a principalement deux fa¸ons de r´aliser c e des MAC : ` – A partir d’un chiffrement ` clef secr`te par blocs utilis´ en mode CBC ou a e e CFB (l’empreinte est alors le dernier bloc chiffr´, chiffr´ une fois encore en e e mode CBC ou CFB). Cette op´ration (pour le mode CBC) est illustr´e dans e e la figure 3.22.
M1 M2 ... Mn

IV

CBC−MAC K (M)

EK

EK

EK

Fig. 3.22: Code d’authentification par chiffrement ` clef secr`te. a e

Sur un Pentium III cadenc´ ` 500 MHz, une impl´mentation logicielle du ea e CBC-MAC-AES (c’est-`-dire un CBC-MAC o` les chiffrements Ek sont r´aa u e lis´s par l’algorithme Rijndael, standardis´ sous le nom AES) peut produire e e des signatures de message ` la vitesse de 234 Mbits/seconde. La mˆme ima e pl´mentation de AES seul tourne ` une vitesse de 275 Mbits/seconde. Le e a coˆt de calcul de l’empreinte est donc ainsi tr`s voisin de celui du cryptage. u e ` – A partir d’une fonction de hachage ` sens unique, l’id´e est alors d’int´grer a e e la clef K dans le calcul d’empreinte. 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.

2). sa clef secr`te Kd et enfin la fonction de d´chiffrement D. e e e – non reniable : le signataire ne peut r´pudier le document sign´. Ainsi. 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´ utilis´es pour prouver l’idenee e tit´ de leur auteur ou du moins l’accord du signataire avec le contenu du e document. on voit e que les signatures ´lectroniques fournissent l’int´grit´. soit d’une clef secr`te qui sera utilis´e dans un MAC en mode CBC ou CFB comme e e cela a ´t´ pr´sent´ dans la section pr´c´dente. on distingue deux classes de signatures : 1.1. elle utilise hM = H(M ) l’empreinte de M . un simple copier/coller (particuli`rement facile avec un document e num´rique) permettrait d’obtenir une signature valide. les signatures asym´triques qui utilisent un cryptosyst`me ` clef publique e e a et une fonction de hachage publique (sans clef) comme SHA-256 ou Whirlpool. e e e – inalt´rable : toute modification du document doit ˆtre d´tectable . e e Autrement. e e a e Dans ce cas. e Ainsi. e – infalsifiable . les signatures sym´triques qui utilisent un cryptosyst`me ` clef secr`te. une signature ´lectronique devra ˆtre : e e – authentique : elle convainc le destinataire que le signataire a d´lib´r´ment e ee sign´ un document .23 e e e e (Cette figure n’explicite pas les algorithmes de signature et de v´rification e utilis´s .186 Chapitre 3 : Cryptologie On pr´f´rera donc les constructions suivantes. il faut inventer des protocoles e qui remplacent l’empreinte manuelle par un ´quivalent. Le principe g´n´ral de cette seconde approche est d´taill´ dans la figure 3. e e Pour reprendre les fonctionnalit´s offertes par la cryptographie (3. ee e e e e 2. e Comme pour les algorithmes de chiffrement. il convient de disposer soit d’un arbitre. Avec des documents num´riques. les plus connus seront d´taill´s dans la suite). On remarquera d´j` e ea que la signature ´lectronique devra d´pendre du signataire et du document. e e e a lorsque Alice signe le document M . On pr´f`re en effet e e e ee signer l’empreinte d’un document qui a une taille fixe suffisamment petite pour ˆtre utilis´e efficacement par un cryptosyst`me ` clef publique. – non r´utilisable : elle est attach´e ` un document donn´ et ne pourra pas e e a e ˆtre utilis´e sur un document diff´rent . Elle g´n`re ainsi la e e e e . l’authentification mais e e e aussi la non-r´pudiation.

a e signature s(M ) = DKd (hM ) (on notera que seule Alice a pu g´n´rer s(M )). n) la clef publique d’Alice.5 Authentification. e Ce document peut ˆtre v´rifi´ par Bob ` partir de la clef publique Ke d’Alice e e e a et la fonction de chiffrement E (´galement publique). Prenons donc e e e a Ke = (e. 3. e – Le document sign´ est alors la paire [M. Il suffit pour cela d’appliquer RSA ` l’envers. il lui suffit d’effectuer les op´e rations suivantes : – elle calcule l’empreinte hM = H(M ).3.23: Principe de la signature ` clef publique et de sa v´rification. et d son exposant secret. On supposera 0 hM < n. on aura e e remarqu´ qu’elle est la seule ` pouvoir g´n´rer cette signature ´tant la seule e a e e e a ` poss´der d). e ea . s(M )]. Il lui suffit de calculer e l’empreinte du document hM et de v´rifier si EKe (s(M )) = hM . a La g´n´ration des param`tres est identique ` celle de RSA. Lorsque Alice souhaite signer un document M . Non-r´pudiation e e e Document blablabbla blablabbla Fonction de signature 187 Document signé blablabbla blablabbla ALICE Fonction de Hachage Algorithme de Signature Génération d’une paire de clés Clé privée Alice 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 Clé publique Document signé blablabbla blablabbla Fonction de vérification Signature ALICE Réponse Algorithme de Vérification de la signature Signature valide ou Signature non valide Extraction ALICE Document blablabbla blablabbla Fonction de Hachage Fig. – elle g´n`re la signature s(M ) = (hM )d mod n (encore une fois. s(M )] et est envoy´ ` Bob. e e Signature RSA Il est en effet possible d’utiliser le syst`me RSA pour d´finir une signature e e digitale. e On d´taille maintenant les deux sch´mas de signature les plus courants. e e Le document sign´ consiste alors en la paire [M. Int´grit´.

Ce document est poc e ˜ tentiellement alt´r´ voire ill´gitime. a 3. e) (la section 3. Alice calcule et envoie la signature de son message m ` l’aide d’une a fonction de hachage h (pour le DSS. On notera e e e quand mˆme que cette pr´sentation reste simplifi´e et en l’´tat sujette ` des e e e e a attaques. Une fois les param`tres construits.d mod n = hM mod n = hM et si le document est authentique : hM = h˜ . Standard DSS . Bob re¸oit un document sign´ [M . 2. La v´rification est correcte. Th´or`me 21. il s’agit de SHA-1) : r = (g k mod p) mod q et s = (k −1 [h(m) + xr]) mod q p−1 q mod p. – u2 = rw mod q . Bob v´rifie la signature si et seulement si v = r pour : e – w = s−1 mod q . Choisir q premier de 160 bits. 4. e e e . – v = ([g u1 y u2 ] mod p) mod q . choisir g et calculer a ← g d’ordre au plus q). 5. Bob r´cup`re alors la clef publique d’Alice ee e e e (n. (g est alors 3.5 est consacr´e aux protocoles d’´changes de clefs). s(M )] d’Alice.Le e e e syst`me comprend des param`tres partag´s q.6. y ← g x mod p. la signature se fait de la fa¸on suivante : e c 1. Tant que a = 1. – u1 = h(m)w mod q .Digital Signature Standard Ce sch´ma de signature est bas´ sur le probl`me du logarithme discret.188 Chapitre 3 : Cryptologie Ainsi. p et g ainsi qu’une clef publique e e e y et une clef priv´e x qui sont g´n´r´s de la fa¸on suivante : e e ee c 1. Trouver p = kq + 1 premier de 512 ` 1024 bits. Alice choisit k al´atoire inf´rieur ` q. e e a 2. M La s´curit´ de cette signature est donc celle du cryptosyst`me RSA. Il e e ˜ = H(M ) et v´rifie l’identit´ ˜ calcule alors hM e e s(M )e = h˜ M mod n En effet : s(M )e = (hM )e. Choisir x de 160 bits.

Le param`tre s est construit de sorte que k = (s−1 [h(m) + xr]) e mod q. et comme e e g q = 1 mod p par construction.23. e e e i Or.3 et 1.6.4. comme dans l’exercice suivant : u . – u = ((g z1 y z2 ) mod p) mod q. d’apr`s la donn´e de u1 et u2 . on a donc g u1 y u2 = g h(m)w+xrw . Bob v´rifie la signature si et seulement si u = r pour : e – v = h(M )q−2 mod q.1 G´n´ration de bits cryptographiquement sˆ re e e u Nous avons vu diff´rents g´n´rateurs pseudo-al´atoires en section 1.4. Un exemple de g´n´rateur sˆr e e e e u est celui de Blum. – z2 = ((q − r)v) mod q. Justifier la v´rification. la remarque de d´but de preuve nous donne g u1 y u2 = g k ou encore e v = r mod q. comme w = s−1 . Or g u1 y u2 = g u1 +xu2 donc. g. Alice calcule et envoie r = (g k mod p) mod q et s = (xr + kh(M )) mod q 2. Les param`tres p. les Russes e e e avaient d´velopp´ leur propre signature : GOST. P ´ Exercice 3.6.3. 3. Or.6 Protocoles usuels de gestion de clefs Chaque ´tape d’un processus d’´change de messages crypt´s est cruciale. En particulier. parce e e e que susceptible d’ˆtre la cible d’attaques.3. il s’av`re que d´couvrir le bit de poids faible des xi suite du bit de poids e e faible de ces xi est aussi difficile que casser la factorisation. leur faiblesse r´side en bonne e e e partie dans le processus d’´change de clefs. Seule la partie s de la signature change : 1. ainsi e e e e que diff´rentes attaques permettant de pr´dire le comportement de certains e e de ces g´n´rateurs en sections 1. si les syst`mes ` clef e e a secr`te sont de bons syst`mes cryptographiques.3. e e e 3. Plus g´n´ralement. q. ce g´n´rateur calcule la suite des carr´s successifs xi+1 = x2 mod n. Blum et Shub : en prenant p et q premiers assez grands congrus ` 3 modulo 4 et en posant x0 le carr´ d’un entier al´atoire modulo a e e n = pq. e e il est possible d’utiliser RSA pour fabriquer des s´quences pseudo-al´atoires e e cryptographiquement sˆres. Des protocoles ont ´t´ invent´s e ee e pour assurer la s´curit´ de ces ´changes. – z1 = sv mod q. Parall`lement au DSS d´velopp´ aux Etats-Unis. e Solution page 309.6 Protocoles usuels de gestion de clefs 189 Preuve. x et e e e y sont les mˆmes 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).

(a) Seule. Alice et Bob conviennent des param`tres suivants : p = 541 e et g = 2. Supposons donc qu’Alice et Bob souhaitent partager une clef secr`te K. Quelle est la clef secr`te r´sultant du protocole d’´change de e e e Diffie-Hellman ? Solution page 309. Bob choisit un nombre b ∈ Z∗ secret et calcule e p B = gb Il envoie B ` Alice. a 2. a (b) Sym´triquement. Expliquer pourquoi Oscar ne peut alors pas facilement en d´duire K. C’est l’attaque dite « Man-in-thee middle ». Bob g´n`re le e e e e e nombre b = 426.25.b mod p sans e e l’avoir jamais communiqu´e directement. L’attaque la plus classique des protocoles d’´change consiste pour Oscar ` e a couper la ligne communication entre Alice et Bob avant qu’ils ne commencent le partage de la clef (´mission de A et B). Ils e conviennent d’abord d’un entier premier p et d’un g´n´rateur g de Z∗ .6. Soit k = O(log(log n)) un entier. Bob calcule de son cˆt´ Ab mod p. e u Solution page 309. Alors. (b) Sym´triquement. Alice g´n`re le nombre secret a = 292. Alice et Bob partagent la mˆme clef secr`te K = g a. On suppose qu’Oscar voit passer A et B. Exercice 3. e Solution page 309. (a) Alice calcule seule K = B a mod p. 3. Alice choisit un nombre a ∈ Z∗ secret et calcule p A = ga Elle envoie A ` Bob. De son cot´.190 Chapitre 3 : Cryptologie Exercice 3. connaissant c = xe mod n. Soient n e e e et e le modulo et l’exposant d’un code RSA. e oe ` A la fin. mod p mod p . d´couvrir les k premiers bits de x est aussi e difficile que de d´couvrir la clef secr`te associ´e ` n et e.26. On peut e e p alors d´finir le protocole suivant en deux ´tapes leur permettant de construire e e K en secret : 1. e Exercice 3.2 Protocole d’´change de clef secr`te de Diffie-Hellman et e e attaque Man-in-the-middle L’utilisation d’une fonction ` sens unique comme l’exponentiation modulaire a permet le partage de clef.24 (G´n´rateur de bits pseudo-al´atoires RSA). e e e a D´crire une proc´dure prenant k en entr´e et g´n´rant une suite de l bits e e e e e pseudo-al´atoire et cryptographiquement sˆre.

rien de l’empˆche. mais en outre il peut e modifier ces ´changes. A. e Dans la suite. Il envoie ensuite g b ` Alice et g a ` Bob. Alice et Bob croient s’envoyer des messages secrets. au milieu. 3. Oscar peut alors lire toutes les e e communications entre Alice et Bob avec la clef qu’ils pensent avoir construite en secret. Oscar est non seulement capable e d’obtenir en clair tous les ´changes entre Alice et Bob. nous d´crivons diff´rents protocoles ` clef secr`te et ` clef pue e a e a blique d´velopp´s pour parer cette attaque. Ensuite.12: Envoi de message intercept´ par le Man-in-the-middle. L’´volution a a e de l’attaque est illustr´e dans la table suivante : e Alice g´n`re a e e A = g a mod p −→ ←− (connaˆ [a. Ainsi. B ]) ıt Clef secr`te : e a mod p KA = B Clefs secr`tes : e KA et KB B A Oscar g´n`re b et a e e B = g b mod p A = g a mod p ←− −→ A B Bob g´n`re b e e B = g b mod p (connaˆ [b. A . B]) ıt Clef secr`te : e b mod p KB = A Tab. alors que Oscar les intercepte et les d´crypte au milieu ! Ainsi. En pratique Oscar fabrique a et b .11: Attaque Man-in-the-middle dans le protocole d’´change de clef de Diffiee Hellman. e Γ Ainsi. de remplacer le e e message envoy´ par Alice par une information de son cru. Il intercepte ensuite A et B puis fabrique KA = Ab et KB = B a .3. e e Alice C = EKA (M ) Oscar −→ M = EKA (C) Γ = EKB (M ) C Bob −→ M = EKB (C) Tab. Oscar doit d´coder ` la vol´e les messages envoy´s par Alice ou Bob. e a e e puis les recoder avec l’autre clef de la mani`re d´crite dans le tableau 3.12. 3. e e . En effet.6 Protocoles usuels de gestion de clefs 191 L’id´e g´n´rale est qu’Oscar se fait passer pour Bob aupr`s d’Alice et simule e e e tan´ment pour Alice aupr`s de Bob.

« Key Distribution Center » (KDC). Ainsi. un sere veur ou un service) par un triplet <nom. D´velopp´ par le Massashusetts Institute of Technilogy.6. Il ne s’agit pas en revanche c e d’un syst`me d’autorisation d’acc`s aux ressources. rˆle. Kerberos est un syse e t`me d’authentification s´curis´ ` tierce personne de confiance (ou TA pour e e e a Trusted Authority) con¸u pour les r´seaux TCP/IP. ee c e – c’est un standard support´ par de nombreux syst`mes d’exploitation (en e e particulier Windows ). tout en se pr´munissant e e e contre l’attaque « Man-in-the-middle ». plus pr´ea e cis´ment sous la forme d’une chaˆ nom/r^le@domaine.24. domaine> (ou domaine identifie o le domaine d’administration associ´ ` au moins un serveur Kerberos). – l’authentification est g´r´e de fa¸on centralis´e . L’authentification est n´goci´e par le biais d’un tiers e e e de confiance : le centre de distribution des clefs. on pr´f´rera r´f´rencer le serveur qui fournit le service : on idenee ee tifiera ce dernier par la chaˆ service/hostname@DOMAIN. une personne e ıne o physique sera identifi´e par la chaˆ login/staff@DOMAIN. Kerberos regroupe un certain nombre de fonctionnalit´s : e – l’authentification est s´curis´e . bien que des extensions e e existent en ce sens. la solution la plus sˆre est qu’Alice et Bob se rencontrent physiquement. u Le protocole de Diffie-Hellman permet d’´viter cette rencontre physique. Il cr´e ´galement des clefs de session qui e e e e e sont donn´es ` deux participants et qui servent ` chiffrer les donn´es entre ces e a a e deux participants.3 Kerberos : un distributeur de clefs secr`tes e Pour se mettre d’accord sur les fonctions de chiffrement et d´chiffrement E et e D. e e – il n’y a pas de transmission de mot de passe sur le r´seau . La distribution MIT de Kerberos est libre. Dans le cadre e ıne d’un service. Ce syst`me partage avec chaque entit´ U du r´seau une clef secr`te KU (un e e e e mot de passe dans le cas d’un utilisateur) et la connaissance de cette clef tient lieu de preuve d’identit´. ıne Pr´sentation g´n´rale du protocole Kerberos e e e Kerberos est fond´ sur l’utilisation de tickets qui serviront ` convaincre une e a entit´ de l’identit´ d’une autre entit´. e – l’authentification est unique : l’utilisateur n’entre son mot de passe qu’une seule fois (pour une p´riode de temps donn´e. e . 1 jour par exemple) pour e e se connecter plusieurs fois aux services distant (c’est un principe appel´ e « Single Sign On »en anglais). mais e sa faiblesse est qu’un adversaire actif plac´ entre Alice et Bob peut intercepter e toutes les communications. Kerberos identifie les utilisateurs du syst`me (une personne physique. Une solution pour ´viter de trop nombreux ´changes. suivant les ´tapes de la figure 3. est d’introduire une tierce personne.192 Chapitre 3 : Cryptologie 3.

e ea . Ta.tgs . l’identit´ de l’exp´diteur (Alice) e u e e a ` qui le ticket a ´t´ fourni. a ee e e – les authentifiants qui sont des accr´ditations suppl´mentaires pr´sent´es e e e e avec le ticket. elle peut n´anmoins le donner chiffr´ ` s. T a.b . a Ticket-Granting Service) de mani`re sˆre. Ka.s qui sera utilis´e d’une part pour e l’authentifiant (voir ci-apr`s) et d’autre part pour chiffrer les futures come munications entre Alice et le service s. t.b (5) : A a. e – enfin (et surtout) une clef de session Ka. e – la date de la demande t.tgs { Ka.tgs (5) KRB_AP_REQ : Demande d’un service BOB KB (2) : Ka { Ka. T a.24: Les ´tapes d’authentification Kerberos. 3. Un ticket prendra la forme suivante : Ta.b}. Bien qu’Alice ne puisse pas d´chiffrer le ticket (il est chiffr´ avec la clef secr`te e e e Ks ). EKs (ida . Il contient ´galement des informations que le ee e destinataire peut utiliser pour s’assurer que l’exp´diteur qui utilise le ticket e est bien celui ` qui le ticket a ´t´ d´livr´.b.b (6) : Ka. (Bob ou le TGS. e On distingue deux types d’accr´ditations : e – les tickets qui servent ` donner au futur destinataire.tgs (3) : A a.tgs (4) : Ka.6 Protocoles usuels de gestion de clefs KDC : Key Distribution Center (1) KRB_AS_REQ : demande d’un ticket pour TGS 193 Base de données des clients et de leurs clés AS : Authentification Server (2) KRB_AS_REP : ticket pour le TGS TGS : Ticket−Granting Service ALICE KA (4) KRB_TGS_REP : ticket pour Bob (3) KRB_TGS_REQ : demande d’un ticket pour Bob Ktgs (1) : a.s ) Il contient donc le nom du service s qu’Alice souhaite utiliser (TGS ou Bob) ainsi qu’une liste d’informations chiffr´es avec la clef secr`te du service (qu’il e e sera donc le seul ` pouvoir d´chiffrer).s = s. tend . Ta. plus pr´cis´ment : a e e e – l’identit´ d’Alice ida .tgs }.b {t+1} (6) KRB_AP_REP : Réponse de Bob Fig. – la date de fin de validit´ du ticket tend .3.

6 S’il s’agit d’un utilisateur humain. Il est important de noter que seule la v´ritable Alice est capable e de r´cup´rer la clef de session Ka. Contrairement au ticket qu’Alice peut utiliser plusieurs fois pour acc´der au e service jusqu’` l’expiration du ticket. e Comme on l’a d´j` vu. – Les messages 3 et 4 permettent l’obtention d’un ticket de service qu’Alice devra pr´senter ` Bob pour une demande de service. Ka correspond au hachage de son mot de passe. Alice ne pourra pas le d´chiffrer mais pourra le pr´senter tel quel e e a ` chaque requˆte au TGS. elle sera capable d’en g´n´rer autant de fois e e e que n´cessaire. On notera cependant que dans la mesure o` Alice e e u poss`de la clef de session Ka.194 Chapitre 3 : Cryptologie Parall`lement aux tickets.s .tgs ] : le serveur d’authentification5 cherche le client dans sa base de donn´es. 5 .24 pr´sente les diff´rents messages qui sont ´chang´s. e 2. e D´tail des messages Kerberos e La figure 3. KRB AS REQ = [a . C’est en ce sens qu’il faut prendre la notion de service. Pour r´sumer : e e e e e – Les messages 1 et 2 permettent l’obtention du premier ticket qu’Alice devra pr´senter ensuite au TGS ` chaque fois qu’elle souhaite contacter un e a destinataire. Elle y pr´cise son nom et quel TGS elle souhaite rencontrer4 . S’il le trouve. Dans ce cas particulier. Ta.tgs qui devra ˆtre utilis´e entre Alice et le TGS. Kerberos utilise donc des authentifiants qui revˆtent e e la forme suivante : Aa. il engendre e une clef de session Ka.tgs (elle est la seule ` poss´der la clef e e a e 4 Il peut y en avoir plusieurs. un authentifiant est unique et ne peut a ˆtre utilis´ qu’une seule fois. On d´taille maintenant le contenu explicite de ces messages : e a 1.tgs )). t) Alice l’engendre chaque fois qu’elle veut utiliser un service s (TGS ou Bob). KRB AS REP = [EKa (Ka. e a – Les messages 5 et 6 correspondent ` la demande de service qu’Alice formule a a ` Bob et la r´ponse de ce dernier. Ensuite. tgs] : ce message sert simplement d’introduction ` Alice.tgs ) . e e Cette clef est d’une part chiffr´e avec la clef secr`te Ka d’Alice6 : c’est e e la premi`re partie du message (EKa (Ka.tgs pour Alice afin que celle-ci puisse s’authentifier aupr`s du TGS. ce ticket est chiffr´ avec la clef secr`te Ktgs du ea e e TGS. AS sur la figure 3.24. Cette ´tape permet comme on va le voir e e de garantir l’authentification mutuelle d’Alice et de Bob et de leur fournir une clef de session qui leur permettra de chiffrer leurs futurs messages.s (ida . le ticket est appel´ e e TGT.s = EKa. il cr´e un ticket e e Ta.

3. Alice est prˆte ` s’authentifier aupr`s de Bob .tgs . Ta. e a 5.6 Protocoles usuels de gestion de clefs 195 secr`te Ka ).tgs et e de Ta. KRB TGS REQ = [Aa.b (qui sera e utilis´e entre Alice et Bob) qu’il chiffre avec la clef de session Ka. KRB AP REP = [EKa.b . Alice dispose maintenant de la clef de session Ka. b . il peut engendrer une clef de session Ka.tgs et e un nouveau ticket Ta.b et d’un nouveau ticket Ta. Ainsi.b et donc qu’il poss`de la clef e e de session Ka. 6.tgs . Apr`s r´ception e a e e de ce message et d´chiffrement. Les faiblesses de Kerberos – Attaque par r´p´tition : bien que les datations soient suppos´es ´viter cela. Ta. KRB AP REQ = [Aa.b . Si l’on peut tromper e e 7 Bob n’est rien d’autre qu’un serveur particulier.tgs ).b (t + 1)] : Bob doit maintenant s’authentifier en prouvant qu’il a pu d´chiffrer le ticket Ta. Il faut qu’il renvoie une information v´rifiable par Alice e chiffr´e avec cette clef.tgs (Ka. Pour cela. cela s’effectue de la mˆme mani`re qu’entre Alice e e e et le TGS7 (cf message KRB TGS REQ).b ) . r´cup`re la clef de session Ka. Alice est maintenant sˆre de e e u l’identit´ de Bob et dispose d’une clef de session Ka. KRB TGS REP = [EKa.tgs (qu’elle conserve jusqu’` expiration du ticket pour dialoguer a avec TGS) d’une nouvelle clef de session Ka. e e e e les messages peuvent ˆtre rejou´s pendant la dur´e de vie des tickets (environ e e e 8 heures par d´faut). et un authentifiant Aa. e – Services de datation : les authentifiants d´pendent du fait que toutes les e horloges du r´seau soient plus ou moins synchronis´es. ea 4. 3.tgs . Alice dispose donc en plus de Ka. Ta. En v´rifiant cela.b utilisable pour e chiffrer les communications entre Alice et Bob. L’authentifiant poss`de e des informations format´es v´rifiables ` partir du ticket par le TGS et e e a comme ces informations sont chiffr´es avec la clef de session Ka.b qu’Alice devra pr´senter ` Bob.tgs e et du TGT Ta. si tout concorde (Alice est authentifi´e).tgs ] : Alice doit maintenant obtenir un nouveau ticket pour chaque Bob qu’elle souhaite contacter.b ] : maintenant. .tgs qu’elle poss`de d´j`.b qu’elle pourra utiliser avec Bob.tgs et peut ainsi e e e d´chiffrer l’authentifiant Aa.b ] : grˆce ` sa clef secr`te Ktgs . Il compare le contenu de l’authentifiant e avec les informations contenues dans le ticket et. le a a e TGS d´chiffre le ticket.tgs d’autre part (en plus e ea du nom du serveur qu’elle souhaite contacter). cela e prouve au moins qu’Alice la connaˆ et donc l’authentifie (d’o` le nom ıt u d’authentifiant donn´ ` Aa. Alice contacte le TGS en lui fournissant d’une part le ticket TGT Ta.tgs .

l’intrus peut calculer Ka . Alice envoie EI2 (K||Alice) ` Bob. Ka = H(P assword)).196 Chapitre 3 : Cryptologie un ordinateur quant ` l’heure r´elle. le KDC poss`de les clefs de tous les utilisateurs et de tous les serveurs. d. Que faudrait-il ajouter aux messages pour ´viter cet ´cueil ? Est-ce suffisant e e et ` quoi ressemble le protocole ainsi obtenu ? a e. ıt ıt – Usurpation de login : (ou « spoofing » en anglais) on peut envisager une attaque o` tous les logiciels Kerberos clients sont remplac´s par une version u e qui non seulement r´alise le protocole Kerberos mais enregistre ´galement e e les mots de passe. e e e e Les architectures ` clefs publiques permettent de pallier ce dernier probl`me.tgs (ida . Enfin. ce qui peut donc ˆtre un s´rieux d´faut. e Si cela permet de r´duire le nombre total de clefs secr`tes (tous les utilisateurs e e devraient sinon avoir une clef pour chaque serveur et vice-versa). a e Exercice 3. u e e e – Paris de mots de passe : il s’agirait pour un intrus de collectionner les pree mi`res moiti´s du message KRB AS REP (EKa (Ka. La plupart des protocoles de maintien du temps en r´seau ne e e e sont pas sˆrs. cela induit que si le KDC est attaqu´ avec succ`s.tgs )) pour pr´voir la vae e leur de Ka (en g´n´ral. Alice envoie EK (Random2 − 1) ` Bob. toutes les clefs doivent ˆtre chang´es. t) e dont il connaˆ le contenu (il connaˆ au moins ida ). indiquer comment elle peut convaincre Bob qu’elle est Alice. Pourquoi ? e e e a Quelle est la faiblesse de cette m´thode ? e . a 2. Alice et Bob veulent s’´changer une clef de session et Ivan partage une clef secr`te e e I1 avec Alice et une clef secr`te I2 avec Bob. En pariant sur le mot de e e ˜ ˜ ˜ passe P . Si Eve est capable d’´couter les messages ´chang´s et e e e a pu obtenir une ancienne clef de session. a 3. a ` quoi sert Random1 ? a. a 4.27 (Attaque du protocole de Needham-Schroeder). A ` b. Alice envoie (Alice||Bob||Random1 ) ` Ivan. un utilisateur n’a pas besoin de s’authentifier aue pr`s du KDC chaque fois qu’il d´sire acc´der ` un service. A quoi sert Random2 et pourquoi Alice renvoie-t-elle Random2 − 1 ? c. Ivan cr´e une clef de session K et envoie e EI1 (Random1 ||Bob||K||EI2 (K||Alice)) ` Alice.tgs et v´rifier la e e pertinence de son choix en d´chiffrant l’authentifiant Aa. d´chiffrer et obtenir Ka. a 5. Un probl`me de s´curit´ avec ce protocole est que les vieilles clefs de session e e e ont de la valeur. Le protocole de Needham et e Schroeder est le suivant : 1. alors les anciens authentifiants peuvent a e ˆtre rejou´s.tgs = EKa. Dans le syst`me obtenu. Bob envoie EK (Random2 ) ` Alice.

la fonction de transformation publique de B. B peut alors utiliser la e a transformation publique EA pour calculer EA (M ) = EA (DA (M )) = M . B va utiliser sa fonction priv´e de transformation DB pour e e d´chiffrer. supposons que A veuille envoyer un message authentifi´ M ` B. calculer M = DA (M ) et envoyer M ` B.6 Protocoles usuels de gestion de clefs 197 f. Ivan poss`de une liste des clefs sym´triques (ou des eme e e preintes des mots de passe) de tous ses clients. comme EB est publique. e a Solution page 310. A va chiffrer M . . Il a est assez simple pour que vous puissiez le d´couvrir ` ce stade. Ce syst`me est propos´ dans e a e e la section suivante. e a ` A la r´ception. B n’a aucun moyen de connaˆ l’identit´ de ıtre e l’envoyeur. A doit alors avoir a acc`s ` EB . l’intrus ne pourra pas d´chife e e frer C car la fonction DB est secr`te donc la confidentialit´ est assur´e. les transformations doivent satisfaire la propri´t´ E(D(M )) = M . en fonction des e a contraintes qui viennent d’ˆtre d´crites.6. Pour pallier le probl`me du vol des clefs. DA . En a utilisant les fonctions EA .3. Que pourrait-il se passer en cas de vol de cette liste ? Comment se pr´munir contre un tel danger ? e Solution page 309. ` partir d’un message M .4 Authentification ` clef publique a Supposons que A veuille envoyer un message secret M ` B. trouver M tel que EA (M ) = M a cela signifierait qu’il peut calculer l’inverse de la fonction EA ce qui est une contradiction. Dans ce syst`me. Si la transmission de A est espionn´e. e a C = EB (M ) et envoyer le r´sultat C ` B.28 (Principe de l’authentification ` clef publique). EB et DB trouver un couple de fonctions de chiffrement et d´chiffrement satisfaisant ` la fois le secret et l’authentification. e e Exercice 3. De mˆme le message envoy´ par A peut ˆtre alt´r´. En ee effet. Cela e a signifie que B doit pouvoir v´rifier que le message a bien ´t´ envoy´ par A et e ee e qu’il n’a pas ´t´ alt´r´ en chemin. Pour qu’elles le e e e e soient. Cela vient de la nature unidirectionnelle de EA : si un attaquant pouvait. B est sˆr que le message a ´t´ envoy´ par A et n’a pas subi d’alt´rations e u ee e e pendant le transport. e a e L’exercice suivant contient le principe de l’authentification ` clef publique. Par e e e contre. une solution serait de pr´f´rer un e ee syst`me ` clef publique pour l’authentification. En supposant que M repr´sente un texte « valide » (au sens du protocole e utilis´). Par contre dans ce cas le secret n’est pas assur´ car tout le e monde peut acc´der ` EA et donc d´chiffrer le message. Pour cela A va utiliser sa transformation ee ee priv´e DA . 3. Les propri´e e e ee e t´s d’authentification et d’int´grit´ ne sont donc pas assur´es.

le premier probl`me pratique qui se pose est « comment rattacher e une clef publique ` son propri´taire ? ». Ensuite. 3.. le professeur chiffre les e notes avec la clef RSA du secr´tariat.5 Infrastructures ` clefs publiques : PGP et PKI X a Une architecture PKI (pour Public Key Infrastructure) est un ensemble d’infrastructures permettant de r´aliser effectivement des ´changes s´curis´s. nP ) = (3. En d´duire une attaque permettant de r´cup´rer le code. Un utilisateur a re¸u par e e c courrier classique un code pour g´n´rer de tels num´ros sur le site internet de e e e sa banque. nom de domaine ou adresse IP pour un serveur. 1. les PKI sont des structures pr´cises assurant en particulier la cr´ation et la gestion de e e ces certificats. Principe g´n´ral e e Pour s’authentifier.. Dans le cas d’une e e . Le secr´tariat re¸oit ainsi le message 23. Comment la banque peut-elle en fait contrer cette attaque ? Solution page 311. Quel message chiffr´ correspond e e ` la note 12 ? a 3. celle du secr´tariat (eS . e 1. e e e 3. e e e e e 2. En e e e e effet. 55). une fois d´finis des algorithmes complexes utilisant par exemple des clefs e publiques. nS ) = (3. Quand l’utilisateur demande de g´n´rer un num´ro jetable. D´terminer la cl´ priv´e du professeur et du secr´tariat de l’´cole. adresse. Exercice 3. quel est le e e e type d’authentification que cela entraˆ ? ıne 2. 33). L’id´e des PKI est d’abord de ne pas a e e distribuer des clefs mais plutˆt des certificats num´riques contenant ces clefs o e ainsi que des donn´es d’identit´ (´tat civil.6. Pour assurer la confidentialit´ de ses messages. le professeur signe chaque e note avec sa cl´ priv´e et chiffre le r´sultat avec la clef RSA du see e e cr´tariat. Pour assurer l’authenticit´ de ses messages. une entit´ cherche ` prouver qu’elle poss`de une infore a e mation secr`te qui ne peut ˆtre connue que par elle seule. Une banque poss`de e e un m´canisme de num´ros jetables de carte bleue.29 (Cryptographie RSA et authentification). Un professeur envoie ses notes au secr´tariat de l’´cole par mail.).198 Chapitre 3 : Cryptologie Exercice 3. La clef publique du e e professeur est (eP . adresse mail pour une e e e personne. Quelle est la note e e c correspondante ? Solution page 311.30 (Num´ros de carte bleue jetables).

e e La figure 3. il s’agit de rendre sa clef a publique disponible pour toute personne d´sireuse d’effectuer une transaction e avec elle. En pratique. Pour cela.3. Il reste encore e e ` savoir comment v´rifier l’authenticit´ du tiers de confiance. Nous parlerons alors ıne e de certificat auto-sign´ ou certificat racine.. e e . e Une PKI donc est un ensemble de technologies. Il existe un stane dard pour ce m´canisme qui sera expos´ dans la figure 3. Ce document est sign´ par le CA.. Elle fournit les moyens e d’utiliser ces certificats pour l’authentification entre entit´s. Le dernier de e e e cette chaˆ de certificats devra alors se signer lui-mˆme.31. une entit´ (par exemple Alice) g´n`re un couple clef publique/clef priv´e.) Requête de certificat CA = Signature du certificat par le CA ANNUAIRE Fig. ce a e e tiers poss`de ´galement un certificat sign´ par un autre tiers etc.. Ensuite.25 illustre les ´tapes de la cr´ation d’un certificat. ainsi que sa clef e publique.6 Protocoles usuels de gestion de clefs 199 PKI.25: Principe de la cr´ation des certificats. C’est donc un ensemble de syst`mes foura e nissant des services relatifs aux certificats num´riques. organisations. Alice va utiliser un tiers de confiance (un CA : voir paragraphe suivant) pour cr´er un certificat. Un certificat est un document num´rique e e qui contient au moins les coordonn´es personnelles d’Alice. Cette signature sert ` certifier e a l’origine du certificat ainsi que son int´grit´. ces certificats racines devront faire l’objet de certifications crois´es avec d’autres CA. e e e e Alice conserve sa clef priv´e (soit dans un r´pertoire accessible par elle seule ou e e mieux sur une carte ` puce ou une clef USB). Pour augmenter la confiance qu’un e utilisateur pourra placer en eux. e Génération d’une paire de clés Clé privée 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 d’Alice CA Coordonnée du porteur (nom : Alice . 3.. proc´dures et e pratiques qui supporte l’impl´mentation et l’exploitation de certificats bas´s e e sur la cryptographie ` clef publique.

le stockage. le recouvrement.26.26: Emission d’un certificat. Dans ce dernier cas les services ` a rendre aux utilisateurs sont de trois types : 1. Par exemple. publier et respece e e ter des pratiques de certification pour ´tablir un espace de confiance . Transport des clefs.2.200 Les ´l´ments de l’infrastructure ee Chapitre 3 : Cryptologie Une PKI doit d’abord fournir un certain nombre de fonctions dont les principales sont les suivantes : ´mettre des certificats ` des entit´s pr´alablement e a e e authentifi´es . Cela est r´alis´ par exemple par le protocole e e de Diffie et Hellman de la section 3. e 2. Les acteurs d’une PKI. Mise en commun des clefs. l’archivage et la destruction des clefs (couples publiques/priv´s.4. rendre e les certificats publics par le biais de services d’annuaires . 3. Gestion des clefs.6. e la distribution. la proc´dure d’´mission est normalis´e et doit suivre les diff´e e e e rentes ´tapes de la figure 3. 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. On distingue diff´rentes entit´s : e e – Le d´tenteur d’un certificat : c’est une entit´ qui poss`de une clef priv´e et est e e e e le sujet d’un certificat num´rique contenant la clef publique correspondante. Une architecture peut assurer la gestion de la cr´ation. g´rer e e les clefs et fournir des services d’archivage. ´ventuellement. e . ´tablir. par exemple par RSA comme dans la section 3. 3. l’utilisation.6. r´voquer des certificats. les maintenir . ou clef secr`te de chife e frement sym´trique).

aux utilisateurs qui n’en disposent pas. Cela permet de r´gler les litiges en sachant quel certificat e ´tait valable ` telle ´poque. d’un ´quipement e r´seau etc.. d’un serveur Web. – Le RA peut ´mettre une r´vocation sign´e mˆme si un utilisateur a e e e e perdu toutes ses clefs (le RA est lui sens´ ne pas perdre les siennes !). Registration Authority) : c’est l’interm´e e diaire entre le d´tenteur de la clef et le CA. e Le RA est donc un interm´diaire sˆr. e – L’Archive se charge du stockage sur le long terme des informations pour le compte d’un CA. logicielles ou e mat´rielles. Il est connu par son adresse et son protocole d’acc`s.. Il v´rifie les requˆtes des utilisae e e teurs et les transmet au CA (le niveau de v´rification d´pend de la politique e e de s´curit´ mise en œuvre). e – Les utilisateurs ne sont pas forc´ment capables de publier leurs certie ficats. – publie les certificats non encore expir´s . Une question l´gitime est donc : « Pourquoi faut-il des autorit´s e e d’enregistrement ? ». Un RA peut fournir ces impl´mentations.6 Protocoles usuels de gestion de clefs 201 Il peut s’agir d’une personne physique. ce dernier v´rifiant e les informations fournies par un RA par le biais de sa signature. ee – Des algorithmes efficaces sont n´cessaires ` la cr´ation et ` la gese a e a tion des clefs. a e e e – le D´pˆt ou Annuaire (Repository) qui se charge quand ` lui de : e o a – distribuer les certificats et les CRL. e a e De cette organisation il ressort que l’´l´ment central d’une PKI est l’autorit´ de ee e Certification. e – L’utilisateur d’un certificat : celui-ci r´cup`re le certificat et utilise la clef e e publique qu’il contient dans sa transaction avec le d´tenteur du certificat.3. Un e e e e RA est connu d’un CA par son nom et sa clef publique. e – L’ Autorit´ de Certification (CA. e e – ´met et maintient les informations sur les Listes de R´vocation des Cere e tificats (CRL. e e – L’ Autorit´ d’enregistrement (RA. e u . – L’´metteur de CRL : l’´mission des listes de r´vocation peut ˆtre d´l´gu´e e e e e ee e hors du CA ` une entit´ sp´cialis´e. e – maintient les archives concernant les certificats expir´s et r´voqu´s. Des ´l´ments techniques. Chaque CA a une liste de RA accr´dit´s. Certification Authority) : c’est un ene semble de ressources (logicielles et/ou mat´rielles) et de personnels d´fini e e par son nom et sa clef publique qui : – g´n`re des certificats . – accepter les certificats et les CRL d’autres CA et les rend disponibles aux utilisateurs. Certification Revocation List) . Deux types de facteurs interviennent : 1. e e e C’est ´galement l’entit´ juridique et morale d’une PKI.

509. peut e falsifier les informations. – La proximit´ avec les utilisateurs est augment´e.. e – Le nombre de CA n´cessaires est r´duit par le regroupement de fonce e tions simples. La figure 3. ayant la d´cision finale... Exponent : 65537 (0x10001) Validity Périod − 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é privée du CA Signature − Signature Value Fig. Des e exemples d’infrastructures ` clef publiques faisant actuellement l’objet d’une a normalisation ` l’IETF (The Internet Engineering Task Force) sont PKIX a (Public Key Infrastructure X.509. Dans la suite.27 donne e e l’allure d’un certificat au format X. nous e pr´sentons le principal format utilis´ : la norme X.. e – Il est moins cher d’´quiper un RA que tous les utilisateurs.imag.fr C (country) : France L (Locality) : Grenoble ST : (State or Province) : Isère O (Organisation) : INRIA SO (Organizational Unit) : Labo ID−IMAG CN (Common Name) : Sebastien Varrette STREET (Adress): 51 av Jean KuntzMann E (Email) : sebastien. la plupart en cours d’´volution.509 v3 (0x2) 14 (0xE) md5WithRSAEncryption Version Serial Number Signature Algorithm ID Issuer Name Validity Périod − 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:. Information C (country) : France L (Locality) : Grenoble ST : (State or Province) : Isère O (Organisation) : INRIA SO (Organizational Unit) : icluster CN (Common Name) : Icluster_CA STREET (Adress): 50 av Jean KuntzMann E (Email) : ca@inria.. e Cependant.fr Certificat Numérique X. SPKI (Simple Public Key Infrastructure) ou encore SDSI (Simple Distributed Security Infrastructure). Chaque infrastructure d´finit souvent son propre format de certificat. e e . 3. Le CA.27: G´n´ration et contenu d’un certificat X. s´parer le CA et le RA est en g´n´ral moins sˆr que de centraliser e e e u tout dans un CA : un utilisateur et un RA peuvent en effet se mettre d’accord. e e Les certificats ´lectroniques e Il existe plusieurs normes pour les PKI.202 Chapitre 3 : Cryptologie 2.509.509). La s´curit´ reste donc dans la confiance en le CA. Une organisation simplifi´e..varrette@imag. e e – Souvent des structures pr´existantes peuvent faire office de RA. mais le RA transmet ensuite au CA.

les dates de validit´. e e ASN.509 a connu plusieurs versions successives motiv´es par des retours e d’exp´riences (v1 : 1988. le nom de e e l’´metteur. on peut trouver : .3.28: V´rification de certificat et extraction de clef publique. e La norme X. la liste de num´ros de certificats invalide.6 Protocoles usuels de gestion de clefs 203 Cette figure illustre par des exemples la valeur des principaux champs qui composent ce certificat. Certificat signé Sujet : Alice Clef pub : KpubA Émetteur : Ivan Signature : s 7°) Clef : OK Certificat Sujet : Alice Clef pub : KpubA 1°) Récupération 2°) Extraction Émetteur : Ivan Fonction de Hachage 6°) Algorithme de Vérification de la signature Clé publique 1111 0000 1111 0000 1111 0000 Alice 1111 0000 1111 0000 1111 0000 Signature s 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°) Récupération 4°) Extraction Émetteur : Ivan Fonction de Hachage 5°) Algorithme de Vérification de la signature Signature r 1111 0000 1111 0000 1111 0000 Ivan 1111 0000 1111 0000 1111 0000 Clé publique Fig.1 principaux utilis´s e pour les certificats X-509. ou encore consulter les CRL. v2 : 1993. et e e e la signature du CA. e Une fois qu’un certificat a ´t´ ´mis et d´pos´ dans un annuaire. On notera sur les exemples de « Distinguished Name » (DN) (champs « Issuer name » et « Subject Name ») la liste des sous-champs qui composent ces DN. Parmi les types ASN. Elle pr´cise ´galement le format e e e des Listes de R´vocations de certificats. comme par exemple sur la figure 3. les autres ee e e e utilisateurs peuvent venir interroger l’annuaire pour r´cup´rer puis v´rifier e e e des certificats.28.1 (Abstract Syntax Notation). Celui-ci est tr`s similaire ` celui des e e a certificats : un num´ro de version. v3 : 1996). Les certificats et les CRL X-509 sont ´crits dans un langage de sp´cifications. Ils permettent de localiser tr`s pr´cis´ment les entit´s e e e e associ´es. 3. le type des algorithmes utilis´s.

Le d´pare e e tement de la d´fense des USA est par exemple d´sign´ par {1.29: Le mod`le PKI pour les certificats X-509.1. le RFC-2459. o` « UTCTime » est valide entre 1950 et 2049 et le « GeneralizedTime » u apr`s 2050. 1. a 1.3. « General names ».840. e La premi`re norme produite.509 certificates) de l’IETF a ´t´ ´tabli eee ` l’automne 1995 dans le but de d´velopper les standards Internet n´cessaires a e e ` une infrastructure reposant sur les certificats X-509. e e e – « Algorithm Identifier » : un nom descriptif d’algorithme..204 Chapitre 3 : Cryptologie – « OID » (Object Identifier) : des nombres s´par´s par des points. a Utilisateurs Chargement hors ligne Annuaire (certificats et révocations) Récupération (certificats/révocations) Entité Publication de certificat Autorité d’enregistrement } Autorité de Certification 1 Certification croisée Autorité de Certification 2 Enregistrement Initialisation Certification Récupération de Clefs Mise à jour de Clefs ^ Requete de révocation Publication (certificats/révocations) Publication de révocation Émetteur de CRL Publication hors ligne Gestionnaires Fig.1 ` une sia a gnature par courbe elliptique avec un hachage SHA-1 ecdsawithSha1 etc.2.1.10045.113549.4 ` md5withRSAEncryption .2. – « Distinguished Names ». 3.7 correspond ` du DES − EDE3 − CBC .840. d´crit la version 3 des certificats e e . 1..2. GeneralizedTime e } ». e Le mod`le PKIX e Le groupe de travail PKIX (PKI for X.840.113549.3. – « Directory String » : information en texte.6}. « Time » : par exemple les dates sont d´finies par « Time :=CHOICE { UTCTime. Par exemple.

31 (OpenSSL . Cr´ation d’un fichier de caract`res al´atoires : Sous Linux (depuis la e e e version 1. le format de demande de gestion de certificat (RFC 2511). e a e (a) Avec openssl genrsa.3. Exercice 3. Cette requˆte devra contenir ´galement la clef et ˆtre e e e valable 2 mois. crl et newcerts. comment cr´er un nouveau certificat racine e auto-sign´. Entrer un num´ro de s´rie dans e e le fichier demoCA/serial. et cr´er un fichier demoCA/index. comment demander au CA de r´pondre ` votre ree a quˆte ? Cette requˆte devra cr´er un fichier certificat newcert. la datation des certificats (RFC-3161).30).pem et valable e 365 jours. avec openssl req. Enfin. ` l’aide de la clef pr´c´dente ? Ce certificat devra ˆtre au e a e e e format X509. e e e e 8 Tous les noms suivants peuvent ˆtre modifi´s dans le fichier openssl. Mise en place d’un CA8 : Cr´er un r´pertoire demoCA et des sous r´e e e pertoires private. e a e e comment cr´er un fichier al´atoire . certs. en utilie sant cette clef. e e . il existe un fichier.rand d’au moins 16ko. l’ensemble des fonctions d’administration d’une infrastructure ` clef publique a ´t´ d´fini et la figure 3. les messages de gestion de certificats (RFC-2797) et l’utilisation de FTP et HTTP pour le transport des op´rations de PKI (RFC-2585) sont les autres standards e mis au point par le groupe. r´servoir d’entropie.29 r´capitule les a ee e e structures retenues par le groupe. (RFC-2560). D´finir e e les droits d’acc`s ` tous ces r´pertoires et fichiers.6 Protocoles usuels de gestion de clefs 205 X-509 et la version 2 des CRL. le protocole de gestion des certificats. le statut des certificats en-ligne.pem et e e e sp´cifier la politique de s´curit´ par d´faut policy_anything.pem et crypt´e sur le disque par e AES-256 bits. stock´ dans le fichier demoCA/cacert. – Avec openssl ca. le RFC3039 sur la politique de certification et le RFC-2527 sur le cadre pratique de certifications ont suivi. comment cr´er une paire de clefs RSA de 1024 bits ? e – Comment faire une requˆte de certificat.exercice ` r´aliser sur machine). – Avec openssl. avec 16 blocs e e distincts ? 2.3. A l’aide de dd. (RFC2510). e ` cr´e ` partir de diff´rentes sources al´atoires hardware). Certificat utilisateur. OpenSSL a e est un ensemble d’utilitaires de cryptographie impl´mentant SSL v2/v3 (Secure e Sockets Layer) et TLS v1 (Transport Layer Security) et les standards qu’ils requi`rent (en particulier ceux des PKI). comment cr´er une paire de clefs de 4096 e bits en utilisant votre fichier al´atoire ? Cette clef sera stock´e dans e e un fichier demoCA/private/cakey. Le RFC-2587 sur le stockage des CRL. Au total. (b) Avec openssl req. e 1. (/dev/urandom. 3.cnf.txt.

a e e Des clients de courriel (par exemple Thunderbird) utilisent plutˆt le foro mat PKCS12 pour les certificats au lieu du format X509. La fonction principale d’une PKI est d’utiliser des certificats pour authentifier des personnes. 3.30. En particulier l’enregistrement initial d’une entit´ avec la cr´ation e e et la signature du certificat associ´ est r´gi par le m´canisme suivant de la e e e figure 3. Comment ajouter un certificat cr´´ ci-dessus ` un client de ce type ? Que se passe-t-il ee a si la clef priv´e associ´e ` ce certificat est perdue ? En particulier : e e a (a) Peut-on toujours envoyer des courriels chiffr´s ? En recevoir ? e (b) Peut-on toujours signer des courriels qu’on envoie ? V´rifier les e signatures des courriels re¸us ? c Solution page 311. comme d´crit sur la figure 3. Application ` l’envoi de courriels s´curis´s. e Dans ce processus.30: Enregistrement authentifi´. Une fois cet enrea e gistrement r´alis´. chaque v´rification de certificat est r´alis´e par extraction e e e des informations concernant l’´metteur et la v´rification des signatures grˆce e e a ` la clef publique de celui-ci. les authentifications ult´rieures sont alors plus simples. 1° [échange d’une clef initiale iaK] Alice (Utilisateur) 3° 4° Génération de clefs Requete de certification 2° Challenge Bob (CA/RA) 5° E (Challenge K Requete) iaK pub 6° 7° Vérification Challenge Vérification Requete Création certificats || || 9° E Kpub(Certificat) 8° 10° (Confirmation ||signature K ) priv 11° 12° Vérification Signature Vérification Confirmation Fig.28. sans tiers et sans risque de subir une attaque de type Man-inthe-middle. La e e e figure 3.31 donne les diff´rentes ´tapes d’authentification mutuelle (l’authentie e fication unilat´rale ne contient pas le dernier message) du protocole FIPS-196.206 Chapitre 3 : Cryptologie 4. e .

A la fin. e il peut v´rifier les informations contenues dans T okenAB ` l’aide de la e a clef publique d’Alice qui est contenue dans le certificat.31: Authentification par cryptographie ` clef publique. Bob commence par v´rifier le certificat d’Alice (voir figure 3. celle-ci est authentifi´e aupr`s de Bob. 3.28). Ensuite. mˆme l’envoi du certificat est optionnel) e 4. a e 3. Alice envoie ` Bob une demande d’authentification a 207 2. Bob g´n`re un nombre al´atoire Rb qu’il retient et cr´e ainsi le jeton e e e e T okenBA1 par : T okenBA1 = Rb Bob l’envoie ` Alice avec ´ventuellement un jeton d’identification. Alice e l’envoie ` Bob avec son certificat (qui contient donc sa clef publique qui a permettra de v´rifier la signature) et ´ventuellement un identificateur de e e jeton (en fait.6 Protocoles usuels de gestion de clefs 1. . elles peuvent alors utiliser leurs clefs e publiques/priv´es pour crypter ou signer des messages. elle g´n`re e e e e e un jeton d’authentification 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 priv´e. Il lui e e reste ` s’authentifier en g´n´rant lui aussi un jeton d’authentification a e e T okenBA2 par : T okenBA2 = Rb ||Ra ||A||Signb (Rb ||Ra ||A) Bob l’envoie ` Alice avec son certificat et ´ventuellement avec un idena e tificateur de jeton (mˆme remarque que pr´c´demment) e e e ` 5. il y a e e e donc bien authentification mutuelle. [Demande d’authentification] 1° 2° [TokenID] [TokenID] || TokenBA 1 Bob Alice 3° 4° [TokenID] || CertA || TokenAB || Cert B || TokenBA 2 Fig. Apr`s v´rification e e de la signature d’Alice. Ensuite.3. Alice g´n`re un nombre al´atoire Ra qu’elle retient. sans crainte d’une ate taque Man-in-the-middle. Alice proc`de de la mˆme mani`re pour authentifier Bob. a Une fois les deux parties authentifi´es.

ainsi un v´ritable r´seau de e a e e e connaissances se cr´e et permet des confiances mutuelles. PGP fait en sorte que e e chaque utilisateur soit son propre CA. N´ avant la prolif´ration des CA accessibles par internet. Architectures non hi´rarchiques. 3.208 Exercice 3. la difficult´ est de retrouver la chaˆ de confiance qui lie deux e e ıne utilisateurs. PGP a ´t´ con¸u pour permettre la messagerie s´e ee c e curis´e. Expliquer l’int´rˆt des certificats num´riques. PGP a dˆ e e e u r´soudre le probl`me de la d´l´gation de la confiance dans un mod`le none e ee e hi´rarchique. 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 jugée digne de confiance 111 000 111 000 111 000 111 000 111 000 Signataire de confiance Signataire à confiance partielle Fig. Qu’est-ce qu’une politique de certification ? Solution page 312.32 (Certificats ´lectroniques).32: Un exemple du mod`le de confiance de PGP. PGP e ` A la diff´rence de PKIX. Avoir l’´quivalent d’un CA par utilisateur est impossible ! PGP a alors ajout´ e e la notion de confiance : si un utilisateur sait que le certificat de l’utilisateur B est valide alors il peut signer le certificat de B. e Chapitre 3 : Cryptologie 1. Au lieu de se reposer sur diff´rents CA. e Dans ce mod`le. PGP autorise alors un nombre illimit´ d’utilisateurs ` signer un mˆme certificat. D´crire les ´l´ments essentiels d’un certificat num´rique. Que comportee ee e t-il et pourquoi ? 2. La solution ´l´gante propos´e par PGP est la confiance partielle : ee e une signature sur un certificat ne donne qu’une fraction de la confiance en ce certificat et il faut alors plusieurs signataires de confiance pour d´terminer un e . e e e 3.

Enfin. dont le e e certificat est sign´ par Alice. etc. Dans cet article. PKI g´r´e e e par une entreprise sp´cialis´e (VeriSign. quelques d´fauts peuvent ˆtre d´crits : e e e e 1. c’est-`-dire sur un canal diff´rent de celui de la a e communication courante. ou par un moyen non ´lectronique. Le certificat d’Oscar est sign´ par Bob. Carl M. Dans un mod`le d’´change PGP. Ce e risque est r´duit par l’accumulation d’informations (pays. mais e e e il faut que tous les enregistrements soient bien initi´s hors ligne (« oute of-band » en anglais). Plus pr´cis´ment.34. Que faut-il exactement comprendre lorsqu’un CA pr´tend ˆtre digne de e e confiance ? Ce probl`me est r´duit par les certifications crois´es.6 Protocoles usuels de gestion de clefs 209 certificat. IP. Ellison et Bruce Schneier ont ´crit un article « Tout e ce que l’on ne vous dit pas au sujet des PKI ». une question demeure. RSA Security. DNS.). Un seul tiers ind´licat ou simplement e n´gligent peut d´truire le r´seau de confiance. r´gion. vous recevez un message e e sign´ par un certain Oscar. La politique de s´curit´ de l’ensemble des CA est donc celle du plus e e faible ! 4. ils pr´sentent e 10 risques li´s ` l’utilisation des PKI. and for what ? » (A qui faisons-nous confiance et pour quoi ?). e e e Enfin. la question est de savoir qui e e a donn´ ` un CA l’autorit´ de signer des certificats et quelle est la notion ea e de confiance. Commenter pour les sc´narios : PKI au sein d’une seule e entreprise . e e Exercice 3.) pour une e e entreprise tiers. comment prot´ger les clefs secr`tes ? e e e . e 3. Cependant. en qui vous avez totalement confiance pour signer e des certificats. D´fauts des PKI e Les PKI ne sont pas la panac´e. etc.3. Risque n°2 : « Who is using my key ? » (Qui utilise ma clef ). localit´. L’autre difficult´ de ce syst`me est de bien faire la diff´rence entre e e e accorder sa confiance au certificat d’un utilisateur et accorder sa confiance ` a un tiers pour signer d’autres certificats. qui certifie ces informations compl´mentaires ? e 2. e e e adresse. PKI entre une entreprise et ses clients/filiales . Risque n°1 : « Who do we trust.33. Plus pr´e cis´ment. Plusieurs personnes peuvent avoir un mˆme « Distinguished Name ». Commenter les quatre risques suivants : e a ` 1. 2. courriel. il est ` noter que les derni`res versions du mod`le de confiance de PGP a e e introduisent une entit´ « m´ta » qui joue finalement ´galement le rˆle d’un e e e o CA racine afin d’´muler le fonctionnement hi´rarchique. Que pensez-vous du message re¸u ? c Solution page 312. e Exercice 3. il manque une autorit´ de datation.

Risque n°9 : « How secure are the certificate practices ? » (Quelle est la s´curit´ des pratiques de certification ?). au e e e e final. de hachage ? e (c) Faut-il faire des CRL ? (d) Plus g´n´ralement comment savoir quelles sont les pratiques de cere e tification d’une autorit´ ? e Solution page 312. e Le r´cepteur effectuera alors les op´rations de d´chiffrement suivantes : e e e 1. Envoi du message compos´ de la clef K chiffr´e par RSA et d’un texte e e chiffr´ selon un algorithme de type 3-DES. e 2.000 fois plus lent qu’un DES. D´chiffrement du texte en utilisant DES ou IDEA avec la clef K. elles ne sont pas aussi rapides ` calculer que leurs ´quivalents pour a e le DES : l’exponentiation modulaire est une op´ration plus coˆteuse en temps e u que des permutations ou des recherches dans une table lorsque p est grand. La clef K est chiffr´e selon le principe RSA avec la clef publique du e destinataire. Risque n°4 : « Which John Robinson is he ? » (Quel Jean Martin estce ?). Ainsi. le syst`me PGP e e e e chiffre un message avec le protocole suivant : 1. e 3. Par exemple : e e (a) Sur quels crit`res ´tablir des dur´es de validit´ de clefs ? e e e e (b) Comment ´tablir les longueurs de clefs.6 Un utilitaire de s´curisation de canal. il est n´cessaire de bien d´finir la politique de s´curit´ et. 3.6. La solution pour un chiffrement efficace r´side dans l’utilisation conjointe de e syst`mes de chiffrement sym´trique et asym´trique. e Pour l’authentification le principe est un peu diff´rent : e . En conclusion. Le texte source est chiffr´ avec une clef K de type 3-DES. une seule entreprise) et restent raisona e nables lorsque quelques-unes de ces entit´s interagissent. Un algorithme a e de type RSA est environ 10.g. e a a e 2. Cela rend plus compliqu´e la conception d’un composant ´lectronique destin´ e e e ` chiffrer et d´chiffrer rapidement en utilisant cette approche. les d´fauts des PKI sont quasiment tous r´solus si une PKI est restreinte e e ` une seule entit´ administrative (e. D´chiffrement de la clef grˆce ` la clef priv´e D en utilisant RSA.210 Chapitre 3 : Cryptologie 3. comment traiter les diff´rents Jean Martin cone e e nus par un CA ? 4. Plus pr´cis´ment. SSH e Malgr´ la relative simplicit´ des fonctions D et E dans le cadre de RSA ou de e e El Gamal.

Donner les raisons pour lesquelles ce groupe utilise finalement un syst`me e hybride pour le chiffrement ? Solution page 313. e c . De plus. il utilise un protocole ` clef publique pour ´changer des clefs a e secr`tes utilis´es par les algorithmes de chiffrement plus rapides utilis´s pour e e e la connexion elle-mˆme. e 1. un protocole de connexion qui permet le passage de plusieurs canaux logiques. le texte. e e e 2. Comme application du syst`me PGP. l’authentification des entit´s .3. un protocole hybride SSH est un protocole s´curis´ de connexion ` distance par des canaux non sˆrs e e a u dans un mod`le client-serveur.6 Protocoles usuels de gestion de clefs 211 – G´n´ration d’un code qui identifie. Commen¸ons par la version SSH-1. la confidentialit´ et l’int´grit´. Quel est le nombre minimum de clefs sym´triques n´cessaires ? e e 2. – Chiffrement de ce code en utilisant RSA avec la clef priv´e de l’´metteur du e e message. qui permet l’authentification du serveur. 3. SSH. Comme PGP. e e par exemple une fonction de hachage. l’int´grit´ des communications . faire des transferts de fichiers et lancer des applications. et la mise en place d’un canal s´curis´ pour la suite des o e e e communications. Quel est le nombre minimum de clefs asym´triques n´cessaires ? e e 3. une couche transport. Un groupe de n personnes souhaite utiliser un syst`me crype tographique pour s’´changer deux ` deux des informations confidentielles. une couche d’authentification de l’utilisateur. par un nombre de taille fixe. e e Exercice 3. ce protocole garantit : la confidentialit´ des donn´es par un chiffree e ment fort . citons le programme SSH utilis´ en r´e e e seau pour se connecter sur une machine tierce.35. Cela permet au correspondant de v´rifier la validit´ du message et l’identit´ e e e de l’´metteur en utilisant la clef publique de l’exp´diteur. e Il se compose de trois parties : 1. le e e e contrˆle de privil`ges . Les e a informations ´chang´es entre deux membres du groupe ne devront pas pouvoir e e ˆtre lues par un autre membre.

le client la stocke dans sa e base (actuellement dans le fichier ~/. e Taille (octets) 4 Longueur 1à8 Ajustement 1 Type Données 4 Vérification Fig.33: Format d’un paquet SSH. Le client et le serveur s’´changent les versions du protocole SSH qu’ils e supportent.33. mˆme si elle devient plus complexe. et lors de la premi`re connexion. une signature de la clef est calcul´e et peut e e e ˆtre facilement ´chang´e par d’autres moyens.212 Authentification du serveur Chapitre 3 : Cryptologie Chaque serveur poss`de sa propre clef publique qui l’identifie. c u En pratique. Le client contacte le serveur. e e Pour ajouter un peu de s´curit´. 3. Voici la signification des diff´rents champs de ce paquet : e – Longueur : il s’agit de la taille du paquet (sans compter les champs « Longueur » et « Ajustement ») cod´e sous forme d’un entier de 32 e bits.2.5-1. pour l’instant.27). Le serveur et le client passent ` une communication par paquets format´s. a e Le format des paquets est explicit´ dans la figure 3. 2. 3. l’algorithme consiste ` ce que le serveur envoie a sa clef publique.ssh/known_hosts). N´anmoins. e e e ee ´ Etablissement d’une connexion s´curis´e e e Elle se d´roule en plusieurs phases et permet au serveur de fournir de fa¸on s´e c e curis´e une clef de session K qui sera utilis´e par un algorithme de chiffrement e e ` clef secr`te : a e 1. Il s’agit simplement pour le client d’´mettre e une demande de connexion sur le port TCP du serveur (le port 22). Il y a deux strat´gies : e – Le client maintient une base de donn´es de clefs publiques des serveurs e auxquels il se connecte. Le client compare cette clef avec les clefs re¸ues ult´rieurement. Le probl`me est e e de diffuser cette clef aux clients. t´l´phone par exemple. – Il existe un tiers de confiance capable de diffuser de fa¸on sˆre les clefs. . cela autorise quand c e e mˆme une attaque man-in-the-middle. Ces protocoles sont repr´sent´s par une chaˆ ASCII e e ıne (ex : SSH-1.

ee e Le client et le serveur calculent ´galement chacun de leur cˆt´ un idene oe tificateur de session (IdS ) qui identifie de mani`re unique la session et e qui sera utilis´ plus tard. – une s´quence C de 8 octets al´atoires (octets de contrˆle) : le client e e o devra inclure ces octets dans la prochaine r´ponse sous peine de rejet . qui ach`vera d’authentifier le serveur aupr`s du client (seul e e le serveur attendu est capable de d´chiffrer la clef de session). le client devra attendre e e un message de confirmation du serveur (chiffr´ ` l’aide de la clef de e a session K). La connexion s´curis´e est ´tablie : le client et le serveur disposent d’une e e e clef secr`te de session qui leur permet de chiffrer et de d´chiffrer leurs e e messages. plus pr´cis´ment. e 6. – Type : sp´cifie le type de paquet. DES en mode CBC. o – une clef serveur (publique) S (une paire de clef RSA est r´g´n´r´e e e ee toutes les heures) . voir la section 4. e – la liste des m´thodes de chiffrement. car seul le serveur connaˆ e ıt la clef priv´e associ´e ` H. Ce champ permet de rendre les attaques ` a texte clair choisi difficilement exploitables. Chaque entit´ met en place le chiffrement et compl`te l’authentification e e du serveur.3. « Type ». e – Donn´es : les donn´es transmises. e e – V´rification : il s’agit de quatre octets calcul´s par codes de redone e dance cycliques (CRC). 3-DES et AES en mode CBC pour les versions plus r´centes). et RC4 par exemple pour SSH-1 .2 pour la construction d’un CRC. de compression et d’authentificae tion support´es. Le deuxi`me cryptage par S assure que le e e a e message n’a pas ´t´ rejou´ puisque S n’est valide que pendant une heure. Le client choisit e une m´thode M de chiffrement support´e par les deux parties (IDEA e e en mode CFB. . puis g´n`re e e e al´atoirement une clef de session K et envoie [M. e 5. C. Ce sont les champs « Ajustement ». e e eee 4. Le e serveur envoie les informations suivantes au client (toujours en « clair ») : – une clef hˆte (publique) H (qui est LA clef publique du serveur) . Le client envoie au serveur une clef secr`te de session. Apr`s avoir envoy´ sa clef de session. « Donn´es » et « V´rifie e cation » qui seront chiffr´s d`s qu’une clef de session aura ´t´ ´tablie. EH (ES (K))]. la longueur est donn´e par la formule : a e e e 8 − (Longueur mod 8). Le serveur s’identifie au client et fournit les param`tres de session. Ainsi. e 7. e seul le serveur sera capable de d´chiffrer K.6 Protocoles usuels de gestion de clefs 213 – Ajustement : il s’agit de donn´es al´atoires dont la longueur varie de e e 1 ` 8 octets .

2). voir la section 3.214 Authentification du client Chapitre 3 : Cryptologie Une fois qu’une connexion s´curis´e a ´t´ mise en place. N´anmoins e e e cela autorise le changement d’algorithme si une faille apparaissait.ssh/authorized_keys. Puis ` l’aide de sa clef priv´e D. Cette derni`re oe e e c e v´rification ach`ve l’authentification du client. le client d´chiffre C. . le client envoie une requˆte pour une authentifie e e cation par clef publique.pub est ajout´ sur le e serveur au fichier ~/. Comme on l’a vu. le client g´n`re ` l’aide de la commande ssh-keygen les e e a fichiers ~/. le contrˆle d’int´grit´ se fait par un simple code de redono e e dance cyclique (section 4. m´thode peu satisfaisante en o e termes de s´curit´). Le serveur peut rejeter la requˆte s’il ne permet pas l’authentification e de cette clef (pas d’entr´e associ´e dans le fichier authorized_keys par exeme e ple). e e S´curit´ des algorithmes. Dans SSH-2.ssh/identity (qui contiendra la clef secr`te RSA d et qui est proe t´g´e par une « phrase de passe ») et ~/. e e Dans ce dernier cas. l’int´grit´ de chaque paquet est v´rifi´e en ajoutant des e e e e bits de signature (code d’authentification MAC. Sinon.rhosts. Les algorithmes utilis´s sont bien connus et bien ´tablis. Le contenu de identity. les donn´es peuvent ˆtre compress´es par exemple ` l’aide de l’utilitaire e e e a gzip ce qui permet de limiter la bande passante utilis´e pour la transmission e des paquets. le concat`ne avec l’idena e e e tificateur de session IdS .ssh/identity.2). Ils sont calcul´s ` partir du num´ro de s´quence du paquet (qui ne fait pas partie du e a e e paquet) et de son contenu non chiffr´. int´grit´ et compression sont choisis par les deux e e parties. il g´n`re al´atoirement un nombre C de 256 bits et envoie au client e e e C e mod n (chiffrement RSA avec la clef publique du client). calcule l’empreinte du tout avec MD5 et envoie cette derni`re au serveur en r´ponse.Cette faiblesse est en partie ` l’origine du changement de version. Une fois cette ´tape effectu´e. Le serveur effectue la mˆme op´ration de son e e e e cˆt´ et v´rifie la concordance du r´sultat avec ce qu’il re¸oit. Cette authentification peut s’effectuer par utilisation du nom de l’hˆte (utilisant le fichier ~/. le client peut s’aue e ee thentifier au serveur. n)). ou par clef publique. et de la cr´ation de a e SSH-2. ce qui n’est pas efficace contre certaines attaques (par exemple l’attaque par insertion de Futoransky et Kargieman). int´grit´ et compression des donn´es e e e e e Les algorithmes de cryptage. Le modulo n est pass´ en param`tre et sert d’identie e ficateur. par mot de passe.5.pub (qui contiendra e e la clef publique RSA (e. e Enfin.

7 Projets de standardisation et recommandations Nous conclurons ce chapitre en mentionnant l’existence de projets de standardisation ` travers le monde qui ont pour objectif de fournir des recommandaa tions ` un instant donn´ sur l’utilisation de tel ou tel algorithme. les e e clefs publiques de 1024 bits .ssh.ssh d’un compte tiers . une plus grande flexibilit´ dans l’authentification (incluant une authentification partielle) . e e 1. Exercice 3. La commande ssh sous Linux lance un programme pour se connecter sur une machine distante et pour ex´e cuter des commandes sur cette machine. e ` A quel message doit-on s’attendre ? ` 5. ce programme maintient e a e un fichier known_hosts des serveurs sur lesquels l’utilisateur s’est connect´. plusieurs m´thodes pour l’´change de clefs. L’existence a e de ces projets est particuli`rement int´ressante pour les industriels et les n´oe e e phytes qui peuvent alors choisir les algorithmes les plus sˆrs et les plus adapt´s u e ` leurs besoins sans pour autant s’investir dans leur assimilation. Se reconnecter sur une autre machine. la gestion des certificats X.6. Que constatez-vous ? 4. e La premi`re connexion est consid´r´e comme sˆre et les suivantes sont aue e e u thentifi´es par la clef publique stock´e dans le fichier .6 Protocoles usuels de gestion de clefs Diff´rences majeures entre SSH-1 et SSH-2 e 215 La nouvelle version du protocole SSH. les clefs secr`tes sont d´sormais de 128 bits. A quel message doit-on s’attendre ? Solution page 313. Comment rendre cette authentification du serveur sˆre ? u 2. le remplacement p´riodique de la clef e e e de session toutes les heures . comment g´n´rer une paire clef publique e e / clef priv´e de type DSA sur 2048 bits avec l’utilitaire ssh-keygen ? e 3.ssh/known_hosts. en e e particulier le protocole de Diffie-Hellman . clavier) . mot de passe..36 (OpenSSH sous Linux). 3. en suivant le protocole SSH.) . Ces projets a servent ´galement ` la communaut´ des chercheurs du domaine puisqu’une e a e .. Dans le r´pertoire . SSH-2 fournit : un plus grand choix dans la n´gociation d’algorithmes entre le client et le serveur (choix du hachage e etc.509 pour les clefs publiques . Modifier le fichier known_hosts en changeant une clef publique. ` la racine du r´pertoire utilisateur..3. Plusieurs m´thodes d’authentification du client sont alors possibles (clef e publique. Ajouter la clef publique ainsi g´n´r´e au fichier authorized_keys dans e e e le r´pertoire . un e meilleur test d’int´grit´ par chiffrement .. connectez-vous sur ce compte en e utilisant ssh -v. D´truire le fichier known_hosts.

SHA-384 a et SHA-512 (on notera la clairvoyance des auteurs qui avaient anticip´ la e cryptanalyse de SHA-1). SHA-256 . . Le NIST (National Institute of Standards and Technology) aux EtatsUnis qui. On d´nombre trois principaux projets/organismes. recommande depuis 2000 l’utilisation de AESRijndael (blocs de 128 bits et clef de 128/192/256 bits) comme algorithme de chiffrement ` cl´ secr`te par bloc. On donne pour chacun e quelques exemples des recommandations pratiqu´es : e ´ 1. NESSIE e recommande depuis 2003 : – au niveau des chiffrement sym´triques par blocs : MISTY1 (Blocs de 64 e bits .216 Chapitre 3 : Cryptologie analyse rigoureuse y est pratiqu´e sur les algorithmes que des ´quipes proe e posent. Nous finirons par le projet europ´en NESSIE (New European Schemes e for Signatures. clef de 128 bits) . a e e 2. Le KICS (Korean Information and Communication Standards) en Cor´e e qui recommande depuis 2001 les algorithmes de chiffrement ` clef secr`te a e par bloc SEED et ARIA (tous deux avec des blocs et clefs de 128 bits). AES-Rijndael . et SHACAL-2 (Blocs de 256 bits . Camellia (Blocs de 128 bits . Integrity and Encryption) Ce dernier projet est particuli`rement int´ressant car les plus grands laboe e ratoires de cryptographie d’Europe y ont particip´ et ont permis de d´gager e e les algorithmes les plus int´ressants en les classant par type. 3. Clef de 128/192/256 bits) . par exemple. Ainsi. Clef de 512 bits). – pour les fonctions de hachage ` sens unique. Whirlpool .

etc. En r´alit´.) et il peut atteindre 10−4 e e a (jusqu’` une erreur pour 10000 bits transf´r´s).. a e e e c ou du moins les alt´rations ´taient dues ` un tiers mal intentionn´ qui savait e e a e les masquer. c’est-`-dire le nombre de bits erron´s re¸us par rapport e e a e c au nombre de bits ´mis. la lecture par le laser. un int´rˆt fondamental d’une ina ee formation num´rique (donc sous forme de symboles discrets comme des bits) e est qu’il existe des formats de repr´sentation des donn´es qui permettent de e e retrouver l’information initiale lorsque le taux d’erreur est born´. le taux d’erreurs d´pend du nombre de e r´p´teurs. l’information e e est distribu´e sur plusieurs supports .. il est essentiel de retrouver l’ensemble e d’une information mˆme si certaines parties sont manquantes . mais aussi des imperfections sur le support (poussi`res. satellite. il faut aussi tenir compte des alt´rations possibles du e e e message dues au canal de transmission. Ce taux d’erreur d´pend de la nature de la ligne e e de transmission. la th´orie du coe a e .). c’est-`-dire qu’un message ´mis ´tait syst´matiquement re¸u tel quel.Chapitre 4 D´tection et correction e d’erreurs Dans les chapitres pr´c´dents. Les supports de stockage cona ee tiennent eux aussi des erreurs. du type de support (cˆble. on supposait toutes les communications « sans e e bruit ». e e a Par rapport ` une information analogique. Par exemple. un fichier num´rique stock´ sur e e un CD ou un DVD contient n´cessairement des erreurs ayant pour origine la e gravure. e ee qu’elle soit locale ou internationale. . On appelle taux d’erreur la probabilit´ qu’un bit transmis par le canal soit e diff´rent du bit ´mis. Le tableau 4.1 donne quelques ordres de grandeur du taux d’erreur selon le canal utilis´. Dans un serveur de stockage distribu´. D´velopp´e e e e e au XXi`me si`cle ` partir d’un article fondateur de Shannon. c’est le cas par e exemple lors d’une panne de disque dur dans un syst`me RAID ou de pairs e non connect´s dans un syst`me de stockage pair-`-pair. Dans le cas d’une communication t´l´phonique. rayures.

1.218 e Chapitre 4 : D´tection et correction d’erreurs taux d’erreur 10−9 : ` 5 Mo/s. on dit qu’il y e a eu erreur de transmission. ou en renvoi lors de leur utilisation. deux erreurs par seconde a < 10−9 entre 10−4 et 10−7 10−12 10−9 10−6 (Voyager). . .1 Principe de la d´tection et de la correction d’ere reurs Codage par blocs Soit un canal qui transmet des symboles (les caract`res) d’un alphabet V . chaque symbole est un bit : V = {0. e e e voir chapitre 1). on dit que le symbole i est erron´ . si e j symboles sont erron´s. Reed-Solomon et turbo. dage de canal. . e Pour se prot´ger contre ces erreurs en les d´tectant voire en les corrigeant de e e mani`re automatique. sk ] est ´mise sur le canal. . . 1}. . souvent d´nomm´e th´orie des codes. e 4. 4. sous forme d’un flot (on suppose le message a source pr´alablement encod´ sous forme d’une s´quence de symboles de V . e Pour un canal binaire. 3 bits erron´s par minute a e 10−5 : 7ko erron´s sur un CD de 700 Mo e 10−5 : ` 48 kHz. . Le codage par blocs de taille k consiste ` d´couper le message m ∈ V + en blocs a e Mi de k symboles. Si si = si . sk ] re¸ue par le destinataire peut diff´rer . on dit qu’il y a eu j erreurs. e Lorsqu’une s´quence de k symboles s = [s1 . a pour objet l’´tude et la e e e e construction de telles repr´sentations – les codes correcteurs – qui soient les e plus performantes possibles. Le but de ce chapitre est d’introduire les principaux codes d´tecteurs et core recteurs d’erreurs utilis´s en pratique : les codes CRC.1: Ordre de grandeur du taux d’erreurs. 10−11 (TDMA) 10−3 ` 10−9 a 10−12 ligne Disquette CD-ROM optique DAT audio M´moires ` semi-conducteurs e a Liaison t´l´phonique ee T´l´commande infrarouge ee Communication par fibre optique Satellite ADSL R´seau informatique e Tab. On pourra les consulter o e e au pr´alable. . la e e c e s´quence s = [s1 . e Les outils math´matiques sur lesquels s’appuient ces codes (arithm´tique des e e corps finis et polynˆmes) sont pr´sent´s au chapitre 1. en traitant chaque bloc l’un apr`s l’autre. les m´thodes de codage par blocs consistent ` ajouter de e e a .1 4. Soit m ∈ V + un message ` transmettre.

. Pour que le d´codage permette de reconstruire sans e e ambigu¨ e le message source lorsqu’il n’y a pas d’erreur.1. .4. . comme dans le sch´ma ci-dessus : le signal erron´ re¸u e e c contient suffisamment d’information pour permettre de retrouver le mot ´mis . Le codage transforme donc le bloc ` transmettre s = [s1 . . ck+1 ) o` ck+1 = ( k si ) mod 2 u i=1 (ce qui s’´crit avec l’op´rateur ou-exclusif ck+1 = ⊕k si ). un nombre impair de e e bits dans φ(m) changent de valeurs comme nous l’avons vu section 1. en particulier pour d´tecter les erreurs dans la m´moire. La d´tection d’erreur repose alors sur ce test de none appartenance ` Cφ . Les e e e . ck . e 4. . a e Dans les paragraphes suivants.2 Un exemple simple de d´tection par parit´ e e Dans cette section on consid`re un canal binaire : V = {0. sk . On code le mot e m = (s1 .2). . Le rendement R d’un code(n. .2. le r´cepteur dee e e e e mande ` l’´metteur de retransmettre une nouvelle fois le message source. Ainsi. k) est le taux de u e chiffres de source contenus dans un mot de code : R= k . . On a donc e e i=1 k ck+1 ⊕ i=1 si = 0. la fonction de codage ıt´ φ doit bien sˆr ˆtre injective. . k) . Automatic Repeat reQuest) : lorsqu’une erreur est d´tect´e mais ne peut pas ˆtre corrig´e. ses ´l´ments e ee sont appel´s mots de code. est appel´ un code(n. lors de la transmission. cn ] qui comporte r symboles de redondance par rapport aux k symboles du message initial.4. Suite ` une d´tection d’erreurs. . . 1}. e – la correction par retransmission (ou ARQ.e. . Le test de cette ´galit´ s’appelle contrˆle de parit´. l’ajout d’un bit de parit´ longitudinale permet de d´tecter une erreur portant e e sur un nombre impair de bits (voir le tableau 4. la r´ception d’un mot qui n’est pas dans Cφ (i. un mot de Cφ = V n \Cφ ) e indique une erreur. φ(s) = [c1 .1 Principe de la d´tection et de la correction d’erreurs e 219 la redondance aux k symboles d’information du bloc initial. . . On distingue deux types de corrections : e a – la correction directe. . image par φ de V k . sk ) par φ(m) = (s1 . le d´codeur peut ´vena a e e e tuellement proc´der ` une correction. sk ] en un bloc a de n = k + r symboles. Il est ´vident que e e o e e cette ´galit´ devient fausse si. autrement dit ck+1 = 1 si et seulement si le nombre de bits nuls dans m est pair. . . . Cette technique ´l´mentaire de d´tection d’erreurs est toujours tr`s utilis´e au ee e e e niveau mat´riel. les principes de la d´tection et de la correction e d’erreurs sont introduits avec deux codes tr`s simples. . L’ensemble Cφ = φ(s) : s ∈ V k . n Ainsi. .

e codes de parit´ sont souvent utilis´s pour v´rifier la correction de nombreux e e e num´ros d’identification. Montrer que l’on d´tecte toute erreur portant sur un nombre impair de e bits.3 Un exemple simple de correction directe par parit´ lone gitudinale et transversale Toujours en consid´rant V = {0. Quelle est la longueur n des mots de code φ(m) ? 2. 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 l’ensemble des bits (figure 4.305 ? e e e 2.516. . 4.2). Quel est la clef du num´ro de s´curit´ sociale 2. Ce code permet non seulement de d´tecter mais aussi de corriger une e erreur : il suffit de localiser la ligne et la colonne o` s’est produite l’erreur en u contrˆlant le bit de parit´ de chaque ligne et chaque colonne (exercice 4.2: Codage avec bit de parit´. k1 k2 ) binaire e comme suit. Un num´ro de s´curit´ soe e e e e e ciale est un nombre de n = 15 chiffres : un num´ro d’identification K sur e k = 13 chiffres suivi de la clef C de r = 2 chiffres calcul´e pour que K + C e soit un multiple de 97. Quel est le rendement de ce code ? 3. 4. 1.1 (Num´ro de S´curit´ Sociale). On conse truit un code de parit´ longitudinale et transversale pour des mots source m e de 9 bits. Comme k = k1 k2 .3). la clef du num´ro de s´curit´ sociale e e e permet-elle de d´tecter ? e Solution page 315. 1.38.63.220 e Chapitre 4 : D´tection et correction d’erreurs m : mot source (7 bits) 0101001 0001001 0000000 φ(m) avec bit de parit´ e (8 bits) 01010011 00010010 00000000 Tab. Combien d’erreurs de chiffres.1. e Exercice 4.05. on construit un code(n. un mot source m peut ˆtre repr´sent´ dans un e e e tableau bidimensionnel de bits avec k1 lignes et k2 colonnes.2 (Code de parit´ longitudinale et transversale). 1}. o e Exercice 4.

. 4. Si le mot c re¸u appartient ` Cφ .4. avec la fonction injective de codage φ : V k → V n qui e e associe ` tout mot source un mot du code(n. . e u e 5. k). le message est d´cod´ en s tel que c a e e ˜ φ(˜) = c . Sinon. On ne peut donc pas corriger l’erreur et on renvoie un mot fixe s = m de k bits.4 Sch´ma de codage et probabilit´ d’erreur e e Plus g´n´ralement. . e a 4. Donner l’exemple d’un mot re¸u comportant deux erreurs que l’on ne c peut pas corriger. et aucun mot de code n’a i − 1 chiffres communs avec c . Montrer que l’on peut corriger tout mot re¸u comportant au plus une c erreur.3: Correction d’erreur par bits de parit´. Le mot de code c = φ(s) est calcul´ et transmis sur le canal . e 3. le r´cepteur e e re¸oit un mot c = [c1 . Montrer que l’on d´tecte jusqu’` trois erreurs de bits. l’autre o` l’on ne peut pas d´tecter. 6.1 Principe de la d´tection et de la correction d’erreurs 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 re¸u c (1 erreur) 01010011 00011010 00000000 01000001 mot corrig´ e (1 correction) 01010011 00010010 00000000 01000001 221 Tab. La correction proc`de e e comme suit : (a) s’il existe un entier i et un unique mot de code c ∈ Cφ ayant au moins n − i bits ´gaux ` c . 4. Donner deux exemples de mots comportant quatre erreurs : l’un o` l’on u d´tecte qu’il y a eu erreur. . le sch´ma de codage par bloc a e Cφ est le suivant : 1. s 3. e e ˜ s (b) sinon. . Solution page 315. cn ]. c 2. qui peut correspondre ` un signal ˜ a d’erreur. alors on corrige c en c et le message e a d´cod´ est s tel que φ(˜) = c . il existe au moins deux mots de code qui ont tous deux i chiffres communs avec c .1. c ∈ C et on d´tecte qu’il y a eu erreur.

grˆce ` des algorithmes de codage e u a a a (calcul de φ) et de d´codage (test d’appartenance ` Cφ . Soit la distribution pj|i = P (Y = sj |X = si ) des probabilit´s e de transition . e . soit Y la variable e e al´atoire ` la sortie du canal dont on suppose que les r´alisations sont aussi les e a e symboles de V . de construire des codes Cφ tels que cette probabilit´ d’erreur PCφ soit aussi petite que d´sir´. e e e – avoir un rendement R le plus grand possible . mais dont le rendement est limit´ en fonction e e de la fiabilit´ du canal. . e a e dont les r´alisations sont des symboles de V . . e e e 4. – ˆtre le moins coˆteux ` calculer possible. la source est discr`te uniforme. le e e deuxi`me th´or`me de Shannon prouve l’existence de codes ayant une probae e e bilit´ d’erreur PCφ arbitraire. pj|i est la probabilit´ de recevoir sj en sortie du canal sachant e que si a ´t´ ´mis en entr´e. Autrement dit. .222 e Chapitre 4 : D´tection et correction d’erreurs Avec ce sch´ma. Nous nous limitons e ici au cas d’un canal bruit´ sans m´moire. mˆme e e e e e sur un canal perturb´.j |V | caract´rise les probabilit´s d’erreurs lors de la e e transmission sur le canal sans m´moire. avec des contraintes sur le choix de k en fonction de n. De mˆme. pi|i = 1 et pj|i = 0 pour j = i. calcul de φ−1 et e a correction) les plus efficaces possibles. eee e Par exemple.5 Deuxi`me th´or`me de Shannon e e e Shannon est l’auteur d’un th´or`me important sur la possibilit´ de construire e e e des codes correcteurs d’erreurs dans des canaux bruit´s. s|V | }. . il y a erreur si s finalement re¸u est diff´rent de s : on note e ˜ c e PCφ la probabilit´ d’une telle erreur. Pour un canal donn´. Soit X la variable al´atoire source ` l’entr´e du canal. la distribution (pj|i )1 i. il est possible de faire de la transmission sans erreur ! e Capacit´ de canal e Soit un canal bruit´ sans m´moire qui transmet des symboles de l’alphabet e e V = {s1 . e e Rendement d’un code et efficacit´ e Pour un canal donn´ avec ses taux d’erreurs de transmission intrins`ques. le code Cφ – et en particulier la fonction de codage e φ – doit ˆtre choisi pour : e – avoir une probabilit´ d’erreur PCφ aussi petite que d´sir´e . Plus pr´cisement le th´or`me que e e e e e nous allons voir s’applique au codage de canal o` chaque mot de source tranu site par un canal th´orique qui transforme ce mot en une parmi M valeurs e ´quiprobables. sur un canal sans erreur. Ainsi. e Dans un souci d’efficacit´. Autrement dit.1. le deuxi`me th´or`me de Shannon montre qu’il est pose e e e sible. plus pr´cis´ment de sa capacit´.

1 Principe de la d´tection et de la correction d’erreurs e 223 On note pi = P (X = si ) la probabilit´ qu’une r´alisation de X prenne la valeur e e si . il est possible de r´´crire ee cette d´finition ´galement sous les formes suivantes : e e C = max H(Y ) + H(X) − H(X. Avec les probabilit´s de transition. e e Par exemple. . alors e le canal ne transmet jamais rien de l’entr´e . les probabilit´s de transition sont ind´pendantes du symbole si e e consid´r´ : pour tout 1 i. Or. Avec l’´galit´ de Bayes (voir e e e |V | |V | section 1. alors le canal est a priori sans erreur.3 montre que la capacit´ d’un canal binaire sym´e e trique BSC (Binary Symmetric Channel. cette distribution (pi ) de la source induit e une distribution de probabilit´s sur la variable Y .2. Y ) = max H(Y ) − H(Y |X). ıt a e La capacit´ du canal est donc le maximum de la quantit´ d’information de e e l’entr´e diminu´e de cette perte : e e C = max H(X) − H(X|Y ). u e Dans ce cas. on a P (Y = sj ) = i=1 P (X = si . Y ) est la quantit´ maximale d’information sur l’ene e tr´e effectivement transmise sur le canal. c’est ` dire la perte d’information sur l’entr´e. on a alors pi|j = p et pi|i = 1−p . d’o` u |V | P (Y = sj ) = i=1 pi · pj|i La capacit´ du canal C(X. p∈¯ p p∈¯ p Les cas extrˆmes correspondent donc ` : e a – H(Y ) = H(Y |X) : si savoir quelle est l’entr´e n’influe pas sur la sortie.4. donc pour une 1 distribution uniforme des probabilit´s d’entr´e pi = |V | . Y = sj ) = i=1 P (X = si ) · P (Y = sj |X = si ) . e – H(Y |X) = 0 : si la sortie peut apporter exactement la mˆme information e que l’entr´e. l’entropie conditione ¯ e nelle H(X|Y ) (voir page 34) repr´sente ce qu’il reste ` d´couvrir de l’entr´e X e a e e quand on connaˆ la sortie Y . le maximum ´tant pris sur toutes les e e |V | distributions d’entr´es (pi ) ∈ p v´rifiant i=1 pi = 1. l’exercice 4. Le maximum e e e est atteint quand les entropies H(X) et H(Y ) sont maximales. ee la probabilit´ p est alors appel´e la probabilit´ d’erreur du canal. e Le calcul de ce maximum est facile dans le cas o` le canal est sym´trique. j |V | avec i = j.2). pour lequel |V | = 2) de probabilit´ e d’erreur p est : CBSC = 1 + p log2 (p) + (1 − p) log2 (1 − p). p∈¯ p ` A l’aide des formules de l’entropie conditionnelle.

4. le th´or`me de Shannon donne une condition a a e e e n´cessaire et suffisante pour r´aliser une transmission sans erreur sur un canal e e de capacit´ C. On peut trouver intuitif le fait de pouvoir transmettre sans erreur sur un canal BSC pour lequel la probabilit´ p de recevoir un bit diff´rent e e de celui ´mis est inf´rieure ` 2 . par exemple. Solution page 316. Par 1 contre. le th´or`me montre e e e e l’existence de codes. e e a 1 Justifier sans utiliser le th´or`me de Shannon que l’on peut alors aussi transe e 1 mettre sans erreur lorsque 2 < p 1. e c e a e Montrer que sa capacit´ est CBSC = 1 + p log2 (p) + (1 − p) log2 (1 − p). . mais avec une contrainte sur son rendement. Il existe au moins un code(n. Solution page 316. on a C = 0. il est possible de faire tendre le rendement vers C en faisant tendre n vers l’infini . Plus g´n´ralement.3. mais pas comment les construire. e c e e – la probabilit´ que le bit re¸u soit ´gal ` l’´mis est 1 − p : p1|1 = p2|2 = 1 − p. Exercice 4. k) permettant de transmettre sans erreur. Soit un canal de cae e e e e pacit´ C. k) de rendement e k e R = n et de probabilit´ d’erreur P < si et seulement si 0 R < C. si p = 2 .224 e Chapitre 4 : D´tection et correction d’erreurs Exercice 4. il existe donc toujours un code(n. Il est donc impossible de transmettre correctement. De plus. Soit > 0 arbitraire. dans le cas d’un canal binaire sym´trique de probabilit´ d’erreur e e 1 p = 2 . 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.1) e e Cette borne ne d´pend pas du taux d’erreurs corrig´es par le code mais de la capacit´ du canal. e Th´or`me 22 (Deuxi`me th´or`me de Shannon). e 1 En d´duire CBSC = 0 si p = 2 mais 0 < CBSC 1 sinon. Par exemple. Ce th´or`me donne une condition n´cessaire sur le nombre minimum r de e e e chiffres de redondance ` ajouter : a r>k 1 −1 . Un canal binaire sym´trique (BSC) de probabilit´ d’erreur p e e est un canal pour lequel |V | = 2 et – la probabilit´ que le bit re¸u soit diff´rent de l’´mis est p : p2|1 = p1|2 = p . e Transmission sans erreur sur un canal de capacit´ fix´e e e Grˆce ` la capacit´ de canal. C (4. e La preuve du th´or`me de Shannon n’est pas constructive . 0 < C 1 .

– d’autre part. Le code est dit aussi s´parable car on peut a e a e extraire directement les symboles d’information s = [s1 . construire des codes qui optimisent le e taux de correction . Les sections suivantes introduisent les principaux codes utilis´s pour une source e binaire. il est e e n´cessaire que le codage et le d´codage puisse ˆtre r´alis´s efficacement. en d´tectant efficacement les erreurs sans les corriger.2) avec les codes d´tecteurs d’erreur CRC . voir la section 4. ces symboles d’information sont mis dans l’ordre aux . Les turbo-codes hybrides par blocs proposent des compromis entre les deux approches. .1). Aussi. On dit qu’un code(n. .codes CRC e e Lorsque le r´cepteur peut demander ` l’´metteur de r´-´mettre l’information e a e ee ` moindre coˆt (ARQ. pour ˆtre pratique. Enfin. c’est le cas en particulier des codes par blocs de Reed-Solomon . e c 4. ces codes apparaissent e dans de tr`s nombreux cas pratiques o` l’´metteur peut r´´mettre un message e u e ee que le r´cepteur a mal re¸u.4).5) permettent d’´tendre ces codes e pour la correction d’erreurs en rafales . Souvent.2 D´tection d’erreurs par parit´ . avec un e e e e e coˆt mat´riel et temporel raisonnable. les codes d´tecteurs contiennent dans chaque mot de code e e les symboles d’information associ´s. . On e s’int´resse donc ` la construction d’un code d´tecteur d’erreurs. ces diff´rents codes sont tous associ´s ` des polynˆmes. e e C’est pourquoi ce th´or`me a motiv´ la recherche de codes efficaces en partie e e culier dans deux directions : – d’une part pour un taux de correction fix´. il suffit de pouvoir coder et d´a u e coder rapidement. . c’est le cas des codes convolutifs et des turbo-codes.2 D´tection d’erreurs par parit´ . Cependant. le chapitre conclut avec les codes convolutifs et les turbo-codes qui sont construits par entrelacement. le code doit v´rifier des propri´t´s u e e ee additionnelles que ne poss`de pas a priori un code al´atoire. De mani`re g´n´rale.3). pour un rendement fix´. construit ` partir d’un code a de Reed-Solomon. e e e e e a o Cette repr´sentation par polynˆme est d’abord introduite dans la section suie o vante (4. sk ] du mot de code c = φ(s).4. e e Les techniques d’entrelacement (section 4. ils sont illustr´s avec l’exemple pratique e du code CIRC pour les disques compacts audio. Apr`s une mod´lisation du probl`me de la correction d’erreurs et e e e la d´finition de la distance d’un code (section 4. construire des codes qui ope timisent le rendement . les codes cycliques par e blocs sont d´finis et illustr´s avec les codes de Reed-Solomon (section 4. k) est syst´matique e e s’il existe k positions telles que la restriction de tout mot de code c = φ(s) ` ces k positions est ´gale ` s. e a e Pour ˆtre efficaces.1.codes CRC e e 225 en choisissant comme code un sous-ensemble de mots choisis al´atoirement e dans V n et de mˆme cardinal que V k .

La g´n´ralisation ` un code e e e a syst´matique sur k autres positions est directe. la clef RIB d’un compte bancaire et le num´ro d’une carte bancaire e en sont d’autres exemples qui sont d´taill´s ici. o` φr u est la restriction de φ aux r derni`res positions. les codes de contrˆle de parit´ sont utilis´s couramment. c0 est le chiffre de parit´ calcul´ comme suit. . . . cette section pr´sente les codes de redondance cyclique (CRC) e utilis´s dans les r´seaux informatiques. ck+1 . On a alors c0 = 10 − (a + 3b) mod 10. . Ce code est e d´riv´ du code am´ricain UPC-A (Universal Product Code) sur 12 chiffres : e e e les barres sont identiques mais un z´ro est ajout´ en tˆte du num´ro UPC-A e e e e (i.1). la d´tection d’erreurs se ram`ne ` e o e e a un contrˆle de parit´ (ou checksum) comme introduit au paragraphe 4. . .2. . EAN. . sk . . Les 12 chiffres de gauche c12 . . e Dans un code syst´matique.e.1 Contrˆle de parit´ sur les entiers : ISBN. Soit a = e e 6 c2i la somme des chiffres de rang pair et b = 6 c2i−1 celle des chiffres i=1 i=1 de rang impair. cn ] = φr ([s1 . . LUHN o e Comme en t´moigne l’exemple du num´ro de S´curit´ Sociale (voir exercice e e e e 4. . . Le code barre graphique code le mˆme num´ro EAN-13 : chaque colonne de e e 2. e e Code barre EAN Le code EAN-13 (European Article Numbering) est un code ` barres utilis´ a e dans l’industrie et le commerce pour identifier de mani`re univoque les produits e ou les unit´s logistiques. Le code ISBN d’identific e cation des livres. . Chaque colonne est divis´e en 7 sous e colonnes de largeur 0. . c13 = 0) pour former le code EAN-13.31 mm code un et un seul chiffre. a Apr`s une pr´sentation de quelques contrˆles de parit´ sur les entiers utilis´s e e o e e dans des domaines de la vie courante qui d´passent largement les t´l´come ee munications. . .33 mm mais le codage EAN-13 impose qu’un ´l´ment ee (un chiffre) soit toujours cod´ par une succession de seulement 4 barres de e .2 On o e associe r symboles de redondance ` chaque mot [s1 . e e 4. sk ]).1. Il est compos´ d’un num´ro sur 13 chiffres c12 − e e e −c11 c10 c9 c8 c7 c6 − −c5 c4 c3 c2 c1 c0 et d’un motif graphique avec des barres noires et blanches verticales pouvant ˆtre lues par un scanner optique. . le pr´dicat f (c) consiste g´n´ralement ` tester si une somme des e e e a chiffres ci du mot re¸u est multiple d’un entier fix´. ck+r ] v´rifie un pr´dicat f (c) (la parit´) e e e avec f facile ` calculer. En effet. Dans ces cas o e e pratiques.226 e Chapitre 4 : D´tection et correction d’erreurs k premi`res positions. Le principe du codage syst´matique est alors de calculer e e les r = n − k symboles de redondance [ck+1 . sk ] source tel que le a mot de code c = [s1 . . . les codes barres d’identification des produits (EAN) et leurs extensions. les symboles de redondance sont appel´s symboles e e de parit´ ou symboles de contrˆle. . c1 identifient le produit . .

66 mm. Exercice 4. Les e repr´sentations sym´triques doivent toujours coder le mˆme chiffre. structur´s en quatre segments A − B − C − D e s´par´s par un tiret. Ce num´ro comporte dix e e e chiffres c10 c9 c8 c7 c6 c5 c4 c3 c2 c1 . 99 mm.1 e ci-dessous. e Code ISBN Le num´ro ISBN (pour International Standard Book Number) est un num´ro e e qui identifie tous les livres ´dit´s dans le monde. d’une bande noire de largeur 2∗0. 33 = 0. soit la lettre X qui repr´sente 10. donc on a e e e aussi 0 → 111 00 1 0 . Une extension du code EAN-13 est le code EAN-128. c1 = i=1 10 mod 11. mais dont l’ensemble a une largeur totale de 7 fois la e largeur ´l´mentaire. grˆce ` un code de Reed-Solomon (dont on donne les a e a a d´tails un peu plus loin dans ce chapitre). Montrer qu’il y a bien 40 choix possibles de 4 barres par colonne. 33 mm. multi-lignes et de petite taille. 11 − i=2 i × ci La norme ISO 2108 en vigueur ` partir du 1 janvier 2007 identifie les livres a par code barre EAN-13 de 13 chiffres : les trois premiers chiffres valent 978.1: Code EAN-128 de la th´orie des codes. Cette e clef c1 est telle que 10 i × ci est un multiple de 11 . 33 mm et d’une bande noire de largeur 0. d’une bande blanche de largeur 0.5. PDF417 (Portable Data File) est un code barre bidimensionnel. Les neuf premiers chiffres A−B −C identifient le livre : A e e identifie la communaut´ linguistique. qui permet de coder non seulement des chiffres mais ´galement des lettres comme sur la figure 4. autrement dit. On peut r´sumer ce codage par 0 → 000 11 0 1. e Le code EAN-13 permet de d´tecter des erreurs mais pas de les corriger.2 D´tection d’erreurs par parit´ . 0 → 1 0 11 000 et 0 → 0 1 00 111. Fig. Solution page 316. par exemple. Cere tains codes barres graphiques permettent non seulement de d´tecter mais aussi e de corriger des erreurs . La clef de contrˆle D = c1 est un symbole de parit´ e o e qui est soit un chiffre entre 0 et 9.codes CRC e e 227 largeurs diff´rentes. 4. Par exemple le 0 est cod´ par la succession d’une bande ee e blanche de largeur 3∗0. . B le num´ro de l’´diteur et C le num´ro e e e e d’ouvrage chez l’´diteur. qui permet de coder jusqu’` 2725 caract`res. 33 = 0.4.

u = [10110] est repr´sent´ par le polye e i=0 4 + X 2 + X. Les 4 premiers de ces 7 e e a a chiffres ne sont autres que les 4 derniers chiffres du num´ro de carte. appel´s CRC (Cyclic Redundancy Check). C. les 4 chiffres e mm/aa de sa date d’expiration. que l’on convertit en une e e s´quence SN de 11 chiffres en rempla¸ant les lettres ´ventuelles cycliquement e c e comme suit : A et J en 1 .R. Carte bancaire : LUHN-10 Le num´ro ` 16 chiffres c15 c14 c13 c12 – c11 c10 c9 c8 – c7 c6 c5 c4 – c3 c2 c1 c0 d’une e a carte bancaire est un mot de code de LUHN 10. U en 4 . 1}m est repr´sent´ par un polynˆme Pu (X) = e e o m−1 ui X i de F2 [X]. est cod´ par le mot de code binaire e o e i=0 . a SN et R forment un nombre n de 23 chiffres multiple de 97. un mot bie e e naire u = [um−1 . outre N . Tous ces chiffres sont additionn´s et somm´s e a e e aux autres chiffres d’indice pair.2 Codes de redondance cyclique (CRC) Les codes de redondance cyclique. R = 97 − ([BGSN ] × 100) mod 97.2. V en 5 . Par exemple.Z en 9. N est compos´ de 11 alphanum´riques. Enfin la clef RIB R est un nombre de deux chiffres qui est tel que. mis bout ` bout.Q. s0 ] i=0 gi X associ´ au polynˆme Ps (X) = k−1 si X i . H. Le mot source binaire s = [s Pg (X) = X 2 k−1 . . Compl´ter la s´quence 210-050e e 692 pour obtenir un num´ro ISBN correct. G.P. La somme finale doit ˆtre un multiple de 10. nˆme Pu = X o Un code CRC est caract´ris´ par un polynˆme g´n´rateur Pg de degr´ r : e e o e e e r−1 r + i dans F [X]. B. .L.K.N. e En plus du num´ro N de carte ` 16 chiffres. G. e sont tr`s utilis´s dans les r´seaux informatiques. on multiplie les chiffres d’indice impair par 2 et on soustrait 9 si le e nombre obtenu est sup´rieur ` 9. 4.W en 6 . Dans ces codes. B. Pour v´rifier la validit´ du e e num´ro. Autrement dit. D. e e B et G sont des nombres de 5 chiffres qui identifient respectivement la banque et le guichet. T en 3 . Exercice 4. Quel est son code barre EAN-13 e associ´ ? e Solution page 317. o Cl´ RIB e Un num´ro RIB de compte bancaire B − G − N − R comporte 23 caract`res. la validit´ d’une carte peut ˆtre e a e e v´rifi´e ` partir des 7 chiffres qui figurent ` son dos. F. S en 2 . Les 3 e derniers sont le r´sultat d’un calcul qui fait intervenir. u0 ] ∈ {0.M.X en 7 . E.Y en 8 . . I.O.6 (Codes ISBN et EAN-13). .228 e Chapitre 4 : D´tection et correction d’erreurs les 9 suivants sont les 9 premiers chiffres du code ISBN (ABC) et le dernier est le chiffre de contrˆle EAN-13.

c0 ] = [sk−1 . Sinon. Cette op´ration peut ˆtre faite en temps O(n log n) par un algorithme e e bas´ sur le produit de polynˆmes par DFT (section 1. si R(X) = 0. il faut et il suffit que tout polynˆme de degr´ au plus n − 1 o e et ayant au plus j monˆmes ne soit pas multiple de Pg . . a e e D´codage CRC e Pour le d´codage. c0 ]. . section 1. le polynˆme Pc (X) = n−1 ci X i e o i=0 v´rifie donc e Pc = Ps . De o e plus. le polynˆme Pc est donc un multiple de Pg . . o e e L’erreur est d´tect´e si et seulement si Pe n’est pas un multiple de Pg . lui aussi bas´ sur une division euclidienne de polynˆmes.4.4.2).codes CRC e e 229 c = [cn−1 . La multiplication de Ps par X r se traduisant par un d´calage de bits. Si ce reste est nul. pour qu’un code CRC d´tecte toute erreur portant e e sur au plus j bits. c0 ] o` [cr−1 . ou mˆme en O(n) e o e avec l’algorithme standard de division de polynˆme dans le cas pratique o` o u le polynˆme a un petit nombre de coefficients non nuls (O(1) en th´orie).X r mod Pg ). . R´ciproquement.X r −(Ps . il suffit de calculer le reste R(X) du polynˆme e o Pc par le polynˆme Pg .X r e mod Pg ) .2 D´tection d’erreurs par parit´ . o . le mot u = [10110] o e e est cod´ en ajoutant les bits de redondance du polynˆme (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]. e Codage CRC Le codage se ram`ne donc ` impl´menter le calcul du reste d’une division euclie a e dienne. il y a eu erreur lors de la e transmission.3. le mot re¸u est un mot de code et o c l’on ne d´tecte pas d’erreurs. . . Nombre d’erreurs de bit d´tect´es e e Supposons qu’il y a une erreur dans la transmission. Les coefficients du polynˆme Pe = Pc −Pc valent 0 sur les bits non erron´s et 1 aux bits de c modifi´s. s0 cr−1 . . e e On en d´duit que si un des multiples de degr´ au plus n − 1 de Pg poss`de j e e e monˆmes. c0 ] est la repr´sentation du u e reste de la division euclidienne de X r . A e e o la r´ception de c = [cn−1 . .6). Le mot cod´ est donc φ(u) = [1011010].X r + (Ps . alors le code CRC g´n´r´ par g ne peut d´tecter qu’au plus j − 1 o e ee e erreurs. Cette propri´t´ permet o ee ` un d´codage rapide. . . on remarque que dans F2 [X] on a aussi Pc = Ps . Exemple : Avec le polynˆme g´n´rateur Pg = X 2 + 1.Ps par Pg . l’impl´mentation mat´rielle de l’algorithme standard est tr`s efficace en e e e utilisant des registres ` d´calage lin´aire (LFSR.

e e r−1 i i=1 gi X +1 Preuve. ils sont choisis aussi pour l’efficacit´ du codage et d´codage. o e e alors toute erreur portant sur un nombre impair de bits est d´tect´e. e e e e La table 4. Une s´quence d’erreurs portant sur au plus r − 1 bits cons´cutifs e e e commen¸ant au ii`me bit du mot est associ´e ` un polynˆme Pe = X i Q avec Q c e a o de degr´ inf´rieur strictement ` r . o Solution page 317. on en d´duit que Pe n’est pas multiple de Pg e donc l’erreur est bien d´tect´e. Pg est premier avec X . Exemples de codes CRC Les codes CRC sont tr`s utilis´s dans les r´seaux.8 (D´tection d’un nombre impair d’erreurs). Montrer que si le polynˆme e o g´n´rateur d’un code CRC admet un facteur irr´ductible de degr´ d. Propri´t´ 12. Q n’est donc pas multiple de Pg . ne peut pas ˆtre d´tect´e.4 donne quelques exemples normalis´s .1 Distance d’un code Code correcteur et distance de Hamming Un code (n. elle justifie l’utilisation des codes CRC dans ee les cas o` les erreurs peuvent affecter quelques bits cons´cutifs. e 4. e a e e e On en d´duit que le nombre d’erreurs de bit d´tect´es est au plus ω(Pg ) o` e e e u ω(Pg ) est le nombre de coefficients non nuls de Pg .3 4. Exercice 4. l’erreur Pe ´gale ` Pg . t-correcteur) s’il permet de d´tecter e e (resp. Et comme e e a g0 = 1. Montrer que e si la somme des coefficients du polynˆme g´n´rateur d’un code CRC est nulle.3. e e Solution page 317. k) est dit t-d´tecteur (resp. alors il e e e e d´tecte tout paquet d’erreurs (c’est-`-dire des erreurs cons´cutives) portant sur e a e au plus d − 1 bits.7 (Condition de d´tection d’une erreur). Solution page 317.9 (D´tection de deux erreurs). u e Exercice 4. Montrer qu’une e condition n´cessaire et suffisante pour qu’un code CRC d´tecte toute erreur e e portant sur un unique bit est que son polynˆme g´n´rateur admette au moins o e e deux monˆmes.230 e Chapitre 4 : D´tection et correction d’erreurs Par ailleurs. Exercice 4. corriger) toute erreur portant sur t chiffres ou moins lors de la transmission d’un mot de code de n chiffres. la normalisation concerne e non seulement la valeur du polynˆme mais aussi les algorithmes de codage et o d´codage. . ou multiple de Pg . e e P Cette propri´t´ est importante . Outre leurs bonnes propri´t´s e e e ee ´nonc´es ci-dessus. Un code CRC de g´n´rateur Pg (X) = X r + e e e e d´tecte toute erreur portant sur r − 1 bits cons´cutifs ou moins.

.3 Distance d’un code Tab. 4.4: Exemples de codes CRC. 4.231 e e G´n´rateur X3 + X + 1 X8 + X4 + X3 + X2 + 1 X8 + X7 + X4 + X3 + X + 1 X 16 + X 12 + X 5 + 1 Factorisation e irr´ductible irr´ductible e Nom TCH/FS -HS-EFS GSM TCH/EFS CRC-8 CRC-16 X25-CCITT CRC-24 Exemples d’utilisation 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 g´n´ration e e e Protocole X25-CCITT .3. ATM AAL5. messages OpenPGP (RFC-2440) GSM 3`me g´n´ration 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 irr´ductible e IEEE-802. contrˆle d’int´grit´ des o e e fichiers ZIP et RAR . contrˆle trames o PPP FCS-16 (RFC-1662) communications UHF et satellites (SATCOM) . trames PPP FCS-32 (RFC-1662) .

c ee – pour pouvoir faire une correction (c’est-`-dire retrouver m ` partir de m ). Dans le cas o` V est binaire (V = {0. . e Solution page 317. . Il est 1-d´tecteur et e e 0-correcteur avec un rendement de 87.e. suppos´ diff´rent de m (dH (m. Montrer que dH ainsi d´finie est une distance sur V n . Soit C un code de longueur n.625%. e e On peut alors obtenir une notion de distance. Dans toute la suite on consid`re un code de longueur n .7). . xn ) ∈ ee V n . c) t}| 1. m ) > dH (m. La distance de Hamming permet de caract´riser le nombre d’erreurs que peut e corriger un code C de longueur n. Montrer que si V est binaire. 1}).21). . n}/xi = 0}|. les mots de code sont e donc des ´l´ments de V n . ee Propri´t´ 13. Le poids de Hamming a w satisfait alors l’in´galit´ triangulaire : w(x ⊕ y) w(x) + w(y). . On appelle poids de Hamming de x = (x1 . m ) > 0) : e c e e – pour que C puisse d´tecter une erreur. .232 e Chapitre 4 : D´tection et correction d’erreurs Exemples : – L’ajout d’un bit pour contrˆler la parit´ des 7 bits qui le pr´c`dent est o e e e un code syst´matique par bloc. Remarque 2. qui est le nombre de composantes pour lesquelles x et e y diff`rent. C est t-correcteur si e e pour tout x ∈ V n . . e dH (x. not´e dH (x. si x = m alors dH (x. soit pour tout x ∈ C. dH (x. le nombre de composantes non nulles de x : e w(x) = |{i ∈ {1.10. y) = |{i ∈ {1. on note x ⊕ y le u ou-exclusif bit ` bit (ou addition) de deux mots x et y. Exercice 4. y). . la distance de Hamming entre x et y. e e le mot re¸u est un mot de C donc consid´r´ comme correct). . i. 1. n}/xi = yi }|. C’est un code (8. il est n´cessaire que m ∈ C (sinon. Il est 1-correcteur avec un rendement o de 65. not´ w(x). y) = w(x ⊕ y). . |{c ∈ C/dH (x. . . – Le contrˆle de parit´ longitudinale et transversale sur 21 bits (avec ajout de o e 11 bits de contrˆle) est un code (32. soit m ∈ C un mot de n chiffres ´mis et soit m le mot re¸u. m ) . En effet. a a il faut que m soit l’unique mot de C le plus proche de m . C’est ce que traduit la propri´t´ suivante.5%. 2. .

c) t}| 1 . c1 ) = d/2 t et donc x ∈ Bt (c1 ). (iv) δ(C) 2t + 1. tel que e |{c ∈ C/dH (x. c2 ∈ C. c2 ) . Supposons qu’il existe x ∈ V n .c1 =c2 min dH (c1 . . Alors dH (x. Lors de la r´ception de m . (ii) =⇒ (iii) : par l’absurde. Il existe alors c1 = c2 tels que dH (x. id avec d 2t les indices o` les chiffres de c1 et c2 diff`rent.c2 ∈C . dH (x. c1 = c2 =⇒ Bt (c1 ) ∩ Bt (c2 ) = ∅ . .. c2 ) 2t . Dans quelle cas la r´ciproque est-elle vraie ? e Solution page 317. c1 ) dH (x. c2 ) = d − (d/2) t et donc x ∈ Bt (c2 ). (4. D’apr`s (i).4. et toutes impliquent par cons´quent que C est t-correcteur : e e (i) Pour tout x ∈ V n . c1 = c2 =⇒ dH (c1 . La capacit´ de correction d’un code C est donc li´e ` la distance minimale e e a entre deux ´l´ments de C.11. Si dH (c1 . c) t}| 2. v´rifie l’in´galit´ triangue e e laire. (iii) =⇒ (iv) : imm´diat.3 Distance d’un code 233 Remarque 3. e (iv) =⇒ (i) : par la contrapos´e. La correction d’une erreur peut aussi ˆtre d´crite en consid´e e e rant les boules Bt (c) de centre c ∈ C et de rayon t : Bt (c) = {x ∈ V n /dH (c.2) La propri´t´ 13 et la remarque 3 sont ` la base du th´or`me suivant qui ee a e e caract´rise un code t-correcteur. Preuve. dH (c1 . .m ) (m ) ∩ C = {m} . c2 ) 2t. cela n’est possible que pour au e plus un mot de code . . x) + dH (x. (iii) Pour tout c1 . Donc δ(C) 2t. |{c ∈ C/dH (x. est d´finie par : e e δ(C) = c1 . D’o` x ∈ Bt (c1 ) ∩ Bt (c2 ) e u ce qui contredit (ii). c2 ) > 2t . (i) =⇒ (ii) : Supposons qu’il existe x ∈ Bt (c1 ) ∩ Bt (c2 ) . (ii) Pour tout c1 . distance de Hamming. not´e δ(C). ainsi c1 et c2 sont ` une distance a t de x. on peut corriger m en m si on a : e BdH (m. Soit C un code de longueur n. . Montrer que si C est t-correcteur alors C est s-d´tecteur avec e s 2t. donc c1 = c2 . . Les propri´t´s suivantes sont e e ee ´quivalentes. ee La distance minimaledu code C. Soit x le mot de V n dont les u e chiffres sont les mˆmes que ceux de c1 sauf les chiffres en position i1 .. De e a mˆme. c2 ) t.. P Exercice 4. e Th´or`me 23. x) t} . c2 ) dH (c1 . Et comme dH . c2 ∈ C. soient i1 . id/2 e qui sont ´gaux ` ceux de c2 .

3. On consid`re un code C de r´p´tition pure sur V = {0. . xπ(n) . Combien d’erreurs peuvent ˆtre corrig´es ? Ecrire l’algorithme de d´codage e e e pour corriger un nombre maximal d’erreurs. on a dH (x1 x2 . 4. e e 3. xn .12. yπ(n) ) . n} des positions . yn ) = dH (xπ(1) xπ(2) . . compl´mentaire ` son rendee e a ment. 1. k) o` chaque groupe de k bits est simplement r´p´t´ a u e ee m fois. 1}. e ´ 5. . 0000011111. de nome breuses m´thodes permettent de modifier un code pour en construire un autre e avec des propri´t´s diff´rentes. Solution page 318. xn et y1 y2 . Ecrire une proc´dure qui calcule le taux de d´tection e e et de correction du code . e ee e e e ´ 4. . . L’algorithme est-il efficace ? Application : Soit le code binaire C = {0000000000. . yπ(1) yπ(2) . e e e c’est ` dire un code (mk. c’est une caract´ristique importante. . ´tendus et raccourcis e e Comme c’est la distance qui caract´rise le nombre d’erreurs que peut corriger e un code. Quelle est la distance minimale entre deux mots de code ? 2.234 e Chapitre 4 : D´tection et correction d’erreurs Exercice 4.13 (Calcul na¨ de la distance d’un code). Que valent n et k pour ce code ? Calculer son rendement. Afin de r´aliser des compromis entre rendement et distance.2 Codes ´quivalents. . Quel est son rendement ? On consid`re un code de r´p´tition (n = 5k. Soit C un code ıf ´ (n. 1111100000. yn deux mots d’un code : – soit π une permutation de {1. . k) sur un alphabet V . a Solution page 318. . Combien d’erreurs peuvent ˆtre d´tect´es ? Ecrire l’algorithme de d´codage e e e e pour d´tecter un nombre maximal d’erreurs mais n’en corriger aucune. . . son taux de d´tection e et de correction. Proposer un code de r´p´tition qui soit 2-correcteur. ee e Codes ´quivalents e Soient x1 x2 . k) et on d´sire ´crire une proc´e e e e e e dure de d´codage qui retourne en sortie le mot d´cod´ s et un bool´en e qui e e e e vaut vrai si s peut ˆtre consid´r´ comme correct (pas d’erreurs ou des erreurs e e e corrig´es) et faux sinon (des erreurs ont ´t´ d´tect´es mais pas corrig´es). Exercice 4. Combien d’erreurs sont d´tece t´es mais non corrig´es ? e e ´ 6. donner la complexit´ de l’algorithme en fonction de e k et n. 1111111111}. . y1 y2 . . . Ecrire l’algorithme de d´codage pour corriger une seule erreur mais en d´e e tecter jusqu’` 3. . .

.n des valeurs des symboles. n} une position. e n+1 C = c1 c2 . Par exemple. e e e Par exemple pour un code binaire. xn . . .14 (Extension de code). deux codes sont dits ´quivalents e si l’un peut ˆtre obtenu ` partir de l’autre par permutation π des positions et e a par permutations (πi )i=1. Code raccourci Soit C un code de longueur n et de distance d et soient s ∈ V un symbole et i ∈ {1. k) de distance d . . 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. le poin¸onnage consiste ` supprimer dans c a le code C tous les symboles ` m positions fix´es. e Solution page 320. on appelle code ´tendu C de C le code (n+1. Deux codes ´quivalents ont le mˆme rendement et la mˆme e e e e e distance. Montrer que la distance du code ´tendu C est d + 1. . Code poin¸onn´ c e Soit C un code (n. i=1 ci = 0 . . il est donc de longueur n − 1 et sa distance d v´rifie d e d. .3 Distance d’un code 235 – soient (πi )i=1.4. donc les mˆmes taux de d´tection et correction.n n permutations des symboles de V (potentiellement distinctes). ni l’ordre choisi des symboles dans V ni celui des positions dans les mots de code ne modifient la distance. si une op´ration o e e d’addition est d´finie sur V . Le code C obtenu est dit a e code poin¸onn´ de C . Soit C est un code binaire de distance d impaire. . . . Par suite. la distance d du code v´rifie alors d c e e d − m. La distance d du code ´tendu v´rifie trivialement d e e Exercice 4. cn cn+1 | c1 c2 . Deux codes ´quivalents e ont la mˆme distance. . d d + 1.. yn ) = dH (π1 (x1 ) .... k) obtenu e en ajoutant un chiffre de contrˆle de parit´. y1 . Le code C obtenu est dit code raccourci . . ... . cn ∈ C.. πn (yn )). on obtient un code ´quivalent. . Code ´tendu e Soit C un code (n. 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. . . π1 (y1 ) . e Propri´t´ 14. πn (xn ). on a ´galement : e dH (x1 . Aussi.. k) .

Un e e ee code t-parfait est un code t-correcteur dans lequel toute erreur d´tect´e est e e corrig´e. (b0 + b1 ). Donner une configuration comportant 2 erreurs non corrigibles.16 (Code de parit´ transversale et longitudinale(9.4) lorsque toute erreur d´tect´e u e e est corrig´e. 0110. de cardinal M et de distance d.3 Code parfait Un code t-correcteur permet de corriger toute erreur e de poids w(e) t . de cardinal M + 2 et de distance 1. Exercice 4. Soit C un code de longueur n. a d’o` le th´or`me suivant. Le code C raccourci obtenu avec le symbole 0 en position 1 est C = {000. (b0 + b2 ). . Ce paragraphe ´tudie quelques propri´t´s des codes parfaits.4)). (b0 + b1 + b2 + b3 )] . 1. 0011. 2. De plus. u e e . e e 4.2. On obtient ainsi C= { 000000000. 000101011.4) o e suivant : le mot de code associ´ ` la source b0 b1 b2 b3 est : ea [b0 . raccourcir un code permet d’augmenter le rendement sans diminuer la distance. les boules de rayon t et de centre les mots de C sont deux ` deux disjointes . Solution page 320. cette op´ration est fr´quemment utilis´e dans la construction de codes e e e ou comme outil de preuve. Quelles sont les caract´ristiques du code poin¸onn´ de C ` la premi`re e c e a e position ? 5.. Si C est t-parfait. 001100110. e e e e e On dit qu’un code est parfait (` ne pas confondre avec les chiffrements parfaits a ou inconditionnellement sˆrs de la section 1. Montrer que C est le raccourci d’un code de longueur n+1. mais il peut subsister des erreurs d´tect´es non corrig´es (voir exercice pr´c´dent). lorsqu’on re¸oit un mot m ∈ C.236 e Chapitre 4 : D´tection et correction d’erreurs Exemple : Le code binaire C = {0000.15 (Code raccourci). e Aussi. Le e contrˆle de parit´ transversale et longitudinale sur 4 bits conduit au code (9. 001001101. Montrer que C est 3-d´tecteur mais pas 4-d´tecteur.3. voire mˆme en l’augmentant comme le montre l’exemple ci-dessus. 1110} est de longueur 4 et de distance 1. Montrer que C est exactement 1-correcteur. il est de longueur 3 et de distance 2. comme C est t-correcteur. m ) t. Quelles sont les caract´ristiques du code raccourci de C ` la premi`re e a e position ? Solution page 320. 1010. b1 . Ainsi. }. alors il existe un e c unique mot m de C tel que d(m. (b1 + b3 ).. b2 . 4. Exercice 4. (b2 + b3 ). 3. b3 . 110. 011} .

(4. S’il y a ´galit´. Alors e e 1 2 t 1 + Cn (|V | − 1) + Cn (|V | − 1)2 + · · · + Cn (|V | − 1)t |V |n−k . c∈C ´ Evidemment. on a : des boules deux ` deux disjointes dont l’union est incluse dans V a 1 2 t |V |k 1 + Cn (|V | − 1) + Cn (|V | − 1)2 + · · · + Cn (|V | − 1)t |V |n . Donc |V | leur union est ´gale ` V n et le code est parfait. . k) un code t-correcteur sur V . .4. Solution page 321. le poids de Hamming binaire de x est 2 alors donn´ par w(x) = |{i ∈ {1.4 Codes de Hamming binaires Les codes de Hamming binaires (1950) sont des codes 1-correcteur ` redona dance minimale. les boules sont disjointes. en fonction du cardinal de V .3 Distance d’un code 237 Th´or`me 24. 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 . on a alors les propri´t´s suivantes. l’addition et la soustraction sont identiques (0 = −0 et 1 = −1) . d’o` la premi`re in´galit´. Le th´or`me suivant donne des conditions e e n´cessaires pour l’existence de codes t-correcteurs et t-parfaits. Le code C (n. une telle partition n’est possible que pour certaines valeurs de n et k. En effet. Montrer que s’il existe un code 1-correcteur avec 3 bits de redondance. n}/xi = 0}| = n xi . Bt (c) = V n . . alors C(n.e. Montrer que tout code binaire 1-correcteur sur des mots de k = 4 bits requiert au moins 3 bits de redondance. e i=1 Or. comme le code est t-correcteur. Soit C(n.3.3) Si de plus il y a ´galit´. . e e Preuve. alors le cardinal de l’union est ´gal ` u e e e e e e a n . le cardinal e a d’une 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 . ee . La preuve repose sur le calcul du cardinal de c∈C Bt (c). e a P Exercice 4. k) poss`de exactement |V |k ´l´ments de V n associ´es ` e ee e a n . alors il est parfait. soit x ∈ Fn . Comme un code C(n. dans F2 . 4. les boules ´tant 2 ` 2 disjointes dans le cas d’un code t-correcteur. En effet.17. k) est t-parfait. e Th´or`me 25. de plus. i.

1}n du code de Hamming binaire est tel que les bits ci dont l’indice i est une puissance de 2 (2l avec l = 0. . y) = w(x + y) = w(x) + w(y) − 2w(x ∧ y). e . – dH (x. Un mot c = c1 . puis 4. Existe-t-il un code 1-parfait de longueur n = 2m o` m ∈ N ? u Solution page 321. e dont l’indice j ´crit en base 2 a le (l + 1) e a a Par exemple. autrement dit. En d´duire une borne sur le rendement maximal d’un code 1-correcteur e dont le nombre de bits de contrˆle est 3. c6 . n − log2 n − 1). Montrer que k 2r − r − 1. puis 6. l’in´galit´ (4. s1 . puis 5. Connaissant k. . dans un code (7. c5 . Description d’un codage pour le code de Hamming binaire (n. ce sont des codes (n.4) (qui s’´crit 2r n + 1) permet de d´terminer e e e e le nombre minimal de bits de contrˆle ` ajouter pour obtenir un code 1o a correcteur. 1. si n + 1 est une puissance de 2. s2 . Le bit de o e contrˆle d’indice i = 2l est la somme modulo 2 de tous les bits de donn´es cj o e i`me bit (` partir de la gauche) ` 1. 4) de Hamming. . . k) 1-correcteur. c2 . Soit un code binaire (n. . (4. le nombre de bits de contrˆle e o est log2 n + 1 (soit. n − log2 n − 1).238 e Chapitre 4 : D´tection et correction d’erreurs Propri´t´ 15. Les codes de Hamming binaires sont donc des codes syst´matiques e qui atteignent cette limite th´orique : pour n bits. cn ∈ {0. Soient x et y deux ´l´ments quelconques de Fn et ∧ l’op´rateur e e ee e 2 ET bit ` bit : a – w(x) = dH (x. Ce sont donc des codes parfaits pour n = 2r − 1) . s3 ] correspond le mot de code [c1 .18.4) 2. 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. c4 . c3 . Exercice 4. 0) . au message source [s0 . log2 (n + 1)).) sont des bits de contrˆle et les autres sont des bits de donn´es. o 3. 1.

Quel est son rendement ? 2. n − log2 n − 1) est un code 1-correce e teur qui requiert un nombre de bits de contrˆle minimal parmi tous les codes o (n. Il suffit donc d’exhiber deux mots distants de 3 : pour n’importe quel mot. o e P Exemple de correction avec le code(7. seuls les deux premiers bits de e contrˆle sont modifi´s. .11) de distance 3. Exercice 4. e e Preuve. le contrˆle de parit´ est o e fait de la fa¸on suivante. en changeant uniquement le premier bit de donn´e (c3 ).4. c o e e une erreur est d´tect´e si l’un de ces bits est erron´ (parit´ erron´e). elle provient alors du bit e. 3. supposons que l’on re¸oive le mot 1111101. Que se passe-t-il en cas de 2 erreurs ? Solution page 322. Le mot corrig´ est alors 1111111 qui correspond e au mot source 1111. 2m − 1 − m) est un code 1-parfait.4) binaire de Hamming. 4) e e d´fini 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. la correction d’une erreur unique est alors r´alis´e en moe e e difiant le bit d’indice 4+2=6. le code de Hamming (2m − 1. e 1. Tous les bits de contrˆle d’indice i = 2l sont v´rifi´s . Le code de Hamming (n. En reprenant l’exemple pr´c´dent. Soit alors e e e e e e la somme des indices des bits de contrˆle i qui sont erron´s.11 (F2 ) que u e l’on explicitera.19. V´rifier que le code de Hamming(15.11) est ´quivalent au code C(15. 4. Donner un algorithme qui d´tecte jusqu’` 2 erreurs. e a 5. La distance d’un code de Hamming est 3. Donner l’algorithme de codage. Donner un algorithme qui corrige 1 erreur.3 Distance d’un code 239 Pour assurer la correction dans un code de Hamming. Le e e c message source devrait ˆtre 1101 mais le contrˆle de parit´ indique que les bits e o e 2 et 4 sont erron´s . k) qui sont 1-correcteur. Si il y a une o e seule erreur. La preuve d´coule directement des propri´t´s ci-dessus et nous avons en outre e ee imm´diatement la propri´t´ suivante : e ee Propri´t´ 16. On consid`re le code de Hamming (15. En particulier. Le code est 1-correcteur donc δ(C) 2t + 1 = 3. Th´or`me 26.

est utilis´ pour d´tecter des perturbations importantes. On dit que C est un code lin´aire de longueur n e et de dimension k lorsque C est un sous-espace vectoriel de Fn de dimension k. e e Le code final est donc un code binaire 1-correcteur de param`tres (136.1 Codes lin´aires et codes cycliques e Codes lin´aires et redondance minimale e Nous avons vu qu’un code correcteur (n. voir les rappels math´matiques au chapitre 1). i. les d´veloppements des codes cycliques et notamment la mise au e point de proc´dures de codage et de d´codage particuli`rement efficaces ont e e e motiv´ l’int´gration de ces codes correcteurs dans de nombreuses applications e e o` le taux d’erreurs est important et donc la capacit´ de correction critique. e e e Remarque 4. φ :V on se restreint au cas o` φ est lin´aire. aussi. Pour pouvoir ´tudier ce cas. il faut que e V k et V n puissent ˆtre munis d’une structure vectorielle. donc que V puisse e ˆtre muni d’une structure de corps F (avec les restrictions d´j` mentionn´es e ea e sur le cardinal de V . Parce que les mots de code sont souvent repr´sent´s sous forme e e de vecteurs lignes.4. k) sur F. on a choisi de repr´senter φ par une matrice rectangulaire e dans laquelle les vecteurs g´n´rateurs de Im(φ) sont les lignes. Cette restriction offre des avantages u e en termes de temps de calcul : le codage et d´codage seront effectu´s assez e e rapidement. k) sur F est un code lin´aire si et seulement s’il existe e une application lin´aire φ : Fk −→ Fn telle que φ(Fk ) = C. Un 16`me octet contient 8 bits de contrˆle qui permet de localiser un e o bit d’erreur parmi les 128. k) est caract´ris´ par une application e e k → V n . dit de validation et ne e contenant que des 0. u e Les paragraphes suivants montrent quelques-uns de ces codes utilis´s par exeme ple pour la lecture de disques compacts et pour la transmission d’images par satellites. Soit C un code (n. e Cependant. Le Minitel par exemple utilise un code de Hamming (128. e Pour une base du sous-espace vectoriel C fix´e. l’application lin´aire φ est e e caract´ris´e par la donn´e de sa matrice G de dimension k × n ` coefficients e e e a dans F.120). il y a autant de matrices g´n´ratrices qu’il y a e e e e . Dans toute e la suite. L’analyse de φ dans un contexte quelconque est difficile . 120 c e bits . e e Pour un mˆme code lin´aire C. un codage de Hamming u peut ˆtre utilis´. un code C(n.4 4. En outre un 17`me octet.e.120) e e qui est 1-correcteur : le message est tron¸onn´ en blocs de 15 octets. Puisque deux espaces vectoriels de mˆme dimension sur un mˆme corps sont e e isomorphes. on consid`re indiff´remment l’alphabet V et le corps fini F de mˆme e e e cardinal. Une telle matrice G est appel´e matrice g´n´ratrice du code C. 4.240 e Chapitre 4 : D´tection et correction d’erreurs Pour les applications o` le taux d’erreurs est faible. en temps polynomial en n.

Th´or`me 27. Soit C un code (n. c = c1 − c2 appartient ` a C . d−1 2 . Le code C est alors dit code Preuve. la matrice G = A · G est une matrice g´n´ratrice de C. Soit C un code lin´aire d´fini par l’application lin´aire φ. Donc 0 ∈ C (0 est le vecteur dont les n composantes sont nulles). δ(C) d(c. c2 ) e ee = w(c1 − c2 ).G/y ∈ Preuve. e e t .4 Codes lin´aires et codes cycliques e 241 de choix possibles d’une base de C. u pour tout c ∈ C.c=0 w(c). δ(C) minc∈C w(c). Comme φ est lin´aire. rang(φ) = k. Im(G ) = {x Fk } = C . i. k) lin´aire est major´e par : e e d n − k + 1. 0) = w(c). Comme φ e e e est injective. P Exemple : Consid´rons le code (4. si G est une matrice g´n´ratrice de e e C. alors pour toute matrice carr´e inversible A d’ordre k et ` ´l´ments dans e a ee F. Finalement δ(C) = minc∈C w(c).A · G/x ∈ Fk } = {y t . x . R´ciproquement.e. u . x ] est alors bt = [b . Mieux. d). b ] d´fini associ´ au mot d’information 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 lin´aire sur F2 de matrice g´n´ratrice : e e e   1 0 0 1 G =  0 1 0 1 . D’o` dim(C) = dim(Im(φ))=k. D’o`. P Th´or`me 28 (Borne de Singleton). -correcteur. 3) de parit´ sur F2 . k) lin´aire et soit d = minc∈C e e e Alors δ(C) = d.G/y ∈ Im((A)t )} = {y t . puis δ(C) minc∈C w(c). soient c1 et c2 deux ´l´ments de C tels que δ(C) = d(c1 .4. Preuve. Comme C est un sous-espace vectoriel. k. C = Im(φ) est un sous-espace vectoriel de e Fn . La distance minimale d d’un code e e (n. Le mot de code e e t = [x . C est (d − 1)-d´tecteur et e (n. 0 0 1 1 On a alors bt = xt G . b . b .

Soit C un code lin´aire MDS (n. k) = (3. Soit e e e C le code poin¸onn´Code !poin¸onn´ de C obtenu en supprimant u positions c e c e dans les mots de code. nous avons vu qu’il ´tait parfait et e qu’il n’existait pas de code binaire de distance 3 avec moins de chiffres de redondance lorsque n n’est pas une puissance de 2. Solution page 322. k) et G une matrice g´n´ratrice. e e Plus g´n´ralement. k) car la sous-matrice e G obtenue en supprimant les colonnes de G aux u positions est g´n´ratrice e e de C . . 1). Comme C est e e a MDS. Th´or`me 29. Donc. d’o` d u (n − u) − k + 1. d = n − k + 1 . 0  1 (4. Il existe donc un ´l´ment non nul a dans C ∩ E. Un code qui atteint cette borne d = r + 1 est dit MDS (maximum distance separable). ee w(a) n − k + 1 . C (n − u. 4. k) atteint la borne de Singleton n − u − k + 1 et est donc MDS. c’est un code lin´aire (7. comme a ∈ C.20 (Un code MDS est syst´matique). e e c e Preuve.5) Sa distance ´tant 3. a e Exercice 4. Montrer que tout code raccourci d’un code MDS est MDS. Montrer que pour g´n´ratrice d’un code MDS et φ(x) = x e e e tout mot de code c = φ(x). Bien que de distance 3.242 e Chapitre 4 : D´tection et correction d’erreurs Consid´rons 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. il n’atteint pas la borne de Singleton car d = 3 < 2+ log2 n sauf dans le cas (n. Comme a ∈ E. e Ainsi. E et C sont deux sous-espaces vectoriels de Fn et dim(C) + dim(E) = n + 1 > n. Soit G la matrice e t G le codage associ´. le code de Hamming binaire de longueur n est un code e e (n.21. 4) est un code lin´aire qui e 0 1 1 1 0 1 0 0 0 0 1 0  0 0  . 3). P La borne de Singleton impose donc ` un code(n. Pourtant. P Exercice 4. 3) (nous avons vu qu’un tel code est 1-correcteur). De plus C est de distance d sup´rieure ou ´gale ` d − u. Le code C est lin´aire (n − u. n − 1 − log2 n . il est possible de reconstruire x de mani`re unique e ` partir de la donn´e de k coefficients quelconques de c. Tout code poin¸onn´ d’un code MDS est MDS. k) lin´aire de distance d a e d’avoir au moins r d − 1 chiffres de redondance. Exemple : Le code de Hamming admet comme matrice g´n´ratrice : e e  1 1 1  1 0 0 G=  0 1 0 1 1 0 binaire (7. Solution page 323. δ(C) w(a) n − k + 1.

pour chaque mot re¸u. u. On construit alors G = L−1 G. D’o`. xt (T1 − T2 )] e est aussi dans C. Tout code lin´aire poss`de une matrice g´n´ratrice normalis´e. peut ˆtre tr`s long. soit [Ik |T1 ] et [Ik |T2 ] deux e matrices g´n´ratrices de C. soit T1 = T2 . e e e e La matrice G est appel´e matrice g´n´ratrice normalis´e (ou canonique) du e e e e code C. d’apr`s la remarque 4. Comme C est un sous-espace vectoriel.6) o` L est une matrice carr´e k × k inversible. u e En effet. u Codage par multiplication matrice-vecteur On d´duit de ce qui pr´c`de une m´thode de codage de C : tout mot source e e e e u ∈ Fk (vecteur ligne) est cod´ par φ(u) = uG = [u.T ]. nous pouvons e e e nous limiter au cas o` la matrice g´n´ratrice G. on retrouve le message initial en r´-appliquant a e la matrice de permutation. xt T2 ] sont donc e e dans C.4 Codes lin´aires et codes cycliques e 243 4.4. et R une matrice k × r. Apr`s le codage e e e e a e et la correction ` partir de Cσ . Pour tout x ∈ Fk . [xt . Il e e e e consisterait. . si G n’est pas sous cette forme. Or. soit :  G = Ik  T = L−1 R  La matrice G est ´galement g´n´ratrice de C. leur diff´rence [0. On obtient alors une matrice g´n´ratrice Gσ d’un code lin´aire Cσ ´quivalent ` C.4. voire impossible pour des tr`s grands codes. xt T1 = xt T2 . Ainsi. xt T1 ] et [xt . En effet. En pratique. ceci est possible puisque rg(G) = k. la structure lin´aire des codes conduit e ` des algorithmes de codage et d´codage assez efficaces lorsque le nombre a e d’erreurs t corrig´es par le code est petit. on permute les colonnes de G jusqu’` a obtenir L inversible .2 Codage et d´codage des codes lin´aires e e Le d´codage et la correction d’erreur. e e e e e Cette matrice normalis´e est de plus unique. quel que soit x ∈ Fk . si le code n’a pas de structure partie culi`re. e Pour l’´tude du codage et du d´codage du code lin´aire C. on ´crit u e e suivi de uT qui contient les chiffres de redondance. le seul ´l´ment de C dont les k premi`res composantes ee e sont nulles est 0. s’´crit sous la forme dite u e e e syst´matique : e   G= L R  (4. ` le comparer avec tous les mots de C et ` c a a l’identifier au plus proche.

. . par cons´quent pour tout e −Ir −Ir x. . . . D’o` xH t = u T T u[Ik |T ] . y) = wH (x − y). on calcule Hy et l’entr´e c e i de la table tel que zi = Hy. [Ik |T ] = [T − T ] = [0] .   Tk. . tel que dH (x. dans laquelle chaque entr´e i e e correspond ` un ´l´ment unique zi de Im(H) . xn ] e = [0. . tel que e wH (e) t. . .j −Ir   . Ce vecteur e est l’unique ´l´ment ee de Fn de poids de Hamming wH (e) minimal tel que He = Hy. xn ] ∈ C si et seulement si Hx = 0. . . y) t. −Ir   T1. Or.j  . si C est t-correcteur. On cherche alors ` calculer le mot ´mis x ` partir de y. e c qu’on appelle le syndrome d’erreur. xk ]G . . a e a on calcule le vecteur d’erreurs e = y − x.j Finalement on a [x1 . P  = [x1 .  Soit xk+j u k+1 1 k+r k . On construit alors une table de |F|r entr´es. T1. . La correction est alors triviale. Pour cela. e o Preuve.j . xn ] = [x1 . Hx = 0. . . . x ]T . . De plus He = Hy − Hx = Hy car Hx = 0. . xk ]  . . . Alors xt = . on en d´duit qu’il existe un unique e ∈ Fn . . x ] = [x . il existe un unique x ∈ C.244 e Chapitre 4 : D´tection et correction d’erreurs D´codage par multiplication matrice-vecteur e La m´thode de d´tection d’erreur et de d´codage utilise la propri´t´ suivante : e e e ee  Propri´t´ 17. . . . Soit x ∈ C. Quand on re¸oit y. T R´ciproquement. . .  La composante j (1 j r) donne alors [x1 . . . . . . on stocke le a ee e vecteur ei ∈ Fn de poids minimal et tel que Hei = zi . . Il existe u ∈ Fk tel que x = u[Ik |T ].  − xk+j = 0 . . et x ∈ C. 0]r . . . xk ]  Pour d´tecter une erreur si on re¸oit un mot y. . . Comme dH (x. On d´tecte une erreur si et seulement si e Hy = 0. Tk. dans l’entr´e i. H est appel´e matrice de contrˆle de C. On trouve alors ei dans la table et on renvoie x = y − ei . il suffit donc de calculer Hy. En effet. . D’o` [x . Soit H la matrice r × n : H =  T t e e [x1 . . . . si Hx = 0 alors [x1 . xk ][Ik |T ] = [x1 .

on a : e a  1 1 L= 0 1 1 0 1 1 1 0 0 0  0 1  1 1  0 1 . Donc la correction de y est x = y + e = 1111111. 0 1 La matrice g´n´ratrice 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 contrˆle H sont donn´es o e  1 1 1 1 0 0 0 1 1 0 1 0 . R= 0 0 0 0 1 0  0 0  0 1  0 1 et T = L−1 R =  1 1 1 0 1 1  1 1  . Montrer que C ⊥ est un code lin´aire (n.23 (Code de Golay). tel que pour tout c ∈ C : x.22 (Code dual). Pour corriger l’erreur. o Solution page 323. Le code e ⊥ . not´ C e a C ⊥ = {x ∈ Fn . Exercice 4.e. 1 0 1 0 0 1   0 Si l’on re¸oit le mot y = 1111101. On consid`re le code de Golay G12 ternaire e (i. n − k) sur F engendr´ par la matrice e e de contrˆle H du code C. Donner les caract´ristiques de G12 et sa matrice de contrˆle. e o . sur V = F3 ) de distance 6 et de matrice g´n´ratrice 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. k) sur F.4) dont la matrice g´n´rae e e trice G est donn´e par la relation (4. alors le calcul Hy = 1 montre qu’il y c 0 a erreur.ct = 0}.4 Codes lin´aires et codes cycliques e 245 Exemple : Consid´rons le code de Hamming (7.5) (voir ` la page 242). Exercice 4.4. Dans ce cas. est l’ensemble des mots de Fn orthogonaux ` C : dual de C. il suffit (la table ` 23 = 8 entr´es n’est pas a e n´cessaire dans cet exemple simple) de constater que le vecteur e = 0000010 e est de poids (de Hamming) minimal et tel que He = Hy. Soit C un code lin´aire (n.

e.4. G12 = G12 .. σ(c) = (cn−1 . grˆce aux codes cycliques. En effet. on verra aussi des m´thodes e a e simples pour construire des codes en garantissant un taux de correction. alors cn−1 = i=0 ci mod 2. qui am´liore encore la e e e facilit´ du calcul. cn−1 ) est un mot de code. ainsi. 1 1 0 0 . un−2 ] . et on peut exhiber sa matrice Σ : e e     Σ=   0 0 ··· 0 1 0 0 0 1 . e 3. . on a donc nettement am´lior´ les perfore e e e mances du codage et d´codage avec correction d’erreur. expliciter la matrice de contrˆle associ´e ` G11 . .246 e Chapitre 4 : D´tection et correction d’erreurs 2. ··· ··· 0 . appel´e classe des codes cycliques. . . L’op´ration σ est lin´aire. c0 . En d´duire que G12 est auto-dual. . Montrer que G11 est un code parfait. Le code de parit´ est donc cyclique. Montrer que G12 n’est pas parfait. .s = 0. u0 . Exemple : Le code de parit´ (n. On v´rifie facilement que si r et s sont deux lignes quelconques de G. 4. En s’int´ressant aux codes lin´aires. Autrement dit. . 0        Un code cyclique est un code lin´aire qui est stable pour l’op´ration de d´calage e e e n est cyclique lorsque de chiffre. et la possibilit´ de l’impl´menter simplement sur des circuits e e e ´lectroniques. . . Cela peut se e . .3 Codes cycliques On appelle op´ration de d´calage cyclique l’application lin´aire σ de V n dans e e e lui-mˆme d´finie par e e σ([u0 . cn−2 ) i=0 est aussi un mot de code.. Mais on a alors aussi cn−2 = cn−1 + n−3 ci mod 2 . Soit G11 le code obtenu ` partir de G12 en supprimant sa derni`re coma e posante . . . . . . un−1 ]) = [un−1 . . . 4. si e n−2 c = (c0 . e ⊥ alors r. Quelle est sa o e a distance ? 5. n − 1) est un code cyclique. . Il existe une classe e de codes lin´aires. 0 ··· ··· ··· . .. De plus. . Solution page 323. . un code lin´aire C de V e σ(C) = C . i.

. . Comme X n −1 est un polynˆme de degr´ n..  . on associe au code de 0 ··· . . . . e Th´or`me 30. . .. o e o e e R´ciproquement. an−k = 1.. .. Tout code cyclique C = (n. 0 ··· Alors la remarque 4 nous donne que ΣG et G g´n`rent le mˆme code car Σ e e e est inversible. un−1 ] de V n peut ˆtre repr´sent´ par le polynˆme ee e e e o de degr´ n − 1 de V [X] (voir la section 1. k−1 (m) σ admet une matrice g´n´ratrice e e     n−k i avec m = [a0 . polynˆme associ´ par X dans V [X]/(X o e Cette propri´t´ est ` la base du th´or`me suivant qui donne une caract´risation ee a e e e alg´brique d’un code cyclique.PU mod (X n − 1) Autrement dit. . .   . .4 Codes lin´aires et codes cycliques e voir ´galement directement sur les e parit´ sa matrice g´n´ratrice e e e  1   0 G= . V n est isomorphe ` V [X]/(X n −1). . 247 matrices : en effet. tout diviseur g de (X n − 1) est polynˆme g´n´rateur d’un e o e e code cyclique.. . .3. o e a Dans V [X]/(X n − 1).  0 . e Le polynˆme g est appel´ polynˆme g´n´rateur du code cyclique.  . Preuve. 1 1 1 . k) e e GC de la forme :  m  σ(m) GC =   . . . .4. 0.PU (X) − un−1 . on a alors Pσ(U ) = X.4 du chapitre 1 page 63) e n−1 PU = i=0 ui X i . Caract´risation : polynˆme g´n´rateur e o e e Tout ´l´ment U = [u0 . 1   . a1 . l’op´ration de d´calage σ d’un vecteur revient ` multiplier son e e a n − 1).(X n − 1) = X. 0  0 1 . Nous avons tout d’abord besoin du lemme suivant : . . 0] tel que g(X) = i=0 ai X est un diviseur unitaire de (X n − 1) de degr´ r = n − k.

4). Ensuite.3. donc C(X) est g´n´r´ par un certain polynˆme g(X) de degr´ e ee o e minimal r. Mais g est g´n´rateur de C(X) de degr´ minimal donc e e e e e R(X) = 0 et donc g divise 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). n−r−1 (m) X Ce code est lin´aire et (n. Pσ(U ) = XPU est dans C(X) car C est cyclique. Comme g(X) est un g´n´rateur. Retour ` la preuve du th´or`me. tous e e i P sont ´galement dans C. Or 0 et Q(x)g(X) sont dans l’id´al C(X). pour la r´ciproque. Enfin. e ee P Cette propri´t´ permet la construction directe de code correcteur par la donee n´e d’un polynˆme diviseur de X n − 1. e Exercice 4... Pris modulo X n − 1. Ce qui n − r − 1 . C(X) est clairement un groupe. Montrons que r = n − k.celle de l’algorithme d’Euclide ´tendu sera not´e e e e . tous les ´l´ments e e ee du code s’´crivent A(X)g(X). Enfin. Soit C(X) l’ensemble des polynˆmes associ´s aux mots du code o e cyclique C. donc k = n − r. La complexit´ (en nombre d’op´rations o e e arithm´tiques sur un corps premier Zp ) de l’addition de deux polynˆmes de e o degr´ au plus d sera not´e Ad = O(d). Pour reconnaˆ ces diviseurs. il y a donc exactement |V | ee n’est possible que si n − r = k. Autrement dit pour tout A(X) ∈ e e e V [X]/(X n − 1). donc par lie e e n´arit´ R(X) aussi. Ensuite. e En effet.24 (Factorisation probabiliste de Cantor-Zassenhaus de polynˆmes sur un corps premier). A(X)PU est dans C. Il reste ` montrer que le polynˆme g est un diviseur de X n − 1. on ´crit e e   g(X)  Xg(X)   GC =    . il est e o ıtre n − 1. n − r). De la mˆme mani`re. Cela se fait en temps raisonnable par exemple possible de factoriser X par l’algorithme Cantor-Zassenhaus donn´ en exercice ci-dessous. Alors C(X) est un id´al de V [X]/(X n − 1). L’anneau V [X]/(X n − 1) est principal (voir a e e section 1. il est cyclique car e tout mot de code s’´crit U GC ou encore n−r−1 ui X i g(X) et donc σ(U GC ) = e i=0 n−r−2 n−r−1 i+1 g(X) = u ui X i+1 g(X) mod X n − 1 est ui X n−r−1 g(X) + i=0 i=0 bien une combinaison lin´aire des puissances de g et donc un mot du code e g´n´r´ par les puissances de g. par lin´arit´ toutes les combinaisons les X U e e e lin´aires des pr´c´dents restent dans C. pour tout PU de C(X).248 e Chapitre 4 : D´tection et correction d’erreurs Lemme 3. A(X) est donc de degr´ e e n−r ´l´ments distincts du code. la complexit´ de la multiplication ou e e e de la division sera not´e Md .

. soit G une matrice g´o e e e n´ratrice de C construite ` partir de g comme dans le th´or`me 30. il est ` la o e e a base des algorithmes efficaces de codage et de d´codage qui ´vitent la multie e plication par la matrice g´n´ratrice GC (de coˆt O(nk)) en la rempla¸ant par e e u c une multiplication par le polynˆme g. Le lien entre code cyclique et polynˆme g´n´rateur est important . . Il ne reste plus qu’` s´parer les facteurs irr´ductibles des Pi . o e 1. . Dans toute la suite. En pratique.Pa (X)] mod X n − 1 . Pk e o o` Pi est un produit de polynˆmes irr´ductibles de degr´ i. nous supposons donc que p est impair et i 2. on a : e a e e k−1 pi −1 pi −1 PaG = i=0 ai (X i g(X) k−1 mod X n − 1) mod X n − 1 = [g(X)( i=0 ai X i )] = [g(X). . En d´duire que pour tout T . En adaptant l’algorithme 7 page 61. . Le mot de code associ´ ` a est φ(a) = aG de polynˆme associ´ PaG . e ea o e Par l’´criture de G ` partir des coefficients de g(X) (th´or`me 30). o 5. u o e e 2. il y a environ une chance sur deux que les facteurs de Pi ne e soient pas tous dans le mˆme des trois polynˆmes ci-dessus. de coˆt O(n log n). a e a e e Op´ration de codage e Soit C un code cyclique de polynˆme g´n´rateur g . e Comment r´duire la taille des polynˆmes et quelle est alors sa complexit´ e o e en moyenne ? Solution page 324. 6.4 Codes lin´aires et codes cycliques e 249 Ed . les facteurs irr´ductibles de Pi sont partag´s e e e entre T . L’int´rˆt pratique o u ee est en outre que les circuits associ´s au codage et d´codage sont relativement e e simples ` r´aliser. e e 3. Que vaut k au maximum ? En d´duire la complexit´ de FDD. . Cantor et Zassenhaus ont montr´ que si T est quelconque de e degr´ < 2i. . T 2 − 1 et T 2 + 1. En d´duire e o e un algorithme de factorisation probabiliste SF (S´paration de Facteurs). ak−1 ] ∈ V k un mot source et Pa = ai X i son polynˆme o i=0 associ´. par exemple par des registres ` d´calage lin´aire (LFSR). Soit e a e e k−1 a = [a0 .4. en d´duire un algorithme FDD (Face teurs de Degr´s Distincts) factorisant un polynˆme P en P = P1 . Si p = 2 comment factoriser P1 ? 4. Montrer que a e e i i pour tout polynˆme T = aj X j . X p − X divise T p − T dans Zp .Le but de cet exercice est d’´valuer la complexit´ de la factorisation de e e polynˆmes sans carr´s sur un corps fini.

la donn´e d’un polynˆme e e o g diviseur unitaire de degr´ n − k de X n − 1 d´finit un unique code cyclique e e (n. calculer modulo X n − 1 revient ` consid´rer que e a e X n = 1 = X 0. Pe e e e est le syndrome d’erreur. Dans le cas o` Pe est non nul. on calcule d’abord Pe = Pm mod g . ` une multiplication de polynˆmes de coˆt O(n log n). k).X 3 + X 5 + X 6 = 1 + X 2 + X 5 + X 6 . Ainsi. . 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. Donc φ(a) = [1010011]. Le mˆme mot a e est obtenu en calculant les coefficients du polynˆme : o (a0 + a1 X + a2 X 2 + a3 X 3 )(1 + X 2 + X 3 ) mod X 7 − 1 .250 e Chapitre 4 : D´tection et correction d’erreurs Le codage correspond donc ` un produit de polynˆmes. qui se ram`ne. pour a = [1001] : g · Pa mod X 7 − 1 = (1 + X 2 + X 3 )(1 + X 3 ) = 1 + X 2 + 2.4) associ´ au polynˆme g = (1 + X 2 + e o 3 ). D´tection d’erreur et op´ration de d´codage e e e Le codage pr´c´dent montre que tout mot de code re¸u est un multiple de e e c g(X). . qui correspond au message corrig´. Exemple : Soit le code cyclique (7. u Exercice 4. il est obtenu par multiplication ` droite par la matrice G. . e o e comme le codage. On a montr´ que tout code cyclique est caract´ris´ par la done e e n´e d’un polynˆme g´n´rateur. Pe = 0 : le mot re¸u n’est pas un mot de code et il y a donc eu des c erreurs lors de la transmission. La d´tection d’erreur est donc r´alis´e via le calcul de Pe = Pm modulo g . gn−k−1 . L’ala o u gorithme de Berlekamp-Massey (voir sa description page 94) permet de r´aliser e la correction pour un code cyclique avec un coˆt similaire. Soit m ∈ V n un message re¸u et soit Pm son polynˆme associ´. Soit a = [a . le code de ce mot est alors ´gal ` X e a 0 1 2 3 aG . a .25. les degr´s des monˆmes a o e o ´tant pris modulo n : en effet. e – si Pe = 0 : le polynˆme re¸u est bien un multiple de g : il correspond donc ` o c a un mot de code. Justifier que r´ciproquement. . e o e e e Le code C est donc caract´ris´ par la donn´e de seulement r = n − k coeffie e e cients g0 . On retrouve le message ´mis en calculant le quotient Pm /g. on peut proc´der ` une correction. La m´thode de u e e e Meggitt et ses variantes en sont des exemples. a . Le lien entre code cyclique et polynˆmes fait qu’il existe des algorithmes moins o coˆteux en place m´moire pour corriger un message erron´. Solution page 324. e – sinon. diviseur unitaire de degr´ r = n − k de X n − 1. . Lors du c o e d´codage. La correction se fait e alors par lecture de la table. a ] un mot source . La d´tection d’erreurs est donc une division de polynˆmes.

Par l’absurde. . e Preuve.   . . Comme les mik sont non nuls. Or cette matrice est de type Vandermonde et son d´terminant e e vaut β l(i1 +. . .. il suffit de montrer qu’aucun mot de e code n’est de poids de Hamming inf´rieur ` s + 1. .4 Codes lin´aires et codes cycliques e 251 4. . β liw mi1 0  β (l+1)i1 .. e Th´or`me 31. e l ) = g(β l+1 ) = . et par suite (d’apr`s le th´or`me 27) une minoration du e e e taux de d´tection.. mn−1 X n−1 de poids w tel que 1 w < s + 1. . et donc w doit ˆtre strictement sup´rieur ` e e a s. . .4.  =  .. Ce dernier est non nul car β est une racine e primitive ni`me . Cependant.. Soit C un code cyclique (n. . . P . β (l+1)iw   mi2   0         .+iw ) ij <ik (β ij − β ik ). . k) de polynˆme g´n´rateur g ∈ e e o e e e Fq [X] avec n premier avec q et soit β une racine primitive ni`me de l’unit´. supposons e a qu’il existe un mot de code m = m0 + m1 X + . = m(β l+s−1 ) = 0.   . .. .. (l+w−1)i1 . de l’unit´ γ est le plus petit entier o tel que γ e e Un int´rˆt des racines primitives ni`me de l’unit´ est que l’on peut les utiliser ee e pour trouver des codes de distance minimale fix´e. Cela se r´´crit ´galement sous m(β ee e la forme matricielle suivante o` l’on n’a gard´ que les lignes pour lesquelles u e mik = 0 :      β li1 . ce syst`me n’est possible que si la matrice e est singuli`re.4. Comme le code est lin´aire.2 : c’est une racine simple du e n − 1. Comme m est un multiple de g. .  . ce a paragraphe pr´sente un th´or`me qui permet de garantir une minoration de e e e la distance d’un code. . Ceci est absurde.  . e Distance garantie Nous nous pla¸ons dans un corps fini Fq et rappelons la notion de racine c e primitive ni`me de l’unit´ vue en section 1. m v´rifie ´galement e e l ) = m(β l+1 ) = . β (l+w−1)iw miw 0 β Le syst`me lin´aire ainsi ´crit est carr´ et n’existe 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. Le code C est donc au moins s-d´tecteur et s/2 -correcteur. = g(β l+s−1 ) = 0 S’il existe deux entiers l et s tels que g(β alors δ(C) s + 1.4. d’ordre n (en g´n´ral l’ordre d’une racine ni`me quelconque e polynˆme X o e e o = 1 et il vaut donc au plus n).4 Codes BCH Le taux de correction d’un code cyclique est difficile ` calculer.

P Exemple : Pour fabriquer un code 2-correcteur dans F5 . Bose.252 e Chapitre 4 : D´tection et correction d’erreurs Construction des polynˆmes g´n´rateurs BCH o e e En application de ce th´or`me. e Corollaire 3. il aurait fallu e ee n − 1 avec n = 8. 125. 3. Bose. β 5 = 4β. β 7 = 2β et β 8 = 6 = 1. Chaudhuri et Hocquenghem ont alors propos´ d’utiliser comme e polynˆme g´n´rateur d’un code le polynˆme o e e o g(X) = ppcm{Pik+1 (X). . . −1 sont d’ordre plus petit que 5 et ne peuvent donc pas ˆtre e e racines primitives 8i`me de l’unit´. on voit que g(X) = H(X) · s (X − β k+i ) i=1 pour un certain polynˆme H. Ensuite. Nous consid´rons que n est premier avec q. On peut donc prendre ` g(X) = (X 2 + 2)(X 2 + 3)(X + 1)(X − 3). . Dans une extension on note β une racine de e X 2 + 2. β 4 = 4. comme n est premier avec q. On e e n − 1 = P (X) . β 4 = 4 = −1 est racine de X + 1. v´rifiant (3β)2 = 4 ∗ 3 = 2. On note ik . e a Preuve. page 248 : X 8 − 1 = (X 2 + 2)(X 2 + 3)(X + 1)(X − 1)(X − 2)(X − 3) mod 5. . Alors on calcule. . Alors on peut ´crire X n − 1 = (X − β i ). A noter n´anmoins que l’on obtient e un code au moins 2-correcteur avec 7 caract`res de redondance sur 8. il faut trouver les polynˆmes irr´ductibles ayant β i o e comme racine pour i par exemple de 1 ` 4. Dans une extension. . Alors β 2 = −2 = 3 et donc β 3 = 3β. prenons β une racine e e primitive ni`me de l’unit´. est donc racine e de X 2 + 3 et enfin. Si cela n’avait pas ´t´ le cas. Un code BCH est de distance minimale sup´rieure ` s + 1 et e a donc de taux de correction garanti sup´rieur ` s/2 . Nous avons donc de la chance. β 2 = 3 a est racine de X − 2. Clairement 1. β est racine de X 2 + 2. Pik+s (X)}. β 6 = 2. 2. . car il existe bien une racine e primitive 8i`me de l’unit´ dans F5 . Un tel code est appel´ code BCH. Or. prenons F5 [X] et par exemple X 8 −1. soit un e rendement de seulement 0. P (X) en polynˆmes peut ´galement ´crire la factorisation X e e o 1 k irr´ductibles de Fq [X]. par exemple par l’algorithme de l’exercice 4.24. Le th´or`me 31 donne alors la borne inf´rieure o e e e sur la distance. l’indice du polynˆme irr´ductible dont β k est e o e racine. toutes les racines de e X n − 1 sont distinctes et sont donc les racines d’un et d’un seul des facteurs irr´ductibles Pi . Ensuite. Chaudhuri et Hocquenghem ont propos´ e e e une m´thode de construction de codes cycliques ayant un taux de correction e arbitraire. si l’on essayer d’autres polynˆmes de la forme X o veut un code 2-correcteur. β 3 = 3β.

1 = (X 2. un e a tel code est dit primitif. X q−1 − 1 = λ∈Fq −{0} (X − λ) . il existe toujours des racines primitives e e i`mes de l’unit´. ce sont les racines primitives classiques de F (voir section e n e q 1. D’autre part. Le groupe multiplicatif Fq − {0} ´tant cyclique.5). e Alors α ∈ Fq et donc aucune extension de scindage n’est n´cessaire pour avoir : e q−1 X q−1 − 1 = i=1 (X − αi ) . soit α une racine primitive. il est clair que l’on peut construire des codes avec un taux de correction choisi . Le polynˆme o e e o X q−1 −1 se factorise tr`s simplement sur Fq : ses racines sont tous les ´l´ments e ee non nuls de Fq . e 253 e 1. Parmi ceux-ci. et o e e e donc le code est de redondance minimale. D’une part.4.3. ils sont optimaux dans le sens o` ee u ils requi`rent un nombre de chiffres de redondance minimal pour une capacit´ e e de correction fix´e. Comment construire un code 2-correcteur plus ´conomique que celui de e l’exemple ci-dessus. les codes BCH les plus utilis´s correspondent ` n = q t − 1 .26 (Code BCH plus ´conomique). Sur cet exemple. les codes BCH ayant n = q − 1 sont appel´s codes de Reed-Solomon et nous allons voir qu’ils sont particuli`rement e e ´conomiques et plus faciles ` construire. comme polynˆmes minimaux de o e e o chacun des β k+i .4 Codes lin´aires et codes cycliques e Exercice 4. Nous allons voir qu’il est alors toujours possible de ne choisir que des polynˆmes irr´ductibles sur Fq [X] de degr´ 1. ils sont particuli`rement rapides ` coder et e e a d´coder. pour un taux de correction donn´. e En pratique. Le polynˆme g´n´rateur est alors de degr´ global minimal. Dans ce cas. Solution page 324. Les codes de Reed-Solomon v´rifient en outre plus e pr´cis´ment n = q − 1. e Construisons donc un polynˆme g´n´rateur de Reed-Solomon. . Trouver une racine primitive 16i`me de l’unit´ modulo 5 ` l’aide de X 16 − e a 4 + 2)(X 4 + 3)(X 8 − 1) mod 5. e L’int´rˆt de ces codes est double. e a Codes BCH optimaux : codes de Reed-Solomon Tout code BCH primitif a une longueur n = q t − 1 et n´cessite par cons´quent e e que n soit premier avec q. il faut toutefois pour cela arriver ` trouver une racine a primitive ad´quate.

Si α est une racine primitive de F28 (ici c’est une racine quelconque du polynˆme primitif T 8 +T 7 +T 2 +T +1 utilis´ pour engendrer F28 ). Les codes de Reed-Solomon sont tr`s utilis´s en pratique.   Lαr  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]. . Le taux de correction de ce code est optimal. la matrice de contrˆle H d´finie section 4. (αr )n−1   Lα     Lα2   = . .254 e Chapitre 4 : D´tection et correction d’erreurs La construction d’un code de Reed-Solomon avec r chiffres de redondance repose sur le choix d’un polynˆme g´n´rateur de degr´ r.223) de distance 33. la distance minimale δ du code de Reed-Solomon est au moins δ r + 1. Ce code est 16-correcteur sur le corps F28 .. dont les racines sont o e e e cons´cutives : e s+r−1 g(X) = i=s (X − αi ) .4. Le code de Reed-Solomon ainsi obtenu est donc un code (n = q − 1. . e e Exemple : Le satellite d’exploration de Jupiter Galileo utilise le code de Reed-Solomon (255. . . En effet.223. j=12 D´codage des codes de Reed-Solomon e Le d´codage des codes de Reed-Solomon peut se faire tr`s rapidement car calcul e e du syndrome d’erreur se ram`ne dans ce cas ` un calcul rapide de transform´e e a e de Fourier ! En effet. . en tant que code BCH.. . 1 αr (αr )2 . . . . . 1 . Or. k = n − r) avec r arbitraire. le polynˆme o e o g´n´rateur de degr´ r = 32 du code de Reed-Solomon (255. ainsi. 2 (α2 )2 . . . αn−1 (α2 )n−1 .33) choisi est1 : e e e 43 g= (X − α11j )..2 d’un code o e de Reed-Solomon peut s’exprimer facilement comme ceci :    H=  1 α α2 . . la borne de Singleton (th´or`me 28) montre que δ n − k + 1 = r + 1 . e e la distance est δ = r + 1 et atteint la borne de Singleton. 1 α ..

. r−1 g(X) X g(α) αg(α) .    ·  LT α LT 2 α ..r (e). un mot de code b = b0 + b1 X + . bn−1 X n−1 est un multiple de g (b(X) = u(X)g(X) o` u est le message initial).. . . . . . e Le probl`me qu’il reste ` r´soudre est donc de reconstituer e ` partir des seuls e a e a premiers termes de sa transform´e de Fourier. On a donc bien que H est la matrice de contrˆle du code. donc telle que c = b + e. et donc les premiers termes de sa transform´e de Fourier sont nuls. . L’interpr´tation duale dans le cas particulier des codes e de Reed-Solomon est qu’un mot de code est caract´ris´ par le fait que les r e e premiers termes de sa transform´e de Fourier sont nuls : e bH T = √ nDF T1. les αi . voir la section 4. Puisque b est un mot c de code.4. LT r α g(αr−1 ) αg(αr−1 ) . cette matrice GH T est nulle car les αi sont les racines du polynˆme g(X) . alors GH T s’exprime e e comme l’application du polynˆme g au diff´rents coefficients de H.3..9. Cela e induit que les premiers termes des transform´es de Fourier discr`tes de c et e e e sont ´gaux : DF T1. αr−1 g(α) αr−1 g(α2 ) .. Posons b le mot de code transmis. c le e mot re¸u et e l’erreur commise. page 88 et du fait que 0 = ugH T = bH T car e H est la matrice de contrˆle du code. . H est de rang r car α est une racine primitive. o e d´cal´ de X ` chaque ligne : e e a    GH T =      =  g(X) Xg(X) . Cela d´coule de la formule 1.r (c) = DF T1. sa multiplication par la matrice de contrˆle doit donner un vecteur o nul. L’astuce est que les coefficients e de la DFT d’un mot sont lin´airement g´n´r´s par un polynˆme de degr´ le e e ee o e poids de Hamming de e (le nombre w(e) d’erreurs commises. o en outre. o Nous pouvons alors maintenant d´coder. .4 Codes lin´aires et codes cycliques e 255 La raison est que si G est la matrice g´n´ratrice du code. .. . ..7) g(α2 ) αg(α2 ) . . αr−1 g(αr−1 )      (4.1) : Th´or`me 32 (Blahut). o Ensuite. . Or. e e e o e . . Les coefficients de la DFT de e sont lin´airement e e e g´n´r´s par un polynˆme de degr´ w(e). .r (b). . puisqu’un code de Reedu Solomon est cyclique.

valent Ei = Ei mod n = i=0 1 1 √ e(αi ) = √ e(αi mod n ) car α ´tant une racine primitive.r−1 ) E = LF SRΠ (E0 .. compl´tons la s´rie E associ´e ` la DFT de e : on e e e a a E(X) = ∞ Ei X i o` les termes Ei pour i u n. Cette remarque nous e e 1 √ n n−1 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 d´veloppement en ´l´ments simples d’une fraction ratione ee R(X) nelle Π(X) . Tout d’abord. . elle est d’ordre e n n n = q − 1 dans Fq . Ensuite la preuve e du th´or`me pr´c´dent montre que d`s que 2w(e) < r − 1 l’algorithme de e e e e e Berlekamp-Massey aura suffisamment de termes pour trouver un g´n´rateur e e de degr´ w(e) et compl´ter le syndrome.11.r (c) Π(X) = Berlekamp − M assey(E0. E(X) = 1 √ n ∞ i=0 n−1 ij j=0 ej α Xi = mule inclut le d´veloppement e permet alors d’´crire e 1 E(X) = √ n n−1 ∞ i i i=0 e(α )X ou encore E(X) = n−1 ∞ 1 j i √ e j=0 ej i=0 (α X) . c’est le taux maximal possible. e P De cette preuve constructive. . on d´duit imm´diatement le taux de correction e e d’un code de Reed-Solomon et l’algorithme de d´codage des codes de Reede Solomon : Algorithme 27 D´codage des Reed-Solomon.. e Entr´es c un mot comportant moins de r−1 erreurs. avec degr´(R) < degr´(Π) et e e n−1 Π(X) = j=0 et ej =0 1 − αj X Donc degr´(Π) = w(e) et Π est le polynˆme minimal g´n´rateur de la s´quence e o e e e E(X) calcul´ par l’algorithme de Berlekamp-Massey. .256 e Chapitre 4 : D´tection et correction d’erreurs Preuve. . e [E0 . Er−1 ] = DF T1. page 96. Or cette derni`re forn 1 en s´rie enti`re de 1−αj X . e e P . comme on le voit sur e l’´quation 1. Ainsi. . Er−1 ) e = DF T −1 (E) Renvoyer b = c − e r−1 2 Corollaire 4. . Par d´finition. . Les codes de Reed-Solomon sont correcteurs. . Preuve. e 2 Sorties b le mot de code corrig´.

on dit alors qu’il y a effacement. Montrer qu’un code (n. La complexit´ du calcul de la DFT ou de son inverse est quasie lin´aire. les blocs manquants. De mˆme l’algorithme de synth`se de LFSR e e e e 2 op´rations ou O(r log(r)) avec un algode Berlekamp-Massey n´cessite 4r e e rithme d’Euclide rapide arrˆt´ au milieu. ’1’. 2. e e 1. On consid`re un canal binaire sur lequel on veut pouvoir corriger jusqu’` e a 1% d’effacements (d’octet) en utilisant un code de Reed-Solomon sur F256 . Les codes de Reed-Solomon sont tr`s utilis´s pour la correction des erreurs et e e des effacements dans les syst`mes distribu´s de fichiers. c Proposer une m´thode de correction d’au plus d − 1 effacements. dans ces syst`mes. il est bas´ sur un code de Reed-Solomon sur a e F216 avec le polynˆme primitif X 16 + X 12 + X 3 + X + 1. Enfin.4 Codes lin´aires et codes cycliques e 257 Corollaire 5. o P Exercice 4.27 (Correction des effacements). la pr´sence de e e e ’ ?’ ` la sortie d’un canal indique que le symbole correspondant est manquant. grˆce ` la redondance. des ressources de e a e stockage peuvent disparaˆ ıtre. Le symbole ’ ?’ correspond ` un relief non correct (dˆ par exemple ` une poussi`re ou une a u a e rayure) . ’ ?’. Soit C un code (n. . Pr´ciser les caract´ristiques (n. k. L’utilisation de codes correcteurs permet alors de retrouver. e e 3. e 4. a ` A la diff´rence d’une erreur. On suppose que le mot re¸u comporte des effacements. a a Exemple : Le protocole PAR-2 de stockage d’un fichier sur un syst`me e pair-`-pair en est un exemple . mais pas d’erreur. un effacement donne la position du bit erron´. k) quelconque de distance d permet de corriger d − 1 effacements. o Concr`tement. il ne corrige donc pas les erreurs mais uniquement des effacements. l’application du registre ` d´ee a e calage lin´aire n´cessite 2(n − r)w(e) < 2nr op´rations o` encore O(n log(n)) e e e u avec une multiplication rapide de polynˆmes. Le nombre de blocs qui peuvent ˆtre reconstruits est param´trable et not´ r e e e ci-dessous. e Preuve. En d´duire une m´thode e e permettant de corriger simultan´ment t erreurs et s effacements. Lors de la lecture d’un CDROM. PAR-2 permet de reconstruire un fichier lorsque des blocs sont e manquants . Les codes de Reed-Solomon sont d´codables en temps quasi e lin´aire. Plus g´n´ralement. k) de distance d = 2t + s + 1. un spot laser peut renvoyer 3 symboles : ’0’. e Solution page 325. comme les syst`mes e e e RAID ou encore les syst`mes pair-`-pair . en O(n log(n)) op´rations.4. d) de ce code.

e a e Solution page 325. comme les r´sum´s MD5 de tous les fichiers. Soit e e C un code lin´aire (n. . . qui contient 4 erreurs isol´es mais qui correspondent ` un mˆme paquet de longueur 6. . rayures) ou des liaisons e satellites (perturbations ´lectromagn´tiques). . . . . on ne conserve que les k fichiers correspondants en poin¸onnant les r autres positions. G est de rang k (th´or`me 29) . C1 . dk .. . les fichiers Ci contiennent des e e informations compl´mentaires. . c1 . Cr est consid´r´ comme un mot de ee code. . En d´duire que l n − k. Soit G la sous-matrice de G construite en supprimant c les colonnes des effacements. apr`s ´mission de la s´quence binaire . . .. Alors. . .. Dk . la s´quence re¸ue est e e e e c .5 4. e e e 4. le syst`me e e e x. PAR-2 partitionne ce a fichier en k fichiers D1 . En outre.1 Paquets d’erreurs et entrelacement Paquets d’erreur Sur la plupart des canaux. . etc ..G = y admet donc une unique solution x qui est calcul´e par r´solution du e e syst`me lin´aire en G et qui est le mot corrig´..00101101000.. e e e leur taille. . e ee o i=1 Pour la lecture. . dans leur en-tˆte. le mot form´ par les n = k + r chiffres de 16 bits en e position i des fichiers D1 . En e e a compl´ment. Cr .28 (Code lin´aire et d´tection de paquet d’erreurs). .. les erreurs ne se produisent pas de mani`re isoe l´e (ils ne suivent pas une distribution al´atoire et uniforme) mais peuvent e e atteindre plusieurs symboles cons´cutifs .258 e Chapitre 4 : D´tection et correction d’erreurs Soit un fichier source ` stocker de taille 2km octets . Il est not´ d1 . on cherche ` r´cup´rer les n fichiers D1 . Les chiffres de redondance c1 . C’est e par exemple le cas des disques compacts (poussi`res. contenant aussi m mots de 16 e bits sont ajout´s. Dk de mˆme taille ´gale ` m mots de 16 bits. .10111011011. r fichiers redondants C1 .. il est donc de distance r + 1. la longueur du paquet est al´atoire et mˆme la longueur e e moyenne peut varier au cours du temps. . Pour reconstruire les di ..5. . . Exercice 4.. ... . . . e a e Le plus souvent. . C1 . Cr mais a e e on s’arrˆte d`s que l’on en a r´cup´r´ k complets et non corrompus (v´rification e e e ee e des hashs MD5 et de la taille). .. . . Par exemple. . Dk . . e e La longueur d’un paquet est sa taille en nombre de symboles. on parle d’erreurs par paquet. . raccourci du code de Reed-Solomon standard de longueur 65535 sur F16 . . Dans la suite. e e Montrer que C ne contient aucun mot qui est un paquet de longueur inf´rieure e ou ´gale ` l. cr sont calcul´s par un code de Reed-Solomon e (n. cr de mani`re g´n´rique ind´pendamment de e e e e e sa position i. . Soit alors y c l’un des m mots re¸us. k).10010110011. le mot d’erreur est alors . ces informations sont utilis´es pour d´tecter les fichiers core e rompus. g´n´r´ par le polynˆme g(x) = r (X − αi ) . . k) sur Fq qui d´tecte tout paquet de longueur au plus l.

4.5 Paquets d’erreurs et entrelacement

259

Exercice 4.29 (Distance d’un 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 d’un paquet d’erreurs binaires corrig´ par e ce code ? Solution page 326. Les techniques d’entrelacement et d’entrelacement crois´ permettent, ` partir e a d’un code donn´, avec un taux de correction donn´ ; d’augmenter la longueur e e des paquets d’erreurs corrig´s. e

4.5.2

Entrelacement

Plutˆt que de transmettre les mots de code cons´cutivement, la technique o e d’entrelacement consiste ` les entrelacer pour que deux chiffres cons´cutifs d’un a e mˆme mot n’apparaissent pas cons´cutivement dans la s´quence transmise. e e e Dans la suite, C est un code (n, k). Il existe diff´rentes m´thodes pour transe e mettre de mani`re entrelac´e un message M = [a, b, c, ...] qui est une s´quence e e e de taille quelconque de mots de code. Le principe est le suivant. Supposons que l’on 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 s´quence a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4 c5 . Matriciellement, le message e M s’´crit : 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. L’inconv´nient est qu’un paquet d’erreurs de longueur 2 peut entraˆ e ıner deux erreurs dans un mˆme 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 s´quence e correspondante est donc a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 a5 b5 c5 . Tout paquet d’erreurs de longueur au plus 3 ne peut alors pas entraˆ ıner plus d’une erreur sur un mˆme mot ; grˆce ` l’entrelacement, il peut donc ˆtre corrig´ mˆme si e a a e e e le code initial est simplement 1-correcteur. On g´n´ralise l’entrelacement 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, l’entrelacement de profondeur p permet de corriger des paquets de longueur p.l (exercice 4.30). Exercice 4.30 (Profondeur d’entrelacement 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 l’ensemble de tous les entrelacements de p mots du code C. Le code Cp est dit entrelac´ e

260

e Chapitre 4 : D´tection et correction d’erreurs

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

4.5.3

Entrelacement avec retard et table d’entrelacement

Le codage ´tant g´n´ralement r´alis´ ` la vol´e, 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 d’un code (n, k). On r´alise alors un entrelacement avec retard de M , ` la vol´e. Cet e a e entrelacement est d´crit ci-dessous en utilisant la technique classique de table e d’entrelacement ; 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 d’une table d’entrelacement de retard 2 pour des mots de longueur 5.

Une telle table est caract´ris´e par son retard r. Pour simplifier l’expos´, on e e e ` suppose que la table a n lignes et r.n colonnes. A l’initialisation, 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 stock´s dans les r premi`res colonnes ; puis, pour e e i = 1, . . . , n, la ligne i est d´cal´e ` droite de (i − 1).r positions. Le r´sultat e e a e final est donn´ sur le tableau 4.5. e Apr`s cette initialisation, pour transmettre les diff´rents mots du message, on e e proc`de en it´rant pour chaque bloc de p mots les trois op´rations suivantes : e e e 1. on envoie d’abord en s´quence dans le canal les r premi`res colonnes de e e la table, l’une apr`s l’autre ; e 2. puis on d´cale 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 ajout´es ` droite ; e a 3. enfin, on fait rentrer les r mots suivants du message dans la table de la mˆme fa¸on que pour les r mots pr´c´dents : 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 l’´tat de la table apr`s un tour. e e

4.5 Paquets d’erreurs 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 d’entrelacement de retard 2 apr`s un tour. e

On remarque qu’en r´gime permanent, chaque symbole transmis correspond e ` un symbole du message M . Mais ce n’est pas le cas au d´but et en fin de a e communication, puisque des cases non initialis´es de la table sont transmises. e Aussi, lors du d´codage, on supprime en d´but et en fin de la s´quence re¸ue, 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 Grˆce ` cet entrelacement avec retard, deux caract`res cons´cutifs d’un mˆme a a e e e mot de code sont distants d’au moins rn + 1 positions dans la s´quence de e symboles transmise. Si le code initial corrige des paquets de longueur l, l’entrelacement avec retard r garantit donc la correction de paquets de longueur l(rn + 1) Remarque 5. La longueur des paquets corrig´s est donc limit´e 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 d’un retard trop grand entraˆ un surcoˆt proportionnel (envoi de caract`res inutiles en d´but et ıne u e e fin de messages), inefficace pour les petits messages. Aussi d’autres techniques d’entrelacement ont ´t´ propos´es, notamment pour les turbo-codes. Par exemee e ple, les entrelaceurs de type Golden sont bas´s sur un entrelacement dont la e profondeur varie en progression arithm´tique de raison le nombre d’or. e

4.5.4

Code entrelac´ crois´ et code CIRC e e

Les codes entrelac´s crois´s sont bas´s sur la composition de deux codes, l’un e e e permettant de d´tecter les paquets d’erreurs, l’autre de les corriger. e Plus pr´cis´ment, soient C1 (n1 , k1 ) et C2 (n2 , k2 ) deux codes de distances rese e pectives d1 et d2 . Le principe de codage d’un message source M de m symboles est le suivant : 1. on code d’abord 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 : D´tection et correction d’erreurs

2. les mots de C1 sont entrelac´s, par exemple avec un retard ; on obtient e un message M que l’on consid`re de mˆme taille m1 (pour simplifier, e e on ne compte pas les symboles suppl´mentaires ´ventuellement ajout´s e e e lors de l’entrelacement en d´but et fin de message) ; e 3. les symboles de M sont alors cod´s 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 entrelac´s, mais ce a e e cas n’est pas consid´r´ dans la suite. ee Pour le d´codage, le code C2 est utilis´ pour d´tecter les erreurs, et le code e e e C1 pour les corriger. Aussi, la capacit´ de correction du code C2 n’est pas e compl`tement exploit´e, l’accent ´tant mis sur sa capacit´ de d´tection. 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 n’utilise qu’une correction de t2 . Ainsi, si l’on d´tecte plus de t2 erreurs, on ne les corrige pas avec C2 car e cela ferait perdre la capacit´ de corriger de grands paquets d’erreurs ; mais au e contraire on les marque seulement afin de laisser le code C1 s’en occuper. Plus rigoureusement, le principe de d´codage est le suivant : e 1. on d´code d’abord chaque bloc Mi de n2 symboles de M . Deux cas e sont distingu´s. Soit le mot peut ˆtre d´cod´ avec au plus t2 corrections, e e e e auquel cas on le corrige et on r´cup`re la s´quence Mi source de k2 syme e e boles cod´e par C2 . Sinon, on d´tecte la pr´sence de plus de t2 erreurs, e e e ce qui est le cas si le mot est affect´ par un paquet d’erreurs ; dans ce e cas, on marque la s´quence Mi de k2 symboles comme effac´e. e e 2. on d´sentrelace les symboles obtenus pour reformer les mots Mi cod´s e e par C1 ; 3. du fait du d´sentrelacement, le mot Mi peut contenir des symboles effae c´s, mais aucun symbole erron´. Par suite, la distance d1 de C1 permet e e de corriger jusqu’` d1 − 1 symboles effac´s dans Mi pour reconstruire les a e k1 symboles source Mi (voir l’exercice 4.27). Application : code CIRC Les codes de Reed-Solomon sont souvent utilis´s comme codes de base d’un 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 d’un millim`tre e d´truit environ 3300 bits sur la piste d’un CD ; le code permet de corriger e jusqu’` 28224 bits cons´cutifs sur la piste, ce qui correspond ` une longueur a e a d’environ 8,2 mm sur le disque !

4.5 Paquets d’erreurs et entrelacement

263

Sur un CD audio, l’information num´rique source est cod´e par blocs appel´s e e e trames. Une trame correspond ` 6 ´chantillons st´r´o 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 contrˆle. Chacun de ces octets e o est repr´sent´ 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 ajout´s entre chaque trame. Finalement, 192 bits d’information e e num´rique deviennent donc (24 + 8 + 1) × (14 + 3) + 27 = 588 bits sur la piste e physique (plages lisses ou changements de relief d´tect´s par le laser ` l’entr´e e e a e ou la sortie d’une cuvette grav´e sur le CD), ce qui correspond ` environ 0,17 e a mm sur la piste. Le signal num´rique est converti en son analogique ` une e a fr´quence de 44100 Hz ; 1 s de musique est donc cod´e 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 d’un code (255, 251) de Reed-Solomon a (cf exercice 4.31 page 264). Ils admettent respectivement comme matrices g´e n´ratrices normalis´es 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 cod´e avec C1 en un mot y de 28 octets : e y = [x, x.R1 ]. On obtient ainsi une s´quence de mots de code de C1 de 28 e octets ; – les mots de C1 sont entrelac´s avec retard de 4 octets dans une table ; apr`s e e entrelacement on obtient une s´quence 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 d´codage proc`de comme suit (cf exercice 4.32) : e e – Chaque bloc z de 32 octets est d´cod´ avec C2 en un mot y de 28 octets e e en essayant de corriger au plus une erreur. Si on d´tecte plus d’un chiffre e erron´, on ne r´alise aucune correction : on retourne l’information que le mot e e est effac´. Dans la suite on note ’ ?’ un symbole effac´ (qui n’appartient 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 d´sentrelac´s. On reconstruit ainsi une e e s´quence de blocs y de 28 symboles. Dans un bloc y peuvent figurer des e octets de F256 et des ’ ?’, chaque ’ ?’ correspondant ` un effacement suite ` a a une erreur d´tect´e par C2 . e e – Chaque bloc y de 28 symboles est d´cod´ avec C1 . De distance 5, C1 permet e e

264

e Chapitre 4 : D´tection et correction d’erreurs

de corriger jusqu’` quatre effacements dans le bloc y. Si on arrive ` corriger a a ces effacements, on retourne les 24 premiers octets du mot corrig´ ; sinon un e message d’erreur. Ce d´codage 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 d’extrapoler le son d’un ´chantillon manquant si e l’on dispose des ´chantillons pr´c´dent et suivant. Aussi, ` la sortie du code C1 , e e e a avant l’entrelacement avec retard, on effectue une permutation pr´alable. 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 d´signe les 16 bits gauche ou u e droite d’un ´chantillon st´r´o sur 32 bits et p1 , p2 les 4 octets de redondance. e ee De fa¸on ` ´loigner deux ´chantillons sonores de 16 bits cons´cutifs, on les c a e e e permute en g1 g3 g5 d1 d3 d5 p1 p2 g2 d2 g4 d4 g6 d6 . Ainsi, grˆce aussi ` a a l’entrelacement avec retard, un paquet d’erreurs portant sur 48 trames de 32 octets peut empˆcher de reconstruire un ´chantillon de 16 bits (g3 par exemple) e e mais garantit de toujours disposer en sortie de C1 de l’´chantillon pr´c´dent et e e e suivant (g2 et g4 pour g3 ). Avec cette extrapolation, il est possible de corriger 48 × 32 × 8 = 28224 bits d’information, soit 48 × 588 = 28224 bits ou environ 8,2 mm sur la piste. Un autre entrelacement compl´mentaire est effectu´ en sortie de C2 : on coupe e e les trames de 32 octets en bloc de 16 octets et on permute les blocs d’indice pair avec ceux d’indice impair. Avec cette permutation, deux erreurs cons´cutives e affectent deux mots de code de C2 distincts au lieu d’un seul. Comme C2 corrige au plus une erreur par bloc, cela augmente sa probabilit´ de correction e lors du d´codage en ´vitant certains effacements. e e Exercice 4.31 (Construction des codes C1 et C2 ). Expliciter une construction possible des matrices g´n´ratrices G1 et G2 ` partir d’un code de e e a Reed-Solomon (255,251) sur F256 . Justifier que les codes C1 et C2 sont de distance 5. Solution page 326. Exercice 4.32 (D´codage du code CIRC d’un 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 d’expliciter les ´tapes du d´codage. e e 1. Lorsqu’on re¸oit un bloc de 32 octets, expliciter comment effacer un bloc c ou corriger au plus une erreur avec le code C2 en utilisant le calcul du syndrome d’erreur. 2. Lors du d´codage avec C1 , expliciter comment corriger au plus 4 effacee 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 pr´c´dent permet de corriger 15 trames cons´cutives. e e e Solution page 327. La technique d’entrelacement s´rie utilis´e dans les codes CIRC permet de e e corriger des grands paquets d’erreurs en m´langeant les symboles provenant e d’un nombre donn´ de blocs diff´rents. Il est aussi possible de r´aliser un e e e entrelacement de taille non born´e 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 plutˆt par flot : ils ´tendent les entrelacements pr´c´dents en codant chaque o e e e bit ´mis par une source par un ensemble de bits, d´pendant d’op´rations de e e e convolution sur les derniers bits ´mis. Ils pr´sentent l’avantage d’un d´codage e e e tr`s simple et de bonnes performances. e

4.6.1

Le codage par convolution

Dans son acceptation la plus g´n´rale, le codeur convolutif prend en entr´e e e e des blocs de k bits, applique des op´rations aux m derniers blocs re¸us, via e c une matrice de k × n polynˆmes 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 d’entr´e, la taille n des e e blocs de sortie, la m´moire m et les k × n polynˆmes. e o Pour plus de simplicit´ dans la pr´sentation, nous allons exposer le fonctionnee e ment d’un code convolutif qui code un ` un chaque bit du message source, soit a k = 1. On dispose alors de n polynˆmes g´n´rateurs de degr´ maximum m. o e e e La source est consid´r´e comme une suite infinie de bits (Si )i 0 , et les bits ee d’indice n´gatifs sont tous consid´r´s comme nuls pour marquer le d´but d’un e ee e message. L’ensemble des n polynˆmes g´n´rateurs peut ˆtre ´crit sous la forme d’une o e e e e matrice G sur F2 : G = (gij ) est de taille m × n. Pour chaque bit de source d’indice l, on note S(l) le vecteur ligne Sl . . . Sl−m . 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 Sl−i ),

(4.8) d’o` le u

. Il faut donc pour le d´codage supposer que l’on re¸oit un message R.6. . . et c donne le message source correspondant. . . 0 0 . . . . L’algorithme de d´codage est connu sous le e nom d’algorithme de Viterbi. . . . . .34. on a o e e G= 0 1 1 1 Le message 100110100 sera cod´ dans ce cas par 11010011100111010000. . o` le codage d’un u message bit par bit ` la vol´e correspond ` une op´ration lin´aire sur tout le a e a e e message. . suivi d’un o o e e entrelacement. 0 0 0 . . . . . . . . . . sur une matrice infinie e (pour un message fini de taille N . ··· . . qui est le message cod´ e c e avec un certain nombre d’erreurs. . 0 0           0 ···    0 ···   . la matrice est de taille nN ). pour coder la source (Si )i 0 la relation C = SG∞ o` G∞ est la matrice infinie u                G G 0 0 . . 0 . . 0 0 0 0 0 0 ··· 0 ··· ··· G ··· ··· 0 0 . On peut aussi voir le code comme le produit du message en tant que liste des coefficients d’un polynˆme par chacun des polynˆmes g´n´rateurs.8) donne. Le code convolutif est donc un code lin´aire. . . . . Le principe est similaire aux principes de programmation dynamique et de recherche de plus courts chemin. 0 0 0 . .2 Le d´codage par plus court chemin e Les codes convolutifs sont des codes correcteurs d’erreurs. . cyclique. . .266 Exemple : e Chapitre 4 : D´tection et correction d’erreurs Si les polynˆmes g´n´rateurs sont P1 = X et P2 = X + 1. . 0 0 . 4. . . . e La relation (4. On retrouve le principe du code par flot. L’algorithme de d´codage retrouve le mot e de code le plus proche du mot re¸u au sens de la distance de Hamming. . . . . Exercice 4. V´rifier sur l’exemple pr´c´dent que le message cod´ peut ˆtre e e e e e obtenu par des produits de polynˆmes. o Solution page 327. . 0 .

4. . . qui peuvent se r´p´ter. et toute chaˆ ` un e e e ıne a mot de code. On ´tiquette alors chaque arc par le code produit (un mot de code de n bits) e par l’entr´e correspondante. Exemple : (Suite de l’exemple pr´c´dent). correspondant aux ´tats possibles e de l’entr´e.6 Codes convolutifs et turbo-codes Le diagramme d’´tat e 267 Le diagramme d’´tat d’un code convolutif est un graphe orient´ ayant pour e e sommets les 2m mots binaires de taille m. . . e Tout mot de code correspond ` une chaˆ parcourant ce graphe.2. Le diagramme d’´tat pour le e e e code de polynˆmes g´n´rateurs P1 = X et P2 = X + 1 est indiqu´ figure 4. am−1 deux arcs correspondant e aux deux valeurs possibles du bit suivant de l’entr´e : l’un vers a1 . am−1 1 de l’´tape i + 1. C’est-`-dire que le treillis contient pour e a chaque bit i re¸u en entr´e.4. Exemple : (Suite de l’exemple pr´c´dent). et que chaque arc relie un mot a0 . .2: Diagramme d’´tat du code convolutif de polynˆmes g´n´rateurs P1 = X et e o e e P2 = X + 1. . un ensemble de 2m sommets comme dans le diac e gramme d’´tats. c’est-`-dire a ıne a un ensemble d’arcs cons´cutifs. . .3. o e e e 00 = [00] G 01 = [10] G 0 11 = [01] G 1 10 = [11] G Fig. On place alors pour tout mot a0 . Le treillis du code de polynˆmes e e o g´n´rateurs P1 = X et P2 = X + 1 est indiqu´ figure 4. am−1 0 et a1 . et tout chemin ` a a un mot de code. am−1 0 et e l’autre vers a1 . . . . am−1 1. e Tout mot de code correspond ` un chemin dans ce graphe. Le treillis de codage Le treillis de codage suit le principe du diagramme d’´tat en l’´tendant ` e e a toutes les ´tapes d’un codage effectif. e e e . . am−1 de l’´tape i aux e e mots a1 .

il est plus e c int´ressant de d´coder ` la vol´e. il faut appliquer l’algorithme e a e a e de Viterbi sur T = km mots de code re¸us. Ainsi. e .3: Treillis du code convolutif g´n´r´ par P1 = X et P2 = X + 1. e ee L’algorithme de Viterbi L’algorithme de Viterbi consiste ` retrouver le chemin qui correspond au mot a de code le plus proche du mot re¸u. e Solution page 328. e La question est alors d’´valuer la capacit´ de correction d’un code convolutif. Comme le code est lin´aire. on parle alors de distance libre du code. En pratique. le code pouvant ˆtre infini (ou plutˆt tr`s e e a e e o e grand en r´alit´). pour d´coder ` la vol´e. et donner le message source associ´. c a Exercice 4. par programmation e dynamique. 4.268 e Chapitre 4 : D´tection et correction d’erreurs 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. Il est alors possible de d´cider que c e le premier mot de source ne d´pendra plus du dernier sommet explor´. e e On utilise ´galement la notion de distance entre deux mots de code. L’algorithme 28 permet de retrouver le mot de code correct ` partir de la a totalit´ du mot de code re¸u. dans un code convolutif. mais e comme les mots de code sont potentiellement infinis. la distance libre est le poids minimal e d’une s´quence non totalement nulle.35. L’id´e est qu’une erreur n’a 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. C’est un algorithme classique de recherche c du plus court chemin dans un graphe orient´ sans cycle. On e e reprend ensuite l’algorithme de Viterbi avec le mot de code re¸u suivant qui c permet de s’assurer du deuxi`me mot de source. Le poids sur les arcs correspond ` la distance de Hamming entre a les mots re¸us et les mots de code correspondant ` l’attribut des arcs. Donner pour le code de polynˆmes g´n´rateurs P1 = X et o e e P2 = X + 1 le mot de code le plus proche de 10010010011101111010. etc.

a Pour tous les sommets v ` l’´tape du d´but du message re¸u. . Fin Pour Une s´quence non totalement nulle est obtenue en partant de la s´quence e e 000 . a Donner une marque prec(v) ← ∅ ` tous les sommets v du treillis.6 Codes convolutifs et turbo-codes 269 Algorithme 28 Algorithme de Viterbi (d´codage des codes convolutifs). . en passant par des caract`res non nuls puis en revenant ` une s´quence e a e de z´ros. le code convolutif est donc 1-correcteur. . Comme un code convolutif est lin´aire. e e Pour un indice i de l’´tape T ` l’´tape 0 Faire e a e Soit uv l’arc tel que prec(v) = u ´ Ecrire ` gauche du mot pr´c´dent le mot de code correspondant ` l’attria e e a but de uv. e Entr´es 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. m(v) ← 0. Autrement dit le poids minimal d’une s´quence non totalement nulle e e est exactement le poids minimal d’un cycle de transitions partant et revenant en z´ro. pour les arcs 11|01. a e e c Pour un indice i parcourant de l’´tape 1 ` l’´tape T Faire e a e Pour tous les sommets v du treillis de l’´tape i Faire e Pour tous les arcs uv arrivant au sommet v Faire Soit d la distance de Hamming entre le mot de code re¸u ` l’´tape i c a e et l’attribut de l’arc 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. Cela veut dire que ce code convolutif peut corriger 1 erreur dans chaque bloc de mots de code de taille la longueur de contrainte. le th´or`me 27 s’applique et la distance e e e libre fournit donc le taux de correction d’erreur. La distance libre du code est donc 3.4. Dans notre exemple.3 on voit que le cycle le plus court ne e reste en 1 qu’une seule fois. Pour l’exemple de la figure 4..

un code convolutif est dit syst´matique si les e bits source apparaissent directement dans les bits de sortie. on a donc une s´quence de bits e e qui est l’alternance de deux s´quences : d’une part les bits de l’entr´e X. o` D est un registre ` d´calage ou LFSR). e En sortie d’un codeur convolutif syst´matique. . e en entrela¸ant plusieurs bits. Pour augmenter le rendement du code tout en gardant un code syst´matique qui permet de e d´coder l’entr´e. supposons que le code est de rendement 3 . . ou encore en s´rie. . e e . . pour chaque bit Xi en entr´e. Autrement dit.270 e Chapitre 4 : D´tection et correction d’erreurs Codes convolutifs syst´matiques. la matrice G contient la matrice identit´ ` une permutation des colonnes pr`s. Le code e 1 obtenu est un code convolutif syst´matique de rendement 2 qui fonctionne e comme un code poin¸onn´. . 4. on obtient la s´quence .. Un code convolutif r´cursif syst´matique ou RSC peut e e e e e ˆtre construit ` partir d’un code syst´matique en r´injectant dans l’entr´e e a e e e l’une des sorties (figure 4. on a alors 3 bits en sortie donc une s´quence de la e e forme . Yi+1 . . la perforation ou poin¸onnage consiste ` supprimer une partie e e c a 1 des bits Y . . Xi+1 . Yi . Le rendement d’un code convolutif est a e priori bien moins bon que le rendement d’un code par blocs. u a e mi xi xi mi D D yi D D yi Fig. Yi .4: Transformation d’un code convolutif syst´matique de longueur de contrainte e 3 en code syst´matique r´cursif RSC. e Similairement aux codes par blocs. tout bit de sortie est la combinaison de plusieurs bits d’entr´e. Ce fonctionnement induit donc un entrelacement c que l’on appelle entrelacement en s´rie. . Xi . Yi+1 . .4. Par exemple. d’autre e e part les bits Y calcul´s par le codeur. . rendement et poin¸onnage e c Nous avons vu qu’un code convolutif fonctionne par flot. Au ea e contraire.. c e Codes convolutifs r´cursifs e Un code convolutif est dit r´cursif si certains bits de sortie du codeur sont e r´inject´s en entr´e. Xi . Yi . . Par poin¸onnage des bits en positions c 2 et 5 modulo 6. Xi+1 . dans un code convolutif non-syst´matique ou NSC (Non-Systematic e Convolutional code). . Yi+1 .

on a souvent C = C. d’o` le nom turbo.5). D’ailleurs. 4. Ainsi.6 Codes convolutifs et turbo-codes 271 Les codes convolutifs syst´matiques r´cursifs (RSC) sont ` la base de la conse e a truction des turbo-codes. Y ) calcul´s par le codeur convolutif. Le code C (resp. le d´codage tire parti de cette e e e e propri´t´. En outre. chaque tour corrigeant de plus en e plus d’erreurs. Il s’agit souvent de codes syst´matiques r´cursifs (RSC) dans lesquels des bits e e de sortie sont r´inject´s en entr´e du codeur . e dans laquelle sont altern´s les bits de la source X. le nombre d’erreurs mal corrig´es ou mˆme e e non d´tect´es est drastiquement r´duit. Nous allons maintenant voir plus en e e d´tail la technique turbo. les anciennes erreurs peuvent dor´navant porter sur moins de eae e e e bits et ˆtre mieux corrig´es. le nombre garanti d’erreurs e e e corrig´es dans le pire des cas n’est pas am´lior´ par rapport ` un code par blocs. e .4. Au niveau th´orique. C ) ´tant syst´matique. Un codeur turbo est r´alis´ comme e e e suit : – la source X est mise en entr´e du codeur C dont la sortie syst´matique est e e aussi la sortie syst´matique du turbo-codeur . le syst`me d’entrelacement permet e a e de r´partir les erreurs de mani`re pseudo-al´atoire. Plus pr´cis´ment. e e e a Au niveau pratique cependant. – les sorties Y et Y sont utilis´es pour construire la sortie Z du turbo-code. e Composition parall`le e ` A la diff´rence des codes entrelac´s crois´s qui utilisent un entrelacement s´rie e e e e de deux codes. le comportement pratique en moyenne des turbo-codes sur des entr´es quelconques est tr`s bon. seules les corrections portant sur peu de bits e e ` sont effectu´es ` chaque tour. sa sortie est une s´quence altern´e de e e e e deux s´quences : d’une part les bits X de la source et d’autre part les bits Y e (resp. Le code C est toujours convolutif e syst´matique r´cursif (RSC). et g´n´ralement le code C aussi. ee u Le fait de r´injecter des bits de sortie dans les bits d’entr´e est un proc´d´ e e e e it´ratif et la correction se fait alors par tour.6.3 Les turbo-codes Les turbo-codes utilisent la composition avec entrelacement de deux codes. en e e e e pratique. le mot corrig´ ´tant alors r´inject´ par le turbo. les turbo-codes utilisent un entrelacement g´n´ralement parale e l`le de deux codeurs C et C (figure 4. A e a ee e e partir de ce dernier une nouvelle passe de correction est initi´e. uniform´ment dans les e e e e mots de code. Comme le mot e a d´j` ´t´ corrig´. e – la source X est entrelac´e avant d’ˆtre mise en entr´e du codeur C dont la e e e sortie est Y . si des mots tr`s particuliers e e e e peuvent toujours ´chapper ` la correction.

Xi . la complexit´ de cet algorithme est prohibitive. ce qui correspond ` un poin¸onnage. . .272 e Chapitre 4 : D´tection et correction d’erreurs Partie systématique Entrées Encodeur 1 Code C Entrelaceur Multiplexeur Poinçonneur Redondance Encodeur 2 Code C’ Fig. on obtient un turbo-code de rende1 ment 3 : ` chaque top. Yi . Exercice 4. . Par o e a c exemple. a e ee Il est possible d’augmenter le rendement en multiplexant les sorties Y et Y plutˆt que de les concat´ner. Xi . Yi+2 . . en O(2L ) o` L est e u la taille d’une trame et aussi la profondeur de l’entrelacement.5: Codeur turbo par composition parall`le et entrelacement de deux codeurs e RSC. Yi . La sortie du turbo-code s´rie est alors la sortie de C2 . il est difficile de d´coder un turbo-code par calcul e de maximum de vraisemblance (algorithme de Viterbi) : ` cause de l’entrea lacement. . Comparer les rendements des turbo-codes parall`les et s´ries lorsque les e e 1 ´ rendements sont identiques R1 = R2 = r. Yi . .. . . . on obtient un turbo-code de rendement 1 2. 4. trois bits sont g´n´r´s en sortie Z = . la sortie devient Z = . 1 Avec des codeurs C et C de rendement 2 . .36 (Turbo-code parall`le et turbo-code s´rie). Quel est le e e rendement du turbo-code s´rie ? e 3. . . . Solution page 328. Xi+1 . Yi+1 . On peut aussi construire des turbo-codes s´ries en entrela¸ant la sortie de e c C1 et en la mettant en entr´e de C2 . Aussi. Soit C1 et e e C2 deux codes RSC de rendements respectifs R1 et R2 . similairement au codage entrelac´ e e crois´. en multiplexant alternativement Yi et Yi . Quel est le rendement du turbo-code obtenu par composition parall`le de e ces deux codes ? 2. Xi+2 . le d´e codage d’un turbo code utilise les d´codeurs de chacun des deux codes C et e . Etudier le cas r = 2 . D´codage turbo e D’un point de vue pratique. 1.

4. cette ´tape de r´injection/calcul est it´r´e un nombre e e e ee fix´ de fois. Chacun des deux d´codeurs calcule e e de son cˆt´ la probabilit´ a posteriori (APP) de chaque bit de source. Si les deux encodeurs sont des codes par bloc (par exemple deux Reed-Solomon) on parle de turbo-code en blocs. Ainsi. De mani`re analogue ` un moteur turbo. Cette oe e probabilit´ est utilis´e par l’autre d´codeur comme une information a priori e e e sur la valeur du bit de source. chaque d´codeur se base a priori Y e e sur une distribution de probabilit´s et non sur une valeur pr´-d´cid´e. Ainsi. Y correspondant respectivee ment ` la sortie syst´matique X – donc l’entr´e –.4. et aux sorties Y et Y des a e e deux codeurs. e Turbo-codes en blocs et turbo-codes hybrides Il est possible de remplacer les encodeurs convolutifs d’un turbo-code convolutif par des encodeurs par blocs. e e Désentrelaceur Entrelaceur Partie systématique Redondance Décodeur 1 Code C APP 1 Entrelaceur DéMUX Décision Désentrelaceur Décodeur 2 Code C’ APP 2 Fig.6). Y . le d´codeur de C (resp. mais ´ventuellement erron´es. e e e e Pour le d´codage. e e La correction est bas´e sur un m´canisme it´ratif et utilise les deux d´codeurs e e e e associ´s aux codes C et C (figure 4. en utilisant une technique it´rative : la sortie de chaque e d´codeur est r´inject´e en entr´e de l’autre pour calculer la distribution de e e e e probabilit´s des bits d’entr´e. C ) calcule la e ˜ probabilit´ APP ` partir de la valeur X de l’entr´e syst´matique du d´codeur.6: D´codage it´ratif d’un turbo-code. Y de C ). e a e e e la probabilit´ APP de la source calcul´e par le d´codeur C (resp. les gaz e e e a d’´chappement sont r´inject´s pour am´liorer les performances. les op´rations de d´multiplexage et de d´sentrelacement e e e e ˜ ˜ ˜ permettent de reconstruire les s´quences X.6 Codes convolutifs et turbo-codes 273 C le constituant. souvent 2. Pour e e e e chaque d´codage de bit. La valeur d´cid´e pour le bit de source en fin d’it´ration e e e e est celle qui a la plus grande probabilit´. si un . C) et l’entr´e e e e e ˜ ˜ du d´codeur C (resp.

un poin¸onnage est n´cessaire qui d´grade e a les performances de correction. typiquement envie ron 9 it´rations pour un turbo-code parall`le avec un entrelacement de taille e e L = 16384 est un bon compromis performances/complexit´. Pour cela. la t´l´phonie mobile (UMTS. la taille L varie de 210 ` 216 . La NASA les utilise depuis 2003 pour toutes ses sondes spatiales. 3G) ou encore le e e ee nouveau standard DVB-S2 de t´l´vision haute d´finition (HDTV) normalis´ ee e e en mars 2005. a e Performances et applications des turbo-codes En raison de leurs performances. Parmi les param`tres qui influencent la performance d’un turbo-code. Comme pour e e e les autres codes. on modifie l’algorithme de correction pour qu’il marque plutˆt tout un ensemble de o mots de code proches avec un certain poids (et une probabilit´ d’ˆtre le mot e e de code recherch´). G´n´raa e e lement. le nombre d’it´rations ` effectuer lors e a du d´codage augmente avec la taille de l’entrelacement. Pour obtenir un o 1 c e e code de rendement sup´rieur ` 3 . en ´vitant les entrelacements de type bloc. Cependant il faut rendre e e le code en bloc probabiliste afin de tirer parti de l’effet turbo. au lieu de corriger automatiquement vers le mot de code le plus proche. le rendement joue aussi un rˆle important. . les performances se d´gradent lorsque o e cette taille diminue et inversement s’am´liorent lorsqu’elle augmente. aussi. e La longueur de contrainte a moins d’influence que pour les codes convolutifs . l’entrelaceur est souvent construit a de mani`re al´atoire.274 e Chapitre 4 : D´tection et correction d’erreurs seul des deux encodeurs est un code par bloc et l’autre de type convolutif. L’ESA (European Space Agency) a ´t´ la premi`re ` les utiliser pour la sonde luee e a naire Smart-1 (lancement le 27 septembre 2003. La d´cision finale se fait ensuite par le raffinement de ces e e poids au fur et ` mesure des it´rations turbo. on parle de turbo-code hybride. Enfin. De plus. Il y a e donc un compromis prix/performance ` optimiser selon l’application. orbite autour de la Lune le 15 novembre 2004 et alunissage en septembre 2006). Les turbo-codes sont utilis´s de mani`re intensive pour les communications e e par flot en g´n´ral : ADSL-2. les turbo-codes utilis´s en pratique ont une petite longueur de contrainte. les turbo-codes ont ´t´ int´gr´s dans de nomee e e breux standards et en particulier pour les communications spatiales. e typiquement 3 ou 5. L’int´rˆt de remplacer des codes convolutifs par ee des codes en blocs est que le rendement est am´lior´. la taille e de l’entrelaceur joue un rˆle critique .

e . Cette section est une petite e e conclusion pratique au codage dans son ensemble. si le message reconsa c e titu´ est diff´rent. correction : en guise de conclusion Le codage des messages dans un alphabet lisible par un canal va optimiser la taille des donn´es transmises. Quelle est alors la proc´dure de codage ? e Le message doit ˆtre compress´ avant d’ˆtre crypt´. Le destinataire dispose des utilitaires CORR−1 . le fait de compresser avant tout permet de r´duire le e temps de calcul des deux autres fonctions. En effet. qui ne doit pas ˆtre un e e e point faible du secret. Enfin. ou. pallier aux erreurs ´ventuelles dues ` la transe e a mission.Compression. elle ne sera peut-ˆtre pas ´limin´e par le cryptage. En effet CORR e a e e e va rajouter de la redondance. sous forme d’une chaˆ sur un alphabet V . et peut donc e e e e ˆtre amplifi´e par les premi`res op´rations en sortie de canal (une d´comprese e e e e sion par exemple). cryptage. d’un ensemble de nombres sur V . qui lui permettront de reconstituer le message. de e ıne fa¸on ´quivalente. e e e Pour la mˆme raison. la pr´paration ` la correction d’erreur e a est forc´ment la derni`re op´ration de l’´metteur. et de correction d’erreurs CORR. On doit pouvoir reconsc e tituer M ` partir du message re¸u (ou ´ventuellement. et la pr´sence e e e e de redondance dans un message intercept´ est un angle d’attaque pour reconse tituer la m´thode de cryptage (la m´thode de compression n’est pas secr`te). D’autre part. organis´e et optimis´e. de cryptage e CRY P T . Il est donc indispensable d’effectuer les op´rations dans cet ordre. CRY P T −1 et COM P −1 . une e e e e alt´ration sur un message n’est plus corrig´e d`s sa r´ception. Soit M le message ´mis. il doit ˆtre accompagn´ d’un message d’alerte). Supposons e e e e que l’´metteur dispose d’un utilitaire de compression COM P . il doit ˆtre crypt´ avant de subir les transformations e e e n´cessaires ` son int´grit´ (d´tection et correction d’erreur). car dans les autres cas. et assurer la confidentialit´ des donn´es. s’il contient de la e e e e redondance.

et ´ventuele e e lement de s’auto-corriger. M’ corr −1(M’) crypt−1(corr−1(M’)) décryptage comp−1 (crypt−1(corr−1(M’))) correction décompression Fig. pour minimiser e la dur´e et le coˆt de la transmission. e Le message CORR(CRY P T (COM P (M ))) ne contient aucune information qui permette de reconstituer M sans disposer des bonnes fonctions. ´ventuellement alt´r´ au cours de la transa e ee mission. et en pr´sentant e e e un cadre th´orique commun. En cas d’alt´ration non corrig´e. la d´tection peut permettre un renvoi autoe e e matique du message. e u Ce sont toutes ces fonctions que nous avons ´tudi´es s´par´ment dans les chae e e e pitres pr´c´dents. cryptage.276 Compression. et enfin ˆtre le plus petit possible. 69: Codage CORR(CRY P T (COM P (M ))) d’un message M. correction L’´metteur va donc g´n´rer le message e e e CORR(CRY P T (COM P (M ))) et l’envoyer ` son destinataire. Le chapitre premier donne sa coh´rence au tout. M comp(M) crypt(comp(M)) corr(crypt(comp(M))) compression cryptage redondance Fig. 70: D´codage d’un message M = CORR(CRY P T (COM P (M ))). e . en fournise e e sant une m´thode globale d’utilisation des diff´rentes parties. il doit contenir des informations qui permettent de v´rifier sa coh´rence. Le message re¸u est M correspondant donc a c ` CORR(CRY P T (COM P (M ))). Le destinataire applique COM P −1 (CRY P T −1 (CORR−1 (M ))) = M.

` coefficients dans F2 . le corps de base et la valeur choisie pour n . la dimension d’une matrice g´n´ratrice du code. ii. 10.Conclusion 277 Exercice C.001. o e e . Le probl`me est de mettre en place une architece e e ture permettant de r´aliser la transmission fiable et s´curis´e des informations. e o e e iii.. .. 4. On d´sire ici assurer des transmissions fiables e e sur ce canal. Comment ´crie e e re cette matrice ` partir des coefficients du polynˆme g´n´raa o e e teur ? (c) Pour d = 3. o i. Expliquer a comment construire un code correcteur de type Reed-Solomon en pr´cisant : e i. Donner le polynˆme utilis´ pour impl´menter le corps de base o e e et expliquer bri`vement comment r´aliser les op´rations d’ade e e dition et de multiplication . e La liaison infrarouge est mod´lis´e par un canal binaire sym´trique de e e e probabilit´ d’erreur 0. un croupier transmet -par infrarouge. A chaque table. Le casino poss`de un serveur centralis´ qui enregistre tous les lancers de d´s effectu´s sur e e e e ` chaque table de jeu. Construction d’un code de Reed-Solomon adapt´. Donner l’expression du polynˆme g´n´rateur en fonction de α. lorsqu’on envoie n oce tets. on veut garantir de corriger jusqu’` p × n erreurs. le nombre maximal d’erreurs d´tect´es . e e iv.7: Quelques polynˆmes primitifs de F2 . ii. les polynˆmes suivants. le degr´ du polynˆme g´n´rateur et le rendement du code.1 (Le casino). on joue au 421. (a) Quelle est la probabilit´ p d’erreur lorsqu’on envoie un octet ? e (b) Pour rem´dier aux erreurs dues au canal. Dans un casino. o a sont primitifs : degr´ d e 3 4 5 6 7 8 9 10 Polynˆme 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. e e e 1.les s´quences de d´s au serveur.

On suppose les d´s du casino non pip´s. (e) Ce codage est-il optimal ? Si non. e Comment coder les s´quences de d´s pour garantir qu’il n’y ait pas de e e trucages sans consentement d’un croupier ? 3. correction (d) Calculer la capacit´ du canal. (d) Proposer un codage de Huffman. On cherche ` coder les s´quences e e a e de tirages sur le canal binaire : (a) Quelle est l’entropie d’un d´ ? e (b) Proposer un algorithme de codage o` les mots de code sont de mˆme u e longueur. S´curisation des communications. . e 2. cryptage. (c) Calculer la longueur moyenne de ce codage. proposer un codage plus performant. Solution page 329.278 Compression. Codage des lancers. Comparer au rendement du code proe pos´.

1. Le chapitre 2 donne des e e clefs pour syst´matiser ce type de principe.7 quelle taille doit avoir l’espace e des clefs pour garantir l’impossibilit´ d’une telle m´thode. page 29. car l’ensemble des clefs e possible est limit´. page 23. Si C1 = M1 ⊕ K et C2 = M2 ⊕ K alors C1 ⊕ C2 = M1 ⊕ M2 dans lequel la clef n’apparaˆ plus. – Dans ce cas. En outre. mais on apprend ainsi u e que ce code n’a aucune garantie th´orique ! e – Pour l’am´liorer. page 25.Solution des exercices Solutions des exercices propos´s au chapitre 1 e Exercice 1. On verra dans la section 1.2. Le code a une complexit´ O(n). page 21. avec un nombre d’op´rations constant pour traiter chaque pixel.5. En supposant qu’un seul message en clair et son ´quivalent crypt´ aient e e ˜ ´t´ intercept´s.4. le code n’est pas efficace. Ce n’est sˆrement pas tr`s courant pour les fax. par exemple lorsque l’image consiste enti`rement en une suite de e “01”. e Exercice 1. ee e 2. ´ ´ ´ CESAR AURAIT ETE CONTENT DE VOUS ! Exercice 1. Essayer toutes les clefs est une m´thode raisonnable. Les raisons sont li´es ` deux attaques possibles : e a 1. page 28. Le r´sultat peut mˆme ˆ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. l’algorithme consiste en un parcours de tous les pixels. Une analyse pourrait alors d´terminer ıt e des morceaux de M1 ou M2 . o` n est le nombre de pixels n´cessaires pour e u e coder l’image. En effet.3. e e Exercice 1. . e Exercice 1. la clef est facilement obtenue par K = M ⊕ M . et ainsi ´tendre les possibilit´s du code.1. on peut par exemple coder un nombre k de “01” cons´cutifs e e par “k01”.

9. elle est donc d’entropie e maximale sur les mots de mˆme taille par la propri´t´ 1. Il faut e e alors convenir avec le serveur s´curis´ d’une liste de clefs jetables (chacune ` e e a 8 caract`res par exemple si le mot de passe a 8 caract`res) conserv´e sur le e e e serveur et emport´e imprim´e sur un papier par l’utilisateur. dans un code de Vernam on a : H(M. 1. P (C = 1) = 1/8 . etc. Donc on tire directement H(C|K) = H(M |K) ou encore H(K|C) = H(M |C).280 Solution des exercices Exercice 1. Y . Exercice 1. P (M = a|C = 1) = 1 . P (M = b|C = 4) = 1 3. C n’ajoute aucune information. ce qui prouve que H(K|C) H(C|K). H(X. 2. K). K) = H(M ) + H(K) ou encore H(M |K) = H(M ) et H(K|M ) = H(K).14 (` comparer avec l’entropie de la source ´quia e probable 0. K.3. Y ) = H(Y ) + H(X|Y ) = H(X) + H(Y |X). on a direce tement H(M. On trouve une entropie de 0. C) = H(M.8. Exercice 1. Or. on peut s’attendre ` de e a longues suites de 0. P (C = 4) = 3/16. par sa construction avec les xor. P (M = b|C = 3) = 3/4 . Ainsi le mot de passe ne e e e circule jamais en clair. e e ` chaque utilisation. page 30. On voit que la connaissance du chiffr´ donne une information sur le e message envoy´ alors qu’un chiffrement parfait ne devrait donner aucune e information. K) = H(C. et envoyer le mot de passe crypt´ au serveur e e s´curis´. 1. On peut donc choisir de coder efficacement ces longues suites. en connaissant M et C on peut r´cup´rer la clef par K = M ⊕C. de mˆme connaise e e sant M et K. En effet. P (M = a|C = 4) = 0 P (M = b|C = 1) = 0 . Comme les messages M et les clefs K sont ind´pendants. il faut taper ce mot de passe crypt´. P (C = 3) = 1/4 . qui peut capturer un mot de passe s’il est tap´ en clair. page 33. Exercice 1.7. En combinant les deux . 2. Ensuite. P (M = b|C = 2) = 6/7 . Si on n’a pas confiance dans la machine qu’on utilise. P (M = a|C = 3) = 1/4 . P (M = a|C = 2) = 1/7 . 3. Si la source de clefs K est totalement al´atoire. il faut alors crypter ` la main son mot de passe avec la A a prochaine clef non encore utilis´e. pour tout X. page 36. P (C = 2) = 7/16 . Donc H(K) e ee H(C).6. page 32. qui d´chiffrera et identifiera l’utilisateur. Le 0 sera tr`s courant dans le message. C) = H(M.

mais cela n’influe pas M2 = C2 + Z2 . on obtient donc H(M |C) H(C|K) = H(M |K) = e e e H(M ). e Exercice 1. Appliquer l’algorithme d’Euclide ´tendu : e (E0 ) : 1×a + 0×b = a (E1 ) : 0×a + 1×b = b (Ei+1 ) = (Ei−1 ) − qi (Ei ) : ui × a + vi × b = ri On ne d´taille que le premier couple (a. k ∈ Z} NB : Calcul de l’inverse par B´zout : cf exercice pr´c´dent e e e 2. k ∈ Z}. donc M1 = C1 + Z1 est faux. Il existe k ∈ Z tel que 35x = 10 + 50. mod 10 . page 48. CFB : M2 = C2 + E(C1 ).Chapitre 1 : Th´orie des codes e 281 r´sultats pr´c´dents. e CBC : M2 = C1 + D(C2 ). donc M2 est faux car C1 est faux. e Exercice 1. Comme 7 est premier avec 10. ECB et CTR : les blocs sont ind´pendants. 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.2 = 6 Donc S = {6 + 10. mais M3 = C3 + E(C2 ) ne d´pend que de C2 et C3 qui sont corrects.10 = 3. page 49.k. 7 est inversible modulo 10 : x = 7−1 .2 = 3.10 = 30 mod 50 Donc S = {30 + 50.11. Ce qui prouve que forc´ment H(M |C) = H(M ) et que donc la e connaissance du chiffr´ n’apporte aucune information sur le message.10. page 41. e OFB : Seul C1 est faux.12. b) = (17. 1.k. et M3 = C2 + D(C3 ) ne d´pend que de C2 et C3 qui sont corrects. donc M2 est faux car C1 est faux. 17 est inversible modulo 50 : x = 17−1 . Comme 17 est premier avec 50.k ⇐⇒ 7x = 2 + 10k ⇐⇒ 7x = 2 mod 10.

soient p. d. y = 1 . page 51.15. . www. page 49. Donc y = 49−1 mod 55 se projette en 4−1 mod 5 = 4 mod 5 et en 5−1 mod 11 = 9 mod 11.5−1 mod 11 mod 55 = 44 − 25.k − 1.5) . Toutes les contraintes sont v´rifi´es donc x = 60k − 1. pk−1 . x = 1.2 mod 55 = −6 mod 55 = 49 mod 55. on a (60k −1) mod 2 = e −1 mod 2 = 1 et (60k − 1) mod 6 = −1 mod 6 = 5.11−1 mod 5 + 9. e e Exercice 1. 2 Gnu Multiprecision package. Entier tmp = x . En cons´quence. y ) . On utilise le fait que si un nombre divise un produit. Entier& x. Exercice 1. Soit.4.2 mod 55 = 46 mod 55 = 9 mod 55. On a donc x = 60. Entier& d. x = y . Entier& y) { if ( b==0 ) { d = a. On v´rifie alors les 2 autres contraintes modulo 2 et 6 .5. 50) = 5 et 5 ne divise pas 11 donc S = ∅ Exercice 1. } else { AEE( b. pgcd(35. void AEE(const Entier a. a % b. On ne consid`re dans un premier temps que le syst`me (3. alors il divise l’un des deux termes de ce produit. .11−1 mod 5 + 5. . page 51.5−1 mod 11 mod 55.swox. On utilise la classe mpz_class de la version C++ de la biblioth`que GMP2 e qui impl´mente des entiers ` pr´cision arbitraire.(a / b) * y . x. e a e #include <gmpxx.h> typedef mpz_class Entier.16. x = 4.4 et 5.282 Solution des exercices 3. . } } Exercice 1. Donc x = −1 mod 60.13. on a alors e e x = −1 mod 3. les seuls diviseurs de pk e sont les puissances de p inf´rieures ` k. y = 44 − 45.com/gmp .11.14. const Entier b. D’o` l’on tire la reconstruction u y = 4. page 51. y = tmp . On en conclut e a que ϕ(pk ) = pk − pk−1 = (p − 1)pk−1 .11. 1.5.

et soit i ni = pδi .17.Chapitre 1 : Th´orie des codes e 283 2. apr`s calcul de ϕ(n). Apr`s factorisation de n. Or le cardinal du groupe ee des inversibles modulo n est ϕ(n). ×. a i – Algorithme 1 : par l’algorithme d’Euclide ´tendu. D’apr`s le th´or`me e e e e e chinois. Soit Ni = N/ni . soit y l’inverse de 49 mod 55. k ϕ(n )−1 y −1 [N ] = ( i=1 y −1 mod ni . On d´duit des questions pr´c´dentes que si on a la d´composition n = e e e e pki d’un nombre en produit de facteurs premiers. e – Algorithme 2 : par le th´or`me d’Euler. donc x8×u = 1 mod 24. Il suffit ensuite de calculer e x−1 = xϕ(n)−1 modn par ´l´vation r´cursive au carr´. NB : la factorisation de N permet de calculer ϕ(N ). On peut d’abord pour tout i calculer l’inverse de y mod ni i −1 1 par Lagrange : yi = yi i mod ni avec ϕ(ni ) = ni 1 − pi . modulaire. alors il existe un unique x mn tel que x = a mod m et x = b mod n. e) de cardinal c. 1. ee e e – 63 = 32 × 7 : ϕ(63) = 3 × 2 × 6 = 36. – Algorithme 3 : par le th´or`me chinois. On pose ni = pδi . D’o` 22−1 mod 63 = 2235 u mod 63 = 43 mod 63.Ni−1 mod ni ) mod N Par exemple. on a : pour tout x ∈ G : xc = e (propri´t´ 4). si (a. u . Alors y = 4−1[5] = −1[5] et y = 5−1[11] = −2[11] d’o` y = 9[55]. e m n mn 3.Ni . on lui associe les deux nombres a = x mod m et b = x mod n. b) ∈ Zm × Zn . D’o` . en utilisant le th´or`me d’Eue e e e ler pour chaque nombre premier. Puisque x est premier avec mn si et seulement si a est premier avec m et b est premier avec n. alors ϕ(n) = (pi − i k 1)pi i −1 . y e u e y −1 [n] = y ϕ(n)−1 [n]. page 53. – ϕ(24) = 2 × 4 = 8 . e Soit N = pδi d´composition de N en facteurs premiers pi . les ni sont premiers 2 ` 2. On e calcule donc les r´sidus de l’inverse modulo les ni et on remonte l’inverse par le th´or`me chinois. Inversement. On rappelle que dans un groupe fini commutatif (G. D’apr`s Euler. D’o` 52001 = 5 mod 24. par le th´or`me des restes chinois. on calcule ϕ(n). On utilise une bijection entre les ensembles Zm × Zn et Zmn : si x ∈ Zmn. u 2. Exercice 1. par ´l´vation ` la puissance e e ee a ϕ(n) = 1[n]. puisque m et n sont e e premiers entre eux. alors les cardinaux de Z∗ × Z∗ et Z∗ sont ´gaux.

20. k est a isomorphe ` Fp (Ψp est injectif et k et Fp ont mˆme cardinal) . Ψ(1) = 1K . e1 = 1. Ψ(n1 + n2 ) = Ψ(n1 ) + Ψ(n2 ). e3 = X + 1. ee Donc il existe p premier tel que Ψ(p) = 0K . + 1K × 1K ) = (1K + . e i=1 i=1 Cette condition est suffisante pour 2 n 3. + 1K ) × (1K + 1K + . K est un espace vectoriel sur k . Ψp (p − 1)} . donc k est un a e sous-corps de K. . Exercice 1. page 63. D’o` u De degr´ 2 : 1 + X + X 2 car n’admet ni 0 ni 1 comme racine. Condition n´cessaire pour que P soit irr´ductible de degr´ n 2 : doit e e e ˆtre de la forme X n + X 0 + n−1 ai X i avec n−1 ai = 1 mod 2. alors. Si n n’est pas premier. + 1K ) = Ψ(n1 n2 ) n1 n2 n1 n2 et donc Ψ est un homomorphisme d’anneau. on a les ´l´ments e0 = o ee e2 = X. il existe n = 0 tel que Ψ(n) = 0K (si e Ψ(j) = Ψ(i) pour j = i alors n = |j − i| convient). ce qui est e e u absurde. b tels que ap1 + bp2 = 1 d’o` Ψ(1) = 0K . page 63. e De degr´ 3 : X 3 + X + 1 et X 3 + X 2 + 1. On a tout d’abord Ψ(0) = 0K . m est fini et |K| = k m . Soit Ψp la restriction de Ψ ` Fp . . Ensuite.19. on obtient ee Ψ(n1 ) × Ψ(n2 ) = (1K + 1K + .18. . Comme K est fini et Z infini. . . Pour l’unicit´ de p : si p1 et p2 sont premiers et Ψ(p1 ) = Ψ(p2 ) = 0K . X 4 + X + 1 3. Soit k = {Ψp (0). Ψp (1). . On a Ψ(n1 ) × Ψ(n2 ) = 0K donc Ψ(n1 ) = 0K ou Ψ(n2 ) = 0K (K est un corps donc ses ´l´ments non nuls sont inversibles). .284 Solution des exercices Exercice 1. D’o` : u X 4 + X 3 + X 2 + X + 1. . e d’apr`s B´zout. soit n = n1 n2 . il existe a. . Exercice 1. – e1 e3 e2 . e 2. page 63. Tout polynˆme v´rifiant la condition ci-dessus et qui n’est pas (1 + X + o e X 2 )2 = 1 + X 2 + X 4 . 1. . Ψ est non-injectif. soit m sa dimension. . Comme K est fini. En utilisant le polynˆme 1 + X + X 2 . . 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. X 4 + X 3 + 1. + 1K ) n1 n2 = (1K × 1K + . comme la multiplication d’´l´ments de K est associative. en cons´quence.

Soit K= 0. 1 Donc K = 13. (⇒) On suppose qu’il existe un code instantan´ (c’est-`-dire qui v´rifie la e a e propri´t´ du pr´fixe) avec les longueurs de mots l1 . 12 1. e5 = 2. e3 = 3. x8 = x4 + x6 + x7 = 1 + 0 + 0 = 1. 110. . Mais on ne peut pas faire baisser cette probabilit´ d’erreur. x5 = x1 + x3 + x4 = 1+0+1 = 0 .Chapitre 1 : Th´orie des codes e 285 Exercice 1. 1 2. .23. 2. e e Autre preuve : on peut dessiner un arbre de Huffman contenant tous les mots de code (voir la section 1. 12 0. ils ne peuvent e donc pas ˆtre pr´fixes les uns des autres. 0). 1. 1 2. 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 . C’est donc un code instantan´. e2 = 6. 1 2. 1 2. Comme l’alphabet est de taille 10. Comme la probabilit´ d’erreur e a e est forte.25. Le mot de code pour adbccab est 011110110110010. 1 2. page 82. 1 2. et n = 21. page 79. 1 pour tout i. et le mot de source pour 1001101010 est bacbb. 1 2. car ils commencent tous par e 1. 3/3. page 79. 101. e1 = 2. e6 = 1. donc x4 = x0 + x2 + x3 = 0 + 1 + 0 = 1 .1). Exercice 1. Tous les autres mots de code sont de la mˆme longueur. e e 3. etc. 1. Pour les mots de code (100. 12 2. 3/2. . le nombre de degr´s de e libert´ est 9. On a pi = 0.22. x6 = x2 +x4 +x5 = 1+1+0 = 0 . 12 1. ln .39). 2. 1 2. . L’entropie de la source est H = 1. car les e autres valeurs du tableau sont sup´rieures ` K.21. P (0 . 1 = −1. 12 1. 12 3. . 92 0. page 75. 01) = P (0) . x7 = x3 +x5 +x6 = 0+0+0 = 0 . Avec une probabilit´ 0. Exercice 1. 0 n’est pr´fixe d’aucun autre mot de code. 957. 111. On v´rifie facilement en comparant tous les mots deux ` deux qu’aucun e a n’est pr´fixe d’un autre. . e4 = 2.24. 75 Exercice 1. on peut donc affirmer e e que la distribution obtenue n’est pas uniforme (la valeur ` comparer ` K est a a 11. . P (0)P (1) = pk (1 − p) 3. page 72. 3/4. 1 2. e7 = 0. On a montr´ qu’on ee e e . e8 = 1. 12 + + + + + + + + + 2. les rapports (nombres de bits de code par bit de source) sont (3/1. il vaut mieux s’abstenir et ne rien conclure de ce test. 92 0. . 1/4). Exercice 1. Modulo 2.25 de se tromper.4. 92 0. e9 = 1. Puis e0 = 3.

soit |V |l−li (on suppose enlev´e. .286 Solution des exercices peut construire sa repr´sentation par un arbre de Huffman. . une feuille d’un sous-arbre de hauteur 0). Il est facile de trouver des x tel que y = H(x). . Exercice 1. et en r´it´rant l’op´ration. Mais on ne peut e e i=1 en enlever au total plus que le nombre initial. . un sous-arbre complet de hauteur l − lk . e ee e Remarque : ceci prouve l’implication laiss´e en suspens du th´or`me de Kraft. de hauteur l − lk . on a alors enlev´ ea e e k−1 l−li feuilles de l’arbre initial par les op´rations successives d’´lagage. Donc si l’on connaˆ x. page 84. . conse e e truire l’arbre de Huffman. . On cherche ` e e e a construire un arbre de Huffman dont les mots de code ont pour longueur l1 . On part d’un arbre de hauteur l. de longueurs de mots l1 . . lk−1 . Donc. Le code de Huffman. on suppose que l’in´galit´ est satisfaite. mots que l’on suppose class´s par ordre croissant de leurs lone gueurs. ln = l. Or. . ıt on calcule y = H(x). Mais. e e i=1 |V | k−1 −li ) feuilles. Si on a d´j` « plac´ » les mots de longueur l1 . e e e Pour toutes les op´rations. on enl`ve n |V |l−li feuilles. e Pour pouvoir choisir un nœud dans l’arbre. correspondant ` un mot de lona gueur lk . On compte ` chaque op´ration d’´lagage le nombre de feuilles de l’arbre initial a e e complet qu’on enl`ve ainsi ` l’arbre de Huffman. Pour un mot de longueur li . l’arbre restant contient un sous-arbre. soit n |V |l−li |V |l . toutes les op´rations d’´lagage pr´c´dentes consistent e e e e ` enlever des sous-arbres de hauteur plus grande (correspondant ` des mots a a plus courts). . i=1 |V |li (⇐) R´ciproquement. d’o` : u i=1 n 1 1. e e e un peu plus haut dans ce chapitre.26. 1. v´rifie la propri´t´ du pr´fixe. . on sait d’apr`s l’in´galit´ de l (1 − e e e Il reste donc |V | i=1 |V | Kraft que : n i=k 1 |V |li k−1 1− i=1 n 1 |V |li soit : |V | (1 − l k−1 |V | i=1 −li ) i=k |V |l−li |V |l−lk On peut donc placer le mot de longueur lk . s’il reste au moins |V |l−lk feuilles dans l’arbre restant. ln . Montrons qu’il reste effectivement |V |l−lk feuilles dans l’arbre restant. . . On proc`de ensuite par induction. et |V |l feuilles. e a c’est le nombre de feuilles de l’arbre complet de hauteur l − li . car non r´utilis´e. puis on trouve un autre x tel que y = H(x ). L’arbre complet e initial a pour hauteur l. . il faut qu’on puisse trouver dans l’arbre.

. 53 = 52 · 5 = −6 · 5 = −30 = 1 mod 31 et 5 est donc e racine racine primitive 3i`me . Ml ) et on a une collision sur h. Donc f n’est pas r´sistante e aux collisions. Alors. On a f (x) = f (x ) = h(y).28. On suppose que M est sur k 1 bloc de b bits et M sur l 1 blocs. On cherche alors les racines. Alors on peut trouver y et y tels que h(y) = h(y ). 3. avec k l. . alors on a xh ⊕ xl = xh ⊕ xl et a fortiori ´galement apr`s l’application de f . . 6 e et −5.29. . page 86. Supposons que H ne soit pas r´sistante aux collisions. Nous avons donc six candidats pour ˆtre racine primitives 6i`mes . Soit y1 = y1 et M1 . . Alors. soit x = f (y1 )||f (y2 ) et x = f (y1 )||f (y2 ). On v´rifie tout d’abord que c’est possible : effectivement 31 − 1 = 2 · 3 · 5 e donc 6 divise bien 30. a Exercice 1. si il y en a. 2. e e Exercice 1. −1 e seuls ϕ(6) = ϕ(2)ϕ(3) = 2 conviennent : 1 n’est que racine primitive 1 e racine primitive 2i`me . Posons y = y1 ||y2 et y = y1 ||y2 . Il est facile de trouver x connaissant x. et e i`me . Exercice 1. Alors on pose y1 = hk−1 (M ) et y1 = hl−1 (M ). Mk−1 = M1 . . Les deux racines primitives e i`mes de l’unit´ modulo 31 sont donc 6 et −5 = 26. Dans ce dernier cas on r´it`re le proc´d´ avec yi = hk−i (M ) et yi = hl−i (M ) jusqu’` obtenir e e e e a yi = yi . page 84.27. e 6 e . Supposons que h ne l’est pas. donc on prend un x quelconque au hasard et on g´n`re x . . . −6.Chapitre 1 : Th´orie des codes e 287 2. e e Exercice 1. Alors il est facile de e trouver M et M distincts tels que H(M ) = H(M ). page 92. on obtient que X 6 − 1 = (X 3 − 1)(X 3 + 1) = (X − 1)(X 2 + X + 1)(X + 1)(X 2 − X + 1). de X 2 + X + 1 et X 2 − X + 1 : ce sont respectivement 5. L’inconv´nient de cette construction stricte est qu’elle n’est extensible e qu’` des messages de taille une puissance de 2. Trois cas sont alors possibles : 1. 2. de mˆme que −6. page 86. M1 . Mk−1 = u. Prenons par exemple xh = (xh ⊕ xl ) et xl = 0. Mk−1 = M1 . h(u||Mk ) = h(u||Mk . Ensuite. . Soit y1 = y1 et alors on a trouv´ une collision sur h car h(y1 ) = H(M ) = e H(M ) = h(y1 ).30. . 1. Mk−1 .

a est une racine primitive. Factorisons X 4 − 1 = (X − 1)(X + 1)(X 2 + 1) et X 2 + 1 est irr´ductible modulo e 2 + 1 dans lequel on a bien 31. Exercice 1. 4 ne divise pas 30. Donc m = 1 mod r. a = 238. e e i3 = −i et i4 = −i2 = 1. – 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 −xn−1 ) et xn+2 −xn+1 = a(xn+1 −xn ). X6 = 253. – ϕ(pe ). e On sait que les ´l´ments de Z31 ne peuvent pas ˆtre racine primitive 4i`me et ee e l’on regarde alors une des racines de X 2 + 1. page 103. e e e e e e – p = 1009. m = −1 mod s par d´finition. il faut donc se placer dans une extension de Z31 . Donc (xn+1 −xn )2 = (xn+2 − xn+1 )(xn − xn−1 ) si a est inversible modulo m. s divise p + 1 et t divise r − 1. Si s = r alors sr−1 = 1 mod r d’apr`s e e le th´or`me de Fermat.31. not´e par exemple i que l’on e e sait ˆtre racine 4i`me . e . Exercice 1. donc p + 1 = 0 mod s. page 94.288 Solution des exercices Exercice 1. Par d´finition. r − 1 a pour facteur t. X0 = 456. b = 12. Ensuite. On v´rifie que c’est bien une racine primitive : i2 = −1. Dans ce cas m est un facteur de la diff´rence de cette ´galit´ et l’on est ramen´ au cas pr´c´dent. On se place alors dans le corps F312 Z31 [X]/X 4 qui divise 312 − 1 = 960.32. r divise p − 1. ce qui veut dire que p − 1 = 0 e e mod r.33. – ϕ(p). Par e cons´quent. page 92.

Le th´or`me e e est bien v´rifi´ dans tous les cas. 3.05. e e dans ce cas. 2N fichiers. e e 1 1 L’entropie de S est H(S) = 0.24.35. 1.99 + 0.0808. 4 fichiers de taille 2. apr`s compression il sera impossible de savoir vers lequel e des fichiers initiaux d´compresser.3.01log2 0.. e e Exercice 2.. page 114. et donc il y aura eu perte. 2. il faut g´n´rer 6 ´v`nements de probabilit´s 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 . N −1 Soit un total de 22−1 = 2N − 1 fichiers de strictement moins que N bits.01 = 0. L’id´e est de proc´der par rejet (avec relance de la pi`ce si n´cessaire). e e e e Pour cela. Ceci prouve que soit au moins deux fichiers distincts de N bits seront compress´s de mani`re identique. 2N −1 . .Chapitre 2 : Th´orie de l’information et compression e 289 Solutions des exercices propos´s au chapitre 2 e Exercice 2. qui est d’apr`s l’optimalit´ de Huffman meilleure que le code construit. Le code issu de l’algorithme de Huffman 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. mais cela ne remet pas a en cause l’optimalit´ de Huffman : il faudrait comparer avec la quatri`me exe e tension. page 107.1. C’est sup´e rieur ` la longueur moyenne du code de l’exercice 1. Exercice 2. page 114. L’autre solution est que certains fie chiers compress´s font plus de N bits. soit par bit de source l = 0. Dans ce cas il n’y a pas eu de e compression. 2 fichiers de taille 1. 1 fichier de taille 0.2..99log2 0. En effet.

3-> 01 . 5-> 10 .66} (au e nombre de 16) avec les 16 mots de longueur 4. H(d´)=2. 2-> 001 .. 4-> 00 . 6-> 2 ).62) qu’en codant la source par s´quences de chiffres.63.18 + 4 ∗ 0. ce e e e codage n’est sans doute pas optimal.78 chiffres. e 3. d`s que l’on a F F −) et on relance 3 fois la pi`ce (tirages ind´pene e e dants). Huffman construit le code (par exemple) : ( 1-> 10 .65. 1. On code les s´quences {1.58/log2 (3) = 1. C’est aussi le code optimal. 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)+.1.2}.54.22∗1+(1−0.55. Sur {0.62.53. le cas de l’extension de source ` 3 d´s permet de faire en encodage a e 3 = 216 < 256 = 28 ..2. En effet. 3.51.3. Dans ce cas. 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 = . un code possible est : ( 1-> 000 . de longueur moyenne (fixe) ´gale ` e a 0.1}.6. 5-> 02 . La longueur moyenne par bit de source est donc : 2 ∗ 0. 3-> 010 . 1. soit une moyenne de 11 u pile ou face pour les trois d´s du 421. Selon le code choisi (dont ne d´pend pas la longueur des s´quences).755.4.58. sur {0. 4-> 011 . 2.4. C’est le code optimal (par th´or`me).64.290 Solution des exercices Si on trouve FFP ou FFF : on rejette le tirage (on peut donc s’arrˆter apr`s e e deux jets. et de mˆme pour les mots de un chiffre.. e 1 L’entropie des trois d´s non pip´s ´tant 3 ∗ 6 ∗ ( 6 ) ∗ log2 (6) ≈ 7. on a besoin de 4 bits. e e on ne pourra obtenir mieux (et toujours plus que 2. soit e un rendement de 2.5. e 2. 2-> 12 . .60 = 3.22)∗2 = 1. la moyenne du sur 8 pile ou face. 6-> 11 ).61. Pour coder les s´quences de deux chiffres. page 116. Exercice 2. page 116. de longueur moyenne 2.52. e Exercice 2.22 + 2 ∗ 0.5. soit un e rendement de 4.56. 1−x (1 − x)2 8 2 8 6 6 2 D’o` N = 3 ∗ ( 8 ) ∗ ( 6 ) + 2 ∗ ( 8 ) ∗ ( 8 ) ∗ ( 6 )2 = 3 + ( 3 ). puisque 6 nombre de tirages n´cessaires avec rejets est plus proche de 8.2. on e e peut avoir par exemple : Tunstall( 66-> 1111 et 64-> 1100) : 11111100 et Huffman : 11|11|11|011.

` mettre dans le e a fichier compress´ : au moins 64 ∗ 8 + 64 ∗ 6 = 896 bits. La compression totale en ignorant le premier @ est donc : ASCII(a) 3 Pour voir que c’est une borne inf´rieure il faut consid´rer un code de 64 mots dont e e certains font strictement plus de 6 bits. Exercice 2. a @->10 . @a| 1| 0| 0| 0| 0| 0| 0| 0| @b| @c| @d. la suite de la compression est donc 110| 1110| 1111| 110| 1110 et juste avant le dernier d l’arbre est devenu a->0 . c->1110 . 10. 0. b->101 . d->111. soit un total d’au moins 41 bits. e 5. chacun ´crit sur 8 bits et il y a donc ´galement 64 codes e e n´cessitant donc au moins 64 ∗ 6 bits au total3 . 0. et donc le dernier d est cod´ par e 111. Pour une extension de source ` 3 caract`res. Le code obtenu n´cessite 8 + 5 − 6 − 6 = 1 bit de e moins dans sa table. 50799] [42000.8. 49679] [84000. 0. e 4. 96799] [91680. 110. 10. a. @->100 . Nombre 49991 49991 49991 49916 49916 49168 49168 49168 91680 91680 Intervalle [40000. 0. 111. 51599] [48400.c->110 .6.d->111). c->110 . 57999] [48400. 0. 110. Soit. 111. page 121. 59999] [48000. Alors cela veut dire qu’il y a aussi des mots de strictement moins de 6 bits. c et d n´cessitent donc 4 ∗ 8 bits pour ˆtre ´crits et leurs codes e e e n´cessitent 1 + 2 + 3 + 3 bits. Compression par Huffman : 0. 18 caract`res ASCII :8 ∗ 18 = 144 bits. page 125. 50399] [46000. 0. soit 1 ∗ 9 + 3 ∗ (2 + 3 + 3) = 33 bits. 96799] Sortie b b b shift b shift b a shift c 291 Exercice 2. 110. 53999] [49200. Par exemple : (a->0 . 111. Dans le cas de l’extension de source ` 3 caract`res. 10. auxquels il faut ajouter 41 bits de table. 1. a e la table (ou l’arbre) n´cessiterait d´j` un espace m´moire plus de 5 fois e ea e plus grand que le fichier initial. rempla¸ons dans le code ces deux mots par les deux mots de 6 bits qui c l’allongent directement : 101010 et 101011. b->110 . page 122.Chapitre 2 : Th´orie de l’information et compression e Exercice 2.b->10 . b. il y a 43 = 64 tria e plets possibles. 2. 1. e 3. 51999] [49600. Prenons un mot par exemple de 8 bits et un mot de 5 bits (par exemple 10101).7. d->1111. . l` l’arbre dynamique est a->0 . 0. 0.

(FF. 00. 00. FE). 00. 6. 13F. Le caract`re de r´p´tition est FF. FE. (FF. (13. (13. Soit 8∗4+34∗8+2∗8 = 320 bits = 40 octets au lieu de 6 ∗ 8 ∗ 8 + 2 ∗ 8 = 400 bits = 50 octets 5. 3. 00. 14F. o` 68 code pour les dimenu sions de l’image (6 × 8 pixels). 00. 00. 2. FE. 1. (FF. 4. 4. 00. 00. (13. “0123012345670123” et “0123456777777777”. 13F. 00. 00. Exercice 2. 00. FE). 6801314131413141312222611. FE. 0F. FE). 00. (FF. FE. 0F). 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 Huffman statique). 1. page 126. puis chaque chiffre pour le nombre de pixels cons´cutifs de mˆme couleur (alternance blanc-noir). (FF. 4. FE). 00. FE). 00. 00. 0F). 1]). Soit 6 ∗ 4 + 29 ∗ 8 + 2 ∗ 8 = 272 bits = 34 octets au lieu de 50. 00. 0F). 14F. 00. Exercice 2. 00. Le premier bit indique si l’on code une couleur ou un run. Il faut donc 3 ∗ 16/8 = 6 octets. 0F. 6. 00. 00. FE. 0F). 6. FE. plutˆt a o une perte sur les petites images ! 3. 00. 00. 00. 13F. e a On obtient alors : 6. 13F. 1. 00. 3. (FF. (14. FE). On peut ´galement supprimer le bit ` 0 dans la couleur suivant un run. (14. 4. 00. On obtient donc : 6. 00. 0F). 3. FE.292 Solution des exercices 10000000 1ASCII(b) 10ASCII(c) 10ASCII(d) 110 1110 1111 110 1110 111. 3. 0F). (14. 00. FE). FE). 00. Ce qui fait 8 ∗ 4 + 26 ∗ 5 + 2 ∗ 8 = 178 bits = 23 octets. On a donc : 6. 00. 00. (FF. 8. 6. 1. Pour 34 ∗ 5 + 2 ∗ 8 = 186 bits = 24 octets au lieu de 6 ∗ 8 ∗ 4 + 2 ∗ 8 = 192 bits = 26octets. e e 2. 00. 8. 1. 3. e e . FE). 0F. 00. (16. 0F. (FF. 00. 00. 0F. 00. 0F. 0F. 00. FE). 0F. La deuxi`me chaˆ a une e ıne entropie visiblement r´duite. 00. FE). 6. 00. (13. (FF. 6. 0F. 00. (FF. 00.10. 0F. 0F). Les fr´quences sont ´gales ` 1/8. 25 octets (ou 13 en limitant ` des blocs de taille 16) au lieu de 6. 00. e 3. 8. 0F). “0123321045677654” et “0123456701234567”. 00. 2. 00. (FF. 00. 8. 00. 00. (FF. page 128. Sur des groupes de 3 caract`res cela donne sur ce cas particulier @aaa| e 1| 0| @bcd| 10| 10. FE. 00. on code noir par “00” et blanc par e e e “FE”. 00. 16F. 14F. (FF. FE. FE). Par exemple. soit ASCII(aaa)101ASCII(bcd)1010 qui n´cessite e seulement 3 ∗ 8 + 1 + 1 + 1 + 3 ∗ 8 + 4 = 55 bits au total. 00. l’entropie est donc maximale et 3 bits e e a sont n´cessaires pour chaque caract`re. FE). 4. 00. 00. FE).9. 00. On note un bloc par un bit coll´ ` quatre autres bits en hexad´cimal e a e (par exemple : 0F = [0. (FF.

01. 01. 101. Ici. 1100.75 + .0. 011. Huffman donne : 000. 1. 3.0. 1100. 67 et 77.858 et H = 2. 111.81. Par Huffman le code est donc : 00. (b) Entr´es Une chaˆ S (de taille n).1).0. puisque c’est l` que a se trouve la ligne 1. 4 ∗ 3 + 4 ∗ 1 = 16 = 2 octets sont n´cessaires. S=L=”sssssssssh”! Move-to-front donne C=(1. 1111. Pour la premi`re chaˆ on obtient une entropie : H = 4( 16 log2 ( 16 )) + e ıne 3 1 4( 16 log2 (16)) ≈ 1. Ainsi.875.11. 001. mais avec e une table de taille 256 octets au lieu de 8 triplets soit 3 octets.0.22. Pour k = 2. qui est aussi la sortie de Huffman. 101. (d) L’index primaire est celui pour lequel T [i] = 1. 1101. 34. 1.953.75 octets ! 5. Deux entiers i et j. page 131. 1101. 7. 56. 6. 010.0. mais pas ` partir de F ! ! ! a 2.781 et H = u 2.75 octets. pour respectivement 12. Un « Move-to-Front » suivi d’un code statistique est donc un « code statistique localement adaptatif ». 1110. Exercice 2. puis T contenant les indices de permutation et enfin L que l’on calcule par S[T [i] − 1]. 9 Huffman donne alors : 00. 100. e ıne Sorties « i est avant » ou « j est avant » Tant que on n’a pas de r´ponse Faire e Si S[i] < S[j] Alors R´pondre « i est avant » e Sinon. Car le message initial peut ˆtre reconstruit ` partir de L et de l’index e a primaire. .81 + 1 = 2.0.Chapitre 2 : Th´orie de l’information et compression e 293 3 4.0. Pour k = 1 on obtient “0123220345676644” et “0123456770123457” d’entropies respectives H = 2. 1.47 = 2. d’o` seulement u 2 + 2 + 3 + 3 + 4 + 4 + 3 + 1 ∗ 9 = 30 = 3. cela donne : “0123112345675552” et “0123456777012347” d’o` H = 2. si S[i] > S[j] Alors R´pondre « 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. d’o` un codage sur seulement 2 ∗ 3 ∗ u 2 + 2 ∗ 3 ∗ 3 + 4 ∗ 1 ∗ 4 = 46 = 5. La deuxi`me chaˆ s’y prˆte e ıne e 1 9 encore mieux : H = 7( 16 log2 (16)) + ( 16 log2 ( 16 )) = 1. 100. Impl´mentation pratique : e (a) On peut se servir de la position du premier caract`re du message e source.

(11. 0. 1. (0. 0. soit BLB. e e a e Exercice 2. e) (0. 1. 1-10” par Huffman dynamique . (0. c) (0. a) . 0. 0. page 134. et sont donc coma prises entre 0 et 7. r) . 00. a) (6. 010. (10. d) (0. La compression de “BLEBLBLBA” par LZW donne donc le r´sultat suivant : e chaˆ ıne B L E BL BLB A Affichage 42 4C 45 80 83 41 Dictionnaire BL ↔ 80 LE ↔ 81 EB ↔ 82 BLB ↔ 83 BLBA ↔ 84 Si l’on d´compresse cette sortie sans traiter le cas particulier. L`. (0. 0. la distance et la longueur doivent tenir sur 3 bits. 010. 6. page 135. 010) . f ) (6. b) (6.12. f ). on obtient ` e a cause du d´calage de mise en place du dictionnaire la sortie suivante : e Code 42 4C 45 80 83 Affichage B L E BL ??? Dictionnaire BL LE EB ↔ ↔ ↔ 80 81 82 Puisque que le code 83 n’est pas connu c’est que l’on est pr´cisement dans le e cas particulier et que le prochain groupe est donc forc´ment la r´p´tition du e e e pr´c´dent (BL) augment´ de la premi`re lettre du groupe. 0. 1-4. 0. 1. 2. 010). (00.13. 1r) . 5. b) . 1-1. a) (0. Ainsi. 0. b. u 3. 00) . 10. Il faut donc couper le dernier bloc en deux morceaux : (0. a) 2. 0. 10” devient “1-0. 0.14. (110. c) (0. 0.294 Solution des exercices Exercice 2. b) . a) (12. a. et pour le a dernier triplet. 3. b. 6. 2. f ). 0. 00. D’o` le codage gzip : (10. (4. On voit e e e e donc bien ici. (13. 010) . a) . 2. 5. 0. 1-3. 1. “a. 0. r. . f ) (6. page 132. 3. 0. Exercice 2. a” devient “1-a. b) (0. 1a) . 0. 0. (3. d) (0. 1. (1. 010”. 6. 0. b) (0. (0. “0. 0. b. 3. 1b) . (14. b) . 0. 4. 1-r. 1-b. il faut bien sˆr que la distance soit toujours plus longue u que la longueur : (0. que le traitement du cas particulier permet de mettre ` jour a le dictionnaire une it´ration plus tˆt. toute chaˆ r´p´t´e deux fois de e o ıne e e e suite peut ˆtre trait´e correctement ` la d´compression. 0. e) (0. a) (0. 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.

a e 5. (0. 1. 1b) . 1r) . e . 0.gz : (0. (3. 3. (3. a) . (3. 0. 1. a) . (11. 1. b). 0. 0. (011. 0. (00. 010). 0. 2. 0. (13.gz : (0. (2. Avec une petite e fenˆtre il est plus rapide mais la compression est moins bonne. Donc toute rencontre. r) . 1r) . e e En outre. 1b) . a) . 0.gz. (12. 01) . 1. Cette particularit´ fait qu’il n’y a e e a pas de diff´rence structurelle entre un seul fichier compress´ par gzip e e et une s´quence de fichiers compress´s. 010) f2. (0. et donc (10. 0. 4. f1. b) . 0. 00) . dans le u e e e fichier. (0. on obtiendra donc bien en r´sultat un fichier dont le contenu est e identique ` la concat´nation de f1 et f2. 1. (1. 0. a) . de la s´quence 10 sur la chaˆ des occurrences est forc´ment une e ıne e remise ` z´ro des Huffman dynamiques. (00. 0.Chapitre 2 : Th´orie de l’information et compression e 295 3. Les deux premiers caract`res d’un fichier gzip sont donc forc´ment 10. 2. La premi`re distance pour le premier caract`re d’un fichier est forc´ment e e e 0. En d´compressant avec gunzip e e e f3. comme @ est fix´ au bit 1. r) . 1a) . 1a) . a) qui devient (10. (13. En changeant la taille maximale de fenˆtre de LZ77. 3. 00) . (00. 1. b) . b) . (0. (0. le d´but de fichier est le seul endroit e e o` la s´quence 10 peut ˆtre rencontr´e.

2).1. 2. 14 + 4k). b) = (1. On a trouv´ e la bonne clef ! De fa¸on g´n´rale. 19. soit en calculant les e coefficients de B´zout par l’algorithme d’Euclide ´tendu) et on e e en d´duit l’ensemble des solutions dans Z.. – k = −23 ⇒ K = (a. on commence par r´e e e soudre l’´quation homog`ne 4a + b = 0 (l’ensemble des solutions e e est SH = {(−k. On trouve ainsi S = e {(−k.. k ∈ Z}). |Z∗ | = ϕ(26) = ϕ(13 × 2) = 12 et Z∗ = {1. 17. uar af srvre. on aura au pire O(|Z∗ |) essais ` effectuer. On d´chiffre avec cette noue velle clef : maitre corbeau. on est quasiment assur´ que la lettre ’e’ est chiffr´e en ’o’. On teste les clefs ade missibles (pour lesquelles a ∈ Z∗ ) jusqu’` trouver la bonne. 3. b) = (3.|Z26 |) tests 26 de clefs. 4k). Ce n’est donc pas la bonne clef. page 149.14). 10). on trouve ensuite une solution particuli`re (a0 .b) (y) = a−1 (y − b) mod n 4. 21.. 26 26 23. 15 ∈ Z∗ donc la clef est valide et on obtient les chiffrements successifs 26 7.b) : Zn y −→ −→ Zn D(a. (a) Une recherche exhaustive requiert de l’ordre de O(|Z∗ |. Ainsi. Il reste ` tester les clefs admissibles correspondantes. On obtient a les r´sultats suivants : e – k = −25 ⇒ K = (a. On en d´duit e e e l’´quation : e E(a. 1.. la lettre la plus fr´quente apr`s le ’e’) et on r´sout le syst`me e e e e . D(a. 25}. 7. c e e a 26 – On extrait une seconde relation probable (pour le chiffrement de ’s’. On en d´duit les valeurs admissibles de k e pour trouver les solutions dans Z26 : 0 a < 26 ⇒ −25 k 0. 11.296 Solution des exercices Solutions des exercices propos´s au chapitre 3 e Exercice 3. 3.b) (’e’) = ’o’ ⇐⇒ 4a + b = 14 mod 26 ` A partir de l`. On a 26 rappelle que pour r´soudre cette ´quation. on est capable de proposer a a e des correspondances pour les lettres les plus courantes. sur un arbre. k ∈ Z}. Grˆce ` l’analyse de fr´quence. deux m´thodes sont possibles : a e – On r´sout l’´quation diophantienne 4a + b = 14 dans Z et on e e en d´duit les solutions possibles dans Z26 . 22 et 11. b0 ) (soit directement (0. On d´chiffre avec cette e clef : csqxre yirvesa. 9. 15. 5.

" Exercice 3. page 154. Les deux blocs Li et Ri sont obtenus ` partir des blocs pr´c´dents et de la clef a e e de tour Ki par : Li = Ri−1 et Ri = Li−1 ⊕f (Ri−1 .b) (’e’) = ’o’ e(a. Le nombre de clefs n’est donc pas suffisant pour avoir un chiffrement parfait. a vous etes le phenix des hotes de ces bois. . maitre renard. e (b) On obtient ainsi le texte d´chiffr´ suivant : e e maitre corbeau. monsieur du corbeau. Alors. sur un arbre perche.2. C) H(M. La clef de chiffrement utilis´e est donc K = (a. tenait en son bec un fromage. Exercice 3. e on peut obtenir les deux blocs pr´c´dents Li−1 et Ri−1 ` partir des trois valeurs e e a Li . 1}64 alors que les clefs ne sont que sur e 56 bits.b) (’s’) = ’c’ e(a. ou encore H(K|C) + H(C) H(M |C) + e e H(C). Ki ). que vous etes joli ! que vous me semblez beau ! sans mentir. page 156. Ki ). autrement dit e e en g´n´ral H(K. Il y a e donc forc´ment au moins autant de K possibles que de M . b) = (3. . . Ri et Ki simplement par Ri−1 = Li et Li−1 = Ri ⊕ f (Li . 2).b) (’e’) = ’o’ e(a. On montre que c’est finalement ce dernier syst`me qui fournit la e bonne clef. si votre ramage se rapporte ` votre plumage.Chapitre 3 : Cryptologie 297 correspondant. au d´chiffrement.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) ⇐⇒ ⇐⇒ . Il n’est donc pas n´cessaire d’inverser f . C). Compte tenu des r´sultats de l’analyse statistique. – La connaissance de la clef et du crypt´ permet de d´crypter . par l’odeur alleche lui tint a peu pres ce langage : "he ! bonjour. La d´finition du chiffrement parfait donne H(K|C) H(M ). e – M et C sont cod´s par des mots de {0. En outre le d´chiffrement est bien identique au e e chiffrement si l’on applique les tours dans l’ordre inverse.b) (’e’) = ’o’ e(a.b) (’s’) = ’b’ e(a.3. e on testera successivement les syst`mes e (1) e(a.

Pour r´sumer : 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 . . donc X. . En outre. deux cas sont possibles : – Soit a7 = 0. Solution des exercices 1. Le modulo g(X) assure que le r´sultat reste un polynˆme binaire e o de degr´ inf´rieur ` 8 qui peut donc ˆtre repr´sent´ par un octet. (a) Soit a ∈ F256 . + a1 X 2 + a0 X = (a6 X 7 + . on obtient directement une expression r´duite et e 7 + . . cette op´ration consiste donc ` r´aliser e a e un d´calage ` gauche suivi ´ventuellement d’un XOR bits-`-bits e a e a avec {1B}. + a1 X 2 + a0 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) ⊕ (X 4 + X 3 + X + 1) En notation polynomiale.a(X) = X 8 + . X. En notation polynomiale.+a1 X + a0 .a(X) = a7 X 8 + . Ainsi.a(X) = a6 X 1 0 – Soit a7 = 1 et dans ce cas : X. . . a(X) = a7 X 7 +. 2. En notation binaire : [01010111] + [10000011] = [11010100] En notation hexad´cimale : [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. Modulo g(X).4. page 159. . . (a) On fournit le r´sultat pour diff´rentes repr´sentations : e e e Avec des polynˆmes : (X 6 + X 4 + X 2 + X + 1) + (X 7 + X + 1) = o X 7 + X 6 + X 4 + X 2. . . .298 Exercice 3. + a1 X 2 + a0 X. . + a X 2 + a X. g(X) est forc´ment nul modulo g(X). . e e a e e e On a ainsi obtenu : [57] × [83] = [C1].

Or a = X + 1 en notation polynomiale. Par d´finition. w255 = 1). . F256 {0}∪ w(X)i mod g(X) 0 i<255 . InvSubBytes consiste ` effectuer la mˆme manipulation mais ` partir de la a e a −1 not´e InvSBox. pour tout a ∈ F256 La fonction affine inverse f −1 est d´finie 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. pour tout a ∈ F256 avec t : a −→ a−1 sur e F256 . on repr´sentera l’´l´ment 0 par w(X)255 bien e ee que math´matiquement. Boite-S inverse S e Remarque : Comme la fonction t est son propre inverse. SBox[a] = f (t(a)) .Chapitre 3 : Cryptologie (b) On it`re i fois l’algorithme pr´c´dent. on fait l’op´ration matricielle pour obtenir f ([B4]) = [00011110]+[11000110] = e [11011000] = [D8].6. Donc t(a) = (1 + X)−1 = X 2 + X 4 + X 5 + X 7 mod g(X) = [10110100] = [B4] par l’algorithme d’Euclide. Ensuite. La table PolyToExpo correspond e a ` la table inverse. la multiplication de deux ´l´ments ee a et b non nuls est ais´e : e a(X) = w(X)i b(X) = w(X) a(X) × b(X) = w(X) j i+j mod 255 (4.10) (4. on a : SBox−1 [a] = t−1 f −1 (a) = t f −1 (a) . ee a e e Exercice 3. ou de Zech). page 163. avec cette repr´sentation (dite e cyclique ou exponentielle. e e e 299 3.11) e On g´n`re une table ExpoToPoly de 256 entr´es telle que la k i`me entr´e e e e e k modulo ExpoToPoly[k] donne la repr´sentation polynomiale de w(X) e g(X).5. (Par convention.9) (4. On utilise ces tables pour effectuer efficacement la multiplication de deux ´l´ments a et b ` partir de la relation pr´c´dente. page 163.

[F 6]2 = X 14 + X 12 + X 10 + X 8 + X 4 + X 2 . X 10 = 01101100 = [6C]. . [23] + [45] = [66]. 00011011 = [1B]. a ee Exercice 3. donc [03]−1 = [F 6]. On obtient ainsi. si X e 1. 4. page 167. e . C’est exactement la mˆme op´ration puisque l’addition sur F2 est son propre e e inverse ! Exercice 3. on obtient directement (par exemple en identifiant les coefficients) Q = [F 6]Y + [52]. les monˆmes suivants : X 8 = o 9 = 00110110 = [36]. 8.8. X 13 = 01001101 = [4D] et X 14 = 10011010 = [9A]. avec X = [02].9. + a2 mod 2. 5. −[03] = [03]. (a1 + a2 + . n 1 2 6. page 165. La multiplication par X revient ` d´caler le mot binaire vers la gauche. [0B] + [A2] = [A9]. 7. La routine de chiffrement peut ˆtre invers´e et r´ordonn´e pour produire e e e e un algorithme de d´chiffrement utilisant les transformations InvSubBytes.10. .300 Solution des exercices Exercice 3. qui vaut [OB]Y 3 + [0D]Y 2 + [09]Y + [0E]. (U − V Q)c + V M = 1. . soit en additionnant les valeurs binaires : [F 6]2 = 01010010 = [52]. page 164. Cela revient ` faire un ’ou exclusif’ (XOR) avec a 00011011. Cette ´tape ree vient ` effectuer le calcul b(X) = d(X) × a(X) mod (X 4 + 1) qui s’´crit 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. X X 11 = 11011000 = [D8]. . il faut le remplacer par X 4 + X 3 + X + Ensuite. 2. X + 1 = [03]. Le d´codage de MixColumn se fait en multipliant par l’inverse de c. [F D] − [F 0] = [F D] + [F 0] = [0D]. e (U − V Q). 9. Par la division euclidienne. 1. X 12 = 10101011 = [AB]. InvShiftrows consiste ´videmment ` effectuer au niveau le la ligne i un d´e a e calage cyclique ` droite de Ci ´l´ments.7. a e 8 est pr´sent. + an )2 = a2 + a2 + . et faire la somme. 3. X 8 + X 4 + X 3 + X + 1 = (X + 1)(X 7 + X 6 + X 5 + X 4 + X 2 + X) + 1. page 163.

5. (a) Triple DES code sur 64 bits. on a seulement N (N −1) = 2 2∗2128 e 2H soit environ 3. Avec des essais de messages en clair M . la s´quence des transformations diff`re e e e de celle du chiffrement. Alors Yi−1 ⊕ Yj−1 = Xi ⊕ Xj = Xi ⊕ S ⊕ Xj ⊕ S = Z et Z est le XOR de deux parties claires du message. RoundKeys[Nr ]) . alors Xi ⊕ Yi−1 = Xj ⊕ Yj−1 = S. e Dans cette version du d´chiffrement. Fin Pour // FinalRound InvShiftRows(State) . e e 32 32 . on obtient ainsi que Xi ⊕ Xj ⊕ M est un morceau clair. e Entr´es Une matrice State correspondant au bloc chiffr´. AddRoundKey(State. le premier contre les attaques par force brute. InvSubBytes(State) . e e Exercice 3. RoundKeys[0]) . Cette e version ´quivalente n’est pas demand´e ici. la structure de celle-ci ´tant la plus efficace. page 167. le e deuxi`me pour ´viter le risque de collision. e taille de clef et taille de bloc.11. RoundKeys) AddRoundKey(State. 1. InvMixColumns.10−20 chances de collision. 301 InvShiftRows. le traitement de la clef restant inchang´. InvSubBytes(State) . RoundKeys[r]) . Certaines e propri´t´s de l’algorithme de Rijndael permettent d’impl´menter une routine ee e de d´chiffrement ´quivalente qui respecte la s´quence de transformations de e e e la routine de chiffrement. Ainsi les deux param`tres. une chance sur deux ! e 2H (b) Si Yi = Yj . soit 3 octets. 32 (232 −1) probabilit´ ≈ N (N −1) = 2 2∗264 ≈ 0. sont d’importance pour obtenir des codes r´sistants. (2 −1) (c) Avec AES cod´ sur 128 bits. Un exemple parmi tant d’autres : un fichier contenant les salaires : – Le mˆme bloc chiffr´ que moi : le mˆme salaire e e e ´ – Echanger un bloc chiffr´ avec un autre : ´change de salaire e e 2. AddRoundKey(State. une clef K e e Sorties Une matrice State correspondant au bloc clair KeyExpansion(K. et AddRoundKey. Une mod´lisation formelle e de l’algorithme de d´chiffrement est fournie dans l’algorithme 29. // Addition initiale Pour r ← Nr − 1 ` 0 Faire a InvShiftRows(State) . donc 235−3 = 232 blocs.Chapitre 3 : Cryptologie Algorithme 29 D´chiffrement AES. InvMixColumns(State) .

81. a – D´chiffrement : on calcule 872157 mod 2773 et on v´rifie qu’on obtient e e bien 66. 1.121. e a e e – on calcule n = p ∗ q = 47 ∗ 59 = 2773. e – soit en essayant “` la main” car 51 = (280/11) ∗ 2 donc il suffit de deux a essais pour trouver .81. p = 47 et q = 59. Dans les notes on donne 13325 = 133 (mod 319). On trouve d = 51 e – soit en utilisant l’algorithme d’Euclide ´tendu . page 170. La cl´ priv´e e e e est Kd = (d.14. n) = (17. On utilisera pour cela l’algorithme d’Euclide ´tendu. On doit calculer 13351 (mod 319). n) = (157. e On obtient ainsi d = 157. Le r´sultat est 133 ∗ 133 ∗ 133 (mod 319) = 12. a a Exercice 3. M = 10011 (mod 319) = 265 2.12. page 171.121. c’est-`-dire Z319 dans ce cas. si des s´quences d’au moins 3 lettres se r´p`tent il e e e est possible que cela ne soit pas du au hasard. Exercice 3. – soit en utilisant Euler.11 = 51 mod 280. Au contraire. On notera que les valeurs propos´es pour p et q sont e faibles et ne correspondent ´videmment pas ` des cl´ r´elles. On pourra chiffrer et d´chiffrer cette valeur qui est e bien dans l’intervalle [0. Solution des exercices 1. 3.302 Exercice 3. D´terminer la taille de la clef peut alors se faire en calculant le e pgcd des distances entre des s´quences se r´p´tant dans le message chiffr´ e e e e (on appelle cette analyse le test de Kasiski). 2772].2 page 38). Soit d = 1164+16+8+4+2+1 = 81.13. On doit r´soudre 11 ∗ d = 1 (mod 280). Il faut ensuite regrouper les . – on calcule ϕ(n) = (p − 1)(q − 1) = 46 ∗ 58 = 2668 – on v´rifie que e est bien premier avec ϕ(n) et on calcule son inverse d = e e−1 mod ϕ(n). 2773). il peut s’agir de mˆmes mots de message qui se retrouvent cod´s par la mˆme partie e e e de la clef. d = 11−1 mod 280 ce qui implique que d = 11ϕ(280)−1 mod 280 = 11ϕ(7×5×8)−1 mod 280 = 11(6×4×4)−1 = 1195 mod 280. 2773). 2. Finalement. Evidemment non pour les deux car les messages ` chiffrer/d´chiffrer a e doivent appartenir ` Zn . la cl´ publique est Ke = (e. Dans un long message. e ´ 4. 1.11 = 81. – Chiffrement : on calcule 6617 mod 2773 c’est-`-dire 872. La lettre ’B’ correspond ` la valeur ASCII 01000010 = 66 (voir la a table 1. page 171.

Puisque 100 = −5 mod 35.Chapitre 3 : Cryptologie 303 caract`res du chiffr´ par paquet de cette taille et appliquer une analyse e e de fr´quence pour chaque position. Ensuite : K1 = 487 mod 65 = 482 × 485 = 29 × 3 = 87 = 22 mod 65 Puisque 43 = 64 = −1 mod 65. On en d´duit M = 105 mod 35. On r´ordonne le texte par groupe de 5 caract`res. C = M 5 mod 35. On calcule alors : d = 5−1 mod ϕ(7 × 5) = 5−1 mod 24 = 5. e 3. e e H→J W→A Q→M Q→S V→ P→L T→V D→I I→E Y→ →E W→S N→P G→L Y→U C→E O→T M→I C→E G→L E→A C→E V→ I→E J→L D→I F→B Y→ L→Q Y→U Y→ G→L E→A S→U H→M M→I C→E V→ H→D A→C J→O Y→U Z→A I→N X→T Z→A H→M E→A Y→ J→O R→N Y→ W→A M→I Y→ K→P P→L Y→ G→L E→A G→I →E D→ Y→ W→A D→ M→O H→M F→B Y→ Z→D Y→U C→E I→N S→O C→E H→M I→E I→A I→A H→ A→T →S V→N V→N A→T Z→R H→ H→ M→E B→U K→C H→ Q→I H→ U→M B→U H→ Y→Q T→L Z→R H→ V→N V→N O→I F→ T→N F→ F→ I→C Z→T F→ K→E G→A R→L X→R F→ N→H P→J Y→S T→N K→E Y→S A→V →U F→ K→E X→R I→C Z→ T On effectue une analyse fr´quentielle colonne par colonne : e . on a : e 105 = 25 × 10 = 5 × 50 = 5 × 15 = 75 = 5 mod 35. On calcule la clef secr`te d’Oscar : e d = 7−1 mod ϕ(65) = 7−1 mod 48 = 7. Le mot clef comporte donc 5 caract`res. e 2. on a : K2 = 47 mod 65 = (−1)2 × 4 = 4 mod 65 4.

15. k n Comme d < n. ainsi p et q sont inf´rieurs ` e e a et donc pq − p − q + 1 n . 5. e e – Colonne 3 : on a aussi la clef de chiffrement : K2 = 4 mod 27. 2. 23. 8. 22. ea Pour d´chiffrer. il doit faire un d´calage de −4 = 23 mod 27. On suppose p et q diff´rents de 2 et 3 . Puisque ϕ(n) divise ed − 1 et que ϕ(n) = (p − 1)(q − 1) = n − (p + q) + 1. k v´rifie : e 2e. 1. 6) = ”ZWEIG” La clef de d´chiffrement est alors : e −1 −1 −1 −1 −1 K0 K1 K2 K3 K4 = (2. 21) = ”CFXTV” Exercice 3. 2 Finalement. il convient donc de faire un d´calage de +5. Chiffrement : d´calage de +8 (I) e D´chiffrement : d´calage de −8 = 19 mod 27 e e – Colonne 5 : 6 ’F’ on suppose F (5) ←− (26). . on a finalement k 2e. Pour d´chiffrer. il existe k ∈ Z. Chiffrement : d´calage de +6 (G) e D´chiffrement : d´calage de −6 = 21 mod 27 e e Le texte d´chiffr´ 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 d´duire la clef de chiffrement : e K0 K1 K2 K3 K4 = (25. 19. 4. page 173.d . e e – Colonne 4 : 7 ’H’ : on suppose H(7) ←− (26).304 – Colonne 1 : 9 ’Y’ et 6 ’C’ : on suppose Y (24) ←− (26) C(2) ←− E(4) Solution des exercices e Chiffrement : d´calage de −2 = 25 mod 27 (Z) D´chiffrement : d´calage de +2 e e – Colonne 2 : on a d´j` la clef de chiffrement : K1 = 22 = −5 mod 27. tel que ed − 1 = k mod n − (p + q) + 1. n 4.

on peut ´num´rer toutes les valeurs possibles entre e e 1 et 2e pour trouver le bon k. 2. 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 i−1 Ainsi pgcd(u − 1. Il existe k ∈ Z.e. On obtient l’autre facteur directement par division. s] / Posons u = a2 i−1 t a2 t = ±1 mod n i a2 t = 1 mod n i−1 . d). n) = pgcd(a2 t − 1. X k La m´thode est d´taill´e dans l’algorithme 30. page 173. e e e Algorithme 30 Factorisation de n ` partir de (n. En outre : t = ed−1 . n) est un facteur non trivial de n. 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 l’´quation : X 2 − Sk + n = 0. Dans ce cas. e. l’ordre de at dans Zn est forc´ment dans {2j . L’esp´rance du nombre de tirages de a en essayant tous les i est 2 (l’ale gorithme est imm´diat !) car si n est compos´. n = pq et Sk = n + 1 − ed−1 = p + q sont solutions enti`res de l’´quation du second degr´ : e e e k 2 − S + n = 0. tel que ed − 1 = kϕ(n). a Entr´es (n. On sait que ϕ(n) divise ed − 1.d) dans RSA (cas e petit). Soit alors a ∈ Z premier avec n. Fin Si Fin Si Fin Pour Exercice 3.Chapitre 3 : Cryptologie 305 3. 2s 2s Alors 1 = akϕ(n) = at mod n. Ainsi.16. e Si p et q sont entiers Alors Renvoyer p et q. Autrement dit : e il existe i ∈ [0. au moins la moiti´ des e e e inversibles ne v´rifient pas la relation donn´e . e e . 0 j s}. Comme e est petit. 1.

Nous savons que t est impair. m/2 Soit {b1 . ni q − 1 (sinon u serait congru ` 1 modulo p ou q). Mais dans ce dernier cas. . sans perte de g´n´ralit´. i m/2 = ±1. Posons m = 2i t. mais nous allons voir que c’est le e cas pour un entier n produit de deux nombres premiers distincts.306 Solution des exercices Algorithme 31 Factorisation de n ` partir de (n. donc (−1)t = −1 = 1 mod n. a . n) et q = n p Fin Si α ←tmp Fin Pour Renvoyer ERREUR . e ee Sinon. Ainsi. il en existe au moins forc´ment (bi a) e ϕ(n) 2 . . Fin Si Pour i ← 1 ` s Faire a tmp = α2 mod n Si tmp = 1 mod n Alors Renvoyer p = pgcd(α. a Entr´es (n. d) dans RSA. La preuve est en deux parties : montrer qu’il existe au moins un a v´e rifiant ces conditions. e. Par le th´or`me chinois u2 = 1 mod p et u2 = 1 e e mod q. s’il existe un tel a. Alors. puis montrer que dans ce cas il y en a au moins la moiti´ des inversibles. Supposons qu’il existe un a tel que am = 1 et am/2 = ±1. e Sorties (Les facteurs p et q tels que n = pq) ou ERREUR. Il ne peut e a pas ˆtre ´gal ` 1 modulo les deux nombres premiers sinon il le serait e e a aussi modulo n. . . d). nous poua vons construire un autre ´l´ment qui peut convenir car alors m/2 ne ee divise ni p − 1. e. Nous commen¸ons par la deuxi`me partie. bk } l’ensemble des bi tels que bi = ±1 et bm = 1. Si alors u est congru ` 1 modulo q. soit un inversible sur deux. u doit ˆtre congru ` 1 ou -1 modulo p et q. Il existe un a (au pire une certaine puissance de −1) v´rifiant u = am/2 = 1 mod n e et am = 1 mod n. Soient s et t tels que ed − 1 = t2s (t impair) Soit a un nombre entier al´atoire entre 0 et n − 1. u est congru ` −1 modulo n. plus e c e facile. Il reste ` prouver qu’il en existe au moins un. e t mod n α←a Si α = 1 ou α = n − 1 Alors Renvoyer ERREUR . nous avons a a trouv´ notre ´l´ment. nous supposons qu’il est e e e congru ` −1 modulo p. Donc. Donc. Cela n’est pas toujours a le cas pour un compos´ quelconque.

µp1 k = B!. Le calcul de u.r−1 mod nA = cdA xdA r−1 mod nA . cA ) mod nW . Il ne reste plus qu’` reconstruire par restes a chinois. C = x3 puisque x < min(nW . il ıt e calcule facilement (en temps -presque.eB mod n = M . 1. .20. page 174. e Oscar peut alors calculer cr . au moins un ´l´ment sur deux v´rifie bien cette pr´c´dente propri´t´ ee e e e ee et le cassage de RSA se fait bien avec une esp´rance de nombre de tirages e de 2.Chapitre 3 : Cryptologie 307 kϕ(n) En effet. Or xdA = reA dA = r mod nA et donc u.r−1 mod nA peut ˆtre tr`s facilement fait par Eve en temps e e O(log2 nA ) et donne le message m. Exercice 3. page 174.19.cs mod n par exponentiation modulaire rapide A B et obtenir cr . cB ).eA +s. donc p1 B. Puis.cs = M r. e e Exercice 3.lin´aire du nombre de bits de n) les e coefficients de B´zout r et s tels que reA + seB = 1. il suffit ensuite de calculer dans R x = C 1/3 par NewtonRaphson pour obtenir x en clair. donc le th´or`me de Fermat donne ap−1 = 1 mod p. Lucky Luke peut calculer facilement – en temps a e e 2 O(log (nA + nJ + nW )) – l’entier C = x3 = Ψ−1 (cW .nJ . eB .e.nA i. nJ . En effet. (A − aB! ) = kn = kpq. nA ). 2. Oscar connaˆ (eA . Par l’algorithme d’Euclide ´tendu. Exercice 3.17. γ correspondant aux restes respectifs α et β modulo p et q. comme il en existe e un. nous avons m = 2ed−1 = 2s−i+1 . Comme x est entier. donc (A − 1) − (aB! − 1) = (A − 1) − hp = kpq. p premier. Ce γ v´rifie γ m = 1 mod n ainsi que γ m/2 = ±1 mod n. cJ . e e Exercice 3. 2 2j j nous prenons g une racine primitive modulo p et nous posons α = g 2 mod p et β = a mod q. ou alors e e e ne chiffrer que le r´sum´ du message. 4. n) et (cA . 3. Grˆce au th´or`me chinois. log(k) log2 (n). nous pouvons poser m = v p−1 avec v impair et j entre 0 et s. u. A B Moralit´ : ne jamais utiliser le mˆme n pour un groupe d’utilisateurs.r−1 = cdA rr−1 mod nA = cdA mod nA = m.r−1 = y dA . page 174. page 174.18. et comme m/2 ne divise pas s−i+1 2 p−1. le tout e e puissance µ. Moralit´ : ne jamais signer un message illisible (al´atoire ou chiffr´) . Alors αm/2 = 1 mod p par construction et β m/2 = am/2 = −1 mod q.

On en d´duit que y2 − x2 est premier e avec q donc d = q. Si A − 1 est un multiple de n. a. Finalement. q. on montre que c a −(p − 1) < − p−1 2 −q < x1 − y1 < q p−1 <p−1 2 Autrement dit. il existe k ∈ Z tel que −q < y2 − x2 = 2kq < q On en d´duit que k = 0 : y2 = x2 . q. x = y ce qui est une contradiction. 2. Or q = p−1 et β est un e 2 g´n´rateur de Z∗ . b. e On en d´duit que αx1 −y1 = β y2 −x2 = 1 mod p. La r´sistance aux collisions repose sur la difficult´ ` trouver λ tel que 15λ = e ea 22 mod 83. On en d´duit e β u(y2 −x2 ) = β 1+k(p−1) = β = αλ = αu(x1 −y1 ) g. p − 1 = 2q et q est premier. le pgcd log2 (n). d divise p − 1 donc d ∈ {1. x2 ) = 15x1 22x2 mod 83. Par d´finition. la puissance : α log3 (n) log(α log(n)). on pose u = (y2 − x2 )−1 mod p − 1. f. p − 1}. αx1 β x2 = h(x) = h(y) = αy1 β y2 implique que αx1 −y1 = β y2 −x2 mod p car α et β sont inversibles. Exercice 3. Prendre p et q tels que p − 1 et q − 1 ont des gros facteurs (des nombres premiers robustes. e c. p Or. k = 0 : x1 = y1 .308 5. Alors ∃k ∈ Z/u(y2 − x2 ) = 1 + k(p − 1). e e p Finalement. voir page 103). e 7. Les diviseurs de p − 1 sont donc dans l’ensemble {1. Or α est un g´n´rateur de e e e Z∗ . Or B est petit. On en d´duit : β u(y2 −x2 ) = β 1+k. 8. h(x1 . 2q = p − 1}. d. Ainsi. u = (y2 − x2 )−1 mod q alors il existe k ∈ Z/u(y2 − x2 ) = 1 + kq. h(12.21. −q < y2 − x2 < q car y2 . de fa¸on similaire ` la question 3. Solution des exercices 6. 1. Si d = 1. 34) = 1512 2234 mod 83 = 63. e. 2. mod p et donc λ = u(x1 − y1 ) mod p − 1. Donc β p−1 = 1 mod p et β 2 = β q = −1 mod p. 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 d’apr`s la question 1. x2 ∈ Zq . αu = 1 mod p ⇐⇒ u = 0 mod p−1 : il existe k ∈ Z/x1 −y1 = k(p−1). β u(y2 −x2 ) = (−1)k β mod p = ±β mod p p−1 .q = β (β q )k . Si d = p − 1 = 2q alors puisque d divise y2 − x2 . page 177. B log(B) log2 (n).

e et x0 qui resteront secrets. Si β λ = −β mod p alors λ = λ + q. page 185.Chapitre 3 : Cryptologie 309 2. – Si δ = 0 : λ = u(x1 − y1 ) mod p − 1 – Si δ = 1 : λ = u(x1 − y1 ) − q = u(x1 − y1 ) + q mod p − 1 car q = p−1 .25. a – La clef secr`te est alors (171)292 mod 541 = 368 = (69)426 mod 541. une collision sur H fournit un MAC valide.3. C’est le probl`me du logarithme e discret. u = (y2 −x2 )−1 mod q et λ = u(x1 −y1 ) mod p−1.27. – Alice calcule A = 2292 mod 541 = 69 qu’elle transmet ` Bob. page 310. Pour en d´duire K. Exercice 3. soit B a . page 188. Exercice 3. L’id´e est d’utiliser des g´n´rateurs pseudo-al´atoires simples pour fabriquer e e e e n. 1}. Exercice 3. Exercice 3. a – Bob calcule B = 2426 mod 541 = 171 qu’il transmet ` Alice. un attaquant (qui ne dispose pourtant e pas de la clef K) peut ajouter un nouveau bloc ` la fin et obtenir un MAC vaa lide. On en d´duit : β u(y2 −x2 ) = ±β = (−1)δ αλ = (αq )δ αλ mod p avec e δ ∈ {0. alors H(x||K) = h(H(x)||K) = h(H(x )||K) = H(x ||K). e . Pour la derni`re construction.23. e En effet. Random1 garantit ` Alice en retour d’´tape 2 que la clef ne sera pas r´utia e e lis´e. page 189. p − 1) par l’algorithme d’Euclide ´tendu e – Si d = 1. Pour les deux premi`res constructions. e e Exercice 3. e Exercice 3. pour ensuite calculer soit Ab . vu en section 1. page 190. L’algorithme est simple : – Calcul de d = pgcd(y2 − x2 . page 196.3.22. On ach`ve ainsi le raisonnement par e l’absurde et on en d´duit que h est r´sistante aux collisions.24. Autrement dit : αu(x1 −y1 )−qδ = αλ mod p. a. 2 h.26. u = (y2 − x2 )−1 mod p − 1 et λ = u(x1 − y1 ) mod p − 1 – Si d = 2. g z1 y z2 = g sv g xz2 = g xrv+k g xz2 = g xrv+k g xqv−xrv = g k mod p. Cet algorithme ne comporte que des op´rations ´l´mentaires ou peu coˆe ee u teuses et le calcul de λ est rapide. page 190. si H(x) = H(x ). il faudrait que Oscar trouve a ` partir de A ou b ` partir e a a de B. La proc´dure utilis´e est alors d´crite dans e e e l’algorithme 32.

||zl . il faut qu’un domaine commun existe entre A et B. Random2 garantit ` Bob que l’´tape 3 n’est pas rejou´e. n = pq . e e e x0 = se mod n . c Fin Pour Retourner la s´quence z1 ||z2 || . Pour garantir le secret et l’authentification. e b. e e f. . Il faut donc utiliser un syst`me ` clef publique o` seul le client e a u poss`de une information priv´e. Le ticket Kerberos est valable durant une p´riode de validit´ donn´e (soue e e vent 8 heures) durant laquelle l’utilisateur peut le pr´senter au TGS afin e d’obtenir des tickets de service. . e e A envoie alors C = EB (DA (M )) ` B . Il faut ajouter une datation (un ticket). d. Une fois qu’elle aura K. il est donc possible d’utiliser une clef de session pirat´e. (p − 1)(q − 1)) = 1 . Le vol des clefs. a c. Eve enregistre le message 3. e e e Entr´es Une taille b > 1024. De son cot´.310 Solution des exercices Algorithme 32 G´n´rateur pseudo-al´atoire cryptographique RSA. DA . ou mˆme des empreintes permet de se faire passer pour un e client. B calcule EA (DB (C)) = a e EA (DA (M )) = M . page 197. ou plus pr´cis´ment entre EA . elle pourra renvoyer ce message et pr´tendre facilement ˆtre Alice en r´pondant en 5 ` l’aide e e e a de K. C’est ` partir de ce constat et de a cette modification qu’est n´ Kerberos ! e e. Alice renvoie a e e Random2 − 1 car le renvoi crypt´ de Random2 seul serait cette fois-ci e identique ` l’envoi de Bob. G´n´rer un exposant pseudo-al´atoire e tel que pgcd(e. Le probl`me est que Kerberos ne pr´voit e e pas de syst`me de r´vocation. e e e G´n´rer un entier pseudo-al´atoire s (voir par exemple page 69) . Si un espion envoie un message M ` la place de C.28. Pour tout i de 1 ` k Faire a l xi = xe i−1 mod n . Un espion ne peut pas d´coder C car il ne dispose pas de DB et le secret est e donc pr´serv´. Tant que la p´riode de validit´ n’est pas e e e e expir´e. EB et DB . e e u b G´n´rer deux nombres premiers p et q robustes de taille au moins 2 bits e e (voir page 103) . M ne e e a . e Entr´es Un entier k < O(log(b)) . zi re¸oit les k premiers bits de xi . e e Exercice 3. e Sorties Une s´quence de l bits pseudo-al´atoires cryptographiquement sˆre.

mkdir demoCA . Un faux site web ! 3. Pour le professeur : ϕ(55) = 40 et 27 × 3 = 81 = 1 mod 40. Le professeur envoie m = 123 mod 33. e 2.31. Pour le secr´tariat : ϕ(33) = 20 et 7 × 3 = 21 = 1 mod 20. Cela assure l’authenticit´.pem -rand demoCA/private/. e Le secr´tariat re¸oit y et calcule (y eP mod nP )dS mod nS . chmod -R go-rwx demoCA (a) openssl genrsa -aes256 -out demoCA/private/cakey.txt . Or 122 = 12 mod 33 .key . 1. u Exercice 3./demoCA/cacert. ıtre e Exercice 3. e c D’o` la note (233 mod 55)7 mod 33 = (127 mod 33) = 12. touch demoCA/index. 3. mkdir demoCA/certs . echo ‘‘01’’ > demoCA/serial . Le syst`me ` num´ro jetable effectue ee e e e a e un retournement de la preuve juridique puisqu’il est associ´ ` un code secret ea re¸u par courrier. 1. page 205. Ainsi c’est ` l’utilisateur de prouver qu’un num´ro jetable c a e associ´ ` son compte en banque ` ´t´ g´n´r´ sans ce code secret. page 197.29. mkdir demoCA/private . dd if=/dev/urandom of=demoCA/private/. Le professeur a calcul´ (xeS mod nS )dP mod nP . L’authentification est unilat´rale : la banque authentifie le client. donc m = 12 mod 33. page 198. mkdir demoCA/newcerts . e 2. ea aee e ee Exercice 3. 1. la v´ritable s´curit´ juridique des cartes ` puces repose sur e e e a la possibilit´ de r´pudiation.pem -out .pem -days 60 3.Chapitre 3 : Cryptologie 311 pourra pas ˆtre d´cod´ en un message valide M : en effet.rand 1024 openssl req -new -key luckyluke. pour cela il faudrait e e e connaˆ DA .rand 4096 (b) openssl req -new -x509 -key demoCA/private/cakey.rand bs=1k count=16 2. Il faut ´galement que la banque s’authentifie. C’est ` la banque de prouver que tel achat a bien e e a ´t´ effectu´ par le d´tenteur du compte. Cela est fait grˆce aux e a certificats du site Web et aux PKI associ´es.key -rand demoCA/private/. mkdir demoCA/crl .30. openssl genrsa -aes256 -out luckyluke. un tel syst`me de num´ros jetables n’est int´ressant que pour la e e e banque : en effet. e En France.

vous ne savez rien de la politique de certification de Bob. e (b) Pour signer des courriels il faut utiliser la clef priv´e perdue.pem -out cacert.pem (a) Pour envoyer des courriels chiffr´s il faut r´cup´rer la clef publique e e e dans le certificat du destinataire. C’est ` diff´rencier les Jean Martin que servent les autres informations a e d’identit´ d’un certificat : localit´. Au contraire pour les messages chiffr´s re¸us il est impossible de les e c d´chiffrer puisque la clef est perdue. Une politique de certification d´pend d’une politique de s´curit´. page 209. pour les entreprises sp´cialis´es. L’´l´ment essentiel d’un certificat num´rique est l’association d’une idenee e tification et d’une clef publique.33. En effet. 2.pem 4. c’est e donc impossible. etc.p12 -inkey private/cakey.32. Au contraire. Exercice 3. il faut e de toutes fa¸ons faire confiance .pem -days 365 openssl ca -policy policy_anything -out newcert. a e 2. Au sein d’une entreprise pas de probl`me . un attaquant au milieu devrait avoir un faux certificat d’identit´. pour pouvoir se faire passer pour une des parties. donc vous ne pouvez pas savoir si le message provient bien d’Oscar ou non.34. e Exercice 3. Dans tous les cas : stockage crypt´ sur disque prot´g´ par une phrase. e e .pem -infiles newreq. Cependant. C’est donc toujours possible. adresse courriel. page 209. 1. Exercice 3. page 207. openssl pkcs12 -export permet de convertir des certificats du format X509 au format pkcs12. etc. La ligne de commande est donc : openssl pkcs12 -export -in cacert. Comme vous avez totalement confiance en Alice. Elle e e e doit notamment d´finir la dur´e de validit´ des certificats. vous pouvez ˆtre sˆr du e u certificat de Bob. entre clients et filiales. qui peut-ˆtre e e e e certifi´. il est toujours possible de v´rifier e une signature puisque pour cela il faut r´cup´rer la clef publique e e dans le certificat de l’envoyeur.312 Solution des exercices -keyout newreq.pem -out newreq. e 3. pas de c e e raison de faire confiance ` une entit´ commerciale. e e e 3. 1. Cela permet de r´aliser des authentifications sans interm´diaire (pourvu e e qu’une PKI sous-jacente ait ´t´ initi´e) et sans risque d’attaque Man-inee e the-middle.

Cependant. 2 2. cela permet de g´rer les pertes/vol de clefs. La connexion doit ˆtre interdite car des clefs diff´rentes peuvent e e signifier qu’une attaque de type Man-in-the-middle par exemple est en train d’ˆtre essay´e : 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 .fr’ can’t be established. 1. Une pour chaque couple de personnes : n(n−1) . L’´change de clefs sym´triques est d´licat (n´cessite par exemple un cae e e e nal confidentiel pr´existant) et une clef sym´trique n’autorise pas direce e tement la non-r´pudiation (puisque l’exp´diteur et le destinataire pose e s`dent la mˆme clef). Un couple de clefs publique/priv´e par personne : n. Are you sure you want to continue connecting (yes/no)? 5.36. RSA\index{RSA} key fingerprint is 3a:fa:9e:88:7f:13:89:8a:63:ad:18:45:5b:24:68:d6. (a) En fonction de la dur´e n´cessaire pour casser une clef. La connexion se fait maintenant non plus avec le mot de passe associ´ e au login. e (d) Une autorit´ doit d´crire tout ceci dans sa politique de certification. e 3.imag. e e Exercice 3. ssh-keygen -b 2048 -t dsa 3.Chapitre 3 : Cryptologie 313 4.35. La clef envoy´e par le serveur ne va pas correspondre ` celle stock´e locae a e lement. page 215. (b) Se renseigner sur les algorithmes et les attaques pour d´finir des e clefs difficiles ` casser. Il faudrait utiliser une PKI par exemple. page 211. 1. de la proe e babilit´ de perte/vol d’une clef priv´e en fonction de la dur´e et de e e e l’usage. 2. mais avec la phrase de passe associ´e ` la clef DSA. e a 4. Exercice 3. les syst`mes asym´triques restent plus e e e e lents. a (c) Oui. Un message d´clarant que le serveur sur lequel on se connecte est inconnu e et il faudrait donc v´rifier si la clef publique propos´e est correcte : e e The authenticity of host ’www.

Please contact your system administrator.ssh/known_hosts to get rid of this message. Add correct key in . 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.fr has changed and you have requested strict checking.314 Solution des exercices changed.imag.ssh/known_hosts:1 RSA\index{RSA} host key for www. . Host key verification failed. Offending key in .

63. φ(m) contient 16 bits dont 7 e bits de parit´.68 qui est e aussi valide.Chapitre 4 : D´tection et correction d’erreurs e 315 Solutions des exercices propos´s au chapitre 4 e Exercice 4. Soit n = [K. R = 13 15 86. C] e l’entier de 15 chiffres associ´ au num´ro de s´curit´ sociale suivi de la e e e e clef. On a alors n mod 97 = e · 10i = 0 car e et 10 sont premiers avec 97 . Par exemple. les erreurs ont conduit ` un mot de code correct. e e e . Si φ(m) contient un nombre impair d’erreurs.398. Si 2 erreurs surviennent.68 en le num´ro 2. Une erreur sur un seul chiffre ci d’indice i donne n = n + e · 10i avec e = 0 et −ci e 9 − ci . de e  1100  0000   a Le mot   0000 comporte 4 erreurs par rapport ` φ(m) mais ces erreurs 1100 ne peuvent pas ˆtre d´tect´es car tous les bits de contrˆle sont corrects.301. La clef C est telle que 2630538516305 + C est multiple de 97 .2. donc C = 97 − 2630538516305 mod 97 = 64. page 220. e a     0000 0100  0000   0100     4. le quatri`me bit est le bit de parit´ et sera e e n´cessairement diff´rent de la somme binaire des 3 autres bits. Soit le mot comporte une erreur. 3. e e e o Ici. on d´tecte que le mot est erron´ en v´rifiant a e e e les bits  parit´ en gras.05. Soit le mot de code φ(m) =   0000 . Le code permet de d´tecter une erreur sur un seul chiffre.516. Le mot m est ´crit en 3 blocs de 3 bits . e e e e e Ce code d´tecte donc jusqu’` 3 erreurs de bits. page 220. Le mot  0100  comporte 4 0000 0010 erreurs par rapport ` φ(m) . e e 3. 67%.38. e e Par contre.05.63. Ce code d´tecte donc 1 et 3 erreurs. Exercice 4. e 2. n´cessairement il existe au e moins une ligne ou une colonne de 4 bits comportant un nombre impair d’erreurs. Pour ces 4 bits. 1.38. 2 bits de e parit´ au moins ne seront pas v´rifi´s et les erreurs seront donc d´tect´es.1. Soit le mot re¸u ne comporte pas d’erreur et on v´rifie facilement que c e tous les bits de parit´ sont v´rifi´s. a 5. une erreur sur deux chiffres n’est pas d´tect´e. e e deux erreurs de chiffres peuvent transformer le num´ro de s´curit´ sociale e e e valide 2. 2.516. 1. l’erreur est d´tect´e.

ou alors la deuxi`me.3. en entr´e. ce qui donne la capacit´ du canal CBSC = 1 + p log2 (p) + (1 − p) log2 (1 − p). il suffit d`s la r´ception en pr´ambule au d´codage de transformer tout bit re¸u en son oppos´. H(Y |X) = H(Y |X = 0) = H(Y |X = 1) = e −p log2 (p)−(1−p) log2 (1−p). page 224. soit 3 parmi 6. Soit p1 la probabilit´ d’avoir le bit 0. soit quand y1 = y2 = 1/2 (ce qui arrive e e par exemple quand p1 = 1/2). 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 . le tout multipli´ par les deux posa e sibilit´s : commencer par blanc ou commencer par noir. j) pour corriger l’erreur. Le mot  a  0000  comporte 2 erreurs par rapport ` φ(m). n´cessairement. On peut alors calculer Hmax (Y ) = 1. l’un e e e e correspond ` une ligne i et l’autre ` une colonne j. e Exercice 4. 4 par chiffre. le e maximum correspondra au maximum de H(Y ).4. la troisi`me ou encore la e e e quatri`me ligne pourraient chacune ˆtre 1001.   1001  0000   6. Alors la probabilit´ e e e d’avoir le bit 0 en sortie est y1 = p1 ∗ (1 − p) + (1 − p1 ) ∗ p. e e Exercice 4. e . Au total il y a bien e 6 2 ∗ C3 = 40 codes diff´rents possibles par colonne. Comme H(Y |X) est ind´pendant de p1 . e e e – Seul le bit de parit´ de tous les bits n’est pas v´rifi´ : il suffit de le e e e changer pour corriger l’erreur. On distingue trois cas selon e e e le nombre des autres bits de parit´ non v´rifi´s.316 Solution des exercices et le bit de parit´ totale (qui doit correspondre ` la somme de tous les e a autres bits) est n´cessairement non v´rifi´. ou les trois ensemble. Mˆme si l’on suppose qu’il y a eu deux erreurs. respectivee ment p2 = 1 − p1 la probabilit´ d’avoir le bit 1. page 227. Seuls les 0000 deux bits de parit´ correspondant ` la premi`re et la quatri`me colonne e a e e ne sont pas v´rifi´s. Il suffit de changer a a le bit de source d’indice (i. Le nombre de codes diff´rents correspond au choix de 3 s´parateurs dans un e e intervalle discret de 1 ` 7. page 223. – Deux autres bits de parit´ ne sont pas v´rifi´s . Or H(Y ) est maximale quand les probabilit´s y1 et y2 sont ´gales. 1 e e e e Si p > 2 . etc. e e Exercice 4.5. Comme le canal est sym´trique. – Un autre bit de parit´ correspondant ` la ligne i (ou ` la colonne i) e a a n’est pas v´rifi´ : il suffit de changer ce bit de parit´ pour corriger e e e l’erreur. On e ne peut donc pas le corriger sans ambigu¨ e : la premi`re ligne pourrait ıt´ e par exemple ˆtre 0000. et d’avoir le bit 1 est y2 = (1 − p1 ) ∗ (1 − p) + p1 ∗ p. on ne e e e peut pas d´cider sur laquelle des quatre lignes ont eu lieu les erreurs.

8. les e chiffres de parit´ du code ISBN et du code ` barres sont les mˆmes ! e a e Exercice 4. page 230. y) = w(x⊕y). 1. Exercice 4. Ainsi. et e e donc a fortiori Pg ne pourra pas non plus diviser Pe . Exercice 4. . 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. Si on re¸oit un mot m avec s erreurs par rapport au mot m ´mis .9. page 230. Si Pg a au moins deux coefficients. Toute erreur non d´tect´e doit donc n´cessairement porter sur un nombre pair de e e e bits. – dH (x. Dans le cas particulier de ce livre. si C est s-d´tecteur et que s 2t.7. Si (i − k) < d alors le facteur irr´ductible de degr´ d ne pourra pas diviser Pe . y) dH (x. z). page 232. il ne d´tecte pas l’erreur e o e Pe = X r+1 . l’erreur sera c e d´tect´e si et seulement si m ∈ C. y) ∈ R+ . comme C est t-correcteur.Chapitre 4 : D´tection et correction d’erreurs e 317 Exercice 4. e e R´ciproquement si Pg a un seul monˆme Pg = X r . Or. Or tout e e e a multiple de X + 1 dans F2 [X] a un nombre pair de coefficients non nuls. 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. En effet pour tous x. + X i−k ). y) = dH (y. x) 2t + 1.11. . page 233. donc δ(C) 2t + 1 et par cons´quent C est au moins t-correcteur. Pe = X i . d(m. Donc le code d´tecte toute erreur portant sur un nombre impair de bits. donc dH (x. Pe = X k + . e La r´ciproque est vraie : En effet. – dH (x. Toute erreur non d´tect´e est associ´e ` un polynˆme Pe multiple de Pg . Donc C e est s-d´tecteur avec s 2t. il ne peut pas diviser X i donc l’erreur est d´tect´e. Exercice 4. y et z dans V n on a : – dH (x. – dH (x. 1 est racine de Pg donc Pg est multiple de i=0 X + 1. . Toute erreur non d´tect´e est associ´e ` un multiple de X + 1.6. page 230. Donc il n’existe pas de mot de C ` une distance a 2t. Pour un paquet d’erreurs. z) + dH (y. comme vous pouvez le v´rifier sur la couverture.10. page 228. e . + X i = X k (1 + . e Exercice 4. x) . si d(m . Le bit i de x⊕y vaut 1 si et seulement si xi = yi . alors on e e a δ(C) > s. pour e e tout x ∈ C. soit le code ISBN 210-050-692-7. y) = 0 ⇔ x = y . si r gi = 0. on a. Comme gr = 1. . m) = s 2t alors m ∈ C et on d´tecte l’erreur. 2. soit 9-782100-506927. Si e e e a o l’erreur porte sur un seul bit i.

l’algorithme 33 permet de d´tecter 4 erreurs au moins e (voire plus si elles concernent diff´rents chiffres de source). 2. Il faut δ(C) 2 ∗ 2 + 1 = 5.2. Finalement. La distance est 5 . (5k. il suffit de calculer pour chaque symbole de source le nombre de 1 associ´. on d´duit que le symbole source ´tait 1 . 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. De plus soient ω0 = C(0k ) = 0mk et ω1 = C(10k−1 ) = (10k−1 )m .. donc δ(C) m. En les ´nue e 2 k mots qui sont cod´s avec n = k +r chiffres. il y a |V | e e u O(n · |V |2k ). On peut calculer la distance minimale entre deux mots de code quelconques. comme ce bit est r´p´t´ m fois. Deux mots distincts ont au moins un bit de source de distinct . sinon e e e la source ´tait 0. k) aussi. (5k. il peut d´tecter en outre 2 ou 3 erreurs e sans les corriger (mais pas 4 !). n´cessite O( |V | ·(|V | +1) ) comparaisons. k 3. La distance est 5 . Le coˆ t est donc m´rant. Si on a une e majorit´ de 1 (au moins 3). page 234. a e Exercice 4. page 233. On suppose donc les mots de C stock´s dans un tableau C[1. 1. δ(C) = m. qui est impraticable pour |V | = 2 d`s que k et n sont plus grands e que 15. e Algorithme 33 D´codage du code de r´p´tition avec d´tection maximale. dH (ω0 . l’algorithme 34 permet de corriger 2 erreurs . 1) convient. δ(C) e ee m. 4. On corrige toutes les erreurs simples et on d´tecte les cas de 2 et e 3 erreurs correspondant ` un mˆme bit de source.12. Ainsi on corrige au plus 2 erreurs pour les 5 bits ´mis e e correspondant ` un mˆme bit de source. e .13. Donc (5. si on re¸oit 4 symboles c identiques (4 ’0’ ou 4 ’1’).|V |k ]. on suppose qu’il n’y a eu qu’une erreur et on fait la correction. ω1 ) = m.318 Solution des exercices Exercice 4. L’algorithme 35 corrige une erreur . La distance est 5 . a e 6. S’il y a moins de 4 symboles identiques on renvoie un signal d’erreur. k) est de rendement 5k = 0. k k L’algorithme 36. page 320.

Chapitre 4 : D´tection et correction d’erreurs e 319 Algorithme 34 D´codage du code de r´p´tition avec correction maximale. si NbrUn[i] 1 Alors s[i] ← 0 Sinon erreur ← true Fin Si Fin Pour . 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 Incr´menter 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. 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 Incr´menter 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 D´codage du code de r´p´tition avec d´tection et correction.

on en d´duit d = d + 1. . page 235.16. .15. 2). . Donc tous les mots de C sont de poids i=1 de Hamming pair. Comme V est de cardinal au moins 2. Comme d d d + 1 et d impaire. On a δ = 5 : C est donc 4-d´tecteur et 2-correcteur. . on construit le code C de longueur n + 1 : C = {c1 . Par suite. Exercice 4.320 Solution des exercices Algorithme 36 Distance d’un code (|V | = 2). 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. Il existe i tel que 0 i 3 et xi = yi . Application : k = log2 (|C|) = 2 . il poss`de deux symboles distincts a = b. delta ← +infini 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 .14. Soit x ∈ C : on a alors ⊕n+1 xi = 0. cn a|c1 . Il suffit de calculer δ(C). Soit x = y deux mots de C. cn ∈ C} ∪ {aa . ba . 2 Chaque mot C[i] est un tableau [1.k + r] de chiffres de V . e Exercice 4. . page 236. la distance d entre deux mots de C est paire.. ab. . e . page 236. donc r = 10 − 2 = 8. e ` A partir de C. Soit e le nombre de ces indices i o` les chiffres de u x et y diff`rent. . Le code C est un code (10. TauxDeCorrection ← δ−1 . . e Exercice 4. 1. ab}.

e e e donc 5 2r − r. soit 4. En reprenant les deux mots pr´c´dents : soit c = 100000010. e e Exercice 4. e – Si e = 3 alors x et y ont 3 bits diff´rents. Ainsi δ(C) 4. 4. Ainsi d(x. a Exercice 4. c) = e e d(b. c) = 2 et aucun mot de code n’est ` une distance 1 de c. L’in´galit´ du th´or`me 25 avec t = 1 s’´crit : 1+n 2n−k . il est de distance 3. page 237. y) 4. Le rendement du code est r+k . Le e e code raccourci C est alors un code (8. e a est obtenu ` partir b en changeant 4 bits : donc C n’est pas 4-d´tecteur. – si e = 2 alors x et y ont exactement 2 bits en position i et j (0 i < j 3) diff´rents. Le nombre minimal r assurant cette condition est r = 3. Pour e avoir un code 1-correcteur il est n´cessaire que 1 + n 2n−4 (th´or`me 25). pour r = 3 on a ´galit´ donc un code 1-correcteur (7. δ = 4 =⇒ C est 3-d´tecteur (δ − 1 = 3). soit 1+k+r e e e e e 2r . Sa distance est donc 3. x et o y diff´rents au moins pour deux de ces bits. Consid´rons un code avec r bits de redondance. comme chaque bit bi apparaˆ dans deux e ıt chiffres de contrˆle de la forme bi + bl et bi + bm et idem pour j. Sa distance est au moins celle de C. On consid`re que le code est raccourci en prenant les mots de C qui ont e un 0 en premi`re position.18. Ainsi d(x. Donc a d(x. y) 4. 3) de cardinal 8. Comme C est c e de distance 4.e. – si e = 1 alors le bit en position i apparaˆ dans trois autres chiffres ıt de x et y. b0 + b1 + b2 + b3 ). – Si e = 4 alors d(x.e. Alors. bi + bl . a e Le code poin¸onn´ est de longueur 8 et de cardinal 16. d(a. y) 4. Les mots a = 000000000 et c = 001100110 sont dans C . L’in´galit´ du th´or`me 25 permet alors d’avoir a e e e e une borne sur le plus grand k possible et donc une borne pour le rendement R. Les deux mots a = 000000000 et b = 110000110 sont dans C et ont une distance de 4 : finalement δ = 4. page 237. Donc x et y diff`rent aussi e e pour leur dernier bit (b0 + b1 + b2 + b3 ). Le code raccourci est donc de distance 4. Donc l’erreur a n’est pas corrigible. 3. i. En outre. 5. ` savoir les bits (bi + bk .17. 4) est parfait. b0 = 0 (le cas b0 = 1 est sym´trique). 4) avec n = 4 + r. . (n. 1. Il contient en particulier les mots a = 00000000 et b = 10000110 poin¸onn´s de a et b qui sont ` distance c e a 3.Chapitre 4 : D´tection et correction d’erreurs e 321 2. i. donc les mots a = 00000000 et c = 01100110 sont dans C et ` distance 4. k 2. y) 4. donc maximiser le rendement ` r fix´ a e revient ` maximiser k.

s6 = b10 . s15 ] = [s1 . s2 = b5 . σ3 . s3 = b6 . s8 = b12 . e 5. on calcule σ = [y1 . s11 = b15 . . 1. on construit un code(k. s9 = b13 . < e ik n quelconques. ρ = k n = 11 15 . s14 . s11 ]. k) poin¸onn´ de C en supprimant c e dans tous les mots de code les n − k autres positions. d’o` 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         .σi . . s15 = b8 . b4 = b5 + b6 + b7 + b12 + b13 + b14 + b15 b8 = b9 + b10 + b11 + b12 + b13 + b14 + b15 Pour le mettre sous forme canonique. On corrige alors l’erreur en changeant le j i`me i=1 bit yj de y. y14 . . s4 = b7 . 26 = 5 : k 26 et R 31 . D’o` R u 4 7. s13 . 57 = 6 : k 57 et R 63 . On calcule les 4 derniers bits de parit´ [s12 . s10 = b14 . e . s12 . . A partir de la donn´e de k positions 1 i1 < . page 242.) : n = 2 parfait de longueur 2m . s13 = b2 .         3. s14 = b4 . 3. page 239.R. On calcule comme ` la question pr´c´dente : σ = [σ1 . e 4. . Soit [y1 . . c y13 . s14 . y15 ] le mot re¸u . . . s13 . . on fait la permutation : s1 = b3 . s15 ]. soit j = 4 2i . Soit φ la restriction de . s11 . . . Exercice 4. La longueur d’un code binaire 1-parfait v´rifie d’apr`s le th´or`me 25 e e e e r − 1. . . Exercice 4. σ4 ]. σ2 .20. b1 = b3 + b5 + b7 + b9 + b11 + b13 + b15 b = b3 + b6 + b7 + b10 + b11 + b14 + b15 2. Le mot cod´ est alors : [s1 .322 Avec Avec Avec Avec r r r r = 3.19. On d´tecte une erreur si et seulement si σ = 0. Si a e e e σ = 0. . s12 = b1 . s7 = b11 . Le code est : 2 . .R − [y12 . Il n’existe donc pas de code 1(calcul analogue au a. y11 ]. on a n´cessairement k e 11 = 4 : k 11 et R 15 . . . ` Soit n la longueur de C. y15 ]. s5 = b9 . Solution des exercices 4.

Or toutes e . .s = 0 . on a donc φ (x) = φ (y). On en d´duit k = k − 1 et le code e raccourci est un code (n − 1. page 245. Par suite. donc impossible ` a a 3 corriger de mani`re unique). C est de distance d e d = n − k + 1 . D’apr`s 4. Sa c e e e distance est donc d = k − k + 1 = 1.23. . L’orthogonal ` un sous-espace vectoriel de dimension k est un sous espace a vectoriel de dimension n − k. donc que H est g´n´ratrice de C ⊥ . d’apr`s la propri´t´ 17. il existe un unique x ∈ Fk tel que φ (x) co¨ ıncide avec c aux k positions i1 . Donc C ⊥ est un code lin´aire de longueur n et e de dimension n − k. . . ik . Exercice 4. On o a e ⊥ . ils sont donc ´gaux. page 242. . 1.2. On remarque que R est sym´trique. e a En tant que code poin¸onn´ d’un code MDS. on construit e a facilement un mot de F12 ` une distance 3 de x et y. C est MDS (th´or`me 29). . Comme sa distance d atteint la borne de Singleton n − k + 1 = n − k + 1. k − 1).3. ik choisies.Chapitre 4 : D´tection et correction d’erreurs e 323 φ obtenue en ne gardant que les k positions i1 . Il ne peut pas ˆtre parfait car il est de distance paire (= 6). Code (12. les (n − k) vecteurs lignes e ee de la matrice de contrˆle H de C sont orthogonaux ` C et ind´pendants.22. Pour tout x = y ∈ Fk . De plus. φ est la fonction de codage associ´e ` C . page 245. en d´duit qu’ils forment une base de C e e e Exercice 4. il est MDS. . e ⊥ donc G12 ⊂ G12 . Soit C le code raccourci (n − 1.6. on a k k −1. La premi`re e ligne est de poids 5 (car la ligne 1`re ligne de R est de poids 4). e (En effet : soit x et y 2 mots de code situ´s ` une distance 6 . ⊥ Or G12 et G12 ont la mˆme dimension (12.6) . 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. Exercice 4.21. e 4. k ) obtenu en prenant dans C tous les mots ayant le symbole s en position i et en supprimant la position i . alors r. On v´rifie que si r et s sont deux lignes quelconques de G. d’o` d’apr`s la borne u e de Singleton k n−d n − d = k − 1.6). e 2. G11 est de distance au moins 5. e e 3. .

Si p = 2. Comme G11 est de distance 5. i i 4. Exercice 4. Donc cette propri´t´ s’´tend ` tout polynˆme ee e a o i i i T par T p − T = aj (X jp − X j ) = 0 mod (X p − X). une chance sur deux de s´parer les face teurs donne une esp´rance du nombre de tirages al´atoires de T de 2. e e Exercice 4.26.25.24. Il suffit de r´cup´rer les pgcd diff´rents de 1 dans le calcul du test d’ire e e r´ductibilit´. En moyenne. FDD est de donc complexit´ d (log(p)Md +Ed ). Il est donc de distance 5. 4 et 2. il est 2-correcteur. donc telle que γ 4 = 2.C11 + 22 . donc γ est e e e forc´ment une racine primitive 16i`me de l’unit´. 6. e e 2. Essayons alors γ.6. page 250. e e e2 2. Exercice 4.5). 5. Le code est donc (11. k d .C11 ) = 177147. les seuls facteurs possibles de P1 sont X et X − 1. Regardons de quel polynˆme 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 . La donn´e des r = n − k coefficients de g d´finit une matrice GC unique et e e donc un code lin´aire unique. 1. e 2 3. Pi ) o` les puissances sont calcul´s par exu e ponentiation rapide par carr´s modulo Pi ` chaque ´tape.324 Solution des exercices les lignes sont des ´l´ments du code. Si γ 2 = 1 alors γ 4 = 1 ce qui est impossible puisque γ 4 = 2. les boules de rayon 2 centr´es sur les mots de G11 sont disjointes et forment un souse 1 2 recouvrement de F11 . On choisit T au hasard de degr´ < 2i et on calcule pgcd(T. On en d´duit que le code poss`de ee e e un mot de poids 5. De complexit´ e a e e 2Ed + i log2 (p)Md . T p − T = T (T 2 − 1)(T 2 + 1). Les racines de (X 8 − 1) ne conviennent pas car elles sont au plus seulee ment 8i`me . 1. racine de X 4 + 2. C est stable e e par σ donc cyclique. e puis pgcd(T 2 − 1 mod Pi . Si P est r´ductible. e a γ 8 = (γ 4 )2 = 22 = 4 = −1 est ´galement diff´rent de 1. Pi ) mod Pi . 8. le sous-recouvrement est en fait un recouOr card(F3 vrement et le code est donc parfait. Ainsi. Les seuls ordres possibles sont 16. 3 11 ) = 311 = 177147 . X p = X mod (X p − X). page 252. Or g ´tant un diviseur de X n − 1. de cardinal 36 (1 + 2. page 248. γ 4 n’est pas non plus ´gal ` 1. 5.

La probabilit´ qu’un bit ne soit pas effac´ est p = 0. et y le mot de longueur n e obtenu ` partir de y en remettant les effacements. Supposons qu’il existe deux mots de code x1 = x2 ` distance d − 1 de a y. on a donc entre 7% et 8% e d’octets effac´s. Il faut pouvoir corriger 0. . Exercice 4. on remplace les s d − 1 effacements par s inconnues c xi .xt = 0 ce qui s’´crit comme o e un syst`me lin´aire de dimension s ` s inconnues. 5625. Soit y ∈ C le mot corrig´. Il permet donc de corriger t erreurs dans le mot x . Donc. e La longueur des mots d’un code de Reed-Solomon sur F256 est n = 255. dH (x1 . e 4. le degr´ minimal du polynˆme g´n´rateur est e e o e e donc ´gale ` 7. x2 ) d. Dans ce cas. On obtient ainsi l’unique mot de code ` distance s + t de x qui a permet de le corriger. e a e 9 γ 5 . on corrige les s effacements dans y avec la matrice de contrˆle e e o de C. Ainsi. donc un code de distance 22 : on choisit donc r = 21. On a i=1 un code (255.998 > 0. Soit x un mot re¸u qui comporte s effacements et soit x le mot de c longueur n − s obtenu en supprimant dans x les s effacements.Chapitre 4 : D´tection et correction d’erreurs e 325 Pour ˆtre 2-correcteur. Soit α une racine primitive de F256 . Dans le mot re¸u. La r´solution e e a e de ce syst`me donne la valeur de x. ce qui donne un rendement de 16 = 0. Le code C est un code lin´aire de longueur (n − s) et e de distance d d − s = 2t + 1. la probabilit´ qu’un chiffre ne soit pas effac´ e e est p8 = 0. En utilisant la question a pr´c´dente. 3. e Conclusion : x est l’unique mot de C ´gal ` y aux positions non effac´es e a e dans y. a 2. avec 1% de bits effac´s. soit x le vecteur ligne obtenu qui doit appartenir au code. les xi . Soit C le code poin¸onn´ de C obtenu en supprimant les s positions c e des effacements.40 21 effacements par mot. si H est la matrice de contrˆle du code. Par exemple g(X) = (X + 2)(X 4 + 3)(X 2 + 3) poss`de γ 4 . si on e e travaille dans le corps F28 . il existe au moins un mot a ` distance d − 1 de y (le mot x).99. 1. γ 6 et γ 7 comme racines.27. Comme C est de distance d. Soit x ∈ C . apr`s d − 1 effacements on obtient y avec le caract`re ’ ?’ en e e d − 1 positions.92 . 234. Alors x1 et x2 sont ` distance au plus d − 1 l’un de l’autre car il ne a peuvent diff´rer qu’aux positions des effacements. x est la seule correction possible : le code permet de corriger jusqu’` d − 1 effacements.08 × 255 = 20. on prend par exemple g(X) = 2 1(X − αi ). 22) sur F256 . on a H. Or ceci est impossible e car le code ´tant de distance d. page 257.

form´ ` partir des e e ea . Donc w ∈ C. vp ). Ce i=1 polynˆme d´finit un code C de Reed-Solomon (255. 28 × 32) form´e des 24 (resp. Comme C corrige les paquets de longueur l. Soit v ∈ Cp et e un paquet d’erreur de longueur p ∗ l. c) e a et (v. . . e q soit l n − k. vp + ep avec vi ∈ C e e et ei paquet d’erreur de longueur au plus l. . il permet de corriger pour retrouver le p-uplet (v1 . Soit c un autre mot de C. . . G2 = [I28 . R1 ] (resp. on a forc´ment k + l <dim(Fn ). Exercice 4. le mot 0 + w est d´tect´ e e e erron´. . page 259. 0e1 . d−1 − 1 + 1. Soit α une racine primitive de F256 et g(X) = 4 (X − αi ) par exemple. . les deux p-uplets diff`rent au moins en un mot de C donc sont ` e e a distance au moins d. il code corrige donc tout paquet e 2 qui s’´tale sur au plus t octets cons´cutifs.31. e u 2 Exercice 4. c. Ainsi. On a dim(C)=k (voir par exemple la preuve de la borne e de Singleton) et l’ensemble des w est de dimension l. q Comme C d´tecte tout paquet de longueur au plus l. Si ces deux ensembles sont totalement disjoints. On a clairement l d. page 258. R2 ]) la sous-matrice 24 × 28 (resp. Alors que tout paquet de taille 8. . D’o` l = 8. . . page 264. Or. Montrons que c’est la distance minimale : il existe deux mots u et v de C de distance d. page 258. el 0 . . 32) derni`res colonnes. . . 28) derni`res lignes et 28 (resp.30. e e e La matrice G1 est g´n´ratrice du code raccourci C1 de C. La matrice g´n´ratrice de C associ´e ` g a ses k premi`res colonnes ind´pene e e a e e dantes. donc Cp est de e distance d. le code ´tant t-correcteur. e Exercice 4.326 Solution des exercices Exercice 4. 0 ∈ Fn un paquet d’erreur de longueur au plus l. R251×4 ].29.28. de distance o e 5. e e e T celle Soient R1 la matrice form´e des 24 derni`res lignes de R et R2 = e e R1 form´e par les 28 derni`res lignes. 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´ . u et v diff`rent en d positions exactement . Le d´sentrelac´ de v + e est un p-uplet de la forme v1 + e1 . Soit t = d−1 . . Soit w = 0 . . soit deux mots de Cp qui e diff`rent . . . . Soient les deux mots u et v ´gaux ` l’entrelacement des deux p-uplets respectifs (u. . . Donc C admet une matrice g´n´ratrice normalis´e G = [I251 . . c) .(t − 1) + 2 bits e e cons´cutifs peut s’´taler sur t + 1 octets cons´cutifs (tous les bits faux sur les e e e t − 1 octets du milieu et 1 seul bit faux sur les octets extrˆmes) et donc ne pas e ˆtre corrig´e. . une erreur sur 8. qui est associ´ au mot v Cp .(t − 1) + 1 tient forc´ment sur e e e t octets et sera donc corrig´. e e Soit G1 = [I24 .251) sur F256 . sauf pour le mot 0. Donc Cp corrige au moins les paquets de longueur pl. c.

un e e message d’erreur est retourn´ . Tout mot en entr´e du d´codeur C1 qui contient moins de 4 effacements est e e corrig´. Finalement C1 est de distance 5. e a on retourne donc par exemple le mot y form´ de 28 symboles ’ ?’. ce qui correspond bien au message cod´ ` la vol´e dans l’exemple 4. 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 . l’erreur ne peut pas ˆtre corrig´ . – sinon. On utilise le calcul du syndrome d’erreur avec le code C1 . e Exercice 4. donc d1 5. page 264. Exercice 4. On rappelle e qu’on note ’ ?’ un symbole effac´ (qui n’appartient donc pas ` F256 ) . ce qui correspond au mot binaire 1101011100. – Si s2 (z) = 0. e – sinon. On remplace alors dans y les u o effacements par leur valeur et on retourne les 24 premiers octets. on calcule les valeurs des u effacements inconnus (1 u 4) en t r´solvant le syst`me lin´aire de dimension u × u d´fini par y.H2 u i 2 i ligne canonique.ei . De plus. Le polynˆme form´ par le message 100110100 est P = X 2 + X 4 + X 5 + X 8 . La correction −λ. t u 1.ei . ea e . e e e donc correspond ` une trame. 32} et e a t = s (λ.ei . e 2.32. t – Si s2 (z) est colin´aire ` l’une des lignes de H2 : soit i ∈ {1. e e a e d1 255 − 251 + 1 5. d’apr`s la borne de Singleton. de poids 1. On ne r´alise aucune e e correction : on retourne l’information que le mot est effac´.Chapitre 4 : D´tection et correction d’erreurs e 327 mots de C dont les 227 premiers chiffres sont nuls. Le syndrome d’erreur est s2 (z) = z. il n’y a pas d’erreur : on retourne les 28 premiers octets de z. Par entrelacement. Le d´codage e est le suivant : – si le bloc y ne contient pas ’ ?’. on obtient 11010011100111010000. page 264. L’entrelacement ´tant de retard 4.H2 o` H2 est la matrice de contrˆle o de C2 .H1 = 0 e e e e o` H1 est la matrice de contrˆle de C1 . ses 24 premiers octets sont retourn´s . e – si il contient au moins cinq ’ ?’. C1 est donc de distance d1 sup´rieure ou ´gale ` C.34. page 266. Exercice 4. on retourne donc les 28 premiers octets y du vecteur z − λ. Une colonne est constitu´e de 32 octets.1. o` e est le ii`me vecteur e λ ∈ F256 tels que s2 (z) = λ.33. permet de corriger z . on d´tecte qu’il y a eu moins deux erreurs.6.e ). Le code permet donc de corriger 15 trames a cons´cutives. On o e 3 + X 5 + X 6 + X 9 . cela correspond a au plus 15 coe e lonnes cons´cutives effac´es par C2 .

< 2−r . on a R1 bits en sortie de e e e C1 et en entr´e de C2 . Le mot de code le plus proche est donc 11010011011101111010. e e 1 Comme 0 < r < 1 et (r − 1)2 > 0. donc R1k 2 bits en sortie de C2 . La u composition s´rie est de rendement inf´rieure ` la composition parall`le.35. Si R1 = R2 = r. d’o` la marque 2 sur le bit a u 1. 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 reçu 0 1 10 01 0 2 0 3 10 0 5 01 11 0 7 01 11 0 4 6 8 10 9 00 Fig. e e e e a L’´tape 0 est compos´e de z´ros. Le deuxi`me mot de code re¸u est 01. le premier mot de code re¸u est 10 qui est e e e c ` distance 1 de chacun des deux arcs possibles partant de 0.328 Solution des exercices Exercice 4.R2 . les rendements respectifs RP et RS des turbo-codes r parall`les et s´ries sont : RP = 2−r et RS = r2 . page 272. on a RP = 3 et RS = 4 . Le rendement est e . k 1. D’o` un rendement RP = 1 + 1 −1 = R1 +R2 −R1 . u R1 R2 k 2.36. ` distance a deux du mot re¸u (marque pour le dernier bit de source).R2 . d’o` e c a u la marque 1 sur le bit 0 et ` distance 1 de l’arc 11. . etc. ` distance 0 de l’arc 01. on a r. pour k bits en entr´e. Le codage ´tant s´rie. Les marques sont ´crites dans la figure 71. On applique l’algorithme de Viterbi. on a en sortie du turbo code R1 bits pour C1 et e k e R2 − k bits pour C2 . et le mot source c associ´ en suivant la derni`re phase de l’algorithme est 1001010111. puisque l’on ne conserve pas la sortie syst´matique R1 . e e a e 1 1 1 Dans le cas r = 2 . e e Exercice 4. toutes les marques sont ` l’infini. donc les deux a marques ` l’´tape 1 valent 1. Pour l’´tape 2 et toutes les suivantes il y a 4 arcs a e e possibles. page 268.R2 1 de C2 . 71: Algorithme de Viterbi sur le message 10010010011101111010. e D´taillons le d´but du d´codage : au d´part. 3. d’o` RS < RP . Pour k bits en entr´e.R donc RS = R1 .

. .00797 (b) i. .001 est C = 1 + q log2 q + (1 − q) log2 (1 − q) = 0. . x1 . ii. 0  .98859. . donc choisir un code de distance δ 2 ∗ 3 + 1 = 7. Avec un code de Reed-Solomon. . 1} . g6 . Soit g = 6 gi X i le polynˆme g´n´rateur. e e (d) La capacit´ du canal binaire sym´trique de probabilit´ d’erreur q = e e e 0. Comme P est primitif. 1.97648 et le rendement du code ne e d´passe pas la capacit´ du canal (2i`me th´or`me de Shannon). x7 + y7 ). les o coefficients de ce polynˆme permettent d’obtenir le codage de o XY sous forme d’octet. α est un ´l´ment g´n´rateur de F256 ee e e e (une racine primitive 255i`me de l’unit´). 1} un autre ´l´ment du corps.03 erreurs. Soit X = 7 xi αi avec xi ∈ {0. le polynˆme g´n´rateur o e e est de degr´ r = δ − 1 = 6. Il suffit donc de choisir e comme polynˆme g´n´rateur g = i=1. On choisit donc P = 1 + α2 + α3 + α4 + α8 pour impl´menter e F256 = F2 [α]/P . . e On peut utiliser une signature avec une clef secr`te (construite entre le e . Le nombre maximal d’erreurs d´tect´es est 6. Pour corriger au moins 0. x3 . x4 .Exercice du casino 329 Solution de l’exercice du casino Exercice C. o` chaque gi est un ´l´ment de F256 repr´sent´ u ee e e i=0 par un octet (cf question pr´c´dente). X est i=0 repr´sent´ par l’octet (x0 . on choisit F256 . qui a q = 256 = 28 ´l´ments. . Comme on envoie des octets.1. x6 .Y mod P . g6 0 . comme corps de base. i=0 X + Y est alors repr´sent´ par l’octet (x0 + y0 . x2 . e e Pour X. 0  0 g0 g1 . on calcule le produit de polynˆmes X.. . .6 (X − αi ) mod P = o e e X 6 + 5 gi X i . On utilise donc une signature e e e a par le croupier de la s´quence lors de la transmission. page 277. . Le probl`me est que chaque s´quence de d´ re¸ue par le casino puisse e e e c ˆtre identifi´e et associ´e ` un croupier. Un code de Reed-Solomon ee impose alors de choisir n = q − 1 = 255.Y . (c) i. La matrice g´n´i=0 ratrice a 248 lignes et 255 colonnes. ii. x5 . e e o e e e e iv.. . (a) p8 = 1 − 0. e iii. e e ee Soit Y = 7 yi αi avec yi ∈ {0. Elle s’´crit sous la forme e   g0 g1 . Le code est de rendement 249/255 = 0.0079n = 2. e e e e 2. x7 ).9998 = 0. il faut pouvoir corriger 3 erreurs.

Par exemple.67. pour une longueur moyenne e de code par lancer de d´ = 57/22=2. III=010. En conclusion : chaque croupier C a une clef publique P ubC .58 (b) On code les 6 faces par 3 bits : I=000. avec 22 lancers. qu’il a transmis les bonnes informations. on a log2 (621 ) = 56.92 soit 13 bits .8 .3/6 + 2. Mais. Il calcule ensuite le r´sum´ r = e e e SHA1(m) de m puis chiffre DP rivC (r) = r avec sa clef priv´e et transe met sur le canal le message (m. Pour ´viter qu’un jet de d´ chiffr´ 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 estampill´e avec un num´ro de lancer e e e (incr´ment´ de 1 par le croupier) et une date ´ventuellement. on a 65 = 7776 possibilit´s. II=001. Chaque croupier a une clef priv´e et une clef publique e (cr´´es par le casino par exemple). Un code par blocs de mˆme e e taille peut ˆtre r´alis´ avec log2 7776 = 12. Il num´e rote chaque s´quence qu’il envoie dans un en-tˆte (date + num´ro de e e e s´quence) et obtient un message m clair.2/6 = 2. Asymptotiquement. e (d) L’entropie est une borne inf´rieure. (e) Il est optimal . pour que les joueurs puissent v´rifier que la e s´quence ´mise est bien celle jou´e. mais on peut encore am´liorer en codant plusieurs e lancers successifs (extension de source).58. il est pr´f´rable d’utiliser un syst`me e e e ee e a ` clef publique. On peut faire un peu mieux e que le code pr´c´dent et se rapprocher de l’entropie en faisant un e e codage de Huffman. IV=011. pour minimiser le coˆt de chiffrement. Un code de Huffman de ces 5 lancers ne peut ˆtre que meilleur (optimalit´ de e e l’arbre de Huffman). e (c) l = 3. e e e Enfin.6. (a) H = log2 (1/6) = 2. Le croupier chiffre la s´quence avec sa ee e clef priv´e : ainsi le serveur du casino et les joueurs peuvent v´rifier. r ). e . V=100. On code alors V et VI sur 2 bits : V=10 et VI=11. Les joueurs et le casino peuvent alors v´rifier que le message a bien ´t´ ´mis par le croupier : il leur suffit de e eee e v´rifier que SHA1(m) et EP ubC (r ) sont ´gaux. on tend vers H = 2.59. e 3. ce code e e e est de longueur moyenne par lancer : l = 13/5 = 2. le croupier peut limiter le u chiffrement au r´sum´ de la s´quence (SHA-1 ou Whirlpool par exeme e e ple). Ainsi si l’on code 5 lancers successifs. VI=101. La longueur est toujours sup´rieure ` l’entropie qui est une e a borne inf´rieure pour tout codage binaire.330 Solution des exercices casino et le croupier). Les messages 110 et 111 sont inutilis´s. Le codage est de longueur=4. donc 22 lancers sont codables par un code de mˆme longueur = 57 bits. avec e e la clef publique du croupier.

2006. Cours d’alg`bre. ´ [10] James H. e Enjeux de la s´curit´ multimedia. S´curiser ses ´changes ´lectroniques avec une PKI : Solutions techniques e e e et aspects juridiques. ´diteurs. Masson. Franck Leprevost et Bertrand Warusfel. [2] Gildas Avoine. ´ [13] Touradj Ebrahimi. Introduction ` la cryptographie. 2006. Compression et codage des e images et des videos. e [3] Michel Barlaud et Claude Labit. 2005. Elementary number theory. Jean-Louis Dornstetter et Philippe Godlewski. Primalit´. Newnes. Barrett. O’Reilly. Buchmann. Hermes. SSH. e Codes correcteurs d’erreur. PKI Open source : d´ploiement e et administration. Burton. e e . 1997. seconde ´dition. Codes. Handbook of radio frequency & wireless technologies. [6] Johannes A. Vuibert. Richard E. e e e e ´ [14] Touradj Ebrahimi. e e [11] Michel Demazure. Yvon Siret et Evelyne Tournier. Hermes. Windows XP : R´seaux et s´curit´. 2004. ´diteurs. International series in e Pure and Applied Mathematics. O’Reilly. Dunod. Divisibilit´. ´diteurs. Byrnes. Davenport. Silverman et Robert G. Microsoft e e e Press. 1998. Hermes. a [7] David M. e [8] Christophe Cachat et David Carella. 1992. 1993. S´curit´ informae e tique : Exercices corrig´s. 2006. voe e e lume XIII de Nouvelle bilioth`que Math´matique. Masson. Cassini. Eyrolles. 2003. e [5] Ed Bott et Carl Siechert. Paris. [4] Daniel J. 2002. Laurent Bellefin et Marie-Laure Oble-Laffaire. McGraw-Hill. Pascal Junod et Philippe Oechslin. 2002. 4i`me ´dition. 2003. 2006. Calcul formel : syst`mes et algorithmes de manipulations alg´briques. [9] G´rard Cohen. Franck Leprevost et Bertrand Warusfel.Bibliographie [1] Thierry Autret. The Secure Shell : The Definitive Guide. e e [12] Farid Dowla. e Cryptographie et S´curit´ des syst`mes et r´seaux.

Paul C. 1998. Reading. Compression d’image : Algorithmes et standards.MP. Codage. Math´matiques pour le calcul formel. [22] Eric Incerti. Data and Image Compression : Tools and Techniques.math. 1989. [23] Donald E. 1987.cacr. D. C. e [26] Rudolf Lidl et Harald Niederreiter. ´ [25] David Leblanc et Michael Howard. 1996. e e e e Dunod/01 Informatique. e ..uwaterloo. Dunod. Ecrire du code s´curis´ : Teche e niques et strat´gies pour ´crire des applications s´curis´es. G. R. Vuibert. Clarendon Press. Wall. [28] James Massey. Menezes. C. An introduction to the theory of numbers. [30] Maurice Mignotte. 2005. PUF. Linder. Presses Polytechniques et Universitaires Romandes. Hoffman. ETH Zurich. A Course in Number Theory and Cryptography. e Wiley. Rodger et J. Knuth. 2006. Addison-Wesley. ´ [18] Aur´lien Geron. C. [17] Jean-Paul Guillois. Phelps. e e e [27] Bruno Martin. Seminumerical Algorithms. volume 2 de The Art of Computer Programming. 4i`me ´dition. e [24] Neal Koblitz. 1997. 1995. Handbook of Applied Cryptography. [29] Alfred J. MA. 1998. 2005. Introduction to Finite Fields and their Applications. Exemples en Maple. USA. Alg`bre . WiFi d´ploiement et s´curit´ : La QoS et le WPA. e [21] D. r´vis´e ´dition.ch/education/public. 2004. Calcul formel : mode d’emploi. Bruno Salvy et Paul Zimmermann. 1996. seconde ´dition. 1992. Microsoft Press. e [31] Jean-Marie Monier. CRC Press.MPSI. Vanstone. Marcel Dekker.332 Bibliographie [15] Alain Glavieux. Codage de Canal. Inc. Coding Theory : The Essentials. ´diteur. van Orschot et Scott A.ee. Masson. 2005.isi. K. Applied digital information theory. e [32] Jean-Marie Monier. Leonard. cinqui`me ´dition.ethz. Springer-Verlag. www. Hermes. Alg`bre . www. Dunod. A. T. 1997. e [19] Godfrey Harold Hardy et Edward Maitland Wright. e e [20] Gilbert Held. 2003. troisi`me e ´dition.ca/hac. Cryptologie et applications. Cambridge University Press. e [16] Claude Gomez. A. Oxford science publications. 2003. Collection e e e e d´veloppeur. Hermes. 1994. Techniques de compression des images.

[47] Douglas Stinson.Th´orie des codes e 333 [33] St´phane Natkin. [45] Simon Singh. 1998. Error Control Coding . Springer. Devenez un magicien du num´rique : Effets graphiques. Math´matiques. Histoire des codes secrets. LGF . A computational introduction to number theory and algebra. Les protocoles de s´curit´ d’internet. 1999. Springer. protocoles et e i`me ´dition. 1996. e sonores et cryptographie. Prentice Hall International. e [39] Alain Reboux. Informatique. The Data compression book. Masson. 2001. International e Thomson Publishing France. [46] William Stallings.An introduction. 2002. [35] Odile Papini et Jacques Wolfmann. Cambridge University Press. Kluwer Academic Publishers. 2003. [41] David Salomon. quatri`me ´dition. 1993. [42] Bruce Schneier. Logique. 1996. Alg`bre discr`te et codes correce e teurs. Vuibert informatique. 1997. Paris 2 e [44] Victor Shoup. 1995. Vuibert. 2005. MT books. e e e Vuibert. [51] Ross N. e e e [50] Joachim von zur Gathen et J¨rgen Gerhard. 1991. e [43] Bruce Schneier. 2005. e codes source en C. e e e Dunod. Nelson. ´ [49] Jacques Velu. Cryptographie : th´orie et pratique. Cryptographie appliqu´e. Dunod. Sciences Sup. 1991. Compression de donn´es. . S´curit´ des R´seaux : applications et standards. [48] Peter Sweeney. M´thodes math´matiques pour l’informatique : Cours et e e exercices corrig´s. Paris. 1989. 2001. 2002. Springer-Verlag. e [38] Alain Poli et Lloren¸ Huguet. Dunod. Adaptive Data Compression. Eyrolles.Le livre de poche. Algorithmes. Williams. Secrets et mensonges : s´curit´ num´rique dans un e e e monde en r´seau. Introduction to Coding and Information Theory. Introduction to the Theory of Error-Correcting Codes. [40] Steven Roman. Cambridge University Press. 2000. [34] M. 1991. Codes Correcteurs : Th´orie et applicac e tions. 3i`me ´dition. [36] Vera Pless. John e Wiley and Sons. Modern Computer Alu gebra. Data Compression. e ´ [37] Pascal Plume.

.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 . . . . . . . 80 . . . .15 1. . . . . . . . . . . . . bzip2. . . . . .6 1. . . . . . . 73 . . . . . . . . . .10 1. . . 40 . . . . e Chiffrement bit ` bit (par flot). e Sch´ma des notions introduites dans le premier chapitre. . . . . . . . . . sous forme de rho. . . . . . . Mode de chiffrement par blocs CTR. . . . 86 .2 2. . . . . . . . . Construction de Miyaguchi-Preneel. . . . . . . . . 40 . . . . . . . . . 13 16 . . . . . . . . . . . . .3 1. . . . . . . . .Liste des figures. .13 1. . . . . . . . . . Fonction de compression d’une fonction de hachage. . . . . . . . . . . . . . . .11 1. . . 85 . .14 1.1 1. . . . .3 2. a Sch´ma de fonctionnement d’un LFSR. Exemple d’arbre de Huffman. . . . . . . . . . . . . . . . . . 41 . . . . . . .1 2. . 85 . .7 1. e e Exemple de construction d’un code de Huffman. . . . . . . . . . 83 . . . .8 1. D´tection de cycle de Floyd. . . . . . . e Chiffrement Bluetooth. . . . . . . . . 39 . . . . . . . . . . . . . . . 100 . .12 1. . . . . . . . e Algorithme de Huffman : d´part. Principe d’une fonction ` sens unique. .4 2. . . . . . . 87 . . . tableaux et algorithmes Liste des figures 1 2 1. . . . . . . . . . . . . . . . . .4 1. . Mode de chiffrement par blocs CFB. . . . . . .16 2. . . . . . . . . 37 . . . . Code du fax.5 2. . . . . . . . . . . . . . . . . . . . . . 72 . .5 1. BWT sur COMPRESSE. . . . . . . . . . .2 1. . .9 1. . e Algorithme de Huffman : premi`re ´tape (q = 2). . . . . . . . Mode de chiffrement par blocs CBC. . . . . . .6 Sch´ma fondamental du codage. . . Mode de chiffrement par blocs OFB. . avec e leurs d´pendances. . . . . . Construction de Merkle-Damg˚ ard. . . . . . . Construction de Davies-Meyer. . . a Mode de chiffrement par blocs ECB. . . . . . . . 54 . . . . . . . 112 112 113 128 130 131 . . Principe d’une fonction de hachage. . . . . . . . .

. . . . . . . . . . . . e Vision de la clef ´tendue W comme une succession de colonnes. . . . . . . e Un tour de DES. . . . . . . . . . . e e V´rification d’int´grit´ par des fonctions de hachage ` partir e e e a d’une fonction de chiffrement. . . . . . . . . e Op´ration KeyExpansion dans AES. . . . . . . . . . . . . . . e Enregistrement authentifi´. . . .17 3. . . . . . . . . . . . . .5 3. . . . . .9 3. . .32 . e Le mod`le PKI pour les certificats X-509. . . . . . . . . . . . . . . . . . . . . .10 Compression MPEG-1. . . . . . . . . . . . Principe d’utilisation d’un MAC. . . e Le i-`me tour dans SHA-1 (0 i 79). . . . . . .19 3. . . . tableaux et algorithmes Image 8 × 8 en rouge. . .1 3. . . . . . . . . . . . . . . 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. a Historique des principales fonctions de hachages. . e Op´ration MixColumns dans AES. .28 3. . . Code d’authentification par chiffrement ` clef secr`te. . . 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 3. . . . . . .4 3. . . . .9 Compression JPEG. . . . . a e Principe de la signature ` clef publique et de sa v´rification. . . .336 2.21 3. G´n´ration et contenu d’un certificat X.26 3. . . . . . . . . . . . . . . e ´ Emission d’un certificat. . . . . . . . . . . . . . . . La diversification de clef dans DES. 2. . . . . . . . . . La fonction f de DES. . . . .16 3. 2. . . . . . . . . . . . . .6 3. . . . . . . . . . . . . o e e Principe du chiffrement ` clef secr`te. . . . e e V´rification de certificat et extraction de clef publique. . . . . . . . . . . . .8 3. . . . . . . e Principe du chiffrement ` clef publique. Le i-`me tour dans MD5 (0 i 63). .24 3.11 3. . . . . . . . . . e Authentification par cryptographie ` clef publique. . . . . . . . . .11 Compression du son MP3. . . Relation fondamentale de la cryptographie. e Principe de la cr´ation des certificats. . . . . . . .12 3. . . . . . . . . . . . e ´ Etape SubBytes dans AES. . a e Les ´tapes d’authentification Kerberos. . . . . . .509. . . . . . . . . . . . . . .25 3. . . . . . . . . . a e Chiffrement sym´trique par flot (Stream cypher). . . . . . . . . . . . . . . . . .13 3. . . . . . .31 3. . . . e Chiffrement sym´trique par bloc (Bloc cypher). . . . .27 3. . . . . . . . . . . . . . . . . . . . . . . . .18 3.23 3. . . . . . . . . . .15 3.3 3. . .29 3. . . . .30 3. . . . . . . . . . Principe d’un algorithme de contrˆle d’int´grit´. . . . . . . . .8 Balayage en zigzag de JPEG.7 3. . . . . . . . Repr´sentation matricielle d’un bloc de 16 octets. . . 2. . . . . . . . . . . . . . . . . . . . . . . . . . a Un exemple du mod`le de confiance de PGP. . . . . . . . . . . . . . .10 3.2 3. . . . . . . . . . . . Op´ration ShiftRows dans AES. . . .22 3. . . . . . . . . . . . . . . . . e V´rification d’int´grit´ par des fonctions de hachage en dispoe e e sant d’un canal s´curis´. . . . . . . .14 3. . vert et bleu sur fond blanc (ici en niveaux de gris). . . .7 Liste des figures. . . .

. . . . . . . . . . . . e e Codeur turbo par composition parall`le et entrelacement de e deux codeurs RSC. . . 66 Extrait de table du χ2 . . . . . . . . . . . . . . . .1 1. . . . . . . . . 75 Distribution des multiples de p modulo m. . . . e Coˆt et performance des attaques sur DES en 1996. . . . . D´tail des configurations possibles. . 26 e Un extrait du code ASCII. . e . . . . . . . . . . . . . . . . .3 4. .33 Format d’un paquet SSH. 118 119 120 121 136 150 151 157 157 159 161 Fr´quence d’apparition des lettres en fran¸ais. . . .5 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 4. . . . . . . . . . . . . . .3 3. . . . . .5 3. . . . . . . . . . . . . . . . . . . 328 Liste des tableaux 1. . . . . . Complexit´ des cryptanalyses sur DES. .6 R´partition des lettres dans ce manuscrit LaTeX. . . 99 Crible quadratique pour 7429. . . . . . . . . 276 D´codage d’un message M = CORR(CRY P T (COM P (M ))). . . . . . . . . . . . . . . . . . e . . . 276 e Algorithme de Viterbi sur le message 10010010011101111010.4 1. . .1 3. . . . . . . . . . . . . . . . . . . . . . . e Diagramme d’´tat du code convolutif de polynˆmes g´n´rateurs e o e e P1 = X et P2 = X + 1. . . . . . . . . . e e 227 267 268 270 272 273 Codage CORR(CRY P T (COM P (M ))) d’un message M. . . . . . . . . . . . . . . . . 102 Codage arithm´tique de “bebecafdead”. . . . . .5 1. e e Codage arithm´tique entier de “bebecafdead”. . . . . . . . . .4 4. . . . . . . . . . . . . . . . . . . . . . . .6 69 70 71 Code EAN-128 de la th´orie des codes.15633504500”. . . . . . . . . . . . . . . . . . Treillis du code convolutif g´n´r´ par P1 = X et P2 = X + 1. . . . . . . . . . .3 1. . . e ee Transformation d’un code convolutif syst´matique de longueur e de contrainte 3 en code syst´matique r´cursif RSC. e D´codage arithm´tique de “0. . 38 Op´rations sur les inversibles avec g´n´rateur en caract´ristique e e e e impaire. . .6 2.2 3. .4 3. . . . . 212 4.1 2. . . . . . . .Th´orie des codes e 337 3.2 2. . e c Analyse de fr´quence du texte chiffr´ et comparaison aux r´f´e e ee rences. . . . . . . . . . .5 3. . . . . . . . D´codage it´ratif d’un turbo-code. . . . . . . . . . . . . . u Vitesses compar´es de quelques m´thodes de chiffrements par e e blocs. . . . . . . . . . . e D´codage arithm´tique entier de “156335043840”. . . . . . . e e Taux de compression de diff´rents algorithmes. . . . . . . . . . . . . . . . . . .4 2. . . . . . .2 1.3 2.2 4. . . . . . . . . . . . .

. . . . .338 3. . . .6 4. . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Algorithme de Berlekamp-Massey. . . . . . . . . . . . . . . . Codage avec bit de parit´. . . . . . . Test de primalit´ de Miller-Rabin. . . . . . . . . . . . . . e Test d’irr´ductibilit´ de Ben-Or. . . . o e Test Racine Primitive. . . . . . . . . . . . . . . . . . .9 Principales diff´rences entre W et Rijndael. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Liste des figures. . . e 4. . . . . . . . . . . . . . . . . pour des . . . e e Algorithme de Huffman dynamique : compression. . . . . . . . . . . . . . . . . . e Quelques polynˆmes primitifs de F2 . . . . . . . . . . . . . . . Table d’entrelacement de retard 2 apr`s un tour. . . . . e Puissance Modulaire. . . . . . . . . . . e PGCD : algorithme d’Euclide. . . . . . 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 simplifi´. . . . . . . . tableaux et algorithmes ShiftRows : d´calage des lignes en fonction de Nb dans l’algoe rithme Rijndael. Algorithme de Gordon. 3. . . . .1 4. . . . . . . . . . . . . . . . . . . . .7 Ordre de grandeur du taux d’erreurs. . . .3 4. .8 R´partition fr´quentielle des symboles dans un texte fran¸ais. . . . . . . . . . .11 Attaque Man-in-the-middle dans le protocole d’´change de clef e de Diffie-Hellman. . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . .4 4. . . . . . . . . e e Recherche d’un polynˆme irr´ductible creux. . . . . . . . . . . Codage arithm´tique. . . . . . . . . . . . . . e D´codage arithm´tique. . . . . . . 21 24 46 48 52 56 61 62 67 68 91 93 95 98 100 103 112 118 119 123 .2 4. . . . . . . . . . . . . . . . . . . . . . . . Initialisation d’une table d’entrelacement de retard mots de longueur 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Correction d’erreur par bits de parit´. e Exemples de codes CRC. .5 4. . . . . . . . . . . Factorisation de Pollard. . . . . . . . . . . . . . . . . . . . . . . e 3. . e D´codage fax. . . . . e e Produit rapide de deux polynˆmes. . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 R´sistance aux collisions pour les fonctions de hachage les plus e connues. . . . . . . . . . . . o . . . . . Attaque des anniversaires de Yuval. . . . PGCD : algorithme d’Euclide ´tendu. . . . . . . . . . . e e c 3. . Description de l’algorithme de Huffman. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Envoi de message intercept´ par le Man-in-the-middle. . . . . Test Polynˆme G´n´rateur. . . . . . . . . . . . . . . . . . o e e Transform´e de Fourier Discr`te Rapide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . 339 124 130 133 134 162 167 256 269 301 305 306 310 318 319 319 320 . . . . . . . . . . . .Th´orie des codes e 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 Algorithme de Huffman dynamique : d´compression. D´codage des Reed-Solomon. . . . . . . . d) dans RSA. . . . . . . . . . . . . . . . e e e e Distance d’un code (|V | = 2). . . . . . . . . . . e LZW : compression. . . . . . . e e e D´codage du code de r´p´tition avec d´tection maximale. . . .d) dans RSA (cas e petit). . . . . . . . . . . . . e R´ciproque de la BWT. . . . . . a G´n´rateur pseudo-al´atoire cryptographique RSA. . e Factorisation de n ` partir de (n. . . . . . . . . . . . a Factorisation de n ` partir de (n. . e Chiffrement AES. . . . . . . . . . . . . . . . . . . . . . . . . .e. . . . . . . . . . . . . . . . . . . . . . . . . LZW : d´compression. . . . . . . . . . . . . . e D´chiffrement AES. . . . . . . . . . . . . . e e e e D´codage du code de r´p´tition avec correction maximale. . . . . . . . . . . . . . . . . . . e. . . . e e e D´codage du code de r´p´tition avec d´tection et correction. . . . e Algorithme de Viterbi (d´codage des codes convolutifs). . . . . . . . . Diversification des clefs dans AES. . . . . . . . . . . . . . .

.

274 7-Zip . . . . 106 Alphabet20. 285. . . . . . . . . 23. . . . . . . . . . . 45. . . . . 29 factorielle. . . . . . . . . . . . . . . . . . . . . 63 unitaire . . 108. . 161–168. 44. 133. . 43 e principal . . . . . . . . . 44 Anniversaires (paradoxe) . . . . . . . . 147–149. . . 81. . . . . 286 Architecture ` clef publique . . 77. 216. . . 174 a active . . 175. . . . . . . . . . . . . . 152. . . . . . 110. 37. . . . . . 152 Ab´lien . . . . 301 ADSL . . . . . . . . . . 147 A5/1 . . . . 152. . . 150. . . . 134. . . . . . . . 159. . . . . . . . . . . . . . . . . 106 de crible . . . 122–125. . 20. . . 84 e e APP. . 212. . 59. . 89 Anneau . . . . 108 source . 69. 158. . . . . . . . . 80. . . . . . . . . . 185. . . . . 219 ASCII. . . . . . . . . . . 218. . . . . . . . . . . . 78 e ARQ . . . . . 212. . 181. . . . . . . . . . 205. . . . 58. 86. . . . . 82. . 102. . . . . . . . . . 115. . . . . .E. . . . . . . . . . . 94 quotient . . . . . 204 Ant´c´dent . .E. . . . . . . . 102. . . . 108. . . . . . . . . 44. . . . . . . . 97 Annuaire de certificats . . . 165. . . . . . 218 du code . . . 110. 217 e Analyse spectrale . . 23. . . . . . . . 79. . 198. . . . . . 57 e Al´atoire . . . . 128. . . 74. . . . . . . . . . . . . . . 59 euclidien .273 Application lin´aire . . 39. 43. . . 147 au modulo commun. . . . . . . . . . . . . . . . . . . . 149 d’index . . . . . . 301 AKS (Test de primalit´) . . . . 42–44. . 59 caract´ristique d’un . . . . . . . 302 7 bits . . . 147 A5/3 . 58 int`gre . . 123. . 313 ` l’exposant commun . . . . 171. . . . . voir Yuval des g´n´rateurs congruentiels lie e n´aires . . . . . . . . . . . . . . . . . . . . . . . . .174 de Yuval . 195. . . . . . . . . . . . . 134 ASN. . 93. . . . . . 38. 144. . . . . . . . 76. . . . . . . . . . . . . . . . . 157. 122. . 306 Algorithme complexit´ . . . . 175. .S. . . . . . . . 274 A. 32. . . . . . 201. . . . 30. . . . . . voir a PKI Arit´ . . . . . . . . . . . . . .38. . . . . . . 111. . . . 114. . . . . . . . . 203 Attaque . . . . . . . . . voir Triple D. . . . . . . . 55. . 20. 231. . . . . . . . . 145. . . . voir Groupe ab´lien e e AddRoundKey . . . . . . 222. . . . . 213 A5/0 . . 161. . . . . . . . . . e 75. 152. . . . . . . . . . . . . . . . .1 . . . . 58 factoriel . . . . . . . 21. . . . . 207. . . . . . . . . 43. . . . . . 75.E. 112 Alt´ration . . 136 commutatif . .S . . . . . . 31. . . . . . . . . . 188. 77. . . . . . 78. . . 246 e Arbre de Huffman . . . . . . . . . . . .Index 3DES . 43 e . . .S 3G . . . . . . . . . . . 122. . . . . . . . . . . . . . . . . . .175 A A. . . 182. 43. 56. . e 94 exhaustive . . . . . . . . . 47. . . . . . . . 27 e cryptographique . . 38. . . . . . . . . . . . . . . . . . .

. . . . . 207. . . 278. . . . . . . . . . . . . . . . 197. . . . . . . . . . . 185. . . . . . . . 72. . . . . . . . . 59. . . . .342 man-in-the-middle. 233. . . 42. . . . . . . . . . . . . . . . 141 Authentifiant . . . 213. . . . . . . . . . . . 20 e Cardinal 20. . . . . . . . . . . 73. 223. 105 Camellia . . 218 Bluetooth . 215. . . 61. . . . . . . . . . 152. . . . . 104 Bayes . . . . . . . . . . . . . . . 198 Cassage . . . . . . . . . . . 192 Authentique . . . 186. . . . . . . . . . 145 Calcul d’index . . . 193 Authentification . . 219–221. 74 Boˆ ıte-S . . . 147 Audio . . . .148 passive . . . . . . . 283. . . 257 B´zout 45–49. . 63. . . . . . . . . . . . . . . . . . 159. . . . . . . . 237. 224. . . . . . . . . 148 par texte clair connu. 224 de Singleton . . . . 246 Automatic Repeat reQuest. . . 136 bzip2 . 185 CBC-MAC-AES . . . . . . . . . . . . . . . . . 37. . . . 82. . . . . . 63. . 76. . . . . . . 214. . 312 ´mission . . . . . . . . . . . . . 157. . . . . . . . . . . . . e 316. . . . 199. . . . . . . . . . 250. . 174 par texte chiffr´ choisi . . . 253. . . . 296. . voir Meet-in-the-middle par analyse diff´rentielle . . . . . . . . . . . . . . 156 e Caract`re . . . . . . . . . . . . . . . . . . . . . 315. . . . 32. 218 Certificat . . . 158. voir RA de certification . . 216 Canal binaire . . . . .voir Man-in-the-middle meet-in-the-middle . . 88. . . . . . . . 198. . . . . . . . . . . 228 jetable . . . . . . . . . . . . . . . . . . 149 e par anniversaires . . . . 152 Blum-Blum-Shub . . . . . . . . . 264 CD ROM . . . . . . . . 148 e e par signature . 165. . . . . . . . . . 251 primitif . . . . . . . . . . . . . . . . . 208–210 CAIN . . . . . 307 e Bit de parit´ . . . . . . . e 316 Blahut . . . 72. . . . . . . 185. 176. . 185 CD audio . . . . . . . . 96. . . . . . . 148 e par s´quences forc´es . . . . . voir TA Index Blocs (codage par) . . . . . . . . . . 84. . . 65. . . . . . . . . . . . . . . 223 BCH . . . 60. . . . . . 31. . . . . 131. . . . . . . . . . . 148 e par texte chiffr´ connu . . voir BSC e Cantor-Zassenhaus. . . 307 CBC 39–41. . . . 43. . . . . . . . . . . . . . . . . . 255 . . . . voir CA de confiance . . . . 129–131. 200 e chaˆ de . 129 BWT . . . . 199 ıne extraction . . . . . . . . . . 184. . . . . 186 Auto-dual (code) . . . . 222–224. . . . . . . . . . . . . . . 49. . . . . . . . . . . . . 199–209. . . . . . . . . . . . . 240. . . . . . . . . . . . . . . . . . . . 148 par r´p´tition. 189 Blum-Micali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . voir Yuval par force brute . . 224 sym´trique . 201–205. . . .195 e e par s´quences connues . . . . . . . . . . . . . . . . . . . . 93. 83. . . . . 241 BSC . . . . . . . voir SBox Borne de Shannon . . 262.219 Autorit´ e d’enregistrement . . 66. . . . . . . . 23. . 136 C CA . . . . . . . . . 281 CBC-MAC . . . . . . . . . . . . . 219. . . . 94. . . 284 Carte bancaire . . . . . . 329 Caract´ristique . . . . . . . . . . . . . . . . 206. . . . 58. 256. . . . .248 Capacit´ . . . 152. . . . . . . 218. . . . 148 e par texte clair choisi . . . . . 253 Berlekamp-Massey . . . . . 316 Burrows-Wheeler . . . . 310 unique . . . . . . . . . . . . . . . . . . . . . . . . 203 B Baby step giant step . . . . . . . . 108. . . . . . . .

. . . . . . . 37. . . . . voir Clef secr`te e e Chrominance . . . . . . . . . . 234. . . . . . . . . . . . 144. . 246 barre . . . . . . . 232. . . 38. 153 u sym´trique . . . . . . 324 d’authentification . . . . . . 118. . . . . . . . . . 112. . 144. . . . . . . . 240 dual . 240–243. 285 irr´ductible . . 243. 235 e hauteur d’un . . . . . . . . 263. 23 parfait32. e 133 avec perte . . . . . . . . . . . 30. . . . . . 149. . . . . . 210–215. 158. . . . . . 235 e ´tendu . . . . . . . . 250. . . . . . . . voir Blocs par flot . . 279 gestion . 286 de redondance cyclique . . . . . . . . . . . 236. . . . . . 185. . . voir MAC d´tecteur . . . 280 priv´e . Chargement hors ligne . . 151. . . 234. . . . . . . 246. . . . . . . . . 204 Checksum . . . . 216 transport . . . . . . 114. . . . . . . 230. 152. . . . . 247. . . . .20 ıne. . . . . . 200 e de session . . . 192–196. . . . . . . . 280. 234–236. 270 c e r´cursif . 152. . . . 37. 207. . . 225. . 200 Codage 343 adaptatif . . 165 espace de . . 167 par blocs . . . . . . . . . . . . . . 148. . . . . . . . . . . . . . . . . . . . voir RSC e raccourci . . . 113. . . . . . . . 139 CIRC . . . . . . . . . . 156. . . . . . . . . . e 200. . . . . . . . . e 324 non ambigu . . . . . . . . . 213. . . . . . 168. . . . . . . 69. . . . . . . . . . . . . 115. . . 225. . . . . . . . . . . .78. . . . . 149. . . . . . . . . . e 126. . . . 185. . . 168–173. 226–228 correcteur . 181. a e 216 asym´trique . . . . . . . . . . . . . voir CRC du Minitel . . . . . . voir Parit´ e Chiffrement . 168. 235. . . . . . 168. . . . . 81 instantan´ . . . . . . . 169 a ` clef secr`te149. . . . . . 81. 222 sans bruit . . . . . . . . . . . . . . . 24. 210. . . . 79. . . . . 326 syst´matique . . . . . 261–265 Clef agr´ment . . . 199. . voir Flot par transposition . . . . . . . . . 140 de canal . . 94. 310. 110 Code arit´ d’un . . . . 270 turbo. . 205 v´rification . . . . . . 203 e CFB 40. . . . . . 312. . . . 125 arithm´tique117. . . . 297 pratiquement sˆr. 245 de Hamming . . . . . 246. . . . . . . . . . . . . 237. . . . . 73 inconditionnellement sˆr . . .Th´orie des codes e PKIX . . . . . . . . 188. . . e 189. 41. . . 77 parfait . . 313 publique . . . . . . . . . . . . . . . . . . . . . . 108 e auto-dual . .voir Turbo uniquement d´chiffrable . . . . . 312. . . . . . . . . . . . . . . . . . 205. . e 242. . . . . . . . . 213 de tour . . . . 29. . 152 u mode de . . . . . . . . . . . . 237–240 de Huffman . 146. 170–176. 218. . . . . . . . . . 255. . 22 e de Vernam . 82. . . . . . . 78 e lin´aire 168. 29. . . 260 e ´quivalent . 266 cyclique . . . . . . . . . . . . . . . . . . .37. . . . . 225. . . . 197–203. . . . . . 186. 211 ` clef publique . 144. 36. . . . . . . . . . . . . . 218. . 249. . . . . . . . . . . 236. . 209–215. 186–188. . . . . 77 e . 242 poin¸onn´ . 313 secr`te . . . . . . . . 245 entrelac´ . . . . . 204 utilisateur . 175. . . . . . 200. . . . . . . 230 e de Golay . . . 168 e de C´sar . . . . . . . . 161. . . . 281 Chaˆ . 206. . . . . . . . . . . . . . . . . 125. . . . 152. . . . . 151–153. . . . . 120. 200 jetable . . . 266. . . . 226. . . . . . . . . . . . . . . . . .

. . . 198. . . 137–139 dynamique . . . . . .26–28. 167. . . . . . 228–231 Crible alg´brique . . . . . . 281 Cyclic Redundancy Checkvoir CRC D DAT. . . . . . . . . . 197. 102 CRL . . . . . . . . 309 Complexit´ . . 271. . . . . . . . . . . 257. . . e 185. . . .E. 148. . 58 e D´multiplexeur . . 23. . 210. . . . voir LFSR e D´chiffrement . . . . . . . 158 CBC . . . . . . . . . 105. . . . . 105 Corps 43–45. . . . . . . . . . . . . . . 52. . voir CAIN e relation fondamentale . . 90. . . . 218. . . . . 59. . . 216 par analyse fr´quentielle25. . . . . 93 e D´codage it´ratif . . 55. . . . . . . . . . . . . . 272 e compress. . . . . . . . . 287. . . . 57. . . 145. . . 284 caract´ristique d’un . 211 Construction de Zech . . 122 Confidentialit´ . . . . . . 104. . 204 EEE. . . . . . . 143. . 158. . . . . . . . . . 68 Correction directe. . . 70. . . . . 76. . 97. . . .219 par retransmission . . . . 152. 219 e DFT. . . . . 172 e Cryptographie fonctionnalit´s . . . . . . 122 Huffman dynamique . . . . . . . . . . 177. . . . . 226. . . . 98. . 44 de Galois . . 225. . .158 D´sentrelacement . . . . . . . . . . . 97. 96. . . . . 43 e commutatif . 201. . . . 101 de scindage . 57. . . . . . . . . . . . . 182. voir NSC e r´cursif . . 41. . . . . . . . . . 156. 65 Contrˆle o matrice de . . . . . 201. . 55. 300 e D´calage (registre) . 136 Compression avec perte . 95. . . . . . . . 178. . . 94. . . . 62–68. . 206 e e CRC . . 25. . . . . . . . . voir RSC e syst´matique . . . . . . . 152–159. . . 182. . . . . . . . . 254. . . . 245 Convolutif non-syst´matique .S . . . 101 Courriel s´curis´ . . . 279 Composition parall`le . . . . . . .E. . . . . . . . 93. . . . . 139. . . . . . 55. 156. 174. . . 273 e D´pˆt de certificats . . . . . . . . . . 139. . . . . . . 168. . . . . . . . . 101. . . . . . . . . . 246. . . 101 e Index ´ d’Eratosth`ne. . . 57. . . 144 Cryptographiquement sˆr . 138. . . . . . 273 e e Degr´ . . 255–257 rapide . voir D. voir ARQ Courbes elliptiques . . . . 142. . voir u G´n´rateur e e CTR . . . . . . . 59. 43. . . . . . . . . . . . . 90 . 44. . . . . . . . . e 66. . . 180. 49. . . . . 142 D´calage cyclique . . . . . . . . . . . 57–68. . 60. . . . 157. 60. . . 179. 244. . . . . .135. 218. . . 95. 163. 301 EDE . . . . . . . 101 quadratique . . . . . . 240. . . . . 60 de nombre . . . 99. 203. 171. . . . 210 Cross Interleaved Reed Solomon voir CIRC Cryptanalyse . . . . . 178. . . . . . . 148. . . 204 e o D. 213. . . . . . . .87–92. . . . . . . . . . . . . . 89. . . . . 93. . . . 229. . . 326 e D´sentrelaceur . 102. . . . . . . 140. . . . 53. . .84. . . . . . . . . . . 240 premier . . 89. . . . 158. . . . . 33 e D´tection d’erreur . . . . . . . . . . . 270 e Coppersmith (calcul d’index) . . . . . . . . . . . . . 92 fini . . . . . . . . . . . . . . 105. . . . . 30. . 147. . 147. . . . . . . . . 92. . .S DCT . . . . 45. . . . . 157. . 146. . . 169. . .344 Collision. . . . . . . 273 e D´sordre . . .218 Data Encryption Standard . . . . . . 66. .99 e de corps de nombre . . . . . . . . 262. 82. . . . . . 204. . . . .

261 e parall`le . . . . . . . . . . . . 284 ´ Etendu (code) . . . 234 Espace vectoriel . . 33. . . . . . . . . . . . . 241. 43 e DivX . . . . . . . . . . . . 75. . . 307 Extension de code . . . . . . . . 271. . . 43 . . . . 179–181 Enregistrement . . . . . 165–167 Diviseur de z´ro . . . . . . . . . . . . 262. . . . . 199. . . . . 109. . . 290 e Exponentiation modulaire . . . . . . 190. . . 31 e uniforme . . . 235 de corps . . . . . . . . . . . 142. . . 114. . . . 82–84. . . . . . . . . . . . . . . . . . . . . . . . . . 148. . . . . . . . . . . . . . . 225. . 189 Effacement . . . . . . . . . . . 34. . 268. 49. . . 176 ´e El´vation r´cursive au carr´ 52. . . 44 Diversification de clef 153. . . . 34 induite . . . . . . . . . 172. . . . . 157 Dual (code) . . 309 Euclidien . . 152. . 172. . . . . . 176. 263 El Gamal . 64. 274 DVD . . . . 69 e disjoints . . . . . 217 345 Entit´ finale . 122. . . . . . . . . . . . . 259. . . . . . . . . . . . 54. . . . . . . . 245 DVB-S2 . . . . . . . . . 270. . . . .S . . . . . 192. . . . . .Th´orie des codes e Diagramme d’´tat . . . . 248. 111. . . . . . . 259 s´rie . . . . . . . . . . 204 Empreinte . . . . 52. . 142. . . 317 ECB . . . . . . . . . 129. 257. . . . . . . . 132 Diffie-Hellman . . . . 292 conditionnelle . . . 58. . . . . 223 conjointe . . . . . . . . . . . . 155. . . . . . . . . . . . . . . . . 257. . 260. . . . . . . . . . . . . 260 e Entrelacement . . . . 272–274 Entropie . . . 111. . . e 58. . . . . . . . . 53. . . . . . . . . . . . 235 Euclide algorithme d’ 46. . . 230 binaire . . . . . . . . . . . . 243. 76. . . . . . . . . . . . . . . . . . . . . . . . voir TGS Distribution de probabilit´ . . . . . . . . 233. . . . . 281 ´ Echange de clef . . . . . . . . . . . 267 e Dictionnaire . . . . . . 281. . . 271 e table . 96 algorithme ´tendu . . . . . . . . 240. 291 E EAN-13 . . . . . . .E. . . . . 33 ´ Equivalence RSA-Factorisation. . . . . .190 e dim . . . . . 30 Ev` al´atoires . . . 307. . . . . . . . . . . . . . . 74. . . . . 92 de source 35. . . . . . . . . . . . . . . . . . . . . 269 Distributeur de clef. . . . . . . . . 285 div . . . . . . . . . 206 Ensemble des inversibles . 290. . . . . . . . . . . . . . . 234. . . . . . . . . . . . .173 ´ Equivalent (code) . . . . . . . . . . . . . . . . . . . voir Logarithme discret Double D. . . . . 175. . . . . . . . . 296. . . . . . . . . . . 147. . . . . . . . . 31 ind´pendants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31. . 47–50. . 98. . . . . 204 e Entrelac´ . . . 45 Distance . . 261 crois´ . . 161. . . . 262–264. . . . . . . 63. . . . . . . . . . . 79. . . . . . . . . . .voir KDC de tickets . . . . 70. . . . . . . . . . . . . 142 DLP . . . . . . . 126. 49. . . . . 272 e profondeur . . 299. 327 EFM . . . 201. . . . . . . . 274 avec retard . 200 clef publique . . . . . . . . . . . . 44. . 51 th´or`me d’ . . . 223. . . . . . . . . . . . 302. . . . . 223. . . . . . . . 260 Entrelaceur . 226–228. . . . . . . . . . . . . . . . . . . . voir Hamming d’un code . . . . . . . . . . . . . . . 168 protocole d’´change de clef. 50. . . . . . . . . . . . . . . . . . 41. voir Anneau Euler indicatrice d’ . . 33–36. . . . . . . . . . . . . . . . . 45 Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 e e ´ Emetteur de CRL . 234 libre . . . . . . . . . 39. . . 283. . . . . . . . . . 169 e e ´ enements . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . 104. . . . . . . . . . 200 I Id´al . . . . . . e 151 Gestion des clefs . . . . . . . . . . . . . . . . . 69 ordre . . . . . voir Man-in-the-middle Hors ligne. . . .42. . . . 182 Homme au milieu . . . 53.65. 218 Floyd . . . . . . . . . . . . . . . . . 248 o Fenˆtre de recherche . . . . . . 183. . . 214. . . . a 185. . . 245 Golden . . . . . . . . . 65–69. . 99 Fonction ` sens unique . . . . . 230. . . . 72. . 283 ab´lien . . . . 42. . . 244. . . . . . 94 e multiplicatif . 177. . . 93. . 98. . 132. . . . . . . . . . . . 178. . . . . 182. . .42. 93. . 269 poids de . . . . . . . . . . . . . . . . 42 e commutatif. . . 187 de compression . 142. . . . . . 176. . . . . . . . . . 133 e Fermat (th´or`me de) . . . 137 Golay (codes de) . . . . . . . . . . . . . . 285. . 94. . 44 e de groupe. . 177. . 122. . . . 31. 90. . . 98 cryptographique . . . 72. . . . . . . 71. . . . . . . . . . 160. . . 179–188 Hamming code de . . 66. . . . . . . . . . . . . . . . . . . . . . . . . 131. . . . . . . . . . . . 74. . . 218 FinalRound . . . . 44. . . 122–126. 151. . . . . 81 d’un code . 80. . 132. 42 multiplicatif. . . . . . . 43. . . . . 136. . . . . . 74. . . . . . . . . 209 Huffman . . . . 81. . . . . . . 71 cryptographique . . . . . 54. . 71 pseudo-al´atoire .204. . . . . . . . 61. . . . . . 50 e e Fibre optique . . . . . . . . . . . 283 cyclique . . . . . . . 144. . . . . . 29. . . . . 140. . . 74. . . . . . . . . 268. . . 161. . . . . . . . . . . . . . . 100 de polynˆme . . . . . . 289–295 G G´n´rateur e e congruentiel . voir Hachage H Hachage . . . . . . . . . . . 104. 150. . 251 GSM . . . . . . . 295 F Factorisation d’entier . .154 de chiffrement . . . . . . . . . . 43. . . . . . . . 255 Hauteur d’un arbre . 286. . . . . . . . 74 cryptographiquement sˆr . . . . . . . . . . . . . . . . . . 150. . . 81 HAVAL . . . . . . . . . . . . . . 83–86. . . 237–240 distance de . 189. . . . . . . . 43 e engendr´ . 232. . . . . . . . u 74. 190. . . . . . . . . . . . 135. . . . . . . . . . 111–117. . . . . . 206 Flot (codage par) . . . . 42. . . 301 FIPS-196 . 129. . 65. . . . . 135. . . . . . . . 55. . . . . . 103 Groupe . 308 lin´aire . . . . . . . . . 233. . . . . . 177. 144. . . . . e 186 de hachage . . . . . . . 86. . 231 gzip . . . . . . 190 d’expansion. . . . 28. . . . . 85. . . 91. . . . . 183. 136. 294. . . . 37. 232. . . . . . . . . . . . . . . . . 266. . . . . 184. . . .346 Index Gibbs . . . . . . 69–76. . 102 de Pollard . . . . . . . 33 GIF . . . . . . . . . . . . 190 d’id´al . . . . . . . . 261 Gordon (algorithme de) . . . . . . . . . . . 253. 177. . . . . .43 e . . 179–181 de d´chiffrement . . . . . . . . . . .

. . . 151 Key Distribution Center . . 258 moyenne . 197. . . . . . . . . 281. . . . . . . .42 Inversible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45. . . 74. . . . . . . . 255 o des luminances . . 45 e Inalt´rable . 186 e Incertitude . . . . . . . . . . . . . . . 192–196. . . . . . . 196 Ker . . 317 Isomorphes . . . . . . 310 Kerckhoffs . .32. 135 LZO . . . . . . . . . . . . . . . . . . . . 170. . . . . . . . . . . . . . . . . 42. 130. . . 274 de paquet . . . . 166 . . . . 132. . . . . . . . . 188 Loi de probabilit´ . . . 186 Man-in-the-middle . 245 de contrˆle . . . 133 LZAP . . . . . . . . . 218 Instantan´ . . . . 254. . 59. . . . . . . . . . 136 Mars. . . . . . 294 J Jetable . . . . . . . . . . . 288. . . . . . . . 65. . . . . . . . . . 52–54. . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 LZMA . 84. . . . . . . . . . . 192. 33. . . . 176. . . . . . . . . 176. . . . . . . 28. . . . . . . . . . . . . . . 45 Image . . . . . . . . . . . . . . . . . . . . . . 61 e e ISBN . . . 133. . . . . . . . 244. . . . . . . 309 discret . . . . . . . . . . . . . . . . . . . . . . . . . voir Code e Int´grit´ 84. . . . 80. . . . . . 186 hybride . . . . . . . voir KDC KeyExpansion . . . . . 31 e Longitudinale (parit´). . . . . . . . . . . . . . . . 229. 52 primaire . . . 161. . 269. 268. . .220. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158. . 257. . . . . . . . . . . . . . 256. . . 309 enveloppe . . . 135 LZH . . . . . . . 139–141 JPEG-2000 . . . . . . . 312. . . 164. . . 159 Massey. . . . . . . . . . . . . . . . . . . . . 99. . 50.voir Berlekamp Matrice . . . 43. 146. . . . . . . . . .243. . 226. . . 136 LZW . . . . . . . 134. . . . . . . . . . . . 241. . . . . 137. 240 e Logarithme . . . . . 270 Liaison t´l´phonique . . . . . . . . . . . . . . . . . . . . 165. . . . . . . . . . . 20. . . 36. 136. . . . . . . . . . 295 LZ78 . 140 M MAC . . . . . . . . . . . . . . . . . 190–192. . . . . . 151. . . . . . . . . . . . . . . . . . . . 156. . . . . 49. . . . . . 236 e Longueur de contrainte . . . . . . . . . . . . . . 204 IETF . . . . . . . . . . . . . . . . . . . . . . . . . 43 Identificateur d’algorithme . . . . 206. . . . . . . . . . . . . . 44. . . . . 136 LZMW . . . . . . . . . . 214. . . . . . . 58. . . . . 37. . . . . . . . . . . . . . . . . . . 108–111 LUHN-10 . . . . . . . . 302 KDC . . . 226–228. . . . . . . 104–106. 132 LFSR 71–73. . . . 45 canonique. 141 d’une application lin´aire . . . . . . . . . . . . . . . . . 175. . . 133. . . . . 162. . 45 Kerberos . . . . . . . . . . . . . . . . . . . 228 Luminance . . . . . . . . . . . . . . . . . . . . . 175–177. 202 Im . . 207. . . 60. . . . . . 212. . 231 e e Inverse. 199. . . . 51 Infalsifiable . . . . . 132. . . . . . . . . . . . voir Ev`nements e Index . . 147. . . 131. . . . .Th´orie des codes e principal . 133. . . 94. . . . . . . . . . . . . . . . . 60 347 L Lempel-Ziv . . . 186 Infrarouge . . . . . . 306 Irr´ductibilit´ . . . . 293 Indicatrice d’Euler . . . 135–137. . 218 ee Lin´aire (code) . . . . . 139 K Kasiski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 LZ77 . . . . . . . . . . . . . . . . . 109 Inconditionnellement sˆr 29. . . . . . 183–186. . . u 152 ´ e Ind´pendant . . . . . 313 Markov. . . . . . . . voir Clef JPEG .

. . . . . . 152. . 220. . . . . . . . . . . . 71 Out of band . . . . . . . . . . . . 329 normalis´e . . 182. . . . . . . . . . . . . . . . . . 131. . . . . . . . . . 164 MNP5 . . . . . . . 192. . 76. . .39 OFB . . . . . . 29 OpenSSH . . . . . . . . . . . . 77. . . . . . . . . . . . . . . . . . . . . . . . . 38. . . . . . . . . . . . . . . . . 41 ECB. . 173 Minitel . . . . . . . . . . . . . 40 CTR .196 Parit´ e contrˆle de . . . . 215 OpenSSL . . . . . voir Code Pari de mot de passe. . . . . . . .129 Move-to-front . . . . . . . . . . . . . 243. . . 186 e Non reniable . . . . . . . . 186 Non-r´pudiation . . . . . 43 e Ordre . . . . 129. . . . . 236 transversale . . . . . . 214. . 84 MDS . . . . 39 CFB . 247. . . 40. 186 e Noyau . . . 307 NMAC . . . . 194. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . voir Groupe Ou exclusif . 41. . . . . . 197. . 77. . . . 226. 81. . . 281 One-time-pad . . . . . . . . . . . . . 115. . . . . 242 Meet-in-the-middle . . . . . . . . . . . . . . . . . . 205 Op´ration de d´calage . . . . . . . . . . . . . . . . . . 226 e e e Number field sieve . 152 CBC . . . . voir Hors ligne P pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219. . . . . . . . . . . . 127 mod . . . 219. . . . . . . . . . . . . . . . . . . . 82 Non r´utilisable . . . . . . . . 153. . . . . . . . . . . . . 258. . .174. 249. . . . . . . . 239 longitudinale . . . 277. . . . . . . . . . 181. 270 Num´ro de s´curit´ sociale 220. . . . . . . . voir Chiffrement code . . . . 219. 44 Mot de code . . . . . . . . . . . . . . . . . 257 a Paquet d’erreur . . . . . . . . . . . . . . 142 MPEG . . . . . . . 246. . . . . . . . 313 Move-ahead-k. 244 Index NESSIE . . . . . . . . 232. . . . 186 Non ambigu . . . . . . . . . . . . . . . . . 39. . . 220. . . . . . . . 45. . . . . . . . . . . . . . . . . . . . . . . 122. . 243 e Mauborgne . . . . . . . . . 29. . . . .240–243. 258 MDC . e 128. . . . . . . . . 142 Multiplexeur . 136 Pair-`-pair . . . . . 158 Merkle-Damg˚ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126. . . . 293 MP3 . . 108. . 266 Miller-Rabin . . . . 158. . . . . . . . . . . . . . . 216 Newton-Raphson. . . . . . . . . . . . . . . . 240 MISTY1 . . . . . . . . . . . . . . . . . . . . . . . . . . 236 N Needham-Schroeder . . . . . . . . 180. 247 e e Oppos´ . . 41. . . . . . 219 de passe 30. . . . . . . . . . . . . . . . .348 g´n´ratrice. . . . o 235. 141. . . . . . . . . . . . . 326 PAR-2 . . . . . 214. . . . . . . . . . . . . . . . . . . . . . . . . . . 196 . . voir Crible O OFB . . 40 Mod`le de source . . . . 29 MD5 . . . . . . . . . . 56. . . . . 122. . . . . . . . . . . . 161. . . . 280. . . . . . . . . . . . . . . . . . . . . . . . . . 156. . . . . . . . . . . 45 NSC . . . . . 272 Multiplication matrice-vecteur . 85 ard Message source 32. . . . 44 Mode de chiffrement . . . 230. e e 255. . . . . . . . . . . . . . . . . . . . . 196. . 218. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Modulo . . . . . 215. . . voir Entrelacement e Parfait chiffrement . . . . . . . . . . . . 257 Parall`le . . 216 MixColumns . . . . . . . . . 128. . . . . . . . . . . . . . . . . . . . . . . . . . . 179. . 141.

. . . . . 308–310 PGP. . 201 PKIX . . . . . . . . . . . . . . e 83. . . . .voir Hamming Poin¸onnage235. . 208–210. . . 84. . 204–206. 189 e Pseudo-al´atoire. . . . . . 92–96. . . 122. . . . . . . . 31 d’anniversaire. . 80. . . . . . . . . . . . . . . . . . 156 Probabilit´ e a posteriori . . . 33. . . . . . . . . . 78–82. . . . 73. . . . . . . . 115. . . . . 313 PKCS12 . . . . . . . . 34. 201. . . . . . 250 ppmd . . 311–313 administration . . . 175. . . . . . . . 158. . . . . . 159. . 61. . 204 archive . . . . 137 Poids binaire . . . . . . . . . . 64. . . . . . . . . . . . . . .74. . 58. 306. 167 discr`te . . . . . . . . . . o 257 Profondeur d’entrelacement . . . 175 rho . . . . . . . . . . 277 sans carr´ . . . . . . . . . . . . . . . 196. . . . . . . . . . 312 Pollard p-1 . 201 certificat. e e 72. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . voir APP conditionnelle . 201 utilisateur . . . 270. . . . 201 e Registration Authority. 125 de collision . . . . . 305. 201 CRL . . 229. . . 205. . . . . . . . 198–201. 94 d´riv´ . 259 Propri´t´ du pr´fixe . 217. . . . . . . 254. . . . . . . . . . . . . .97 d’erreur . . . . . . . . 100. . 329 inversible . . . . . . . . . . . 51. . . 60. . 62 e minimal . . . . . 282. . . . . . 142 Quantit´ d’information. 209. . 61. . . . . . . 59. . . . 214. . . . . . . . o 255 annulateur . . . . 265–267. . . . . . . . . . 204. . . 208 e Phrase de passe . . . . . 36. . . 60 e unitaire . . . . e e 210. . 248. . . . . . 165. . . . . . . . . 231 mod`le de confiance . . . . 254. . . 98. 312 PKI . . . . . . . . . . . . 174 Primalit´ . 58. . . . . . . . . . 61 e e factorisation . . 202. . . 200 e ´metteur . . voir Pr´fixe ee e e Protocole d’´change de clef . . . . . . 201 d´tenteur . 99. . . 209. 109. 136 Pr´fixe . . . . . . . . 227 Perforation . 68. . . 284.146. . . . 310 e Publication hors ligne . . . 178. . 86 e Premier robuste . . 93. . . . . . . . . . . 170. . . . . . . . . . . . . . . . . . . . . . . 44. . . . . . . . 50. . . . . . 223 Quotient . 231. . . . . . . . . . . . . . 60. 236. . . 104 e e e PDF417 . . . . 228–230. . . 272 c Politique de s´curit´ . . . . . 72. . . 164. . . . 68. . 36. . . . . voir Robuste Premiers entre eux . . .190 Pas de b´b´ pas de g´ant . . . . . . . . 44–49. . . . . 198. e 230. . . . . . . . . . . . . . . . . . . . . 97. . . 115–117. . . . . . . . . . . . . . . 58. . 59 349 irr´ductible58–64. . . 270 Pgcd . 302. . . . . . . . . . . 94 primitif . 105 Polynˆme . . . . . . . . . . . 221–224 d’occurrence . 62. . . . . . 253 g´n´rateur . . . . . . . . . 190. . . . . . . . 99. . . . . . 204 Q Quantification . . . . . . . . . . 285. . . . 58 . . 68. . . 277. . . . . . . . . . . . 58. . . . . . . . . . . 242. 31 e Produit rapide de polynˆmes92. . . . 58. . . . . . . . . . . . . . 247–250. . 94. .Th´orie des codes e Partage de clef. . 317 irr´ductible creux . .199 Certification Authority . . 140. . .201 Repository . 256. . . 104. . . . . . . . . . . . . 228. . . 210. . . . . . . . . 208 PNG . . . 286 e Pr´image . . . . . 198. . . . . 55 e Privacy-Enhanced Mail . . . . . . . . . . 247. . . . .

. . . . . 202 Seconde pr´image . . . . . . . . . . . . 318. . . . 136 RC4 . 166 RoundKeys . . 88. . . . . . . . . . 307 R´vocation . . . . . . . . . . 45 e RAR . . . . . . 159 Redondance . . 162. . . 126. 301 RSA . . . . . . 257 Rang d’une application lin´aire . . . . . . . . . . . . . . . . . . . 197. . . . . . . . . . . . 71. 170 e e RSC . . 270–272 Run Length Encoding . 149. . . . . . . . . . . . . . . . . 329 Registre ` d´calage lin´aire . . 90. . . . . . . . 270. . . . . . . . . 25. 66–68. . . . . . . . . 226. . . . . e 222 Sans redondance . . . . . . 324 simple . . . . . . . . . 217. 127. . . 111. . . . . . . . 33. . . . . . . . . . 254. . . . . . . voir Meet-in-the-middle Rendement 219. voir RLE rzip. . 131. . . . . . . . . . . . . 86 a e ` la seconde pr´image . 59 primitive . . . 254 Reed-Solomon . . . 191. . 289 Rencontre au milieu . . 91. . . . . . 290. . 182 S Sans m´moire 34. . 44. . . . . . . . . . . 317 i`me de l’unit´ . . . . . 310 Ronde . . . . . 329 Repr´sentation e cyclique . 273. . . . . . . . . . . . . 84 e Secret . 200. . . . . . . . 209–214. . . . . . . . . 51. . . 65. 169–175. . . . . . . . 190. . . . . 201. 182. . . . . . . . . . . . . . . . . . . . . . 238. . . . 103. . .84. . . . 209. 254 TDMA . . . . 110.E. 81. . 129. . . . . . . . . . . . . . 277. . . . . . . . . . . . . . . 188. . . . . 204 Raccourci . . . . . . 140 Robuste (premier) . . 213. . . . . . . . . . 187 Th´or`me . . . . 151. . . . . . . . . 253. . . . . . . . . 222. 226 Rijndael . . . . . 239. . 178. . . . . . . . 74. . . . . 44 Scytale . . 187. . . 42. . . . . . . . . . . 287. . . . . . 308 aux collisions proches . . . . . . 253–256. 84. 321. . . 234. 299 R´servoir d’entropie . 84. . 105. . 33 Satellite . . . . . 23 SDSI . . 80. . . . . . . . . . . . . . . . . . . 237. 243. . . . . . . . . 232. . . 288. e n e 251–253. 154. . . . . . . . . . . . 305–307 signature . . . . . . . . . . . 307. . . . . . . . . . . 175. . . 205 e R´sistance. . . . . . . . . . 251 e n e multiple . . 80. . . 104. . . . . 58 Restes chinois 50. .350 Index aux pseudo-collisions . . . . . . . . . . . . . . . . . . . 288. . . . . . . 206 e . . 169. . 45 RGB . 40 Galileo . . . . voir Tour RotWord . . . . . . . . . . . . . 163. . . . . 145–147. 329 i`me de l’unit´ . . . . . . . . . . 190. . . 229. 224. 112. . . . . . . . . . . . . . 101. . . . . . 139 RIB . . . 115. . 103. . . . . . . . 225. . 284. . . . 213 RC6 . 175. . 72. . . 170. . . . . . . 182 Reste . . . . . . . . . . . . . . . . 278. . . . . . . . . 59 RAID . . 177. . 299 exponentielle . . . . . . . 65. . 299 Scalaire . . . . . 227.S RLE 21. 218 Voyager . . . . . . . . . . . .136 R RA . . . . . . . . . . voir a e e LFSR Rejet . . . . . . . 177. 198. . . . . . . 310. . . . . . . . . voir CRL e Rg . . 306. . . . . . . . 224. 228. . . . . voir Code raccourci Racine 59. . . . 182 e ` la pr´image . voir A. . 220. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64. . 84 a e aux collisions . . 166. . . . . . . . 174. 311 S´curisation des courriels . . . . . . . . . . 283. . . . 242. . . . . . . . . . . . . . . . . . 202. . . . 158. . . . . . . . . . . . . 218 SBox . . . 92. . . . 98. 162. . . . 219. . . . . . . . . .

111 Sous-corps . . . 167 Transformation . 216. . . . 329 e num´rique . 330 SHA-256 . 203 a ´lectronique . . . . . . . . . . . . . . 146. . 172. . . . . . 165. . . . . . . . . . 177. . . . 87. . . . . . . . . . . . . 210 inconditionnelle . 227 e de redondance . 265. . . . 236. . . . . . . . 196. . . . 186 DSS . . . . 205 St´ganographie . . . . . . . 192 Table d’entrelacement . . . . . . . . . . . . 142 T´l´vision Haute D´finition . . 192. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 sans m´moire . . 166. 56 e TGS . . . . . . . . . . . . . . . 180–182.Th´orie des codes e S´curit´ 39. . . . . . . .241. . 29. 144. . . . . . . . . . . . . . 110. . . . . . . . . . . . . . . . 25. . . . . 140. . . 226 Syndrome d’erreur .153. . 32. . . . . 162 e r´versible . . . . . . . . . . . . . . . . . . . . . . 216 Shannon 30. . . . . . . . . . . 158. 42. . . . 161. . . 188 RSA . . 91 a Sym´trique (canal) .voir Audio Source . . . . . 311 sociale . . . . . . . . . . . . 104. 192 Singleton. . . . . 226 o de parit´ . . . . . . . . . . . 87. . . . . 220. . . . . 315 Semi-conducteur . . 266 d’information . .226. . . . . . 33 stationnaire . 138. 222 e entropie . . . . 310 Ticket Granting Service . . . . . . . . . . 212 TLS . . . . . . 156. . . . . 238. . . . . . . . . 186. . . . . . . . . . . . . . . . . . . . . 161–163 Substitution mono-alphab´tique . . . 163. . . . 274 ee e Test de primalit´ . . . . . . 32. . . . . . 216 SHACAL-2 . . . . . . . 143 e SubBytes . . 224. . . . . . . . . 210–212 SSL . . . . . . . . 126 e . 167 Suite r´currente lin´aire . . . . . . . . . . . 217. . . . . . . . . . . . . . . . . . . . 152 juridique . . 164 Signature ` clef publique . 108 discr`te uniforme . . . . . . . 186. . . . . . . . . . 326 Son. . . . . 80. . 161. . . . voir TGS Ticket Kerberos . . . . 80. . . . . . . . . . . . . . . . . . 147. . . . . . . . . . 111. . . 110. . . . . . . . . . . 242. 19. 112. 225 e S´rie . . . . . . . . . . . 21. . 182. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151. . . . . . . . . . . 193–195. 55. . . . . . . . . . 186 e CBC-MAC . . . . 218 S´parable . . 33 induite . 187. . . 108. . . . . . . . . . . . . . . . 205 Tour de chiffrement. . . . . 114. . 222. . . 250. . . . 169. . 142. . . 109. 254 Syst´matique . . . . . . . . . . . . . . . 144 affine . 209. . . . . 218. 116. . . . . . . . . . . . . . . . . . 202 Spoofing. . . . . . . . . . . . . . . . . . . . 224 e e e ShiftRows . . 199. . . . . . . . 244. . . voir Usurpation 351 SSH. . 35. . . . . . 111 e sans redondance . . . . 202. . . 43 SPKI . . . . . . . . voir Code e T TA . . . 195 SHA-1 . . . . . . . . . . . . . . . . 187 Single Sign On . 222 de compression . . . . . . . . 223 e Symbole de contrˆle . voir Entrelacement e Serpent . . . 33 markovienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 non-lin´aire . . . . . . 19. . . . 114. . . . . . 188. . . . 181. . . . . . . . . . . . . . . . . . . . . . . . . e e 157. . . . 162 avec perte . . . . . . . 44 Sous-groupe . . . . . 192–194. . 32. 310 Tiers de confiance . . 136. . . 94 e e Support de DFT ` l’ordre n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122. 30. . . . . . . 20. . . . . . . . . . . . . . . . . 260 Taux d’erreur . 25 e SubWord . 159 Service de datation . . 172. . . 329 deuxi`me th´or`me . .

. 89. 117 Turbo-code . . . . . . . 151. . . . . . . . . . . 268. .E. . . . . . . . . . . . . . 98. . . . . . . 159 Index V Vecteur . . . . . . . . . . . . . . . . 146 e Vigen`re (chiffrement de) . . . . . . . . . . .(I) . . . . 110. . . 23. 266. . . . . 69. . . . . . 328 W Whirlpool . . 177. . . . . . . . . . . . . . 216. . 149. . . . . . . . . . 231 UMTS . . . 220. 273 hybride . . . . 210. . . . 130 g´n´rateur . . . . . 255 discr`te. . . . . . . . . . . . .Zone 3 – Rue Fond des Fourches 21 – B-4041 Vottem (Herstal) Tél +32(0)4 344 65 60 . . . . . . . 94 Universal Electronic Payment System .AUT . . . . . . . . .352 Transform´e . . . . . . .Fax +32(0)4 286 99 61 janvier 2007 — 40840 Dépôt légal : février 2007 . 140 en ondelettes . . . . . . . . 116. . . . . . . . . . . . . . . . . . . . . . 186. 136 X X509 . . 37. . . . . . . . . . . . . 182. . . . e 82. . . . . . . . . 226 urandom. . . . . . . . . 240 e e Vernam . . . . 88. . . . . . . . des Hauts-Sarts . . .132 050692 . 156 UPC-A . . . . . 111. . . . . . . . . . . . . . . . . . . . . . . . . . . . .MLN Achevé d’imprimer en Belgique sur les presses de SNEL Grafics sa Z. . .2) . . . . . . . . . . 44 de transformation . . . 136 WinZip . . . . . . . . . . . . . . . . . . . 328 e s´rie . 182 Z Zech (logarithme) . . . .OSB 100° . . . 280 Vid´o . . . . . . . . . . . . . . . . . . . . . 256 Transport de clef . . . 200 Transposition . . 141. . . . 36. . . . . . . . . . 171 e Viterbi . . . . . . . . 127 Unitaire . . .205 Usurpation de login . . . . . . . . voir Ou exclusif U UHF . . . . . 202–204. . 225. . . . . 139 Yuval . . 73. . . .I. 272. . . . . . . 328 e Twofish . . . . 271. . . . . . 274. . . . . 139. . 213 Trusted Authority . . 236 e Treillis de codage . . 179. . . . . . . . . 330 WinRAR . . . . . . . . . . . . . . . . . . . . . . . . . . . .158. . . . . . . . . . 272. . . . .S. . . 158. . . . 142. . . . . . . . . . . . . . 274 Uniquement d´chiffrable . . . . . . . . . 139. . . . . . . . . . . . 206. 273. . . . . 161 Transversale (parit´) . . . voir TA Tunstall . . . . . 138. . . . . . . . . . . 269. . . 180. . . . . . . . 272.(1. . . . . . . . . . . . . . . . . . . . . 196 Y YUV . . . . . . . . . 89. . . . . . . . . 142. . . 274 en blocs . . . . 29. . . . 267 Triple D. . . . . 30. . . . . . . . . . . . 77–79. . . . . . . . . . 81. . . . 87 e de Fourier . 65. .voir DFT e inverse . . . . . . 93 en cosinus . . 299 Ziv (Lempel-). . . . . . . . . . . . . . . 140 inverse . 312 XOR . 159. . . 272. . . . . . . . . . 274 parall`le .

Les notions théoriques présentées sont illustrées par 120 exercices corrigés. par satellite ou soient gravées sur un DVD.dunod. de codes barres ou de numéros de carte bleue. que ces informations transitent par Internet. alliant structures algébriques et développement algorithmique poussé. des protocoles de télécommunication en vigueur actuellement. JEAN-LOUIS ROCH est maître de conférences à l’ENSIMAG. secret et authentification des transmissions. correction Ce manuel s’adresse aux étudiants en Master 1 ou 2 de mathématiques appliquées ou d’informatique ainsi qu’aux élèves ingénieurs. Il sera une référence utile pour les enseignantschercheurs et les sociétés informatiques intervenant dans les télécommunications ou la sécurité. d’images. Qu’il s’agisse des textes.com . La transmission d’informations numériques est omniprésente dans la technologie aujourd’hui. MATHÉMATIQUES PHYSIQUE CHIMIE SCIENCES DE L’INGÉNIEUR 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. LICENCE MASTER DOCTORAT JEAN-GUILLAUME DUMAS est maître de conférences à l’université Grenoble 1. SÉBASTIEN VARRETTE est doctorant à l’université du Luxembourg. ERIC TANNIER est chercheur de l’INRIA Rhône-Alpes à l’université Lyon 1. de vidéos. palliation des erreurs de canal. L’accent est mis sur une présentation en détail et en profondeur.SCIENCES SUP Jean-Guillaume Dumas • Jean-Louis Roch Éric Tannier • Sébastien Varrette THÉORIE DES CODES Compression. leur circulation doit répondre à des contraintes fortes : optimisation de la taille des messages transmis pour éviter de surcharger les canaux. de sons. cryptage. rapidité des calculs pour les transformations que nécessite le passage par un canal. L’originalité de cet ouvrage est de présenter une théorie unifiée des principes mathématiques et informatiques qui fondent ces développements technologiques.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->