Cryptographie appliquée
Deuxième édition Protocoles, algorithmes
et codes cource en C
Traduction de Laurent Viennot
Table des matières
P r é fa c e xiii
Comment lire ce livre ... xiv
R em erciem ents... xvii
À p r o p o s d e l’ a u teu r x ix 1 P r in cip e s d e ba se 1 1.1 Terminologie ... 1
1.2 Steganographie... 9
1.3 Substitution et transposition... 10
1.4 Ou exclusif s i m p l e ... 14
1.5 Masque j e t a b l e ... 15
1.6 Algorithmes inform atiques... 18
1.7 Grands nom bres... 18
1 Protocoles cryptographiques 21
2 B riq u es élém en ta ires 23 2.1 Introduction aux p r o t o c o le s ... 232.2 Communications à l’aide d ’un cryptosystème à clef s e c r è te ... 30
2.3 Fonctions à sens unique ... 31
2.4 Fonctions de hachage à sens u n iq u e... 32
2.5 Communications à l’aide d ’un cryptosystème à clef p u b liq u e... 33
2.6 Signatures n u m ériqu es... 37
2.7 Signatures numériques avec chiffrement... 44
2.8 Générateurs aléatoires et pseudo-aléatoires... 47
3 P r o t o c o le s élém en taires 51 3.1 Échange de clefs ... 51
3.2 Authentification... 56
3.3 Authentification et échange de c le fs ... 61
3.4 Analyse formelle des protocoles d ’authentification et d ’échange de clefs 70 3.5 Cryptographie à clef publique à clefs multiples... 74
3.6 Secret m orcelé... 75
3.7 Secret r é p a r t i... 77
3.8 Protection cryptographique de bases de données... 80
4 P r o t o c o le s in term édia ires 81 4.1 Services de datation ... 81
4.2 Canal su b lim in a l... 85
4.3 Signatures numériques incontestables... 87
4.4 Signatures numériques à vérificateur d é d ié ... 88
4.5 Signatures par procuration... 89
4.6 Signatures collectives... 90
4.7 Signatures numériques « Fail-Stop »... ... 91
4.8 Calcul avec données chiffrées... 92
4.9 Mise en gage ... 92
4.10 Jouer à pile ou f a c e ... 95
4.11 Poker à l’a v e u g le ... 99
4.12 Accumulateurs à sens unique ... 102
4.13 Divulgation tout ou rien de s e c r e t s ... 103
4.14 Dépôt de c l e f s ... 103
5 P r o t o c o le s avancés 109 5.1 Preuves à divulgation nulle ... 109
5.2 Identification par preuve à divulgation n u l le ... 117
5.3 Signatures en aveugle ... 120
5.4 Cryptographie à clef publique à base d ’identification . . . 123
5.5 Transfert in con scien t... 124
5.6 Signatures in con scien tes... 126
5.7 Signature simultanée de c o n tr a t... 127
5.8 Courrier électronique certifié... 131
5.9 Echange simultané de s e c r e t s ... 132
6 P r o t o c o le s éso té riq u e s 135 6.1 Elections sûres ... 135
6.2 Calcul réparti s û r ... 144
6.3 Diffusion de messages anonymes . 148 6.4 Argent électronique . . . . 150
II Techniques cryptographiques 161
7 L o n g u e u r des clefs 163 7.1 Longueur des clefs secrètes... ... 1637.2 Longueur des clefs publiques... 170
7.3 Comparaison de la longueur des clefs secrètes et des clefs publiques . 178 7.4 Attaques des anniversaires contre une fonction de hachage à sens unique 178 7.5 Quelle doit être la longueur de clef? ... 179
7.6 Avertissem ent... 180
8 G e s tio n des clefs 181
8.1 Génération de c l e f s ... 182
8.2 Espaces des clefs non linéaires... 188
8.3 Transfert de c l e f s ... 188
8.4 Vérification de clefs ... 190
8.5 Utilisation des c le fs ... 192
8.6 Mise à jour des c l e f s ... 193
8 7 Stockage des c l e f s ... 193
8.8 Duplicata des c l e f s ... 194
8.9 Clefs c o m p r o m is e s ... 195
8.10 Longévité des c l e f s ... 196
8.11 Destruction des c l e f s ... 197
8.12 Gestion des clefs pour la cryptographie à clef p u b liq u e ... 198
9 T y p e s et m o d e s d ’a lg o rith m e s 201 9.1 Carnet de codage électronique... 202
9.2 Bloc rejoué ... 203
9.3 Mode de chiffrement avec chaînage de b l o c s ... 205
9.4 Algorithmes de chiffrement en c o n t i n u ... 209
9.5 Chiffrement autosynchrone en c o n t i n u ... 211
9.6 Chiffrement à rétroaction ... 212
9.7 Chiffrement synchrone en co n tin u ... 214
9.8 Mode de rétroaction de s o r t i e ... 216
9.9 Mode « compteur » ... 219
9.10 Autres m o d e s ... 220
9.11 Choix d’un mode opératoire de chiffrement... 222
9.12 Intercalation... 223
9.13 Chiffrement par blocs vs chiffrement en c o n tin u ... 225
10 U tilisa tio n des a lg o rith m e s 227 10.1 Choix d’un a lg o rith m e ... 228
10.2 La cryptographie à clef publique vs la cryptographie à clef secrète . . 230
10.3 Chiffrement des canaux de com m unication... 230
10.4 Chiffrement des données à des fins de stockage ... 235
10.5 Chiffrement matériel vs chiffrement logiciel ... 237
10.6 Compression, codage et chiffrem ent... 240
10.7 Détection du chiffrem ent... 241
10.8 Cacher du texte chiffré dans du texte c h iffr é ... 242
10.9 Destruction d’in fo rm a tio n ... 243
III Algorithmes cryptographiques 245
11 R u d im en ts m a th ém a tiq u es 247 11.1 Théorie de l’in fo rm a tio n ... 24711.2 Théorie de la com p lex ité... 251
11.3 Théorie des n o m b r e s ... 256
11.4 Factorisation ... 271
11.5 Génération de nombres premiers ... 274
11.6 Logarithmes discrets dans un corps fini . . . 278
12 L e D E S 281 12.1 H istoriqu e... 281
12.2 Description du DES... 286
12.3 Niveau de sécurité du D E S • 296 12.4 Cryptanalyse différentielle et linéaire ... . . . 302
12.5 Les critères réels de conception . . . 311
12.6 Variantes du DES ... 312
12.7 A quel point le DES est-il sûr de nos j o u r s ? . . 318
13 A u tre s a lg o rith m e s d e ch iffrem en t pa r b lo c s 321 13.1 Lucifer . - 321 13.2 Ma d r y g a... ... 322
13.3 Ne wD E S ... 325
13.4 F E A L ... 325
13.5 R E D O C ... 331
13.6 L O K I ... 332
13.7 Khufu et Kh afre... 335
13.8 R C 2 ... 337
13.9 I D E A ... 338
13.10 M M B ... ... 345
13.11 C A - 1 . 1 ... 346
13.12 Sk i p j a c k... 347
14 E n co re d ’au tres a lg o rith m e s d e ch iffrem en t pa r b lo c s 351 14.1 G O S T ... 351
14.2 C A S T ... 354
14.3 Bl o w f is h... 355
14.4 S A F E R ... ... 359
14.5 3 - W A Y ... ... 361
14.6 C R A B ... 362
14.7 S X A L 8 et M B A L ... 364
14.8 R C 5 ... 364
14.9 Autres algorithmes de chiffrement par blocs . . 366
14.10 Théorie des algorithmes de chiffrement par blocs . 366 14.11 Utilisation de fonction de hachage à sens unique... 372
14.12 Choisir un algorithme de chiffrement par blocs . 375 15 C o m b in a iso n d ’ a lg o rith m e s d e ch iffrem en t pa r b lo c s 377 15.1 Surchiffrement double ... 377
15.2 Surchiffrement t r i p l e ... 379
15.3 Doublement de la longueur de b l o c ... 384
15.4 Autres schémas de surchiffrement . 384 15.5 Troncature de clef (dans C D M F ) . 387 15.6 Blanchim ent... 387
15.7 Mise en cascade de plusieurs algorithm es... 388
15.8 Combiner plusieurs algorithmes de chiffrement par b l o c s ... 389
16 G én éra teu rs de su ites a léa toires et ch iffrem en t en con tin u 391 16.1 Générateurs pseudo-aléatoires de su ites... 391
16.2 Registres à décalage à rétroaction lin é a ir e ... 395
16.3 Conception et analyse d’algorithmes de chiffrement en continu . . . . 402
16.4 Chiffrement en continu à base de R D R L ... 403
16.5 A 5 ... 412
16.6 Hugues X P D / K P D ... 413
16.7 Na n o t e q... 413
16.8 Ra m b u t a n... 414
16.9 Générateurs a d d i t i f s ... 414
16.10 Gifford ... 416
16.11 Algorith m e M ... 417
16.12 P K Z IP ... 417
17 A u tr e s a lg o rith m e s d e ch iffrem en t e n co n tin u e t g én éra teu rs d e su ites v ra im en t aléa toires 419 17.1 R C 4 ... 419
17.2 S E A L ... 420
17.3 W A K E ... 423
17.4 Registres à décalage à rétroaction avec r e t e n u e ... 424
17.5 Chiffrement en continu à base de R D R R ... 427
17.6 Registres à décalage à rétroaction non linéaire... 433
17.7 Autres algorithmes de chiffrement en c o n t i n u ... 435
17.8 Approche par la théorie des systèm es... 436
17.9 Approche par la théorie de la com plexité... 437
17.10 Autres approches à la conception d ’algorithmes de chiffrement en conti nu ... 439
17.11 Chiffrement en continu en cascade ... 441
17.12 Choisir un algorithme de chiffrement en co n tin u ... 442
17.13 Génération de plusieurs flux à partir d’un seul générateur pseudo aléatoire de su ites... 442
17.14 Générateurs de suites vraiment aléatoires ... 444
18 F o n ctio n s d e h ach age à sens u n iq u e 453 18.1 Introduction... 453
18.2 Snefru ... 455
18.3 N -Ha s h... 457
18.4 M D 4 ... 458
18.5 M D 5 ... 460
18.6 M D 2 ... 465
18.7 Algorithme sûr de hachage SHA ... 465
18.8 R I P E - M D ... 469
18.9 H A V A L ... 469
18.10 Autres fonctions de hachage à sens u n iq u e ... 470
18.11 Utilisation d ’algorithmes de chiffrement par b l o c s ... 471
18.12 Utilisation d ’algorithmes à clef p u b liq u e ... 479
18.13 Choix d’une fonction de hachage à sens u n i q u e ... 479
18.14 Codes d ’authentification de m essages... 479
19 A lg o rith m e s à c le f p u b liq u e 485 19.1 Introduction ... 485
19.2 Algorithmes à em pilem ent... 486
19.3 R S A ... 491
19.4 Pohlig- Hellman ... 499
19.5 Ra b i n... 500
19.6 ElGa m a l... 501
19.7 McEliece ... 504
19.8 Cryptosystèmes à courbes ellip tiq u es... 505
19.9 L U C ... 506
19.10 Automates f i n is ... 507
20 A lg o r ith m e s d e sign atu re n u m ériq u e à c le f p u b liq u e 509 20.1 Algorithme de signature numérique D SA ... 509
20.2 Variantes de D SA ... 520
20.3 Algorithme de signature numérique G O S T . 522
20.4 Schémas de signature numérique à base de logarithmes discrets . . 523
20.5 Ong Schnork Sh a m i r . . 525
20.6 E S I G N ... 526
20.7 Automates cellulaires... 527
20.8 Les autres algorithmes à clef publique ... 527
21 Schém as d ’ id e n tifica tio n 531 21.1 Feige- Fiat- Sham ir ... 531
21.2 Guillou- Qu i s q u a t e r... 536
21.3 Sc h n o r r... 538
21.4 Convertir un schéma d ’identification en un schéma de signature numé rique ... 540
22 A lg o rith m e s d ’éch a n ge d e clefs 541 22.1 Diffie- Hellman ... 541
22.2 Protocole point à p o in t ... 544
22.3 Protocole à trois passes de Sh a m i r... 544
22.4 C O M S E T ... 545
22.5 Échange de clefs chiffré... 546
22.6 Négociation de clef fortifiée ... 550
22.7 Distribution de clef de conférence et diffusion de s e c r e t ... 551
23 A lg o r ith m e s sp écia u x p o u r p r o t o c o le s 555 23.1 Cryptographie à clef publique à clefs multiples... 555
23.2 Algorithmes de partage de s e c r e t ... 556
23.3 Canal s u b lim in a l... 560
23.4 Signatures numériques incontestables... 565
23.5 Signatures numériques à vérificateur d é d ié ... 567
23.6 Calcul avec données chiffrées... 569
23.7 Pile ou face équitable... 570
23.8 Accumulateurs à sens unique ... 572
23.9 Divulgation tout ou rien de s e c r e t s ... 572
23.10 Cryptosystèmes équitables et à sûreté intégrée . . . . 575
23.11 Preuves à divulgation nulle ... 577
23.12 Signatures en aveugle... 579
23.13 Transfert in con scien t... 579
23.14 Calcul réparti s û r ... 580
23.15 Chiffrement p ro b a b iliste... 582
23.16 Cryptographie quantique... 584
IV Le monde réel 587
24 E x e m p le s d e réa lisa tion 589 24.1 Protocole IBM de gestion de clefs secrètes... 58924.2 M I T R E N E T ... 590
24.3 RNIS ... 591
24.4 S T U - I I I ... 593
24.5 Ke r b e r o s... 594
24.6 Kr y p t oKn i g h t... 600
24.7 SESAME ... 600
24.8 Architecture cryptographique commune d’I B M ... 601
24.9 Environnement d’authentification I S O ... 602
24.10 « Privacy-Enhanced Mail » ( P E M ) ... 606
24.11 « Message Security Protocol » (M S P ) ... 612
24.12 « Pretty G ood Privacy » (P G P ) ... 613
24.13 Cartes à p u c e ... 615
24.14 « Public-Key Cryptography Stan dards » (P K C S ) ... 616
24.15 Système de paiement électronique u n iv e r s e l... 618
24.16 Cl i p p e r... 620
24.17 Ca p s t o n e... 622
24.18 Modèle 3600 du dispositif de sécurité du téléphone d ’A T & T . . . . 623
25 P o litiq u e 625 25.1 « National Security Agency » ( N S A ) ... 625
25.2 « National Computer Security Center » (N C SC )... ... 627
25.3 « National Institute o f Standards and Technology » ( N I S T ) ... 628
25.4 R S A Data Se c u r it y, In c... 632
25.5 « Public Key Partners » ( P K P ) ... 632
25.6 « International Association for Cryptologie Research » (IACR) . . . 634
25.7 « R A C E Integrity Primitives Evaluation » (R IP E ) . . . . . 634
25.8 « Conditional Access for Europe » ( C A F E ) ... 635
25.9 « ISO /IE C 9979 » ... 636
25.10 Groupes industriels, de défense des libertés civiles, et professionnelles 637 25.11 Sc i.c r y p t... 638
25.12 Cy p h e r p u n k s... 638
25.13 B revets... 639
25.14 Réglementation américaine à l’ex p orta tion ... 639
25.15 Importation et exportation de cryptographie... 647
25.16 L é g a l it é ... 648
P o s tfa c e d e M a tt B la ze 651
V Code source 655
D E S ... 657L O K I 9 1 ... 675
I D E A ... 685
G O S T ... N 701 Bl o w f i s h... 711
3-Wa y... 721
R C 5 ... 727
A 5 ... 729
S E A L ... 735
L e x iq u e anglais—français 741
B ib lio g ra p h ie 747
In d e x 827
Préface
Il existe deux types de cryptographie dans le monde: la cryptographie qui empêche votre petite sœur de lire vos fichiers, et la cryptographie qui empêche les principaux gouvernements de lire vos fichiers. Ce livre traite de la deuxième.
Je prends une lettre, l’enferme dans un coffre et cache ce coffre quelque part dans New York... si je vous demande ensuite de lire la lettre, il n’est pas question de sécurité:
c’est de l’obscurité. Autre exemple : je prends une lettre, l’enferme dans un coffre et vous donne le coffre avec ses spécifications de conception et une centaine d’autres coffres identiques avec leurs combinaisons, de telle manière que vous et les meilleurs perceurs de coffres-forts puissiez étudier le mécanisme de verrouillage... si vous ne pouvez toujours pas ouvrir le coffre contenant la lettre, il est alors question de sécurité.
Pendant de nombreuses années, ce type de cryptographie était le domaine exclusif des militaires. La « National Security Agency » américaine et ses contreparties en ex-Union soviétique, au Royaume-Uni, en France, en Israël, et partout ailleurs, ont dépensé des milliards de dollars au jeu très sérieux de la protection de leurs propres communications, tout en essayant de casser toutes celles des autres. Le particulier, avec nettement moins d ’expertise et de budget, était impuissant à protéger sa propre vie privée vis-à-vis de ces gouvernements.
Durant ces vingt dernières années, il y a eu une explosion de recherche académique publique en cryptographie. Alors que la cryptographie classique est utilisée depuis longtemps par des citoyens ordinaires, la cryptographie par ordinateur était le domaine réservé des militaires depuis la Seconde Guerre mondiale. De nos jours, la cryptographie à la pointe de l’art est pratiquée en dehors de la protection des murs des agences militaires. Le profane peut maintenant employer des techniques cryptographiques qui le protègent contre les adversaires les plus puissants — à un niveau de sécurité qui pourrait même le protéger des agences militaires pour plusieurs années à venir.
Est-ce que l’individu moyen a besoin de ce type de sécurité? Je l’affirme. Il peut prépa
rer une campagne politique, il peut discuter de ses impôts, ou avoir une liaison illicite.
Il peut concevoir un nouveau produit, discuter d’une stratégie de commercialisation, ou préparer une prise de pouvoir commerciale agressive. Il peut vivre dans un pays qui ne respecte pas le droit à la vie privée de ses citoyens. Il peut faire quelque chose qu’il estime ne pas être illégal mais qui l’est. Peu importe les raisons, ses données et ses communications sont personnelles, privées et ce n’est l’affaire de personne d’autre à part lui.
Ce livre est publié en des temps troubles. L’administration Cl i n t o n a adopté le pro
gramme « Escrowed Encryption Standard» (qui repose sur la puce CLlPPERet la carte Fo r t e z z a) et le projet de loi « Digital Telephony ». Ces deux initiatives tendent à
donner au gouvernement la possibilité de mener des surveillances électroniques.
Cela repose sur la dangeureuse hypothèse orwelienne que le gouvernement a le droit d ’écouter les communications privées, et qu’il y a anguille sous roche si un citoyen tente de dissimuler un secret au gouvernement. Les lois ont toujours permis de mener une éventuelle surveillance avec l’autorisation des tribunaux. Mais c ’est la première fois que chacun est contreint de participer activement pour rendre sa surveillance possible.
Ces initiatives ne sont pas seulement des propositions gouvernementales concernant un domaine obscur, elles sont une tentative préventive et unilatérale d’usurper des pouvoirs qui relevaient de chacun.
Cl ip p e r et la loi « Digital Telephony » ne protègent pas la vie privée : elles obligent les individus à avoir confiance inconditionnellement dans le Gouvernement quant au respect de leur vie privée. Elle émet l’hypothèse que le Gouvernement fait partie des bons et que tous les citoyens font partie des méchants. Les mêmes autorités légales qui ont placé des écoutes illégales sur les lignes téléphoniques de Martin Luther King Jr.
peuvent facilement espionner un téléphone protégé par une puce Cl i p p e r. Durant ces cinq dernières années, les autorités de police locales ont été poursuivies pénalement ou civilement dans de nombreuses juridictions — y compris le Maiyland, le Connecticut, le Vermont, la Géorgie, le Missouri et le Nevada — pour avoir placé des écoutes illégales.
C ’est une mauvaise idée de déployer une technologie qui pourrait un jour aider un état policier.
On peut en tirer la leçon qu’il est insuffisant de se protéger avec des lois, il faut se protéger avec les Mathématiques. Le chiffrement est trop important pour être laissé au gouvernement.
Ce livre vous donne les moyens de préserver votre vie privée ; les appareils de chiffrement peuvent être déclarés illégaux, mais l’information ne le sera jamais.
Comment lire ce livre
J’ai écrit Applied Cryptography comme un ouvrage de référence exhaustif sur la cryp
tographie moderne. J’ai privilégié la lisibiüté du texte sans pour autant sacrifier l’exac
titude et la précision. Ce livre ne se veut pas un traité mathématique. Bien que je n’aie pas donné délibérément de fausses informations, j ’ai été cavalier avec la théo
rie. Pour ceux qui sont intéressés par le côté formel, il y a de nombreuses références bibliographiques de la littérature académique.
Le premier chapitre introduit la cryptographie, définit de nombreux termes et présente brièvement la cryptographie avant l’ère informatique.
Les chapitres 2 à 6 (première partie) présentent les protocoles cryptographiques. Les protocoles vont du plus simple (envoyer un message chiffré d ’une personne à l’autre) au plus complexe (jouer à pile ou face par téléphone) et à l’ésotérique (l’échange d ’argent électronique sûr et anonyme). Certains de ces protocoles sont évidents, d’autres sont presque ahurissants. La cryptographie permet de résoudre de nombreux problèmes que la plupart des gens n’ont jamais réalisé qu’il soit possible de les résoudre.
Les chapitres 7 à 10 (deuxième partie) présentent les techniques cryptographiques.
Les quatre chapitres de cette partie sont tous importants même pour l’utilisation la plus élémentaire de la cryptographie. Les chapitres 7 et 8 traitent des clefs : quelle doit être la longueur d’une clef pour qu’elle soit sûre, comment engendrer les clefs, comment stocker les clefs, comment détruire les clefs, etc. La gestion des clefs est la
partie la plus difficile de la cryptographie, et est souvent le tendon d’Achille de systèmes cryptographiques qui seraient sinon très sûrs. Le chapitre 9 présente différents moyens d’utiliser les algorithmes cryptographiques, et le chapitre 10 donne les tenants et les aboutissements des algorithmes : comment choisir, réaliser, et utiliser des algorithmes.
Les chapitres 11 à 23 (troisième partie) fournissent une liste d ’algorithmes, le livre dé
crit finalement les algorithmes. Le chapitre 11 donne des fondements mathématiques.
Ce chapitre n’est obligatoire que si vous êtes intéressé par les algorithmes à clef pu
blique. Si vous voulez seulement réaliser le DES (ou quelque chose de similaire), vous pouvez passer ce chapitre. Le chapitre 12 décrit le D E S : l’algorithme, son histoire, sa sécurité, et quelques variantes. Le chapitre 13, 14 et 15 décrivent d’autres algo
rithmes à clef secrète. Si vous voulez quelque chose de plus sûr que le DES, lisez la section sur ID E A ou sur le DES triple. Si vous voulez prendre connaissance de plu
sieurs algorithmes, dont certains pourraient être plus sûrs que le DES, lisez les trois chapitres. Les algorithmes 16 et 17 traitent des algorithmes de chiffrement en continu.
Le chapitre 18 concerne les fonctions de hachage à sens unique: M D 5 et SHA sont les plus communes bien que j ’en décrive beaucoup d ’autres. Le chapitres 19 décrit les algorithmes à clef publique, le chapitre 20 concerne les algorithmes de signature nu
mérique à clef publique. Les algorithmes importants sont R SA , D SA , Fi a t- Sh a m i r
et Dif f ie He l l m a n respectivement. Le chapitre 23 contient des algorithmes à clef publique et des protocoles plus ésotériques ; les mathématiques peuvent se compliquer : attachez votre ceinture.
Les chapitres 24 et 25 (quatrième partie) se tournent vers le monde réel de la cryp
tographie. Le chapitre 24 décrit quelques réalisations concrètes de ces algorithmes et de ces protocoles, tandis que chapitre 25 aborde le contexte politique qui entoure la cryptographie. Ceux-ci n’ont aucunement la prétention d’être exhaustifs.
Enfin, ce livre contient les codes sources de dix des algorithmes de la troisième partie.
Je n’ai pas pu inclure autant de codes que je l’aurait souhaité pour des raisons de limitation en place, et sans quoi les codes sources cryptographiques n’auraient pas pu être exportés. (Aussi surprenant que cela puisse paraître, le Département d’Etat amé
ricain a autorisé l’exportation de la première édition ce livre avec les codes sources qu’il contenait, mais a refusé l’exportation d’une disquette de codes sources contenant exac
tement les mêmes codes sources. Allez savoir.) Un jeu de disquettes inclus bien plus de codes sources que je ne pouvais en donner dans ce livre ; cela constitue probablement la plus grande bibliothèque de codes sources cryptographiques hors des institutions mili
taires. Je ne peux envoyer des disquettes de codes sources qu’aux citoyens américains ou canadiens vivant aux Etats-Unis ou au Canada, mais cela devrait heureusement changer un jour.
S’il y avait une critique à faire de ce livre, c’est que sa nature encyclopédique le rend moins lisible. C ’est vrai, mais je voulais offrir une seule référence pour ceux qui pour
raient rencontrer un algorithme dans la littérature académique ou dans un produit. À ceux qui s’intéressent plus à un cours d’introduction, je présente mes excuses. Beaucoup est fait dans ce domaine. C ’est la première fois que tant de choses ont été rassemblées sous un même chapeau. Même ainsi, il y a de nombreuses choses que le manque de place m ’a obligé à laisser de côté. J’ai essayé de couvrir les sujets que je trouvais soit importants, d ’intérêt pratique, ou intéressants. Quand je n’ai pu traiter un sujet en profondeur, j ’ai donné les références des publications qui le font.
J’ai fait la chasse aux erreurs du mieux que j ’ai pu, mais de l’avis général c ’est quasi
impossible de n’en laisser aucune. La seconde édition contient sûrement moins d’erreurs que la première. Je tiens à votre disposition une liste des errata qui est périodiquement postée au group USENET s c i . c r y p t . Si quelqu’un trouve une erreur, s’il vous plaît, avertissez-moi. Pour chaque erreur, la première personne qui me la signale recevra une copie gratuite de la disquette1.
1. N ote du traducteur : cette offre n ’est valable que p ou r l’édition am éricaine de l’ouvrage.
Remerciements
La liste des gens qui ont contribué à la réalisation de ce livre semble infinie mais ils méritent tous d ’être mentionnés. Je tiens à remercier Don Al v a r e z, Ross An d e r s s o n, Dave Ba l e n s o n, Karl Ba r r u s, Steve Be l l o v i n, Dan Be r n s t e i n, Eli Bi h a m, Joan Bo y a r, Karen Co o p e r, W hit Di f f i e, Joan Fe i g e n b a u m, Phil Ka r n, Neal Ko b l i t z, Xuejia La i, Tom Le r a n t h, Mike Ma r k o w i t z, Ralph Me r k l e, Bill Pa t t o n, Peter Pe a r s o n, Charles Pf l e e g e r, Ken Pi z z i n i, Bart Pr e n e e l, Mark Ri o r d a n, Joachim Sc h u r m a n, et Marc Sc h w a r t z pour avoir lu et corrigé tout ou partie du ma
nuscrit de la première édition; Marc VÀUCLAIR pour avoir traduit la première édi
tion en français ; Abe Ab r a h a m, Ross An d e r s o n, Dave Ba n i s a r, Steve Be l l o v i n, Edi Bi h a m, Matt Bis h o p, Matt Bl a z e, Gary Ca r t e r, Jan Co m e n i s c h, Claude Cr é p a u, Joan Da e m e n, Jorge Da v i l a, Ed Da w s o n, Whit Di f f i e, Cari El l i s o n, Joan Fe i g e n b a u m, Niels Fe r g u s o n, Matt Fr a n k l i n, Rosario Ge n n a r o, Dieter Go llm'a n n, Mark Go r e s k y, Richard Gr a v e m a n, Stuart Ha b e r, Jingman He, bob Ho g u e, Kenneth Iv e r s e n, Markus Ja k o b s s o n, Burt Ka l i s k i, Phil Ka r n, John Ke l s e y, John Ke n n e d y, Lars Kn u d s e n, Paul Ko c h e r, John La d w i g, Xuejia La i, Arjen Le n s t r a, Paul Le y l a n d, Mike Ma r k o w i t z, Jim Ma s s e y, Bruce McNa i r, William Hu g h Mu r r a y, Roger Ne e d h a m, Clif Ne u m a n, Kaisa Ny b e r g, Luke O ’ Co n n o r, Peter Pe a r s o n, René Pe r a l t a, Bart Pr e n e e l, Yisrael Ra d a i, Matt Ro b s h a w, Michael Ro e, Phil Ro g a w a y, Avi Ru b i n, Paul Ru b i n, Selwyn Ru s s e l l, Kazue Sa k o, Mahmoud Sa l m a s i z a d e h, Markus St a d l e r, Dmitry Ti t o v, Jimmy Up t o n, Marc Va u c l a i r, Serge Va u d e n a y, Gideon Yu v a l, Glen Zo r n, et plusieurs employé anonymes du gouvernement américain pour avoir lu et édité plusieurs parties de la seconde édition ; Lawrie Br o w n, Leisa Co n d i e, Joan Da e m e n, Peter Gu t m a n n, Alan In s l e y, Chris Jo h n s t o n, John Ke l s e y, Xuejia La i, Bill Le i n i n g e r, Mark Ma r k o w i t z, Richard Ou t e r b r i d g e, Peter Pe a r s o n, Ken Piz z i n i, Colin Pl u m b, Steph Ra v a n o n a, R S A Da t a Se c u r i t y, In c., Michael Ro e, Michael Wo o d, et Phil Zi m m e r m a n n pour m ’avoir fourni des codes sources ; Paul Ma cNe r l a n d pour avoir réalisé les figures de la première édition; Karen Co o p e r pour son travail de secrétaire de rédaction pour la seconde édition ; Beth Fr i e d m a n pour avoir revu et corrigé la seconde édition ; Carol Ke n n e d y pour avoir fait l’index de la seconde édi
tion; les lecteurs de s c i . c r y p t et de la liste de courrier électronique Cypherpunks pour avoir commenté des idées, avoir répondu à des questions et avoir corrigé des er
reurs dans la première édition ; Randy Se u s spour avoir fourni un accès à l’iNTERNET ; Jeff Du n t e m a n n et Jon Er i c k s o n pour m ’avoir aidé à commencer ; la famille In s l e y
pour avoir donné l’impulsion, les encouragements, le soutien, les conversations, l’amitié et les dîners ; et A T & T Be l l La b s pour m ’avoir licencié et pour avoir rendu tout cela possible. Ces personnes m ’ont aidé à créer un livre bien meilleur que ce que j ’aurais pu faire tout seul.
Bruce Sc h n e i e r
Oak Park, 111.
schneier@couterpane. coin
A propos de l’auteur
Bruce Sc h n e i e r est le président de Co u n t e r p a n e Sy s t e m s, une entreprise de conseil en cryptographie et sécurité en informatique, située à Oak Park dans l’Illinois aux États-Unis. Bruce Sc h n e i e r est aussi l’auteur de E-Mail Security (Jo h n W i l e y &
Fi l s, 1995) et Protect Your Macintosh ( Pe a c h p i t Pr e s s, 1994) ; et a écrit des dou
zaines douzaines d ’articles dans les principales revues. Il est l’un des éditeurs associé de Dr. Dobb’s Journal où il gère la colonne « Algorithms Alley », il est aussi éditeur associé de Computer and Communication Security Reviews. Bruce Sc h n e i e r officie dans le conseil de direction de VInternational Association for Cryptologie Research, il est membre du conseil consultatif du Electronic Privacy Information Center, et il fait parti du comité de programme du New Security Paradigms Workshop. En plus de tout cela, il trouve du temps pour donner de fréquents exposés sur la cryptographie, la sécurité en informatique, et la confidentialité.
Chapitre 1
Principes de base
1.1 Terminologie
Expéditeur et destinataire
Supposons qu’un expéditeur veut envoyer un message à un destinataire. Cet expéditeur veut envoyer le message de manière sûre: il veut s’assurer qu’aucune oreille indiscrète ne puisse s’informer du message.
Messages et chiffrement
Un message est appelé te x te en clair. Le processus de transformation d ’un message de telle manière à le rendre incompréhensible est appelé ch iffrem en t (ou e n cry p tio n ).
Le résultat de ce processus de chiffrement est appelé te x te chiffré (ou encore c r y p t o g ra m m e). Le processus de reconstruction du texte en clair à partir du texte chiffré est appelé déch iffrem en t (ou d é c r y p ta g e ). Ces différents processus sont illustrés par la figure 1.1.
FlG. 1.1 — Chiffrement et déchiffrement
L’art et la science de garder le secret de messages est appelé cry p to g ra p h ie pratiquée par des cry p to g ra p h e s. Les cry p ta n a ly ste s pratiquent la cry p ta n a ly se qui est l’art de décrypter des messages chiffrés. La branche des mathématiques qui traite de la cryp
tographie et de la cryptanalyse s’appelle la c r y p to lo g ie et ses pratiquants sont appelés cry p to lo g u e s. De nos jours, presque tous les cryptologues sont des mathématiciens théoriciens par la force des choses.
Le texte en clair est noté A L Ce peut être une suite de bits, un fichier de texte, un enregistrement de voix numérisé, ou une image vidéo numérique. Du point de vue de
l’ordinateur, A i n’est rien d’autre que de l’information binaire1. Le texte en clair peut être transmis ou stocké. Dans tous les cas, A i est le message à chiffrer.
Le texte chiffré est noté C. C ’est aussi de l’information binaire, parfois de la même taille que A i, parfois plus grand2. La fonction de chiffrement, notée E , transforme A i en C. Ce qui en notation mathématique s’écrit :
E ( M ) = C.
La fonction inverse, notée D, de déchiffrement transforme C en A i : D{C) = A i.
Comme le but de toutes ces opérations n’est rien d’autre que de retrouver le message en clair à partir de la version chiffrée de ce même message, l’identité suivante doit être vérifiée :
D ( E ( M ) ) = A i.
Authentification, intégrité, non désaveu
En plus de la confidentialité, on attend souvent de la cryptographie d’accomplir d ’autres tâches:
1. A u th e n tifica tio n . Le destinataire d ’un message doit pouvoir s’assurer de son origine. Un intrus ne doit pas être capable de se faire passer pour quelqu’un d ’autre.
2. In tég rité. Le destinataire d ’un message doit pouvoir vérifier que celui-ci n’a pas été modifié en chemin. Un intrus doit être incapable de faire passer un faux message pour un légitime.
3. N o n désaveu. Un expéditeur ne doit pas pouvoir, par la suite, nier à tort avoir envoyé un message.
Ce sont des exigences vitales en matière d ’interactions sociales par ordinateur; elles sont l’analogue des rencontres face à face. Quelqu’un est-il celui qu’il prétend être? La pièce d’identité, le permis de conduire, le diplôme de médecin, ou le passeport d’une personne sont-ils valides? Ce sont les questions auxquelles l’authentification, l’intégrité, et le non désaveu répondent.
Algorithmes cryptographiques
Un a lg o rith m e cry p to g ra p h iq u e est une fonction mathématique utilisée pour le chiffrement et le déchiffrement3.
1. A partir du chapitre suivant, ce livre ne traite que de cryptographie appliquée à de l ’inform ation binaire.
2. En com binant com pression et chiffrement, C peut être plus petit que A 4 . Toutefois, en général, le chiffrement à lui seul ne fait pas l’opération de com pression.
3. Généralement, un algorithm e cryptographiqu e com pren d deux fonctions: une pour chiffrer et l’autre pou r déchiffrer.
Si la sécurité d’un algorithme est basée sur le fait que celui-ci est tenu secret, on parlera alors d ’algorithme restrein t. De tels algorithmes ne présentent plus qu’un intérêt historique car de nos jours ils sont inadéquats pour les besoins actuels de sécurité.
Un groupe d ’utilisateurs important ou variable ne peut utiliser de tels algorithmes car chaque fois qu’un membre quitte le groupe, tous les autres doivent se mettre à utiliser un autre algorithme. Si quelqu’un révèle accidentellement le secret, tout le mende doit changer d’algorithme. Encore plus accablant, les algorithmes restreints ne permettent aucun contrôle de qualité et aucune standardisation. Chaque groupe d’utilisateurs doit avoir son propre algorithme. Un tel groupe ne peut pas utiliser de produits tout faits, matériels ou logiciels, vendus dans le commerce; un espion peut acheter le même produit et apprendre l’algorithme. Ils leur faut écrire leur propres algorithmes et les programmer eux même. S’il n’y a pas de bon cryptographe dans le groupe, ils ne sauront pas s’ils ont un algorithme sûr.
Malgré cela, les algorithmes restreints sont très populaires pour les applications à bas niveau de sécurité. Les utilisateurs ne réalisent pas, ou bien ne se soucient pas des problèmes de sécurité inhérents à leur système.
La cryptographie moderne résoud ce problème avec une clef, notée k. Cette clef peut prendre une des valeurs parmi un grand nombre de valeurs possibles. L ’ensemble des valeurs possibles d ’une clef est appelé esp a ce d e s clefs. Les opérations de chiffrement et de déchiffrement utilisent toutes les deux cette clef (i.e., elles dépendent de la clef et ceci est dénoté par l’indice k), aussi les fonctions s’écrivent de la manière suivante:
E k{ M ) = C D k(C) = M .
Ces fonctions vérifient la propriété suivante (voir la figure 1.2): : D k( Ek( M ) ) = M .
FlG. 1.2 - Chiffrement et déchiffrement avec une clef
Certains algorithme utilisent des clefs différentes pour le chiffrement et le déchiffre- ment(voir la figure 1.3). Dans ce cas, la clef de chiffrement, notée ki, est différente de la clef de déchiffrement, notée k,2- Les relations suivantes décrivent un tel cryptosys
tème:
E kl( M ) = C D k2(C) - M D k2(Ekl( M ) ) = M .
Avec ces algorihtmes, toute la sécurité réside dans la (ou les) clef(s), et non dans les détails de l’algorithme. Ceci implique que l’algorithme peut être publié et anlysé.
Clef de Clef de
chiffrement déchiffrement
Texte en clair 1 Texte chiffré
Texte en clair original
Chiffrement Déchiffrement.
F ig. 1.3 - Chiffrement et déchiffrement avec deux clefs
On peut fabriquer en masse un produit utilisant cet algorithme. Peu importe qu’une espionne connaisse votre algorihtme; si elle ignore votre clef, elle ne pourra pas lire vos messages.
Un cryptosystème est composé d ’un algorithme, et de tous les textes en clairs, textes chiffrés, et clefs possibles.
Algorithmes à clef secrète
Il y a deux types principaux d ’algorithmes à base de clefs : à clef secrète ou à clef pu
blique. Les a lg o rith m e s à c le f se crè te sont des algorithmes où la clef de chiffrement peut être calculée à partir de la clef de déchiffrement ou vice versa. Dans la plupart des cas, la clef de chiffrement et la clef de déchiffrement sont identiques. Pour de tels algorithmes, l’émetteur et le destinataire doivent se mettre d ’accord sur une clef à utiliser avant d’échanger des messages. Cette clef doit être gardée secrète. La sécurité d ’un algorithme à clef secrète repose sur la clef : si celle-ci est dévoilée, alors n’importe qui peut chiffrer ou déchiffrer des messages dans ce cryptosystème.
Le chiffrement et le déchiffrement dans un algorithme à clef secrète sont notés : E k{ M ) = C
D k(C) = M .
Les algorithmes à clef secrète peuvent être classés en deux catégories. Certains opèrent sur le message en clair un bit à la fois. Ceux-ci sont appelés a lg o rith m e s de chif
frem en t en con tin u. D ’autres opèrent sur le message en clair par groupes de bits.
Ces groupes de bits sont appelés b lo c s , et les algorithmes correspondants sont appelés a lgorith m es d e ch iffrem en t pa r b lo cs. Pour des algorithmes réalisés sur ordina
teur, la taille typique des blocs est de 64 bits — ce qui est assez grand pour interdire l’analyse et assez petit pour être pratique4.
Algorithmes à clef publique
Les a lg o rith m e s à c le f p u b liq u e sont différents. Ils sont conçus de telle manière que la clef de chiffrement soit différente de la clef de déchiffrement. De plus, la clef de déchiffrement ne peut pas être calculée (du moins en un temps raisonnable) à partir de la clef de chiffrement. De tels algorithmes sont appelés « à clef publique » parce que la clef de chiffrement peut être rendue publique : n ’importe qui peut utiliser la clef de
4. Autrefois, avant l’utilisation de l’ou til inform atique, les algorithm es manipulaient généralement le texte en clair caractère par caractère. V ous pou vez considérer de tels algorithm es com m e un chiffrement en continu d ’ un caractère à la fois.
chiffrement pour chiffrer un message mais seul celui qui possède la clef de déchiffrement peut déchiffrer le message chiffré résultant. Dans de tels systèmes, la clef de chiffrement est appelée c le f p u b liq u e et la clef de déchiffrement est appelée c le f p rivée. La clef privée est aussi parfois appelée c le f se crè te mais pour éviter toute confusion avec les algorithmes à clef secrète, ce terme ne sera pas utilisé ici.
Le chiffrement en utilisant la clef publique k est noté : E k( M ) = C .
Bien que les clefs publique et privée soient différentes, le déchiffrement avec la clef privée correspondante est noté :
D k(C) = M .
Parfois, les messages seront chiffrés avec la clef privée et déchiffrés avec la clef publique ; une telle technique est utilisée pour les signatures numériques (voir § 2.6). Malgré le risque de confusion possible, ces opérations seront notées :
E k{ M ) = C D k(C) = M .
Cryptanalyse
Le but principal de la cryptographie est de préserver le texte en clair de l’indiscré
tion des espions (aussi appelés adversaires, attaquants, intercepteurs, intrus, oppo
sants, oreilles indiscrètes, cryptanalystes, décrypteurs, ou tout simplement ennemis).
On suppose que les espions ont plein accès aux communications entre l’expéditeur et le destinataire.
La cryptanalyse est la science de la reconstitution du texte en clair sans connaître la clef. Une cryptanalyse réussie peut fournir soit le texte en clair, soit la clef. La cryptanalyse peut également mettre en évidence les faiblesses d’un cryptosystème qui peuvent éventuellement faciliter les attaques contre celui-ci5.
Une tentative de cryptanalyse est appelée a tta q u e. Un des axiomes fondamentaux de la cryptographie, énnoncé pour la première fois par l’hollandais A. Kerckhoffs au dixneuvième siècle, est que l’ennemi possède tous les détails de l’algorithme et qu’il ne lui manque que la clef spécifique utilisée pour le chiffrement [795]6. Bien que cela ne soit pas toujours le cas dans le monde réel de la cryptanalyse, c ’est toujours vrai dans le monde académique de la cryptanalyse, et c ’est de toute façon une bonne assertion dans le monde réel de la cryptanalyse. Si l’on ne sait pas casser un algorithme même en sachant comment il fonctionne, on ne sait certainement pas le casser sans cette connaissance.
Il y a quatre types génériques d’attaques cryptanalytiques. Il va de soi que chacune d’entre elles repose sur l’hypothèse que le cryptanalyste dispose de la connaissance complète de l’algorithme de chiffrement :
1. L ’a tta q u e à te x te ch iffré seu lem en t. Le cryptanalyste dispose du texte chif
fré de plusieurs messages, tous ayant été chiffrés avec le même algorithme. La
5. La perte d ’ une clef par des m oyens autres que la cryptanalyse est appelée com p rom ission . 6. Bien sûr, on peut supposer que la C IA n ’ a pas l’habitude de com m uniquer au M ossad quoique ce soit au sujet de ses algorithm es. B ien que le M ossad le découvre de tou te façon...
tâche du cryptanalyste est de retrouver le texte en clair du plus grand nombre de messages possible ou mieux encore de trouver la ou les clefs qui ont été utili
sées pour chiffrer les messages ce qui permettrait de déchiffrer d’autres messages chiffrés avec ces mêmes clefs.
Données: Ci = E k ( M i ) , C 2 = E k ( M 2),...,C i = E k ( M t ).
Requis: Soit A i i , M 2, - . , M i , soit k, soit un algorithme permettant de déduire M i +1 à partir de Ci+i = E k { M i +1).
2. L ’a tta q u e à te x te en cla ir con n u . Le cryptanalyste a non seulement accès aux textes chiffrés de plusieurs messages mais aussi aux textes en clair correspondants.
La tâche est de retrouver la ou les clef(s) utilisées pour chiffrer ces messages ou un algorithme qui permet de déchiffrer n’importe quel nouveau message chiffré avec la même clef.
D o n n é e s : M k,C i = E k { M i ) , M 2,C2 = E k ( M 2) , . . . , M t ,Ct — E k { M r).
R e q u is : Soit k, soit un algorithme permettant de déduire A f,+ i à partir de C i+ i = Ek{M.r+1).
3. L ’a tta q u e à te x te en cla ir c h o is i7. Non seulement le cryptanalyste a accès aux textes chiffrés et aux textes en clair mais de plus il peut choisir les textes en clair à chiffrer. Cette attaque est plus efficace que l’attaque à texte en clair connu car le cryptanalyste peut choisir des textes en clair spécifiques qui donneront plus d ’informations sur la clef. La tâche consiste à retrouver la ou les clefs utilisées pour chiffrer ces messages ou un algorithme qiii permette de déchiffrer n’importe quel nouveau message chiffré avec la même clef.
D o n n é e s : M i , C i = E k ( M \ ) , M 2,C2 = E k ( M 2) , . . . , M i , C t = E k ( M %), où le cryptanalyste choisit A 4 i , A 4 2,...,A 4 i.
R e q u is : Soit k, soit un algorithme permettant de déduire JAt+i à partir de f'ï+ l --
4. L ’a tta q u e à te x te en cla ir ch oisi a d a p ta tiv e 8. C ’est un cas particulier de l’attaque à texte en clair choisi. Non seulement le cryptanalyste peut choisir les textes en clair mais il peut également adapter ses choix en fonction des textes chiffrés précédents. Dans une attaque à texte en clair choisi, le cryptanalyste est juste autorisé à choisir un grand bloc de texte en clair au départ tandis que dans une attaque à texte en clair adaptative, il choisit un bloc initial plus petit et ensuite il peut choisir un autre bloc en fonction du résultat pour le premier et ainsi de suite.
Il y a au moins trois autres types d’attaques cryptanalytiques.
1. L ’ a tta q u e à te x te ch iffré ch oisi. Le cryptanalyste peut choisir différents textes chiffrés à déchiffrer. Les textes déchiffrés lui sont alors fournis. Par exemple, le cryptanalyste a un dispositif qui ne peut être désassemblé et qui fait du déchif
frement automatique, sa tâche est de retrouver la clef.
7. Parfois appelée « attaque à texte en clair choisi statique » par op p osition à la m éthode décrite au point suivant.
8. Parfois appelée « attaque à texte en clair choisi dynamique ».
D o n n é e s : C i,A li = £>a..(Ci),C2,A12 = D k (C 2) , —, C i , M t = D k (C i).
R e q u is : k.
Ce type d’ attaque est principalement applicable aux cryptosystèmes à clef pu
blique et sera illustrée dans le paragraphe 19.3. Une attaque à texte chiffré choisi fonctionne parfois pour les cryptosystèmes à clef secrète9.
2. L ’a tta q u e à c le f ch oisie. Cela n’est pas une attaque où le cryptanalyste peut choisir la clef; il est seulement au courant de quelques relations entre différentes clefs. C ’est étrange et obscur. Ce n’est pas très pratique. Nous y reviendrons au paragraphe 12.4.
Les attaques à texte en clair connu et les attaques à texte en clair choisi sont plus courantes que vous ne pourriez l’imaginer. Il arrive qu’un cryptanalyste dispose du texte en clair d ’un message ou qu’il soudoie quelqu’un pour chiffrer un message choisi.
Parfois, vous n’avez même pas besoin de soudoyer quelqu’un : si vous donnez un mes
sage à un ambassadeur, il y a de fortes chances pour que ce message soit chiffré et envoyé à son pays d ’origine pour évaluation. Beaucoup de messages ont des en-têtes et des conclusions qui peuvent être connues ou devinées par le cryptanalyste. Le code source chiffré est particulièrement vulnérable à cause de l’apparition fréquente des mots clefs: # d e fin e , s t r u c t , e ls e , retu rn . Le code exécutable chiffré souffre de la même vulnérabilité : dans ce cas ce sont les fonctions, les structures de boucles, etc. qui sont en cause. Il est connu que des attaques à texte en clair connu (et même à texte en clair choisi) ont été menées avec succès durant la Seconde Guerre mondiale. Le livre de David Ka h n [468, 469, 470] donne quelques exemples historiques de ce type d’attaques.
Et n’oubliez pas l’axiome de Kerckhoffs: ne comptez pas sur un cryptosystème dont la résistence réside dans le fait que l’ennemi ne sait pas comment fonctionne votre algorithme. Vous vous trompez si vous croyez qu’il vaut mieux garder secret les détails de votre algorithme plutôt que de laisser la communauté scientifique l’analyser. De plus, il serait naïf de penser que personne ne désassemblera votre code exécutable pour reconstruire votre algorithme10. Les meilleurs algorithmes dont nous disposions sont ceux qui ont étés rendus publics et attaqués par les meilleurs cryptographes au monde, et qui ne sont toujours pas cassés11.
Les cryptanalystes n’ont pas toujours accès à l’algorithme — c ’était le cas quand les Etats-Unis ont cassé le code diplomatique japonais, P U R P L E , pendant la Seconde Guerre mondiale [795] mais la plupart du temps ils y ont accès. Si l’algorithme est utilisé dans un programme commercial de sécurité, c ’est seulement une question de temps et d ’argent pour désassembler le programme et retrouver l’algorithme. Si l’ algorithme est utilisé dans un système militaire de communication, c’est aussi une question de temps et d ’argent pour acheter (ou voler) l’équipement et reconstruire l’algorithme. Il y a beaucoup de cas historiques où les cryptanalystes ne connaissaient pas l’algorithme ; parfois ils l’ont cassé, parfois ils ont échoué. Dans tous les cas il est irréaliste de compter sur la confidentialité de l’algorithme.
9. Une attaque â texte en clair choisi m enée de front avec une attaque â texte chiffré choisi est parfois appelée a tta q u e à te x te choisi.
10. C eci est arrivé en 1994 avec l ’algorithm e R C 4 voir la section 17.1
11. La « N ational Security A gen cy » garde ses algorithm es secrets, mais les meilleurs cryptographes travaillent dans ses murs. D e plus, ils s’échangent leurs algorithm es les uns les autres, s’ appuyant sur leurs pairs pour déceler tou te faiblesse dans leurs travaux.
Ceux qui clament avoir un système inviolable seulement parce qu’ils ne peuvent pas eux-mêmes le casser sont soit des génies, soit des fous. Malheureusement, il y en a plus de la seconde espèce de par le monde. Attention à ceux qui vantent les vertus de leur algorithme mais qui refusent de le rendre public : avoir confiance en leur algorithme est comme faire confiance à un remède de charlatan.
Pour différencier les bons algorithmes des mauvais, les bons cryptographes acceptent le regard critique de leurs pairs.
Sécurité des cryptosystèmes
Les différents algorithmes ont des niveaux de sécurité divers, plus ou moins difficiles à casser. Si le coût nécessaire pour casser un algorithme dépasse la valeur de l’information chiffrée, alors cet algorithme est probablement sûr. Si le temps nécessaire pour casser un algorithme est plus long que le temps durant lequel l’information chifrée doit rester secrète, alors cet algorithme est probablement sûr. S’il faut plus d’information pour casser l’algorithme qu’il n’en a été chiffré avec la même clef, alors votre algorithme est probablement sûr.
Je dis « probablement » car il est toujours possible qu’une nouvelle avancée soit faite en cryptanlyse. D ’un autre côté, une information perd de sa valeur avec le temps. Il est important que la valeur d’une information reste toujours inférieure au coût nécessaire pour briser la protection qui l’entoure.
Lars Knudsen a classé ces différentes manières de casser un algorithme. Les voici par ordre décroissant de sévérité:
1. C assage c o m p le t. Un cryptanalyste trouve la clef k telle que Dk(C) = Ai.
2. O b te n tio n g lo b a le . Un cryptanalyste trouve un algorithme de remplacement A équivalent à Dy.(C) sans connaître k.
3. O b te n tio n loca le. Un cryptanalyste trouve le texte en clair d ’un message chiffré qu’il a intercepté.
4. O b te n tio n d ’ in fo rm a tio n Un cryptanalyste glane quelque information à pro
pos du texte en clair ou de la clef. Cette information pourrait être certains bits de la clef, un renseignement sur la forme du texte en clair, et ainsi de suite.
Un algorithme est in co n d itio n n e lle m e n t sûr si — peu importe la quantité de texte chiffré dont le cryptanalyste dispose — il n’y a pas d ’information suffisante pour re
trouver le texte en clair. De fait, seul le masque jetable (voir § 1.5) est invulnérable étant donné des ressources infinies. Tous les autres cryptosystèmes sont vulnérables à une attaque à texte chiffré seulement, simplement en essayant toutes les clefs possible une par une et en regardant si le texte en clair résultant a un sens. Ceci s’appelle une attaque ex h a u stive (voir la section 7.1).
La cryptographie se préoccupe plus particulièrement de cryptosystèmes invulnérables par calcul. Un algorithme est considéré in vu ln éra b le par ca lcu l (ou parfois qualifié de fort), s’il ne peut pas être cassé avec les ressources disponibles actuellement et dans le futur. Ce qui constitue ces « ressources disponibles » est ouvert à l’interprétation.
On peut mesurer la compiexité(voir la section 7.1) d ’une attaque de l’une ou l’autre des manières suivantes:
1. C o m p le x it é en in fo rm a tio n . La quantité d’information nécessaire en entrée pour l’algorithme.
2. C o m p le x it é en tem p s. Le temps nécessaire pour achever l’attaque. Ceci est aussi appellé effort.
3. C o m p le x ité en e sp a ce. La quantité de mémoire nécessaire à l’attaque.
Comme règle de base, la complexité d ’une attaque est prise comme le minimum de ces trois facteurs. Pour certaines attaques, il faut jongler entre les trois complexités: une attaque peut être plus rapide au prix de besoins en mémoire plus importants.
Les complexités sont exprimées en un ordre de grandeur. Si un algorithme a, par exemple, un effort de 2128, alors il faut 2128 opérations pour le casser12.
Peu importe, si vous faites l’hypothèse que vous aurez suffisamment de puissance de calcul pour faire un million d ’opérations par seconde et que vous mettiez un million de processeurs en parallèle à la tâche, cela prendra encore 1019 années pour retrouver la clef pour l’exemple donné plus haut. Cela correspond à un milliard de fois l’âge de l’univers.
Tandis que la complexité d’une attaque est constante (c’est-à-dire, jusqu’à ce qu’un cryptanalyste trouve une meilleure attaque), la puissance de calcul est tout sauf constante. Durant ce dernier demi-siècle, il y a eu des progrès phénoménaux en puis
sance de calcul et il n’y pas de raison de penser que cela s’arrêtera si tôt. Nombre d ’attaques cryptanalytiques sont très bien adaptées aux machines parallèles : la tâche peut être morcelée en milliards de petites tâches et aucun des processeurs ne doit in- teragir avec les autres. Annoncer qu’un algorithme est sûr simplement parce qu’on ne peut pas le casser avec la technologie d’aujourd’hui est hasardeux. Les bons cryptosys
tèmes sont conçus pour être invulnérables même avec les puissances de calcul prévues d ’ici à de nombreuses années dans le futur.
Terminologie historique
Historiquement, on appelle c o d e un cryptosystème qui sert au niveau des unités linguis
tiques : mots, locutions, phrases, etc. Par exemple, le mot « SOEUR » peut être le texte chiffré pour la phrase entière : « TOURNER À GAUCHE DE 90 DEGRÉS » ; le mot
« NONNES » peut être le texte chiffré de « TOURNER À DROITE DE 90 DEGRÉS * ; et les mots « T R A LA LA » peuvent être le texte chiffré pour « OBUSIER » . Les codes de ce type ne sont pas décrits dans ce livre, ils sont présentés dans [795, 796]. Les codes sont utiles dans certaines circonstances seulement. Les chiffres sont utiles en toute cir
constance. S’il n’y a pas d ’entrée pour le mot « TR O PPO » dans le carnet de codage, il ne peut pas être « codé ». On peut tout chiffrer à l’aide d’un chiffre.
1.2 Steganographie
La steg a n og ra p h ie sert à cacher des messages secrets dans d’autres messages, de sorte que l’existence même du secret est dissimulée. Généralement, l’expéditeur écrit
12. Ces opérations peuvent être com plexes et coûteuses en tem ps de calcul.