Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation...

49
Université de Nice-Sophia Antipolis Licence d’Informatique – 3 ème année Codage, Compression et Cryptologie Étudiants Fabien GARGNE Christian KNOFF Gaëtan LECOURTOIS Encadrant Heikel BATNINI Année 2004–2005

Transcript of Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation...

Page 1: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Université de Nice-Sophia Antipolis Licence d’Informatique – 3ème année

Codage, Compression et Cryptologie

ÉtudiantsFabien GARGNEChristian KNOFFGaëtan LECOURTOIS

EncadrantHeikel BATNINI

Année 2004–2005

Page 2: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Table des matières

I Le Codage dans l’informatique 6

1 Le codage des informations 81.1 Pourquoi coder ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2 L’histoire du codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Le codage des caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3.1 Codage ASCII étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.2 Autres codes existants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Le contrôle d’erreurs : codes de contrôle 112.1 Les Codes détecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.1 Principe du contrôle CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.2 Algorithme pour le calcul du CRC . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.3 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.1.4 Les polynômes générateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2 Les Codes correcteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.1 Le codage à triple répétition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.2 Codes de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.3 Les codes de Reed-Solomon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.4 Les codes de Goppa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

II La compression dans l’informatique 20

3 Les méthodes réversibles 223.1 Un exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2 Shanon-Fano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3 RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4 Lempel-Ziv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Les méthodes irréversibles 264.1 Un petit exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2 JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2.1 L’algorithme JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

III La cryptologie dans l’informatique 32

5 Cryptographie 345.1 Quelques définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.1.1 Qu’est-ce que le cryptage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.1.2 Qu’entend-on par clé ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.1.3 Quels sont les usages de la cryptographie ? . . . . . . . . . . . . . . . . . . . . . 35

2

Page 3: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

5.2 Systèmes à clé privée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.2.1 Crytographie par substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.2.2 Le chiffrement de César . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.3 La méthode du ou exclusif simple . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.4 Le chiffrement de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.3 Systèmes à clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.3.1 Algorithme de Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.3.2 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.4 Systèmes hybrides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.4.1 Pretty Good Privacy (PGP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6 Cryptanalyse 446.1 Brève description de quelques attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.2 Cryptanalyse par fréquence d’apparition . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.3 Vaincre le chiffre de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.3.1 Attaque du système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3

Page 4: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Introduction

4

Page 5: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

L’étude de la transmission de messages entre un émetteur et un destinataire via un canal de communi-cation introduit les questions suivantes :- Le canal permet de transmettre des signaux(souvent un signal électrique binaire). Il s’agit alors de trans-former le message à émettre (par exemple un texte en français) en une séquence de signaux : on parlede codage. Le destinataire doit être capable de décoder la séquence de signaux reçus pour pouvoir lire lemessage émis.- Dans un souci d’éfficacité, la séquence de signaux doit être la plus courte possible. On s’intéresse donc àdes codages qui minimisent la taille de la séquence émise : on parle de compression.- Le médium peut introduire des erreurs : certains signaux émis peuvent être perdus ou altérés lors dela transmission. Dans ce cas, pour que le destinataire puisse décoder correctement le message reçu, onutilise des codages spécifiques, permettant de détecter, voire corriger les erreurs. On parle de code détec-teur/correcteur.- Le canal est généralement partagé par plusieurs émetteurs et destinataires. Pour qu’un émetteur puisse en-voyer un message qui ne puisse être lu que par un destinataire spécifique (bien que la séquence de signauxassociée soit visible par d’autres individus), le message doit être crypté grâce à un codage spécifique. Lacryptographie étudie des codages et des protocoles permettant de communiquer des messages de manièresecrète, de signer des documents ou d’authentifier un émetteur.Le premier chapitre de ce rapport va donc s’intéresser au codage des informations puis nous verrons lacompression de ces dernières et comment gagner en taille puis pour finir la cryptographie avec les sys-tèmes de sécurités devenant de plus en plus importants avec le nombre croissant de transactions effectuéespar le Web.

5

Page 6: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Première partie

Le Codage dans l’informatique

6

Page 7: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Introduction

FIG. 1 – Schéma fondamental du codage

Vers la fin des années 30, Claude Shannon démontra qu’à l’aide de "contacteurs" (interrupteurs) ferméspour vrai et ouverts pour faux il était possible d’effectuer des opérations logiques en associant le nombre 1pour vrai et 0 pour faux.Ce codage de l’information à deux états est nommé base binaire. C’est grâce à ce codage que fonctionnentles ordinateurs. Il consiste à utiliser deux états électriques différents pour différencier les deux états, le 0 etle 1, et ainsi coder les informations.Nous allons tout d’abord faire un bref historique sur l’évolution du codage et ses applications puis nousnous interesserront aux différents codes présents de nos jours sur nos ordinateurs comme le codage descaractères, les codes détecteurs d’erreurs et les codes correcteurs.

7

Page 8: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 1

Le codage des informations

1.1 Pourquoi coder ?La communication nécessite la compréhension entre les deux entités communicantes. L’émetteur envoie

de l’information au récepteur qui doit savoir l’interpréter pour la comprendre. Le codage de l’informationest la première étape de toute communication. Ainsi pour comprendre les 0 et les 1 de nos machines, il abien fallu un codage et décodage pour que l’information arrive jusqu’à nos écrans de manière compréhen-sible, l’information a été traduite.

1.2 L’histoire du codageDepuis toujours le codage des informations a eu une trés grande importance pour l’homme ; de l’ap-

prentissage des signes, de la parole puis de l’écrit. Au début, l’écrit consistait essentiellement dans desdessins puis vint un alphabet plus simple à utiliser qui offrait de multiples combinaisons pour une plusgrande richesse de l’expression. En réalité, les caractères de l’écrit ne sont que des symboles interpré-tables.Le morse a été le premier codage à permettre une communication longue distance. C’est Samuel F.B.Morsequi l’a mis au point en 1844. Ce code est composé de points et de tirets (equivalent à un codage binaire). Ilpermit d’effectuer des communications beaucoup plus rapides que ne le permettait le système de courrierde l’époque aux Etats-Unis : le Pony Express. L’interpréteur était l’homme à l’époque, il fallait donc unebonne connaissance du code.De nombreux codes furent inventés dont le code Baudot du nom de son inventeur Emile Baudot, et appeléMurray Code par les anglais.Le 10 mars 1876, le Dr Graham Bell met au point le téléphone, une invention révolutionnaire qui permetde faire circuler de l’information vocale dans des lignes métalliques.Ces lignes permirent l’essor des téléscripteurs, des machines permettant de coder et décoder des caractèresgrâce au code Baudot (les caractères étaient alors codés sur 5 bits, il y avait donc 32 caractères unique-ment...).Dans les années 60, le code ASCII1 est adopté comme standard. Il permet le codage de caractères sur 8 bits,soit 256 caractères possibles. Nous allons donc voir dans cette partie tout d’abord comment sont codés lescaractères, puis comment se déroule le contrôle d’erreurs lors de transmissions grâce aux codes détecteurset correcteurs.

1.3 Le codage des caractèresLa mémoire de l’ordinateur conserve toutes les données sous forme numérique. Il n’existe pas de mé-

thode pour stocker directement les caractères. Chaque caractère possède donc son équivalent en code nu-

1pour American Standard Code for Information Interchange

8

Page 9: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

mérique : c’est le code ASCII . Le code ASCII de base représentait les caractères sur 7 bits, c’est-à-dire128 caractères possibles, de 0 à 127.

FIG. 1.1 – Table de codage ASCII sur 7bits

Pour bien lire le tableau, il faut construire le code hexadécimal en prenant d’abord le digit de la ligne,puis le digit de la colonne. Par exemple, la lettre n a pour code hexadécimal 6E. Les caractères sur fond bleusont les caractères non imprimables appelés caractères de contrôle car ils permettent de faire des actionstelles que : retour à la ligne (CR), bip sonore (BEL). Les codes 65 à 90 représentent les majuscules. Lescodes 97 à 122 représentent les minuscules. Il suffit donc de modifier le 6e bit pour passer de majuscules àminuscules, c’est-à-dire ajouter 32 au code ASCII en base décimale.

1.3.1 Codage ASCII étendu

Le code ASCII a été mis au point pour la langue anglaise, il ne contient donc pas de caractères accen-tués, ni de caractères spécifiques à une langue. Pour coder ce type de caractère, le code ASCII à 7 bits nesuffit pas, il faut recourir à un autre codage. Il a donc été étendu à 8 bits (un octet) pour pouvoir coder plusde caractères, d’où son nom code ASCII étendu. Ce code attribue les valeurs 0 à 255 aux lettres majusculeset minuscules, aux chiffres, aux marques de ponctuation et aux autres symboles2.

Le code ASCII étendu n’est pas unique et dépend fortement de la plateforme utilisée, d’où tous lesproblèmes de caractères changés lors d’un passage d’une plateforme à une autre.

FIG. 1.2 – Un extrait de schéma de codage ASCII

Par exemple, le codage ASCII du message : LICENCE INFO est la chaîne :01001100 01001001 01000011 01000101 01001110 01000011 01000101 00100000 01001001 0100111001000110 01001111

2Les caractères accentués dans le cas du code iso-latin1

9

Page 10: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

1.3.2 Autres codes existantsMalgré le fait que le code ASCII soit le standard pour le codage de caractères, il en existe bien d’autres.

Les plus connus sont le code EBCDIC3, développé par IBM, qui permet de coder des caractères sur 8 bits etle code Unicode sur 16 bits mis au point en 1991 qui permet de représenter n’importe quel caractère indé-pendamment de tout système d’exploitation ou langage de programmation mais qui a le gros désavantagede doubler la taille de n’importe quel fichier de texte.

3pour Extended Binary-Coded Decimal Interchange Code

10

Page 11: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 2

Le contrôle d’erreurs : codes decontrôle

Le codage binaire est très pratique pour une utilisation dans des appareils électroniques tels qu’un or-dinateur, dans lesquels l’information peut être codée grâce à la présence ou non d’un signal électrique.Cependant le signal électrique peut subir des perturbations (rayonnements électromagnétiques, distortion,présence de bruit), notamment lors du transport des données sur un long trajet et transmettre des bits erro-nés. Ainsi, le contrôle de la validité des données est nécessaire pour certaines applications (professionelles,bancaires, industrielles, confidentielles, relatives à la sécurité, ...).C’est pourquoi il existe des mécanismes permettant de garantir un certain niveau d’intégrité des données,c’est-à-dire de fournir au destinataire une assurance que les données reçues sont bien similaires aux don-nées émises. La protection contre les erreurs peut se faire de deux façons : soit en fiabilisant le supportde transmission, c’est-à-dire en se basant sur une protection physique ; soit en mettant en place des méca-nismes logiques de détection et de correction des erreurs.La plupart des systèmes de contrôle d’erreur au niveau logique sont basés sur un ajout d’information (onparle de redondance) permettant de vérifier la validité des données. On appelle somme de contrôle cetteinformation supplémentaire. Il existe deux sortes de code de contrôle : les codes détecteurs qui détectentseulement l’erreur et les codes correcteurs qui eux détectent puis corrigent l’erreur. Il est beaucoup plusdifficile de construire un code correcteur qu’un code détecteur d’erreurs.

2.1 Les Codes détecteurs

Il existe plusieurs méthodes de détection et/ou de correction d’erreurs dans le monde des communica-tions, allant du plus simple au plus complexe.

Le contrôle de parité, appelé parfois VRC, pour Vertical Redundancy Check1, est un des systèmes decontrôle les plus simples. Il consiste à ajouter un bit supplémentaire (appelé bit de parité) à un certainnombre de bits de données appelé mot de code (généralement 7 bits, pour former un octet avec le bit deparité) dont la valeur (0 ou 1) est telle que le nombre total de bits à 1 soit pair. Pour être plus explicite ilconsiste à ajouter un 1 si le nombre de bits du mot de code est impair, 0 dans le cas contraire.

Prenons l’exemple suivant, on veut transmettre la séquence 11001102

Dans cet exemple, le nombre de bits de données à 1 est pair, le bit de parité est donc positionné à 0.

1vérification par redondance verticale2correspond dans le codage ASCII au caractère f

11

Page 12: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Maintenant on veut transmettre 10001103 , les bits de données égaux à 1 étant en nombre impair, le bitde parité est ainsi positionné à 1.

Imaginons désormais qu’après transmission le bit de poids faible (le bit situé à droite) de l’octet précé-dent soit victime d’une interférence :

Le bit de parité ne correspond alors plus à la parité de l’octet : une erreur est détectée.Toutefois, si deux bits (ou un nombre pair de bits) venaient à se modifier simultanément lors du transport

de données, aucune erreur ne serait alors détectée...

Le système de contrôle de parité ne détectant que les erreurs en nombre impair, il ne permet donc dedétecter que 50% des erreurs. Ce système de détection d’erreurs possède également l’inconvénient majeurde ne pas permettre de corriger les erreurs détectées (le seul moyen est d’exiger la retransmission de l’octeterroné...).

Le contrôle de parité croisé (aussi appelé contrôle de redondance longitudinale, noté LRC4) consistenon pas à contrôler l’intégrité des données d’un caractère, mais à contrôler l’intégrité des bits de paritéd’un bloc de caractères. Comme avant, à chaque octet est ajouté un bit de parité horizontale (LRC). Maisen plus, chaque groupe d’octets est aligné pour un contrôle de parité verticale (VRC). A tous les bits derang 0, on ajoute un bit de parité, puis de même aux bits de rang 1, etc. A la fin, le contrôle de parité ducontrôle vertical doit être le même que celui du contrôle horizontal.

Lettre Code ASCII (sur 7 bits) Bit de parité (LRC)V 1010110 0A 1000001 0L 1001100 1R 1010010 1O 1001111 1S 1010011 0E 1000101 1

VRC 1010000 0

3ce qui correspond maintenant au caractère F(changement du 6e bit)4pour Longitudinal Redundancy Check

12

Page 13: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Les parités du LRC et du VRC sont égales, il n’y a donc pas d’erreur apparente.Une autre méthode beaucoup utilisée est le CRC. Le contrôle de redondance cyclique5 est un moyen de

contrôle d’intégrité des données puissant et facile à mettre en oeuvre. Il représente la principale méthodede détection d’erreurs utilisée dans les télécommunications.

2.1.1 Principe du contrôle CRCL’idée du CRC est de transmettre, conjointement aux données que l’on désire envoyer, une valeur cal-

culée par l’émetteur à partir des données à transmettre et basée sur la division de polynômes binaires.Ensuite, l’emetteur envoie les données et le CRC calculé. A la réception, les données sont lues et le ré-cepteur effectue le même calcul de son côté avec le même algorithme. Si le résultat est identique à celuiqui a été transmis, alors on est sûr à plus de 99.9% (dépend des algorithmes employés) que les donnéessont correctes et donc que le message n’a pas été altéré. Sinon, il y a eu une ou plusieurs erreurs lors de latransmission.

Le principe du CRC consiste à traiter les séquences binaires comme des polynômes binaires, c’est-à-dire des polynômes dont les coefficients correspondent à la séquence binaire. Ainsi la séquence binaire0110101001 peut être représentée sous la forme polynomiale suivante :

0 ∗X9 + 1 ∗X8 + 1 ∗X7 + 0 ∗X6 + 1 ∗X5 + 0 ∗X4 + 1 ∗X3 + 0 ∗X2 + 0 ∗X1 + 1 ∗X0

soit :X8 + X7 + X5 + X3 + X0

ou encore :X8 + X7 + X5 + X3 + 1

De cette façon, le bit de poids faible de la séquence représente le degré 0 du polynôme, le 4ème biten partant de la droite représente le degré 3 du polynôme (X3) et ainsi de suite. Une séquence de n bitsconstitue donc un polynôme de degré maximal n-1. Toutes les expressions polynomiales sont manipuléespar la suite avec une arithmétique modulo 2.

Dans ce mécanisme de détection d’erreur, un polynôme prédéfini (appelé polynôme générateur et notéG(X)) est connu de l’émetteur et du récepteur. La détection d’erreur consiste pour l’émetteur à effectuerun algorithme sur les bits de la trame afin de générer un CRC, et de transmettre ces deux éléments aurécepteur. Il suffit alors au récepteur d’effectuer le même calcul afin de vérifier que le CRC est valide. Lecontrôle d’erreur CRC est très précis, si un seul bit est incorrect, la valeur du CRC sera invalide.

2.1.2 Algorithme pour le calcul du CRCLe calcul va utiliser une opération de base : la division des polynômes.

Appelons M(x) le polynôme représentant les données à coder. Son degré est représenté par m.Chacune des deux extrêmités connaissent un polynôme de degré k, appelé générateur, que l’on nommeraG(x).La première étape pour l’émetteur consiste à multiplier M(x) par 2k. Le résultat P (x) = 2k ∗M(x)est unpolynôme de degré m+k. En fait, cela revient à rajouter k zéros à droite de M(x). Cela permet de garantirque la soustraction entre P(x) et un polynôme de degré k est toujours positive.Ensuite, il effectue la division euclidienne de P(x) par G(x). Le calcul fournit : un Quotient Q(x) , et unReste R(x) de degré k-1. On a alors : P (x) = Q(x) ∗G(x) + R(x).Le message à transmettre est alors M(x) auquel on ajoute en queue cette fois ci le reste de la division R(x).T (x) = R(x)⊕ 2k ∗M(x)T (x) est donc divisible par G(x) :T (x)/G(x) = (R(x)⊕ 2k ∗M(x))/G(x) = (R(x)⊕Q(x) ∗G(x) + R(x))/G(x)= Q(x) + (R(x)⊕R(x))/G(x) = Q(x)6

5noté CRC, ou en anglais Cyclic Redundancy Check6car pour tout nombre binaire x, x⊕ x = 0

13

Page 14: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Le récepteur reçoit le message. Il lui suffit de calculer le CRC du bloc transmis : T(x) / G(x). Si le reste estégal à 0, il n’y a pas d’erreur de transmission, tout autre reste indique une ou plusieurs erreurs.

2.1.3 Un exemple

On veut émettre le message 1011101001, on utilise pour cela un contrôle CRC avec le polynômeX4 + X1 + X0.On prend donc le message auquel on rajoute 4 zéros en queue car le polynôme générateur est de puissance4.L’émetteur divise alors cette séquence de bits par le polynôme CRC à savoir X4 +X1 +X0 qui correspondau nombre binaire 10010.Il trouve le reste 0110 qu’il met en queue du message à transmettre.L’émetteur transmet donc la séquence 10111010010110 au récepteur.Ce dernier prend la séquence recue et effectue la division avec le même polynôme générateur.Il trouve un reste égal à 0⇒ il n’y a pas eu d’erreur.

On reprend le même déroulement sauf qu’ici le récepteur reçoit une trame érronée, le dernier nombreest changé.Le récepteur fait la division et se rend compte que le reste n’est pas nul ⇒ le contrôle CRC a découvertqu’il y a eu erreur de transmission.

14

Page 15: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

On remarque que le taux de détection avec un contrôle CRC sur 16 bits est quasi-parfait quelque soit lalongueur de l’erreur , il y a trés peu de chance qu’il ne découvre pas la ou les erreurs possibles.

FIG. 2.1 – Taux de détection des erreurs avec un CRC sur 16 bits

2.1.4 Les polynômes générateurs

Au plus la probabilité d’apparition d’une erreur est importante ou la longueur du bloc à protéger estimportante, au plus on utilise un polynôme générateur de dégré important. Les polynômes générateurs lesplus couramment employés pour le calcul du CRC sont :

– CRC-12 : X12 + X11 + X3 + X2 + X + 1Pour les caractères codés sur 6 bits.

– CRC-16 : X16 + X15 + X2 + 1

15

Page 16: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

– CRC CCITT V41 : X16 + X12 + X5 + 1Ce code est notamment utilisé dans la procédure HDLC7.

– CRC ARPA : X24 + X23 + X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1

– CRC-32 (Ethernet) : = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 +X4 + X2 + X + 1

2.2 Les Codes correcteursLe calcul CRC a beau être trés performant pour trouver des erreurs, il est incapable de les corriger.

D’où la necessité dans certaines situations de trouver des codes capables non seulement de détecter deserreurs mais aussi de pouvoir les corriger sans avoir à retransmettre le message original. Le principe estd’ajouter suffisamment de redondance pour pouvoir récupérer des erreurs n’importe où dans le message.L’inconvénient est que toutes les transmissions sont alors alourdies par cette redondance (longueur dumessage et calculs lors de la réception). Ces codes sont surtout utilisés dans les situations où la fiabilité estessentielle à tout moment comme par exemple dans les liaisons satellites. Ainsi grâce aux codes de Goppa,les lecteurs de CD performants peuvent lire un CD sur lequel il y a une rayure sans que le son en soitaffecté.

2.2.1 Le codage à triple répétition

C’est un code très simple, qui consiste à répéter trois fois chaque mot. Il permet évidemment de corrigerune erreur dans chaque symbole de donnée, mais est très coûteux, puisqu’il multiplie par 3 la taille desdonnées.

2.2.2 Codes de Hamming

Les codes de Hamming partent du principe où les bits de contrôle sont situés aux bits de puissance de2, les autres étants les bits de données. Donc suivant la longueur du mot à sécuriser, on a plus ou moins debits de contrôle de Hamming.Prenons pour exemple, un code de Hamming [7,4,3]. Il prend donc en entrée des mots de 4 bits de données,et ajoute 3 bits de contrôle pour donner des mots de 7 bits.Plus précisément, si l’on veut transmettre un message formé des bits B1B2B3B4, on envoie C1C2B1C3B2B3B4

avec :– C1 = B1 ⊕B2 ⊕B4

– C2 = B1 ⊕B3 ⊕B4

– C3 = B2 ⊕B3 ⊕B4

Les bits de donnée B1, B2 et B3 apparaissent dans deux équations, le bit de donnée B4 dans trois.Pour le décodage on est confronté à plusieurs cas : Aucune équation fausse : pas d’erreur (ou plusieurs quise compensent).Une équation fausse : seuls les bits de contrôles interviennent dans une seule équation, c’est donc le bit decontrôle en cause qui est erroné, le message est correct.Deux équations fausses : seuls les bits de donnée B1, B2 et B3 interviennent dans deux équations exacte-ment, c’est donc le bit de donnée commun aux deux équations fausses qui est erroné.Trois équations fausses : seul le bit de donnée B4 intervient dans les trois équations, c’est lui qui est erroné.

Le codage de Hamming reste cependant médiocre par rapport aux critères de Varshamov et Gilbert8,c’est pourquoi de nouveaux codes correcteurs ont été recherchés et sont en train de voir effectivement lejour.

7pour High Level Data Link Control8borne optimale pour un code correcteur d’erreur

16

Page 17: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Un exemple d’utilisation

On veut transmettre le message 1011001.On insère donc les bits de contrôle aux positions des puissances de 2 comme indiqué sur le schéma.

On considére les bits de données égaux à 1 et la représentation en base deux de leurs indices. On lesadditionnent comme suit :

Le code de Hamming ajouté est donc ce résultat : 1001.Le code transmis est le suivant :

Le receveur reçoit le message et passe à la vérification :Il considère les bits de données et de contrôle qui sont égaux à 1 et calcule leur représentation en base 2.

La somme de contrôle est égale à 0⇒ il n’y a pas eu d’erreur de transmission, le message est valide.

Maintenant voyons ce qu’il se passe si le message est corrompu.Changeons le bit No 11 en 0 comme ceci :

17

Page 18: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

On refait le même calcul que précédemment en ajoutant les indices des bits à 1.

Le contrôle d’erreur n’est plus égal à 0 !⇒ il y a eu une erreur.Hamming nous donne même l’endroit où se situe l’erreur 1011 = 11. L’erreur se situe au bit No 11.Par contre si le message comporte 2 erreurs, Hamming détectera qu’il y a eu un problème mais ne pourrale corriger ; il ne pourra détecter les erreurs sur plus de 2 bits de transmission (valade seulement pour cetexemple, c’est à dire avec cette longueur de message).

2.2.3 Les codes de Reed-Solomon

Les codes de Reed-Solomon sont des codes correcteurs basés sur les erreurs de blocs.Ils ont beaucoup d’utilisation incluant :

– périphériques de stockage ; lecteurs cassettes, CD, DVD, codes-barres...– communications radios ou mobiles comme les téléphones portables.– communications satellites.– télévision numérique.– modems haut-débit comme ADSL, xDSL ...Le principe est de remplacer l’alphabet binaire par un alphabet q-aire. Typiquement q = 256 si on utilise

des bytes.On veut transmettre un message composé de m symboles q-aires.Ce message est représenté comme un polynôme P de degré m− 1.P (X) = m0 + m1X + m2X

2 + ... + mm−1Xm−1

Plutôt que de transmettre les coefficients m0 jusqu’à mm−1, on pourrait évaluer le polynôme P(X) pour mvaleurs distinctes de x.Pour corriger e erreurs, on transmet n = m + 2 ∗ e évaluations de couples (xi, yi = P (xi)), et donc onutilise k = 2 ∗ e symboles supplémentaires. Notons qu’il faut n = q.Pour décoder, on cherche un sous-ensemble de m + e points (xi, yi) par lesquels passe un polynôme dedegré m− 1. Si on suppose qu’il y a au maximum e erreurs, il y a au moins m points communs avec P(x)et les polynômes sont identiques.

2.2.4 Les codes de Goppa

Il s’agit d’une généralisation des codes de Reed-Solomon, utilisé par exemple dans les CD audios. Cescodes utilisent les courbes sur un corps fini, d’équation P (x, y) = 0 (où P est un polynôme de degré m).En notant Pj(xj , yj) avec 1≤j ≤ n les solutions de l’équation (points de la courbe), et en choisissant unebase Gi avec 1 ≤ i ≤ k des polynômes à deux inconnues de degré inférieur à m, on construit la matriceM de dimension k,n tel que ses éléments soient Mij = Gi(Pj), qui définit un code [n,k,d] pour lequel onpeut montrer que d ≥ n−m.

Ces codes sont trés avantageux pour les transmissions très perturbées comme les transmissions satel-lites.

18

Page 19: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Exemple : avec la courbe de Klein x3y + y3 + y = 0 qui a 24 solutions dans le corps à 8 éléments, onpeut construire un code [24,3,21]9 qui permet de corriger jusqu’à 10 erreurs dans un mot.On a montré qu’il existe des codes de Goppa sur des corps de cardinal supérieur à 49 qui font mieux quel’optimum défini par Varshamov et Gilbert.

2.2.5 ConclusionLes codes correcteurs d’erreurs sont donc encore un sujet de recherche active, visant principalement

une mise en oeuvre efficace. Ils sont peu connus mais très utilisé, car la fiabilité des transmissions et dustockage est une nécessité.

9prend en entrée des mots de 3 bits de données, et ajoute 21 bits de contrôle pour donner des mots de 24 bits.

19

Page 20: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Deuxième partie

La compression dans l’informatique

20

Page 21: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Introduction

Encore et toujours, c’est Claude Shannon qui est à l’origine de la compression.

Tout commença grâce à un jeu de société, qu’il pratiquait avec ses invités. Il ouvrait au hasard un livre,commençait à lire un paragraphe et s’arrêtait. Il demandait ensuite de donner une à une les lettres suivantesà ses amis.Ces derniers trouvaient la lettre dans environ 75 Mr Shannon en déduisait que la langue anglaise possèdeun taux de redondance de 75 %.

Quand nous manipulons du texte, les caractères que nous utilisons n’ont pas la même probabilité d’ap-parition. De même pour la musique où la distribution des probabilités d’apparition des sons n’est pasuniforme, ainsi que pour les images.Une bonne majorité des données possèdent des régularités même si elles ne sont pas évidentes à voir, c’est-à-dire, plus scientifiquement que l’on a une distribution non uniforme de certains symboles ou séquencesde symboles. C’est cette caractéristique qui incite à compresser les données et c’est elle qui permet, sou-vent, de réussir.

On peut donc pallier un manque de stockage, par la réduction de la taille des données en exploitant lapuissance des processeurs plutôt qu’en augmentant les capacités de stockage et de transmission des don-nées.Dans cette partie du sujet on va essayer d’ouvrir un champ de réflexion en indiquant souvent sommairementquelles sont les méthodes utilisées aujourd’hui pour compresser les données et quelles sont celles qui ontdes chances de s’imposer demain.Nous présenterons d’abord les méthodes réversibles, c’est-à-dire des compressions sans perte et ensuite lesméthodes irréversibles, des compressions avec perte. Mais avant de continuer dans les détails, définissonsd’abord d’expliquer la compression.

On dira qu’un fichier sera compressé si on réduit le nombre de digits binaires nécessaires pourl’enregistrer.

10

10Sigma est toujours plus grand que 1 et nous souhaitons qu’il soit le plus grand possible

21

Page 22: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 3

Les méthodes réversibles

La compression est dite sans perte lorsqu’il n’y a aucune perte de données sur l’information d’origine.Il y a autant d’information après la compression qu’avant ; elle est seulement réécrite de manière à prendremoins de place. On effectue alors du compactage.L’information à compresser est une suite de symboles qui produit des textes uniques. Le but est de réduirela taille moyenne des textes obtenus après la compression tout en ayant la possibilité de retrouver exacte-ment le message d’origine. Les formats de fichier de compression sans perte les plus courants sont : gzip,gz, bz, bz2, rar, Z (sur stations sun), zoo, zip, zh, arj et arc.

3.1 Un exemple simple

On va essayer de travailler sur une courte série d’octets et de les compresser :

0101 1010 0110 0110 1001 1001 1111 1111 1111 1111 1111 1111 1111 11111111 1111 0110 0110 0110 0110 0101 1010 0110 0101 1001 0000 0111 1111

Cette série compte 14 octets. Nous allons utiliser les répétitions d’octets pour compresser cette chaîne.Chaque série d’octet sera précédée d’un octet de signalisation. Convenons que le premier bit indique sil’octet de donnée qui suit se répète, si c’est le cas le bit sera mis à 1, si ce n’est pas le cas il sera mis à 0.Les 7 bits qui suivent indiqueront le nombre de répétitions dans le premier cas où les nombres d’octets sansrépétition qui suivent. Notons qu’avec ces 7 bits, nous pouvons coder 127 répétitions. On voit l’économieréalisée si beaucoup d’octets sont identiques. On obtient :

0000 0010 0101 1010 0110 01101000 0101 1111 11111000 0010 0110 01100000 0100 0101 1010 0110 0101 1001 0000 0111 1111

Ce qui donne :

0000 0010 0101 1010 0110 0110 1000 0101 1111 1111 1000 0010 0110 01100000 0100 0101 1010 0110 0101 1001 0000 0111 1111

Cette chaîne fait donc 12 octets soit 2 de moins que la chaîne initiale, nous avons un taux de compres-sion de 14/12 = 1,1666.Le décodage ne pose aucun problème à condition que le décodeur soit informé de la méthode utilisée, il in-terprètera dans ce cas le premier octet comme un octet de signalisation et réussira à comprendre cette suited’octets. Cette méthode est séduisante parce qu’elle est facile à comprendre mais elle est malheureusementpeu efficace. Elle n’est plus utilisée seule mais seulement comme méthode complémentaire.

22

Page 23: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

3.2 Shanon-Fano

L’idée importante c’est que nous avons l’habitude de coder toutes les valeurs que nous avons à stockeravec le même nombre de bits, généralement un ou plusieurs octets.Quand nous travaillons avec du texte, nous utilisons un octet par caractère, un ou deux octets par pixel etpar couche quand nous travaillons avec des images.

Est-ce la solution la plus adéquate ?

La théorie nous apprend que non. Il est en effet plus efficace d’utiliser des codes plus courts pour desvaleurs fréquentes et de réserver des codes plus longs pour les valeurs moins fréquentes. Evidemmentle taux de compression tiendra surtout sur la distribution des valeurs à coder.

Prenons un petit exemple.Nous avons 4 caractères : A, B, C et D. leur fréquence d’apparition est la suivante :A : 60 % B : 30 % C : 5 % D : 5 %On peut imaginer le code suivant :A : 0 B : 00 C : 01 D : 10Il nous permettra assurément de gagner de la place mais si nous recevons le message 00001, commentl’interpréter ? 4 A ? 2 B ? 2 A et 1 B ? 1 B et 2 A ? Ça ne marche pas !Nous venons de découvrir le problème de la synchronisation.

Comment le résoudre ? Utiliser des caractères séparateurs ?

C’est contradictoire avec l’objectif de compression. La solution c’est le VLC1 préfixé. Un code est préfixés’il n’est le début d’aucun autre. Le VLC que nous avions tenté d’utiliser tout à l’heure n’était pas préfixé.Revenons à notre exemple et essayons de corriger.A : 0 B : 10 C : 110 D : 111Ça marche ! Est-ce la solution optimale ? Comme nous l’avons obtenue par tâtonnement, nous n’en savonsrien mais rassurez-vous la théorie permet d’affirmer que oui.Nous allons maintenant prendre un exemple un peu plus complexe et présenter une méthode permettant dedéterminer un VLC efficace (même s’il n’est pas toujours optimal) :

Supposons que nous voulions transmettre le message suivant :

"GARGNE KNOFF LE COURTOIS"

Il compte 23 caractères. Nous allons compter les occurrences des différents caractères de l’alphabet utiliséset les classer par fréquences décroissantes. Nous obtenons la liste suivante :

O : 3 Espace : 3 E : 2 F : 2 G : 2 A : 1 R : 2N : 2 K : 1 L : 1 T : 1 S : 1 U : 1 C : 1 I : 1

Nous allons maintenant regrouper les caractères en deux groupes dont les fréquences d’apparition sontaussi proches que possibles puis diviser chacun de ces groupes de la même façon jusqu’à parvenir à chacunedes fréquences de départ (il est équivalent de travailler avec le nombre d’occurrences ou les fréquences).Voici le développement du calcul sous forme de schéma :

1Variable length code

23

Page 24: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

On numérote les branches de l’arborescence en binaire et on parcourt chaque branche pour déterminerles codes qui figurent dans la colonne de droite. On peut vérifier que l’on obtient bien un VLC préfixé.Mesurons son efficacité. Nous sommes partis d’un message de 23 caractères soit 23 x 8 = 184 bits. Si l’onavait codé chaque caractère sur 4 bits (c’était suffisant), on utilisait 92 bits. En utilisant le codage que nousvenons de réaliser nous utiliserons :

(3*3) + (3* 3) + (2*3) + (2*3) + (1*4) + (1*4) + (1*5) + (1*5) + (1*4) + (1*5) + (1*5) + (1*4) + (1*5) +(1*5) + (1*4) = 9 + 9 + 6 + 6 + 4 + 4 + 5 + 5 + 4 + 5 + 5 + 4 + 5 + 5 + 4 = 80

Le taux de compression est de 92/80 = 1,15. L’algorithme que nous venons d’utiliser pour déterminerun VLC préfixé est appelé du nom de ses auteurs, l’algorithme de Shanon-Fano.

3.3 RLELa méthode de compression RLE2 est utilisée par de nombreux formats d’images (BMP, PCX, TIFF).

Elle est basée sur la répétition d’éléments consécutifs. Le principe de base consiste à coder un premierélément donnant le nombre de répétitions d’une valeur puis à le compléter par la valeur à répéter.

Ainsi selon ce principe, la chaîne "AAAAAHHHHHHHHHHHHHH" compressée donne "5A14H".Le gain de compression est ainsi de (19-5)/19 soit environ 73,7 %.

En contrepartie pour la chaîne "REELLEMENT", dans lequel la redondance des caractères est faible, lerésultat donne "1R2E2L1E1M1E1N1T", la compression s’avère ici très coûteuse, avec un gain négatifvalant (10-16)/10 soit -60 %.

En réalité la compression RLE est régie par des règles particulières permettant de compresser lorsquecela est nécessaire et de laisser la chaîne telle quelle lorsque la compression induit un gaspillage.

2Run Length Encoding, parfois notée RLC pour Run Length Coding

24

Page 25: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Ces règles sont les suivantes :- Lorsque trois éléments ou plus se répètent consécutivement alors la méthode de compression RLE estutilisée.- Sinon un caractère de contrôle (00) est inséré, suivi du nombre d’éléments de la chaîne non compresséepuis de cette dernière.- Si le nombre d’éléments de la chaîne est impair, le caractère de contrôle (00) est ajouté à la fin de lachaîne.- Enfin des caractères de contrôles spécifiques ont été définis afin de coder :o une fin de ligne (00 01)o la fin d’une image (00 00)o un déplacement du pointeur dans l’image de XX colonnes et de YY lignes dans le sens de la lecture (0002 XX YY).

Ainsi la compression RLE n’a de sens que pour les données possédant de nombreux éléments consé-cutifs redondants, notamment les images possédant de larges parties uniformes.Cette méthode présente toutefois l’avantage d’être peu difficile à mettre en oeuvre. Il existe des variantesdans lesquelles l’image est encodée par pavés de points, selon des lignes, ou bien même en zigzag.

3.4 Lempel-ZivC’est en 1977 que Jacob Ziv et Abraham Lempel ont publié un article qui est à la base de tous les

algorithmes à dictionnaire que nous utilisons actuellement. En 1984, l’américain Terry Welch améliorel’algorithme précédent et dépose un brevet. C’est la naissance de l’algorithme LZW. Il est plus performantque les méthodes statistiques. Il sert de base à la norme V42bis du CCITT que nous utilisons dans nosmodems.

Le principe de l’algorithme LZW, est d’utiliser un dictionnaire dynamique qui contient des motifs du fi-chier traité. L’inconvénient des algorithmes à dictionnaire, c’est qu’il est à priori nécessaire de transmettrele dictionnaire avec les données, ce qui n’est pas le cas avec LZW. Le dictionnaire est construit à la com-pression et reconstruit à la décompression. Ce qui est également intéressant, c’est qu’il est inutile de lireet d’étudier le fichier avant de le compresser. La compression s’effectue au fur et à mesure de la lecture,le compresseur détectant au fur et à mesure les séquences qui se répètent. Nous n’expliciterons pas cetalgorithme mais nous retiendrons deux points :- D’une part, il s’agit d’un algorithme sophistiqué et " pilotable ". Il est possible par exemple de remettre àzéro le dictionnaire ou de modifier sa taille.- D’autre part, on peut combiner LZW et l’algorithme de codage statistique. C’est ce que font des pro-grammes comme ARJ ou PKZIP qui utilisent LZW puis Shanon-Fano.

25

Page 26: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 4

Les méthodes irréversibles

Le principe est clair : nous acceptons une dégradation de l’image décompressée indicernable à l’oeilou suffisamment faible pour être acceptable en contrepartie d’un taux de compression beaucoup plus inté-ressant.

Il existe différentes approches de la compression avec perte. L’une d’entre elle, représentée par l’algo-rithme JPEG, a occupé le devant de la scène depuis quelques années en raison de ses performances et de lafacilité de son implémentation sur micro. Cette situation est trompeuse et d’autres méthodes déjà connues(ondelettes et fractales en particulier) vont s’imposer dans les années qui viennent. Il est difficile de pré-dire ce qui interviendra ensuite mais d’autres voies de recherche sont explorées (utilisation des réseauxneuromimétiques par exemple).

4.1 Un petit exempleOn peut reduire une image qui fait 48 ko d’un format 400 x 400 pixels a 100 x 100 pixels.

La nouvelle image ne fait plus que 4 ko, elle contient 1 pixel pour chacun des 16 pixels de l’image originale.

On remarque que la qualité de l’image est nettement dégradée si on l’agrandit à son ancienne taille maiselle fait tout de même 20 ko.

26

Page 27: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Il est, d’habitude, impossible de determiner les 16 pixels originaux du nouveau pixel obtenu. Bien entendu,dans les fichiers de donnees, la compression irreversible n’est pas trés utile. Par contre, elle sert beaucoupdans le traitement des images et de la parole.

4.2 JPEG

L’acronyme JPEG (Joint Photographic Expert Group prononcez jipègue ou en anglais djaypègue) pro-vient de la réunion en 1982 d’un groupe d’experts de la photographie, dont le principal souci était detravailler sur les façons de transmettre des informations (images fixes ou animées). En 1986, l’ITU-T mitau point des méthodes de compression destinées à l’envoi de fax. Ces deux groupes se rassemblèrent pourcréer un comité conjoint d’experts de la photographie (JPEG).

Contrairement à la compression LZW, la compression JPEG est une compression avec pertes, ce qui luipermet, en dépit d’une perte de qualité, un des meilleurs taux de compression (20 :1 à 25 :1 sans perte no-table de qualité). Cette méthode de compression est beaucoup plus efficace sur les images photographiques(comportant de nombreux pixels de couleurs différentes) et non sur des images géométriques (à la diffé-rence de la compression LZW) car sur ces dernières les différences de nuances dues à la compression sonttrès visibles.

Les étapes de la compression JPEG sont les suivantes :- Rééchantillonnage de la chrominance, car l’oeil ne peut discerner de différences de chrominance au seind’un carré de 2x2 points.- Découpage de l’image en blocs de 8x8 points, puis l’application de la fonction DCT (Discrete CosinusTransform, transformation discrète en cosinus) qui décompose l’image en somme de fréquences.- Quantification de chaque bloc, c’est-à-dire qu’il applique un coefficient de perte (qui permet de déter-miner le ratio taille/qualité) "annulera" ou diminuera des valeurs de hautes fréquences, afin d’atténuer lesdétails en parcourant le bloc intelligemment avec un codage RLE (en zig-zag pour enlever un maximum devaleurs nulles).- Encodage de l’image puis compression avec la méthode d’Huffman. Le format de fichier embarquantun flux codé en JPEG est en réalité appelé JFIF (JPEG File Interchange Format, soit en français Formatd’échange de fichiers JPEG), mais par déformation le terme de "fichier JPEG" est couramment utilisé.

Il est à noter qu’il existe une forme de codage JPEG sans perte (appelé lossless). Bien que peu utilisépar la communauté informatique en général, il sert surtout pour la transmission d’images médicales pouréviter de confondre des artefacts (purement liés à l’image et à sa numérisation) avec de réels signes patho-logiques. La compression est alors beaucoup moins efficace (facteur 2 seulement).

27

Page 28: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

4.2.1 L’algorithme JPEGNous donnerons d’abord une idée relativement précice de l’algorithme JPEG. Ce nom (Joint Photogra-

phic Expert Group) provient du groupe d’experts internationaux qui a établi, en 1991, la norme que nousutilisons actuellement. En fait, la DCT (Discret Cosin Transform) qui est au coeur de la méthode a étéproposée en 1974 par le professeur Rao de l’université du Texas en 1974. La norme JPEG de 91 décrit leformat des données compressées, le schéma de codage et de décodage. Les algorithmes de compressionsont proposés mais n’ont pas de valeur normative.

Voyons d’abord le schéma de principe :

Nous allons maintenant suivre ce qu’il advient d’un bloc de 64 pixels qui a été extrait d’une image.j’emprunte cet exemple à Xavier Marsault. Prenons le bloc suivant :

Nous allons maintenant soustraire 128 de chaque valeur et appliquer la transformation DCT. Le résultatest le suivant :

Notons qu’à cette étape, aucune information n’a été perdue. Le bloc original peut être reconstitué sansaucune perte en utilisant la DCT inverse et en ajoutant 128 à chaque terme. Quel est l’intérêt de cettetransformation ? On observe que les coefficients de forte valeur absolue sont situés en haut et à gauche.L’importance des coefficients pour la reconstitution de l’image diminue quand on se déplace en diagonaledu haut à gauche vers le bas à droite.

28

Page 29: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Nous allons passer à l’étape suivante, celle de la quantification.De quoi s’agit-il ?De transmettre des valeurs approximatives de la matrice précédente en se donnant un pas de quantification.Prenons un exemple.Supposons qu’une variable puisse prendre les valeurs 1, 2, 3, 4, 5,.... Si l’on prend un pas de quantificationde 3 on ne gardera que le quotient de la division euclidienne de la valeur par 3. C’est très simple ! On varemplacer : 0, 1 et 2 par 0 3, 4 et 5 par 1 6, 7 et 8 par 2 9, 10 et 11 par 3 et ainsi de suite.C’est à cette étape que nous allons perdre de l’information et nous allons la perdre d’une manière " as-tucieuse " parce que le pas de quantification dont dépend la précision de l’image restituée va dépendrede la position de la valeur dans la matrice. Nous allons prendre un pas relativement petit pour les valeursimportantes (en haut à gauche) et prendre un pas de plus en plus grand au fur et à mesure qu’on descendvers le bas et la droite de la matrice.L’ensemble des pas qui vont être utilisés constituent ce que l’on appelle une matrice de quantification.Certaines ont été construites en fonction de critères psycho-visuels, nous allons en fabriquer une avec unepetite formule :

Q (i,j) = 1 + (1 + i + j) x Fq

(pour les matheux, on indiquera une formule un peu plus complexe, permettant d’obtenir un grand nombrede matrice différentes : Q(i,j) = 1 +(1 + u (in + jn)) x Fq. Par souci de simplification, on a pris ici u = n = 1et Fq = 5. On peut bien entendu compliquer...)

Nous prendrons Fq = 5 . Il s’agit d’un facteur de qualité, c’est celui que vous modifiez quand vous choi-sissez la qualité de la restitution dans un logiciel comme Photoshop. Voici la matrice de quantification quenous obtenons :

Nous allons maintenant diviser les valeurs de la matrice de données par les valeurs de la matrice dequantification. On obtient cette matrice :

29

Page 30: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Ce qui frappe c’est d’une part le nombre de zéros et d’autre part la position des coefficients non nuls.Nous allons pouvoir passer à la troisième étape qui consiste à compresser, cette fois-ci sans perte, la matricedont nous disposons. Les experts du groupe JPEG ont choisi de traiter les 0 d’une manière particulière enraison de leur nombre. On va d’abord utiliser un balayage particulier pour obtenir des suites de 0 les plusgrandes possibles :

On utilise une méthode de compression sans perte qui peut être celle de Huffman, c’est le cas habituelou bien encore un algorithme de compression arithmétique qui est breveté pat IBM. Nous avons terminé,restera à indiquer au décodeur quelle matrice de quantification a été utilisée. Nous allons suivre la décom-pression du bloc que nous venons de compresser.

Voici le schéma général :

Après le décodage statistique nous retrouvons la matrice :

30

Page 31: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Nous allons la déquantifier en multipliant chaque terme par le coefficient de la matrice de quantificationcorrespondant. On obtient :

Nous allons maintenant appliquer la DCT inverse et ajouter 128 à chaque terme, ce qui permet d’obtenirle bloc décompressé :

31

Page 32: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Troisième partie

La cryptologie dans l’informatique

32

Page 33: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Introduction

La cryptologie est une science mathématique qui comporte deux branches : la cryptographie et la cryp-tanalyse.La cryptographie traditionnelle est l’étude des méthodes permettant de transmettre des données de ma-nière confidentielle. Afin de protéger un message, on lui applique une transformation qui le rend incom-préhensible ; c’est ce qu’on appelle le chiffrement (ou cryptage), qui à partir d’un texte en clair, donneun texte chiffré ou cryptogramme. Inversement, le déchiffrement est l’action qui permet de reconstruirele texte en clair à partir du texte chiffré. Dans la cryptographie moderne, les transformations en questionsont des fonctions mathématiques, appelées algorithmes cryptographiques, qui dépendent d’un paramètreappelé clef.La cryptanalyse, à l’inverse, est l’étude des procédés cryptographiques dans le but de trouver des fai-blesses et, en particulier, de pouvoir décrypter des textes chiffrés. Le décryptement est l’action consistantà retrouver le texte en clair sans connaître la clef de déchiffrement.

33

Page 34: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 5

Cryptographie

Depuis toujours, l’être humain a cherché à conserver certaines informations ou données secrètes, àdéfaut, à en restreindre l’accès à certaines personnes. Un des plus anciens exemples de cryptographie estcelui de Jules César. Jusqu´au début du XXème siècle, la cryptographie a gardé une importance mineure, etles méthodes utilisées étaient bien souvent rudimentaires. Lors de la seconde guerre mondiale, l’apparitionde technologies de communication évoluées, telles que la radio, a rendu nécessaire la mise au point demécanismes de cryptage empêchant l’interception des signaux par l’ennemi. Il était devenu indispensablede chiffrer les données transmises par les ondes1. On peut dire que pour la première fois, la cryptographiea eu une réelle incidence sur le conflit.

Le mot Cryptographie désigne l’ensemble des techniques permettant de chiffrer des messages et de lesrendre inintelligibles. La cryptographie est donc traditionnellement utilisée pour dissimuler des messagesaux yeux de certaines personnes. Cet interêt est aujourd’hui d’autant plus grand que les ordinateurs et leréseau Internet se sont considérablement développés. Elle est désormais indispensable pour préserver la sé-curité et la confidentialité des données, mais aussi leur intégrité et leur authenticité, particulièrement dansun point de vue économique avec la multiplication des entreprises sur Internet, avec par exemple le com-merce électronique où la cryptographie joue un rôle plus que considérable avec la gestion des paiements, onpense surtout aux paiements par carte bancaire. Nous verrons donc diverses techniques de cryptages, depuisl’Antiquité jusqu’à nos jours, et surtout où retrouve-t-on la cryptographie dans l’informatique contempo-raine. Il y a essentiellement trois types de cryptographie qui tous utilisent les mathématiques :

1. Système à clé secrète dont le modèle le plus simple est celui de Jules César.

2. Système à clé publique dont le modèle le plus simple est appelé RSA.

3. Système hybride dont le meilleur exemple est appelé PGP.

1cas de la machine Enigma

34

Page 35: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

5.1 Quelques définitions

5.1.1 Qu’est-ce que le cryptage ?On appelle texte en clair les données lisibles et compréhensibles sans intervention spécifique. Le cryp-

tage ou chiffrement est la méthode permettant de dissimuler du texte en clair en masquant son contenu. Celaconsiste à transformer un texte normal en un charabia inintelligible appelé texte chiffré. Cette opération per-met de s’assurer que seules les personnes auxquelles les informations sont destinées pourront y accéder. Leprocessus inverse de transformation du texte chiffré vers le texte d’origine est appelé le décryptage.

FIG. 5.1 – Schéma général du cryptage

5.1.2 Qu’entend-on par clé ?On appelle clé une valeur utilisée dans un algorithme de cryptographie, afin de chiffrer un texte. Il s´agit

en fait d´un nombre complexe dont la taille se mesure en bits. On peut imaginer que la valeur numériquecorrespondant à 1024 bits est absolument gigantesque. Plus la clé est grande, plus elle contribue à éleverla sécurité à la solution. Toutefois, c´est la combinaison d´algorithmes complexes et de clés importantesqui sera la garantie d´une solution bien sécurisée. Les clés doivent être stockées de manière sécurisée et demanière à ce que seul leur propriétaire soit en mesure de les atteindre et de les utiliser.

5.1.3 Quels sont les usages de la cryptographie ?Le développement rapide de la société de l’information est directement dépendant de la confiance que

les utilisateurs peuvent accorder au système.Les nouveaux moyens technologiques moteurs de la société de l´information ont induit des change-

ments profonds dans les méthodes de communication. On assiste à la migration d’échanges d’information,jusqu´à présent basés sur des réseaux fermés, générateurs de confiance mutuelle, vers des réseaux ouvertsà l’échelle mondiale sur lesquels l’information peut être, faute de moyens adaptés, interceptée, modifiée,ou dont la validité peut être contestée.

Enfin et surtout, l’entrée dans la société de l’information se caractérise par une augmentation importantede la masse d’informations échangées et stockées. Ces données peuvent être anodines mais elles peuventaussi être confidentielles, voire critiques.

L’usage de la cryptologie constitue ainsi l´un des adjuvants à l’instauration de la confiance, en assu-rant la confidentialité, la validité, l’intégrité et la non répudiation des informations échangées, ainsi quel’authentification des correspondants.

35

Page 36: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

L’utilisation des moyens de cryptologie est donc nécessaire pour favoriser à la fois :– La protection de la vie privée ou des données privées.– Le développement d’échanges commerciaux ou financiers sécurisés.– La sécurité des systèmes d’information.

5.2 Systèmes à clé privéeLes systèmes de cryptage à clé secrète, appelés aussi systèmes de cryptage symétrique ou cryptage

conventionnel 2, sont utilisés depuis plusieurs siècles déjà. C’est l’approche la plus authentique du chiffre-ment de données et mathématiquement la moins problématique.

Voici quel en est son principe de base. Un expéditeur et un destinataire souhaitant communiquer demanière sécurisée à l’aide du cryptage conventionnel doivent convenir d’une clé et ne pas la divulguer.Dans la majorité des systèmes de cryptage symétrique la clé de chiffrement et la clé de déchiffrement sontidentiques.

La taille des clés utilisées varient selon le besoin et font en standard 64 ou 128 bits.

FIG. 5.2 – Principe du chiffrement à clé secrète

Le cryptage conventionnel comporte un avantage majeur : sa rapidité. Il est particulièrement adaptéà la transmission par des moyens de transmission sécurisés. Il comporte par contre aussi des faiblessses.Ce système nécessite la connaissance de la clé par l’émetteur et par le destinataire. C’est la transmissionde cette clé entre les intervenants qui représente la faiblesse inhérente au système. S’ils se trouvent à desemplacements géographiques différents, ils devront faire confiance à une tierce personne ou un moyen decommunication sécurisé. Toute personne interceptant la clé lors d’un transfert peut ensuite lire, modifier etfalsifier toutes les informations cryptées ou authentifiées avec cette clé.

De la norme de cryptage de données DES au code secret de Jules César, la distribution des clés restele problème majeur du cryptage conventionnel. (Autrement dit, comment faire parvenir la clé à son des-tinataire sans qu’aucune personne ne l’intercepte ?) Les moyens à déployer pour garantir la distributionsécurisée des clés entre les correspondants sont très onéreux, ce qui constitue un inconvénient supplémen-taire.

Les principaux algorithmes à clé privée utilisés actuellement sont : Blowfish, DES / 3DES, IDEA, RC2,RC5, RC6, Rijndael, AES.

5.2.1 Crytographie par substitutionIl existe 4 types de cryptage par substitution :– Substitution simple : Peut être la plus simple méthode pour crypter un document. A chaque carac-

tère on applique une transformation bijective dans l’espace de l’alphabet (si on travaille sur un textebien sur). Pour être plus clair à chaque lettre correspond une autre lettre et une seule. Un chiffre-ment par substitution simple très connu est celui de Jules César. Pour casser facilement ce genre decryptogrammes on utilise les fréquences des caractères dans la langue correspondant au texte crypté.

2En anglais on parle de : Single-key, one-key, private-key, conventional encryption.

36

Page 37: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Le principe de cette cryptographie est d’utiliser des variantes multiplicatives de l’idée du chiffragede J. César. Par exemple on peut utiliser la méthode suivante.Premièrement, on convertit d’abord le message en une suite de chiffres par exemple en attribuant lavaleur 1 à a, 2 à b ... et 26 à z.Exemple : le mot VALROSE devient 22,1,12,18,15,19,5.Ensuite on multiplie chaque nombre de la liste par 5 et on calcule le reste modulo 27.On trouve 2,5,6,9,21,14,25 soit BEFIUNYAvantage : c’est facile à mettre en oeuvre ! On ne fait pas le même décalage pour chaque lettre : c’estplus difficile à repérer.Inconvénient : Un ordinateur peut décoder sans peine, surtout si le message est long en utilisant destests statistiques sur les fréquences d’apparition des lettres dans un dictionnaire donné (encore faut-ilsavoir la langue dans laquelle le message est écrit...).

– Substitution homophonique : même principe que le cryptage précedent si ce n’est que la transforma-tion n’est plus bijective. Ainsi à une lettre peut correspondre plusieurs autres. Ainsi le décryptage sefait en suivant le bon sens de la phrase ou du mot.

– Substitution polyalphabétique : Pour ce faire, on utilise plusieurs tables de substitution simple, et latable utilisée dépend de la position de la lettre dans le texte. Par exemple, on prend les 3 tables decorrespondance suivantes, c étant l’alphabet clair ; c1, c2 et c3 les alphabets cryptés :

c 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 zc1 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 mc2 a z e r t y u i o p q s d f g h j k l m w x c v b nc3 m l k j h g f d s q y t r e z a u i o p n b v c x w

Maintenant, imaginons que l’on veuille crypter le mot VALROSE, on change de table toutes leslettres et l’on boucle donc tous les 3 caractères (car nous n’avons ici que 3 tables), ce qui nous donne :

V⇒ I (dans c1)A⇒ A (dans c2)L⇒ T (dans c3)R⇒ E (dans c1)O⇒ G (dans c2)S⇒ O (dans c3)E⇒ R (dans c1)

On transmet donc IATEGOR.On se rend compte tout de suite que ce chiffrement est plus difficile à casser que la substitutionsimple. Car à n lettres différentes (si nous avons n tables) peuvent correspondre une seule et mêmelettre ; la méthode utilisant les fréquences des caractères est inutilisable ici.

– Substitution simple par polygrammes : même principe que la substitution simple, sauf que l’on tra-vaille ici par blocs de lettres (de plus ou moins grandes longueurs) auxquels l’on fait correspondreun autre bloc.ex : est = azeesu = tyufac = zutLa situation limite de ce cryptage, est celle pour laquelle on utilise un bloc de la longueur du texte,ce qui ne sert à rien car cela revient à connaitre le résultat. On voit tout de suite la limite de cetteméthode : en utilisant simplement des triplets, il faut communiquer à son interlocuteur 26*26*26blocs de correspondances, c’est à dire 17576 blocs.

37

Page 38: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

5.2.2 Le chiffrement de César

Jules César utilisait une méthode spécifique pour ses échanges avec son état-major. En effet, les mes-sages étant transportés par des messagers, il tenait à protéger la confidentialité des données. La méthodeconsistait à remplacer une lettre par un décalage de trois. Par exemple, le A était remplacé par un D, le Bpar un E... De cette manière, seules les personnes au courant de ce subterfuge étaient capables de déchiffrerle message.

Le chiffrement de Jules César est un chiffrement par substitution simple. Donc, à chaque lettre du textecorrespond une autre lettre de l’alphabet et une seule. Dans ce cas, on remplace la lettre en cours par cellese situant 3 positions plus loin dans l’alphabet (modulo 26 pour que ça boucle correctement). On crypteainsi le texte et pour le décrypter, on applique la transformation inverse, c’est à dire, que l’on prend la lettrese situant 3 positions avant. Voici la table des correspondances de l’alphabet :

clair 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 zcrypté 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

Dans ce système, une seule clé sert à chiffrer et à déchiffrer le message.Exemple : VALROSE devient YDOURVHAvantage : c’est facile à mettre en oeuvre !Inconvénient : on peut décoder de tête même si on décale de trois lettres vers la droite car le décalage estle même pour toutes les lettres... C’est ridiculement rapide pour un ordinateur.

5.2.3 La méthode du ou exclusif simple

Cette méthode est aussi trés simple. Il suffit de se mettre d’accord sur une clef quelconque. On découpeensuite le texte en blocs de la même longueur que la clef. Et ensuite à chaque bloc on applique un XORavec la clef indifféremment pour crypter le message et le décrypter.Supposons que l’on veuille transmettre le message NICE. Chaque caractère porte un numéro (le no de tableASCII) sur 7 bits, on choisit donc une clef de longueur 14 bits3 pour notre exemple, par exempleclef = 10101100101101

Message N I C E⊕

Clef C L E F C L E F

N = 10011104

I = 1001001C = 1000011E = 1000101

NI ⊕ clef = 10011101001001⊕ 10101100101101 = 00110001100100CE ⊕ clef = 10000111000101⊕ 10101100101101 = 00101011101000

On obtient alors le texte crypté 0011000110010000101011101000. Pour décrypter le message reçu, il suffitd’effectuer le même processus avec la même clef sur le texte crypté.

Avantages :Algorithme très simple à implémenter. Très rapide et simple à comprendre.

Inconvénient :Trés simple à déchiffrer.

3On aurait pu choisir n’importe qu’elle autre longueur.4Voir table ASCII dans la partie codage

38

Page 39: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

5.2.4 Le chiffrement de Vigenère

Même si l’on connaissait depuis fort longtemps les faiblesses de la cryptographie par substitution, iln’y eut pas entre César et le XVIe siècle de véritable nouveau procédé cryptographique, à la fois sûr (pourles moyens de l’époque) et facile à utiliser. Blaise de Vigenère, né en 1523, fut l’initiateur d’une nouvellefaçon de chiffrer les messages qui domina 3 siècles durant. Vigenère était quelqu’un de très hétéroclite,tantôt alchimiste, écrivain, historien, il était aussi diplomate au service des ducs de Nevers et des rois deFrance. C’est en 1586 qu’il publie son Traité des chiffres ou Secrètes manières d’écrire, qui explique sonnouveau chiffre. La machine Enigma utilisait un système proche du chiffrement de Vigenère grâce à desrotors.

L’idée de Vigenère est d’utiliser un chiffre de César, mais où le décalage utilisé change de lettres enlettres. Pour cela, on utilise une table composée de 26 alphabets, écrits dans l’ordre, mais décalés de ligneen ligne d’un caractère. On écrit encore en haut un alphabet complet, pour la clé, et à gauche, verticalement,un dernier alphabet, pour le texte à coder :

Pour coder un message, on choisit une clé qui sera un mot de longueur arbitraire. On écrit ensuite cetteclé sous le message à coder, en la répétant aussi souvent que nécessaire pour que sous chaque lettre dumessage à coder, on trouve une lettre de la clé. Pour coder, on regarde dans le tableau l’intersection de laligne de la lettre à coder avec la colonne de la lettre de la clé.

Exemple : On veut coder le texte VALROSE avec la clé NICE. On commence par écrire la clef sousle texte à coder :

Message V A L R O S EClef N I C E N I C

Pour coder la lettre V, on utilise la clef N. On regarde alors dans le tableau l’intersection de la ligne duV et de la colonne du N.

39

Page 40: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

On découvre la lettre I.On continue pour le reste des autres lettres et on trouve le message crypté : IINVBAG

Cet algorithme de cryptographie comporte beaucoup de points forts. Il est très facile d’utilisation, etle décryptage est tout aussi facile si on connait la clé. Il suffit, sur la colonne de la lettre de la clé, derechercher la lettre du message codé. A l’extrémité gauche de la ligne, on trouve la lettre du texte clair.

40

Page 41: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

La grande caractéristique du code de Vigenère est qu’une même lettre peut avoir plusieurs correspon-dances et dans notre exemple dans le texte crypté on retrouve deux I alors que ce ne sont pas les mêmeslettres à la base. Impossible par une analyse statistique simple de retrouver où sont les lettres de plus forteapparition. Dernière chose, on peut produire une infinité de clés, il est très facile de convenir avec quelqu’und’une clé donnée.

Vérifions un peu la complexité du message obtenu. Si nous avons à crypter un message de n caractèresavec notre clef de n caractères, à chaque caractère peut correspondre 26 caractères (en partant du principeque la clef est totalement aléatoire, ce qui n’est pas tout le temps le cas pour des questions de facilité) doncon se retrouve avec 26n possibilités. Donc l’attaque à force brute devient vite ardue (on part du principeque l’attaquant connait la longueur de la clef), même pour des petites clefs. Ex : n=6 on se retrouve avec308.915.776 possibilités.

5.3 Systèmes à clé publique

Pour faire face aux problèmes liés à la distribution des clés dans le cryptage à clé privée, il a été mis aupoint la cryptographie à clé publique, aussi appelée cryptographie asymétrique. Dans un algorithme à clefprivée, une clef secrète K est choisit par les deux parties, et un algorithme de cryptage et de décryptageest utilisé pour chiffrer les données. Le gros problème de ce type de chiffrement, c’est qu’il nécessite unecommunication sécurisée entre les deux parties pour avoir la même clef secrète K. C’est pour cela quel’on a inventé les algorithmes à clef publique. La première réalisation de ce type de chiffrement fut lechiffrement RSA. Il existe peu d’algorithmes sûr et pratiques. Ils sont de l’ordre de 1000 fois plus lent queles algorithmes à clés privées. La taille des clés utilisées varient selon le besoin et font en standard 512 ou1024 bits5.

Ce concept a été introduit par Whitfield Diffie et Martin Hellman en 1975, même s’il est communé-ment accepté que les services secrets britanniques avaient déjà fait cette même découverte plusieurs annéesauparavant , mais avaient protégé ce secret militaire.La cryptographie à clé publique est un procédé asymétrique utilisant une paire de clés pour le cryptage,soit une clé publique qui crypte des données, et une clé privée ou secrète correspondante pour le décryptage.

Le principe est donc de distribuer la clé publique tout en conservant la clé privée secrète. Tout utilisateurpossédant une copie de la clé publique pourra ensuite crypter des informations que seul le propriétaire dela clé privée pourra déchiffrer.Il faut également noter que si le cryptage est bien possible à l’aide de la clé publique, l’opération inverse(le décryptage) ne sera pas possible au moyen de la clé publique mais exigera l’utilisation de la clé privéecorrespondante.On peut également remarquer qu’il est impossible de deviner la clé privée à partir de la clé publique.C’est l’ensemble de ces constatations qui fait que l’on appelle ce système asymétrique.

La cryptographie à clé publique présente un avantage majeur : elle permet d’échanger des messages demanière sécurisée sans aucun dispositif de sécurité annexe.En effet l’expéditeur et le destinataire n’ont plus besoin de partager des clés secrètes via une voie detransmission sécurisée. Les communications impliquent uniquement l’utilisation de clés publiques et plusaucune clé privée n’est transmise ou partagée.Le cryptage à clé publique représente une révolution technologique qui offre à tout citoyen la possibilitéd’utiliser une cryptographie robuste. En effet, la cryptographie conventionnelle était auparavant la seuleméthode pour transmettre des informations secrètes. Les coûts de transmission et de distribution sécuriséesdes clés avaient cantonné son utilisation aux institutions disposant de moyens suffisants, telles que gouver-nements et banques.Les deux algorithmes les plus connus et les plus sûr sont : RSA et Elgamal 6.

Nous commençons par une présentation d’un algorithme très simple, celui de Diffie-Hellman, puis nouspasserons ensuite à l’explication du système RSA.

5Pour comparaison, on a vu que les clés des algorithmes à clés privées font en standard 64 ou 128 bits.6d’après le nom de son inventeur Taher Elgamal

41

Page 42: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

FIG. 5.3 – Principe du chiffrement à clé publique

5.3.1 Algorithme de Diffie-HellmanCet algorithme est très simple pour l’échange des clefs, en voici le principe.

Soient 2 personnes A et B désirant communiquer sans utiliser une clef secrète. Pour cela ils se mettentd’accord sur 2 nombres g et n tels que n soit supérieur à g et g supérieur à 1.Ils prennent chacun chez eux un nombre aléatoire :A choisit x puis calcule X = gx mod n et l’envoie à B.B choisit y puis calcule Y = gy mod n et l’envoie à A.Ainsi le pirate peut intercepter X, et Y mais il lui est très difficile d’en déduire x et y (c’est sur ce principeque repose la sécurité de l’algorithme).Une fois dans son coin, A calcule k = Y x mod n et B calcule k′ = Xy mod n.Si l’on regarde de plus on remarque :k = k′ = gx∗y mod n.Ainsi, A et B ont réussi à créer une clef privée dont ils sont les seuls détenteurs, et le pirate malgré la visionqu’il a eut de l’échange ne peut calculer la clef privée. L’échange des clefs ayant fonctionné A et B peuventcommuniquer par un bête algorithme à clef privée.

5.3.2 Le système RSABaptisé du nom de ces inventeurs 7 en 1978, cet algorithme est l’un des plus simples et certainement le

plus connu du marché. Le principe de cette cryptographie à clé publique est d’utiliser une fonction à sensunique, c’est à dire une fonction f qui bien qu’étant connue, si on connait x, on sait calculer f(x), tandisqu’en connaissant f(x), on ne peut retrouver x.Voici la description de l’algorithme :On commence par générer une clef publique n, qui est le produit de deux nombres premiers secrets, p et q.On choisit ensuite une clef aléatoire e, première par rapport à (p− 1) ∗ (q − 1).On crée ensuite la clef privée d qui est donnée par d = e−1mod((p− 1) ∗ (q − 1)).On appelle e l’exposant public, d l’exposant privé. Alors, la clé publique de chiffrement est (n,e) et la cléprivée (n,d).Pour chiffrer un bloc m, il suffit de faire c = me mod n (n’importe qui peut le faire sachant que l’on utiliseseulement les clefs privées). Pour déchiffrer un bloc c, il suffit de faire m = cd mod n. Ici, seule la personnepossédant la clef privée d, peut arriver à déchiffrer ce message. Ainsi n’importe qui peut vous chiffrer unmessage avec la clef publique que vous avez diffusé, mais vous êtes le seul capable de la déchiffrer.La sécurité de cette algorithme repose entièrement sur la difficulté à factoriser un grand nombre dont onsait qu’il est le produit de deux nombres premiers. En effet, nous connaissons n et nous savons qu’il est leproduit de deux nombres premiers p et q. Donc si l’on arrive à trouver p et q on a réussit à casser le code.

7Ron Rivest, Adi Shamir, et Léonard Adleman

42

Page 43: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

L’inconvénient du système RSA demeure la taille des clés car à protection équivalente, on a besoin d’uneclé beaucoup plus grande comparé à un algorithme à clé privée.

Algo symétrique Clé RSA64 bits 512 bits80 bits 1024 bits

112 bits 2048 bits128 bits 3072 bits

Ainsi, avec une clé RSA de 1024 bits (valeur courante), on a une protection équivalente à celle d’unchiffrement symétrique de 80 bits.

5.4 Systèmes hybridesIl existe aussi des systèmes de protection mélangeant les deux techniques pour en garder leurs avan-

tages, on les appellent les systèmes hybrides. L’exemple le plus probant est PGP mais on peut aussi citerGnuPG et SSL.

5.4.1 Pretty Good Privacy (PGP)PGP est une combinaison des fonctionnalités de la cryptographie de clef publique et de la cryptogra-

phie conventionnelle. PGP est donc un système de cryptographie hybride.Lorsqu’un utilisateur chiffre un texte avec PGP, les données sont d’abord compressées. Cette compressiondes données permet de réduire le temps de transmission par modem, d’économiser l’espace disque et, sur-tout, de renforcer la sécurité cryptographique.En effet, la plupart des cryptanalystes exploitent les modèles trouvés dans le texte en clair pour casser lechiffrement. La compression réduit ces modèles dans le texte en clair, améliorant par conséquent considé-rablement la résistance à la cryptanalyse.Ensuite, l’opération de chiffrement se fait principalement en deux étapes :PGP crée une clé secrète K de manière aléatoire, et chiffre les données avec cette clef. Puis, il crypte la clésecrète K et la transmet au moyen de la clé RSA publique du destinataire.De même, l’opération de décryptage se fait aussi en deux étapes :PGP déchiffre la clé secrète K au moyen de la clé RSA privée, puis il déchiffre les données avec la clésecrète K précédemment obtenue.Cette méthode de chiffrement associe la facilité d’utilisation du cryptage de clef publique à la vitesse ducryptage conventionnel. Le cryptage de clef publique résout le problème de la distribution des clefs. Utili-sées conjointement, ces deux méthodes améliorent la performance et la gestion des clefs, sans pour autantcompromettre la sécurité.Il est très rapide et sûr ce qui le rend quasiment impossible à cryptanalyser.

43

Page 44: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Chapitre 6

Cryptanalyse

La cryptanalyse est tout simplement l’art de rendre clair un texte crypté sans avoir connaissance de laclef utilisée. Dans la cryptanalyse, on part du principe que l’homme est faible, et facilement soudoyable.Ainsi, on considère que la force d’un système de cryptographie ne doit pas reposer sur la non connaissanced’un algorithme mais sur la force du principe utilisé. Dans le jargon de la cryptographie, on appelle attaqueune tentative de déchiffrement. Les méthodes de cryptanalyse sont bien sûr très nombreuses et dépendent engrande partie du type d’algorithme auquel on est confronté. Le principe de Kerkhoff (1883) qui s’appliqueà tous les systèmes de cryptage s’appuie sur l’hypothèse qu’il faille admettre que l’adversaire connaîttous les détails du système de cryptage utilisé sauf la clé utilisée. La sécurité doit donc s’appuyer sur leseul fait qu’un adversaire n’a pas accès à la clé utilisée alors qu’il essaie de retrouver le message clair àpartir de messages chiffrés qu’il aura pu intercepter. Ainsi un algorithme de cryptage est considéré commesécurisé si un adversaire qui a intercepté un message chiffré n’a pas de techniques praticables permettantde retrouver des informations sur le message clair ou la clé utilisée.La force d’un système de chiffrement repose sur 2 choses : la force de l’algorithme et la longueur de la clefutilisée.Si l’algorithme est parfait, la seule attaque possible est l’attaque à force brute (ou attaque exhaustive)consistant tout simplement à essayer toutes les clefs posssibles. Imaginons que l’on veuille attaquer untexte chiffré par le DES1, nous avons donc 256 = 72.057.594.037.927.936 clefs possibles soit 72000milliards de possibilités. Même avec un ordinateur capable de tester 10 millions de clefs par seconde, ilnous faudrait 84000 jours, ou encore 228 ans pour passer toutes les clefs. Et à chaque bit supplémentaire,on multiplie le temps par 2. C’est pour cela qu’une attaque à force brute ne s’effectue que dans les casdésépérés, il faut s’attaquer à une faille de l’algorithme.Aucun moyen de chiffrement n’a été démontré sûr, à l’exception du masque jetable dont le défaut estd’avoir une clé de chiffrement aussi longue que le message à chiffrer, ce qui en limite grandement l’emploi.Shannon a par ailleurs démontré que lorsque la clé de chiffrement est plus courte que le message à chiffrer,le message chiffré révèle forcément des détails sur la structure du fichier clair.

1le DES de base utilise une clef de 56 bits

44

Page 45: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Il existe plusieurs familles d’attaques cryptanalytiques, les plus connues étant l’analyse fréquentielle, lacryptanalyse différentielle et la cryptanalyse linéaire.

6.1 Brève description de quelques attaques

L’analyse fréquentielle examine les répétitions des lettres du message crypté afin de trouver la clé. Elleest inefficace contre les chiffrements modernes tels que DES, RSA. Elle est principalement utilisée contreles chiffrements mono-alphabétiques qui substituent chaque lettre par une autre.

L’indice de coïncidence permet de calculer la probabilité de répétitions des lettres du message chiffré. Ilest souvent couplé avec l’analyse fréquentielle. Cela permet de savoir le type de chiffrement d’un message(chiffrement mono-alphabétique ou poly-alphabétique) ainsi que la longueur probable de la clé.

L’attaque par mot probable consiste à supposer l’existence d’un mot probable dans le message crypté.Il est donc possible d’en déduire la clé du message si le mot choisi est correct. Ce type d’attaque a étémenée contre la machine Enigma durant la Seconde Guerre mondiale.

L’attaque par dictionnaire consiste à tester tous les mots d’une liste comme mot clé. Elle est souventcouplée à l’attaque par force brute.

L’attaque par force brute consiste à tester toutes les solutions possibles de mots de passe ou de clés.C’est le seul moyen de récupérer la clé dans les algorithmes les plus modernes et encore inviolés commeAES.

La cryptanalyse linéaire consiste à faire une approximation linéaire de la structure interne de la méthodede chiffrement. Elle remonte à 1993 et s’avère être l’attaque la plus efficace sur DES. Les algorithmes plusrécents sont insensibles à cette attaque.

La cryptanalyse différentielle est une analyse statistique des changements dans la structure de la mé-thode de chiffrement après avoir légèrement modifié les entrées. Avec un très grand nombre de perturba-tions, il est possible d’extraire la clé. Cette méthode date du début des années 90 mais on sait maintenantque les concepteurs de DES connaissaient une variante de cette attaque nommée attaque-T. Les algorithmesrécents (AES, IDEA, etc.) sont conçus pour résister à ce type d’attaques.

Casser un chiffrement assuré par la cryptographie asymétrique est plus complexe et nécessite d’autresapproches. Dans le cas de RSA, c’est la difficulté de la factorisation qui assure la résistance du chiffre-ment. Pour ElGamal, c’est le problème du logarithme discret qui est employé. Toutefois, certaines faillespeuvent apparaître selon l’utilisation que l’on fait de ces algorithmes. RSA est vulnérable si des exposantsde faible magnitude sont utilisés (attaques de Coppersmith et Wiener). Sous des conditions particulières,un surchiffrement avec RSA peut être attaqué.

6.2 Cryptanalyse par fréquence d’apparition

Pour casser les systèmes utilisants une cryptographie monoalphabétique, on utilise les fréquences d’ap-parition des lettres du message chiffré et on les compare avec les fréquences statistiques. Voici un exemplede répartition des lettres dans les textes français2.

2voir http ://mantis.free.fr/articles/freq.htm

45

Page 46: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

6.3 Vaincre le chiffre de Vigenère

Le système polyalphabétique de Vigenère résista pendant environ 3 siècles, jusqu’à ce que le mathéma-ticien britannique Charles Babbage, connu notamment pour ses machines à différence, élabore la théoriede son décodage, vers 1854. L’essentiel du problème est de trouver la longueur de la clé.

Supposons par exemple que l’on veuille décoder le message IINVBAG3 et que par une méthode ou uneautre, on ait trouvé que la longueur de la clé est 4. Alors la 1e et la 5e lettre ont été codées par le mêmeprocédé, un décalage de César. De même pour la 2e et la 6e lettre On regroupe donc les lettres en quatresensembles, il suffit alors de procéder à un test statistique sur les fréquences d’apparition sur ces quatreensembles, comme pour décrypter un simple décalage de César pour découvrir la clé.

La longueur de la clé est beaucoup plus difficile à trouver. On peut chercher les triplets identiques delettres à différents endroits du texte : c’est peut être les mêmes lettres, on a ainsi une information sur lalongueur de la clé, en effet la distante séparant ces deux triplets est un multiple de la longueur de la clé.

6.3.1 Attaque du système RSA

Cette attaque est dénommée attaque par multiplication.Un attaquant récupère un message crypté à l’attention de sa cible avec un algorithme RSA. L’attaquant pos-sède donc c, le message chiffré, et recherche m = cd [n]. L’attaquant possède par ailleurs la clé publiquede sa cible (n,e).L’attaquant choisit un nombre au hasard, r < n.Il calcule x, y, t tels que :x = re[n]y = x ∗ c[n]t ∗ r = 1[n]

L’attaquant compte sur la réciprocité de l’algorithme RSA, si x = re [n], alors r = xd [n].L’attaquant fait alors signer y à sa cible, avec sa clé privée, et obtient u = yd [n].Il calcule alors t ∗ u[n] = (r−1) ∗ (yd)[n] = (r−1) ∗ (xd) ∗ (cd)[n] = cd[n] = m, le message en clair qu’ilrecherche !

L’algorithme RSA est dit malléable, la signature d’un produit est égale au produit des signatures. (Cettemalléabilité peut aussi être exploitée pour une attaque contre le chiffrement).

D’autres faiblesses de l’algorithme RSA sont connues : lorsque le message à chiffrer est de petite taille,retrouver le message clair est alors aussi simple que d’extraire une racine cubique. De même lorsqu’un

3cf. le paragraphe sur le chiffrement de Vigenère

46

Page 47: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

même message est chiffré avec trois clés RSA différentes. Les précautions nécessaires contre ces faiblessessont prises en compte dans les protocoles d’utilisation de RSA.

47

Page 48: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

Bibliographie

48

Page 49: Codage, Compression et Cryptologie - deptinfo.unice.frdeptinfo.unice.fr/twiki/pub/Linfo/Organisation Rapports/Knoff... · Le codage de l’information est la première étape de toute

– Bruno Martin"Codage, cryptologie et applications"Presses Polytechniques et Universitaires Romandes, 2004 (354 pages).

– C. Servin"Télécoms, de la transmission à l’architecture de réseaux"Collection systèmes Distribués, 2e édition, 1997 (258 pages).

– H. Hsu"Signaux et communications"EdiScience, 2e édition, 2004 (400 pages).

– Brassard Gilles"Cryptologie contemporaine"Masson, 1992 (124 pages).

– Dubertret Gilles"Initiation à la cryptographie"Vuibert Informatique, 2000 (106 pages).

– Douglas Stinson"Cryptography : Theory and practice"CRC Press, 2002 2e edition.

– Stephane Natkin"Les protocoles de sécurité d’internet"Dunod, 2001.

– William Stallings"Cryptography and Network Security"Prentice Hall, 2002 3e edition.

– G.HELD"La compression des données (méthodes et applications)"

49