Vous êtes sur la page 1sur 737

Bruce Schneier

Cryptographie applique
Deuxime dition
Protocoles, algorithmes
et codes cource en C

Traduction de Laurent Viennot

Table des matires


P r fa ce
Comment lire ce livre ...........................................................................................
R em erciem ents.......................................................................................................

xiii
xiv
xvii

p ro p o s de l au teu r

x ix

P rin cip e s d e base


1.1 Terminologie ................................................................................................
1.2 Steganographie.............................................................................................
1.3 Substitution et transposition.......................................................................
1.4
Ou exclusif s i m p l e .....................................................................................
1.5 Masque j e t a b l e .................
1.6 Algorithmes inform atiques..........................................................................
1.7 Grands nom bres.............................................................................................

Protocoles cryptographiques

1
1
9
10
14
15
18
18

21

B riqu es lm en taires
2.1
Introduction aux p r o t o c o le s ......................................................................
2.2
Communications laide d un cryptosystme clef s e cr te...................
2.3
Fonctions sens unique ............................................................................
2.4
Fonctions de hachage sens u n iqu e..........................................................
2.5
Communications laide d un cryptosystme clef p u b liq u e...............
2.6
Signatures num riques................................................................................
2.7
Signatures numriques avec chiffrement................................................
2.8
Gnrateurs alatoires et pseudo-alatoires.............................................

23
23
30
31
32
33
37
44
47

P r o to c o le s lm en taires
3.1
change de clefs .........................................................................................
3.2
Authentification............................................................................................
3.3
Authentification et change de c le fs .........................................................
3.4
Analyse formelle des protocoles d authentification et d change de clefs
3.5
Cryptographie clef publique clefs multiples.......................................
3.6
Secret m orcel...............................................................................................
3.7
Secret r p a r t i...............................................................................................

51
51
56
61
70
74
75
77

TABLE DES MATIRES


3.8

Protection cryptographique de bases dedonnes....................................

80

P r o to c o le s in term diaires
4.1
Services de datation
................................................................................
4.2
Canal su b lim in a l.........................................................................................
4.3
Signatures numriques incontestables.......................................................
4.4
Signatures numriques vrificateurd d i ...............................................
4.5
Signatures par procuration.........................................................................
4.6
Signatures collectives...................................................................................
4.7
Signatures numriques Fail-Stop ..... .....................................................
4.8
Calcul avec donnes chiffres......................................................................
4.9
Mise en gage ...............................................................................................
4.10 Jouer pile ou f a c e ......................................................................................
4.11 Poker la v e u g le .........................................................................................
4.12 Accumulateurs sens unique ...................................................................
4.13 Divulgation tout ou rien de s e c r e t s ..........................................................
4.14 Dpt de c le f s ...............................................................................................

81
81
85
87
88
89
90
91
92
92
95
99
102
103
103

P r o to c o le s avancs
5.1
Preuves divulgation nulle ......................................................................
5.2
Identification par preuve divulgation n u lle ..........................................
5.3
Signatures en aveugle ................................................................................
5.4
Cryptographie clef publique based identification . . . . . . . . .
5.5
Transfert in con scien t..................................................................................
5.6
Signatures in conscien tes............................................................................
5.7
Signature simultane de co n tr a t................................................................
5.8
Courrier lectronique certifi......................................................................
5.9
Echange simultan de s e c r e t s ...................................................................

109
109
117
120
123
124
126
127
131
132

P r o to c o le s sotriq u es
6.1
Elections sres ............................................................................................
6.2
Calcul rparti s r .........................................................................................
6.3
Diffusion de messages anonymes
.
6.4
Argent lectronique .
. . . . . .

135
135
144
148
150

II
7

Techniques cryptographiques

161

L on g u eu r des clefs
163
7.1
Longueur des clefs secrtes.........................................
............
163
7.2
Longueur des clefs publiques......................................................................
170
7.3
Comparaison de la longueur des clefssecrtes et des clefs publiques .
178
7.4
Attaques des anniversaires contre unefonction de hachage sens unique 178
.....................................................
179
7.5
Quelle doit tre la longueur de clef?
7.6
Avertissement...............................................................................................
180

TABLE DES MATIRES

vii

G e stio n des clefs


181
8.1
Gnration de c l e f s .........................................................................................
182
8.2
Espaces des clefs non linaires......................................................................
188
188
8.3
Transfert de c l e f s ............................................................................................
8.4
Vrification de clefs ......................................................................................
190
8.5
Utilisation des c le fs .........................................................................................
192
8.6
Mise jour des c l e f s ......................................................................................
193
87
Stockage des c le f s ............................................................................................
193
8.8
Duplicata des c l e f s .........................................................................................
194
195
8.9
Clefs co m p ro m ise s.........................................................................................
8.10 Longvit des c l e f s .........................................................................................
196
8.11 Destruction des c l e f s ......................................................................................
197
198
8.12 Gestion des clefs pour la cryptographie clef p u b liq u e ..........................

T y p e s et m o d e s d a lgorith m es
9.1 Carnet de codage lectronique....................................................................
9.2 Bloc rejou ...................................................................................................
9.3 Mode de chiffrement avec chanage de b l o c s ...........................................
9.4 Algorithmes de chiffrement en c o n t in u ....................................................
9.5 Chiffrement autosynchrone en c o n t i n u .......................................................
9.6 Chiffrement rtroaction .............................................................................
9.7 Chiffrement synchrone en co n tin u ................................................................
9.8 Mode de rtroaction de s o r t i e ................................................
9.9 Mode compteur .........................................................................................
9.10 Autres m o d e s ..................................................................................................
9.11 Choix dun mode opratoire de chiffrement..................................
9.12 Intercalation.....................................................................................................
9.13 Chiffrement par blocs vs chiffrement en co n tin u .......................................

201
202
203
205
209
211
212
214
216
219
220
222
223
225

10 U tilisa tion des a lgorith m es


227
10.1 Choix dun a lgorith m e...................................................................................
228
10.2 La cryptographie clef publique vs la cryptographie clef secrte . .
230
10.3 Chiffrement des canaux de com m unication................................................
230
10.4 Chiffrement des donnes des fins de stockage ......................................
235
10.5 Chiffrement matriel vs chiffrement logiciel .............................................
237
10.6 Compression, codage et chiffrem ent.............................................................
240
10.7 Dtection du chiffrem ent...............................................................................
241
10.8 Cacher du texte chiffr dans du texte c h iffr .............................................
242
10.9 Destruction din fo rm a tio n ............................................................................
243

III

Algorithmes cryptographiques

245

11 R u d im en ts m ath m a tiqu es
247
11.1 Thorie de lin form a tion ...............................................................................
247
11.2 Thorie de la com p lex it...............................................................................
251
11.3 Thorie des n o m b r e s .....................................................................................
256
11.4 Factorisation .................................................................................................. 271

TABLE DES MATIRES


11.5
11.6

Gnration de nombres premiers ............................................................


Logarithmes discrets dans un corps fini .
. .

274
278

12 Le D E S
12.1 H istoriqu e......................................................................................................
12.2 Description du DES.......................................................................................
12.3 Niveau de scurit du D E S

12.4 Cryptanalyse diffrentielle et linaire


............
.
. .
12.5 Les critres rels de conception
. . . . . .
12.6 Variantes du DES ........................
12.7 A quel point le DES est-il sr de nos j o u r s ?
. .

281
281
286
296
302
. . 311
312
318

13 A u tres a lgorith m es d e ch iffrem en t par b lo cs


13.1 L ucifer .
.................................................................
13.2 M a d r y g a ........
13.3 N e w D E S .....................................................................................................
13.4 F E A L ............................................................................................................
13.5 R E D O C .........................................................................................................
13.6 L O K I ............................................................................................................
13.7 K hufu et K hafre ........................................................................................
13.8 R C 2 ...............................................................................................................
13.9 I D E A ............................................................................................................
13.10 M M B ...............................
.............................................................
13.11 C A - 1 . 1 .........................................................................................................
13.12 S k i p j a c k .....................................................................................................

321
321
322
325
325
331
332
335
337
338
345
346
347

14 E n co re d au tres algorith m es de ch iffrem ent par b lo c s


14.1 G O S T ...........................................................................................................
14.2 C A S T ............................................................................................................
14.3 B l o w f is h .....................................................................................................
14.4 S A F E R ....................................... ................................................................
14.5 3 - W A Y ................................
..................................................................
14.6 C R A B ...........................................................................................................
14.7 SX A L 8 et M B A L .....................................................................................
14.8 R C 5 ..............................................................................................................
14.9 Autres algorithmes dechiffrementpar blocs . .
14.10 Thorie des algorithmes dechiffrement par blocs .
14.11 Utilisation de fonction dehachage sens unique......................................
14.12 Choisir un algorithme de chiffrement par blocs
.

351
351
354
355
359
361
362
364
364
366
366
372
375

15 C o m b in a iso n d algorith m es de ch iffrem ent par b lo cs


15.1 Surchiffrement double
.....................................................................
15.2 Surchiffrement t r i p l e ............................................
15.3 Doublement de la longueur deb l o c ...........................................................
15.4 Autres schmas de surchiffrement .
15.5 Troncature de clef (dans C D M F )
.
15.6 Blanchim ent..................................................................................................
15.7 Mise en cascade de plusieursalgorithm es.................................................

377
377
379
384
384
387
387
388

TABLE DES MATIRES


15.8

IX

Combiner plusieurs algorithmes de chiffrement par b l o c s ...................

389

16 G n rateu rs de su ites ala toires et ch iffrem ent en con tin u


16.1 Gnrateurs pseudo-alatoires de suites...................................................
16.2 Registres dcalage rtroaction lin a ir e .............................................
16.3 Conception et analyse dalgorithmes de chiffrement en continu . . . .
16.4 Chiffrement en continu base de R D R L ................................................
16.5
A 5 ................................................................................................................
16.6
H ugues X P D / K P D ................................................................................
16.7
N a n o t e q ...................................................................................................
16.8
R a m b u t a n ................................................................................................
16.9
Gnrateurs a d d i t if s ................................................................................
16.10 G ifford ...................................................................................................
16.11 A lgorithm e M ......................................................................................
16.12 P K Z IP ......................................................................................................

391
391
395
402
403
412
413
413
414
414
416
417
417

17 A u tre s algorith m es d e ch iffrem en t e n con tin u et gnrateurs


d e suites v raim en t alatoires
17.1
R C 4 .............................................................................................................
17.2
S E A L ..........................................................................................................
17.3
W A K E .......................................................................................................
17.4
Registres dcalage rtroaction avec r e t e n u e ..................................
17.5
Chiffrement en continu base de R D R R ..............................................
17.6
Registres dcalage rtroaction non linaire.....................................
17.7
Autres algorithmes de chiffrement en c o n t i n u .....................................
17.8
Approche par la thorie des systm es....................................................
17.9
Approche par la thorie de la com plexit..............................................
17.10 Autres approches la conception d algorithmes de chiffrement en conti
nu .................................................................................................................
17.11 Chiffrement en continu en cascade ........................................................
17.12 Choisir un algorithme de chiffrement en con tin u ..................................
17.13 Gnration de plusieurs flux partir dun seul gnrateur pseudo
alatoire de suites........................................................................................
17.14 Gnrateurs de suites vraiment alatoires ...........................................
18 F on ction s d e hachage sens u n iqu e
18.1
Introduction................................................................................................
18.2
Snefru
...................................................................................................
18.3
N -H a s h ......................................................................................................
18.4
M D 4 .............................................................................................................
18.5
M D 5 ............................................................................................................
18.6
M D 2 ............................................................................................................
18.7
Algorithme sr de hachage SHA ..........................................................
18.8
R I P E - M D ................................................................................................
18.9
H A V A L ......................................................................................................
18.10 Autres fonctions de hachage sens u n iq u e ...........................................
18.11 Utilisation d algorithmes de chiffrement par b l o c s ..............................
18.12 Utilisation d algorithmes clef p u b liq u e ..............................................

419
419
420
423
424
427
433
435
436
437
439
441
442
442
444
453
453
455
457
458
460
465
465
469
469
470
471
479

TABLE DES MATIRES


18.13 Choix dune fonction de hachage sensu n i q u e ....................................
18.14 Codes d authentification de m essages.....................................................

479
479

19 A lg o rith m e s c le f p u b liq u e
19.1 Introduction................................................................................................
19.2 Algorithmes em pilem ent........................................................................
19.3 R S A .............................................................................................................
19.4 P ohlig - H ellman
.................................................................................
19.5 R a b i n ..........................................................................................................
19.6
E l G a m a l ...................................................................................................
19.7 M c E liece .................................................
19.8 Cryptosystmes courbes elliptiqu es.....................................................
19.9
L U C .............................................................................................................
19.10 Automates fin is ..........................................................................................

485
485
486
491
499
500
501
504
505
506
507

20 A lg o rith m e s d e sign atu re n u m riqu e c le f p u b liq u e


20.1
Algorithme de signature numrique D SA
............
20.2
Variantes de D SA ....................................................................................
20.3 Algorithme de signature numrique G O S T
.
20.4
Schmas de signature numrique basede logarithmes discrets .
.
20.5 O ng Schnork S h a m ir
. .
20.6
E S I G N ......................................................................................................
20.7
Automates cellulaires.................................................................................
20.8
Les autres algorithmes clef publique ................................................

509
509
520
522
523
525
526
527
527

21 Schm as d id en tifica tion


531
531
21.1
F eige - F iat - S hamir ..............................................................................
21.2
G uillou - Q u i s q u a t e r ...........................................................................
536
21.3
Sc h n o r r ....................................................................................................
538
21.4
Convertir un schma d identification en un schma de signature num
rique ..............................................................................................................
540
22 A lg o rith m e s d ch an ge d e clefs
22.1
D iffie - H ellman ....................................................................................
22.2
Protocole point p o in t.............................................................................
22.3
Protocole trois passes de Sh a m i r .......................................................
22.4
C O M S E T ....................................................................................................
22.5
change de clefs chiffr.............................................................................
22.6
Ngociation de clef fortifie ....................................................................
22.7
Distribution de clef de confrence et diffusion de s e c r e t.....................

541
541
544
544
545
546
550
551

23 A lg o rith m e s sp ciau x p o u r p r o to c o le s
23.1
Cryptographie clef publique clefs multiples....................................
23.2
Algorithmes de partage de s e c r e t ..........................................................
23.3
Canal s u b lim in a l.......................................................................................
23.4
Signatures numriques incontestables....................................................
23.5
Signatures numriques vrificateur d d i ...........................................
23.6
Calcul avec donnes chiffres....................................................................

555
555
556
560
565
567
569

TABLE DES MATIRES


23.7
23.8
23.9
23.10
23.11
23.12
23.13
23.14
23.15
23.16

IV

Pile ou face quitable.................................................................................


Accumulateurs sens unique .................................................................
Divulgation tout ou rien de s e c r e t s ........................................................
Cryptosystmes quitables et sret intgre . . .
.
Preuves divulgation nulle ....................................................................
Signatures en aveugle.................................................................................
Transfert in con scien t.................................................................................
Calcul rparti s r .......................................................................................
Chiffrement prob a b iliste..........................................................................
Cryptographie quantique..........................................................................

Le monde rel

24 E x em p les d e ra lisation
24.1 Protocole IBM de gestion de clefs secrtes...........................................
24.2 M I T R E N E T ..............................................................................................
24.3
RNIS ..........................................................................................................
24.4 S T U - I I I .......................................................................................................
24.5
K e r b e r o s ....................................................................................................
24.6 K r y p t o K n i g h t .......................................................................................
24.7
SESAME ....................................................................................................
24.8
Architecture cryptographique commune dI B M ..................................
24.9
Environnement dauthentification I S O ..................................................
24.10 Privacy-Enhanced Mail ( P E M ) ..........................................................
24.11 Message Security Protocol (M SP ) ....................................................
24.12 Pretty G ood Privacy (P G P ) ...........................................................
24.13 Cartes p u c e ..............................................................................................
24.14 Public-Key Cryptography Stan
dards (P K C S) ........................................................................................
24.15 Systme de paiement lectronique u n iv e r s e l........................................
24.16 C l i p p e r .......................................................................................................
24.17 C a p s t o n e ....................................................................................................
24.18 Modle 3600 du dispositif de scurit du tlphone d A T & T . . . .

xi
570
572
572
575
577
579
579
580
582
584

587
589
589
590
591
593
594
600
600
601
602
606
612
613
615
616
618
620
622
623

25 P o litiq u e
625
625
25.1 National Security Agency ( N S A ) ......................................................
25.2 National Computer Security Center (N C SC )....................................
627
25.3 National Institute of Standards and Technology ( N I S T ) ..............
628
25.4
R SA D ata 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/IEC 9979 .........................................................................................
636
25.10 Groupes industriels, de dfense des liberts civiles, et professionnelles 637
25.11 S c i .c r y p t ...................................................................................................
638
25.12 C y p h e r p u n k s ..........................................................................................
638

xii

TABLE DES MATIRES


25.13
25.14
25.15
25.16

Brevets.........................................................................................................
Rglementation amricaine
lexportation ..................................
Importation et exportation
decryptographie...............................
L g a lit ......................................................................................................

P o stfa ce de M a tt B la ze

Code source

639
639
647
648
651

655

D E S ..........................................................................................................................
657
L O K I 9 1 .................................................................................................................
675
I D E A .......................................................................................................................
685
G O S T ....................................................................................................................... N701
B l o w f i s h ................................................................................................................
711
3-W a y .......................................................................................................................
721
R C 5 ..........................................................................................................................
727
A 5 .............................................................................................................................
729
S E A L .......................................................................................................................
735
L ex iq u e anglaisfranais

741

B ib lio g ra p h ie

747

In d ex

827

Prface
Il existe deux types de cryptographie dans le monde: la cryptographie qui empche
votre petite sur de lire vos fichiers, et la cryptographie qui empche les principaux
gouvernements de lire vos fichiers. Ce livre traite de la deuxime.
Je prends une lettre, lenferme dans un coffre et cache ce coffre quelque part dans New
York... si je vous demande ensuite de lire la lettre, il nest pas question de scurit:
cest de lobscurit. Autre exemple : je prends une lettre, lenferme dans un coffre et
vous donne le coffre avec ses spcifications de conception et une centaine dautres
coffres identiques avec leurs combinaisons, de telle manire que vous et les meilleurs
perceurs de coffres-forts puissiez tudier le mcanisme de verrouillage... si vous ne
pouvez toujours pas ouvrir le coffre contenant la lettre, il est alors question de scurit.
Pendant de nombreuses annes, ce type de cryptographie tait le domaine exclusif des
militaires. La National Security Agency amricaine et ses contreparties en ex-Union
sovitique, au Royaume-Uni, en France, en Isral, et partout ailleurs, ont dpens des
milliards de dollars au jeu trs srieux 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 protger sa propre vie prive vis--vis de
ces gouvernements.
Durant ces vingt dernires annes, il y a eu une explosion de recherche acadmique
publique en cryptographie. Alors que la cryptographie classique est utilise depuis
longtemps par des citoyens ordinaires, la cryptographie par ordinateur tait le domaine
rserv des militaires depuis la Seconde Guerre mondiale. De nos jours, la cryptographie
la pointe de lart est pratique en dehors de la protection des murs des agences
militaires. Le profane peut maintenant employer des techniques cryptographiques qui
le protgent contre les adversaires les plus puissants un niveau de scurit qui
pourrait mme le protger des agences militaires pour plusieurs annes venir.
Est-ce que lindividu moyen a besoin de ce type de scurit? Je laffirme. Il peut prpa
rer une campagne politique, il peut discuter de ses impts, ou avoir une liaison illicite.
Il peut concevoir un nouveau produit, discuter dune stratgie de commercialisation,
ou prparer une prise de pouvoir commerciale agressive. Il peut vivre dans un pays
qui ne respecte pas le droit la vie prive de ses citoyens. Il peut faire quelque chose
quil estime ne pas tre illgal mais qui lest. Peu importe les raisons, ses donnes et
ses communications sont personnelles, prives et ce nest laffaire de personne dautre
part lui.
Ce livre est publi en des temps troubles. Ladministration C l i n t o n a adopt le pro
gramme Escrowed Encryption Standard (qui repose sur la puce CLlPPERet la carte
F o r t e z z a ) et le projet de loi Digital Telephony . Ces deux initiatives tendent

xiv

Prface

donner au gouvernement la possibilit de mener des surveillances lectroniques.


Cela repose sur la dangeureuse hypothse orwelienne que le gouvernement a le droit
d couter les communications prives, et quil 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 lautorisation des tribunaux. Mais c est la premire 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 prventive et unilatrale dusurper des
pouvoirs qui relevaient de chacun.
C l ip p e r et la loi Digital Telephony ne protgent pas la vie prive : elles obligent
les individus avoir confiance inconditionnellement dans le Gouvernement quant au
respect de leur vie prive. Elle met lhypothse que le Gouvernement fait partie des
bons et que tous les citoyens font partie des mchants. Les mmes autorits lgales qui
ont plac des coutes illgales sur les lignes tlphoniques de Martin Luther King Jr.
peuvent facilement espionner un tlphone protg par une puce C l ip p e r . Durant ces
cinq dernires annes, les autorits de police locales ont t poursuivies pnalement ou
civilement dans de nombreuses juridictions y compris le Maiyland, le Connecticut, le
Vermont, la Gorgie, le Missouri et le Nevada pour avoir plac des coutes illgales.
C est une mauvaise ide de dployer une technologie qui pourrait un jour aider un tat
policier.
On peut en tirer la leon quil est insuffisant de se protger avec des lois, il faut se
protger avec les Mathmatiques. Le chiffrement est trop important pour tre laiss au
gouvernement.
Ce livre vous donne les moyens de prserver votre vie prive ; les appareils de chiffrement
peuvent tre dclars illgaux, mais linformation ne le sera jamais.

Comment lire ce livre


Jai crit Applied Cryptography comme un ouvrage de rfrence exhaustif sur la cryp
tographie moderne. Jai privilgi la lisibit du texte sans pour autant sacrifier lexac
titude et la prcision. Ce livre ne se veut pas un trait mathmatique. Bien que je
naie pas donn dlibrment de fausses informations, j ai t cavalier avec la tho
rie. Pour ceux qui sont intresss par le ct formel, il y a de nombreuses rfrences
bibliographiques de la littrature acadmique.
Le premier chapitre introduit la cryptographie, dfinit de nombreux termes et prsente
brivement la cryptographie avant lre informatique.
Les chapitres 2 6 (premire partie) prsentent les protocoles cryptographiques. Les
protocoles vont du plus simple (envoyer un message chiffr d une personne lautre) au
plus complexe (jouer pile ou face par tlphone) et lsotrique (lchange d argent
lectronique sr et anonyme). Certains de ces protocoles sont vidents, dautres sont
presque ahurissants. La cryptographie permet de rsoudre de nombreux problmes que
la plupart des gens nont jamais ralis quil soit possible de les rsoudre.
Les chapitres 7 10 (deuxime partie) prsentent les techniques cryptographiques.
Les quatre chapitres de cette partie sont tous importants mme pour lutilisation la
plus lmentaire de la cryptographie. Les chapitres 7 et 8 traitent des clefs : quelle
doit tre la longueur dune clef pour quelle soit sre, comment engendrer les clefs,
comment stocker les clefs, comment dtruire les clefs, etc. La gestion des clefs est la

Prface

xv

partie la plus difficile de la cryptographie, et est souvent le tendon dAchille de systmes


cryptographiques qui seraient sinon trs srs. Le chapitre 9 prsente diffrents moyens
dutiliser les algorithmes cryptographiques, et le chapitre 10 donne les tenants et les
aboutissements des algorithmes : comment choisir, raliser, et utiliser des algorithmes.
Les chapitres 11 23 (troisime partie) fournissent une liste d algorithmes, le livre d
crit finalement les algorithmes. Le chapitre 11 donne des fondements mathmatiques.
Ce chapitre nest obligatoire que si vous tes intress par les algorithmes clef pu
blique. Si vous voulez seulement raliser le DES (ou quelque chose de similaire), vous
pouvez passer ce chapitre. Le chapitre 12 dcrit le D E S : lalgorithme, son histoire,
sa scurit, et quelques variantes. Le chapitre 13, 14 et 15 dcrivent dautres algo
rithmes clef secrte. Si vous voulez quelque chose de plus sr 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 srs 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 D5 et SHA sont
les plus communes bien que j en dcrive beaucoup d autres. Le chapitres 19 dcrit les
algorithmes clef publique, le chapitre 20 concerne les algorithmes de signature nu
mrique clef publique. Les algorithmes importants sont R SA , D SA , F ia t - S h a m ir
et D if f ie H e l l m a n respectivement. Le chapitre 23 contient des algorithmes clef
publique et des protocoles plus sotriques ; les mathmatiques peuvent se compliquer :
attachez votre ceinture.
Les chapitres 24 et 25 (quatrime partie) se tournent vers le monde rel de la cryp
tographie. Le chapitre 24 dcrit quelques ralisations concrtes de ces algorithmes et
de ces protocoles, tandis que chapitre 25 aborde le contexte politique qui entoure la
cryptographie. Ceux-ci nont aucunement la prtention dtre exhaustifs.
Enfin, ce livre contient les codes sources de dix des algorithmes de la troisime partie.
Je nai pas pu inclure autant de codes que je laurait souhait pour des raisons de
limitation en place, et sans quoi les codes sources cryptographiques nauraient pas pu
tre exports. (Aussi surprenant que cela puisse paratre, le Dpartement dEtat am
ricain a autoris lexportation de la premire dition ce livre avec les codes sources quil
contenait, mais a refus lexportation dune disquette de codes sources contenant exac
tement les mmes 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 bibliothque de codes sources cryptographiques hors des institutions mili
taires. Je ne peux envoyer des disquettes de codes sources quaux citoyens amricains
ou canadiens vivant aux Etats-Unis ou au Canada, mais cela devrait heureusement
changer un jour.
Sil y avait une critique faire de ce livre, cest que sa nature encyclopdique le rend
moins lisible. C est vrai, mais je voulais offrir une seule rfrence pour ceux qui pour
raient rencontrer un algorithme dans la littrature acadmique ou dans un produit.
ceux qui sintressent plus un cours dintroduction, je prsente mes excuses. Beaucoup
est fait dans ce domaine. C est la premire fois que tant de choses ont t rassembles
sous un mme chapeau. Mme ainsi, il y a de nombreuses choses que le manque de
place ma oblig laisser de ct. Jai essay de couvrir les sujets que je trouvais soit
importants, d intrt pratique, ou intressants. Quand je nai pu traiter un sujet en
profondeur, j ai donn les rfrences des publications qui le font.
Jai fait la chasse aux erreurs du mieux que j ai pu, mais de lavis gnral c est quasi

xvi

Prface

impossible de nen laisser aucune. La seconde dition contient srement moins derreurs
que la premire. Je tiens votre disposition une liste des errata qui est priodiquement
poste au group USENET s c i . c r y p t . Si quelquun trouve une erreur, sil vous plat,
avertissez-moi. Pour chaque erreur, la premire personne qui me la signale recevra une
copie gratuite de la disquette1.

1. N ote du traducteur : cette offre n est valable que pou r ldition am ricaine de louvrage.

Prface

xvii

Remerciements
La liste des gens qui ont contribu la ralisation de ce livre semble infinie mais ils
mritent tous d tre mentionns. Je tiens remercier Don A l v a r e z , R oss A n d e r s s o n ,
Dave B a l e n s o n , Karl B a r r u s , Steve B e l l o v i n , Dan B e r n s t e i n , Eli B i h a m , Joan
B o y a r , Karen C o o p e r , W hit D if f ie , Joan F e i g e n b a u m , Phil K a r n , Neal K o b l i t z ,
Xuejia L a i , Tom L e r a n t h , Mike M a r k o w i t z , Ralph M e r k l e , Bill P a t t o n , Peter
P e a r s o n , Charles P f l e e g e r , Ken P iz z i n i , Bart P r e n e e l , Mark R io r d a n , Joachim
S c h u r m a n , et Marc S c h w a r t z pour avoir lu et corrig tout ou partie du ma
nuscrit de la premire dition; Marc VUCLAIR pour avoir traduit la premire di
tion en franais ; Abe A b r a h a m , Ross A n d e r s o n , Dave B a n i s a r , Steve B e l l o v i n ,
Edi B i h a m , Matt B is h o p , Matt B l a z e , Gary C a r t e r , Jan C o m e n is c h , Claude
C r p a u , Joan D a e m e n , Jorge D a v i l a , Ed D a w s o n , Whit D if f ie , Cari E l l is o n ,
Joan F e i g e n b a u m , Niels F e r g u s o n , Matt F r a n k l i n , Rosario G e n n a r o , Dieter
G ollm ' a n n , Mark G o r e s k y , Richard G r a v e m a n , Stuart H a b e r , Jingman H e , bob
H o g u e , Kenneth I v e r s e n , Markus J a k o b s s o n , Burt K a l i s k i , Phil K a r n , John
K e l s e y , John K e n n e d y , Lars K n u d s e n , Paul K o c h e r , John L a d w i g , Xuejia L a i ,
Arjen L e n s t r a , Paul L e y l a n d , Mike M a r k o w i t z , Jim M a s s e y , Bruce M c N a i r ,
William H u g h M u r r a y , Roger N e e d h a m , Clif N e u m a n , Kaisa N y b e r g , Luke
O C o n n o r , Peter P e a r s o n , Ren P e r a l t a , Bart P r e n e e l , Yisrael R a d a i , Matt
R o b s h a w , Michael R o e , Phil R o g a w a y , Avi R u b i n , Paul R u b i n , Selwyn R u s s e l l ,
Kazue S a k o , Mahmoud S a l m a s i z a d e h , Markus S t a d l e r , Dmitry T i t o v , Jimmy
U p t o n , Marc V a u c l a i r , Serge V a u d e n a y , Gideon Y u v a l , Glen Z o r n , et plusieurs
employ anonymes du gouvernement amricain pour avoir lu et dit plusieurs parties
de la seconde dition ; Lawrie B r o w n , Leisa C o n d i e , Joan D a e m e n , Peter G u t m a n n ,
Alan I n s l e y , Chris J o h n s t o n , John K e l s e y , Xuejia L a i , Bill L e i n i n g e r , Mark
M a r k o w i t z , Richard O u t e r b r i d g e , Peter P e a r s o n , Ken P iz z i n i , Colin P l u m b ,
Steph R a v a n o n a , R S A D a t a S e c u r i t y , I n c ., Michael R o e , Michael W o o d , et
Phil Z i m m e r m a n n pour mavoir fourni des codes sources ; Paul M a c N e r l a n d pour
avoir ralis les figures de la premire dition; Karen C o o p e r pour son travail de
secrtaire de rdaction pour la seconde dition ; Beth F r i e d m a n pour avoir revu et
corrig la seconde dition ; Carol K e n n e d y pour avoir fait lindex 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 ides, avoir rpondu des questions et avoir corrig des er
reurs dans la premire dition ; Randy S e u s s pour avoir fourni un accs liNTERNET ;
Jeff D u n t e m a n n et Jon E r ic k s o n pour m avoir aid commencer ; la famille I n s l e y
pour avoir donn limpulsion, les encouragements, le soutien, les conversations, lamiti
et les dners ; et A T & T B e l l L a b s pour m avoir licenci et pour avoir rendu tout cela
possible. Ces personnes mont aid crer un livre bien meilleur que ce que j aurais pu
faire tout seul.
Bruce S c h n e ie r
Oak Park, 111.
schneier@couterpane.coin

A propos de lauteur
Bruce S c h n e ie r est le prsident de C o u n t e r p a n e S y s t e m s , une entreprise de conseil
en cryptographie et scurit en informatique, situe Oak Park dans lIllinois aux
tats-Unis. Bruce S c h n e ie r est aussi lauteur de E-Mail Security (J o h n W il e y &
F il s , 1995) et Protect Your Macintosh (P e a c h p i t P r e s s , 1994) ; et a crit des dou
zaines douzaines d articles dans les principales revues. Il est lun des diteurs associ
de Dr. Dobbs Journal o il gre la colonne Algorithms Alley , il est aussi diteur
associ de Computer and Communication Security Reviews. Bruce S c h n e ie 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 frquents exposs sur la cryptographie,
la scurit en informatique, et la confidentialit.

Chapitre 1

Principes de base
1.1

Terminologie

Expditeur et destinataire
Supposons quun expditeur veut envoyer un message un destinataire. Cet expditeur
veut envoyer le message de manire sre: il veut sassurer quaucune oreille indiscrte
ne puisse sinformer du message.

Messages et chiffrement
Un message est appel te x te en clair. Le processus de transformation d un message de
telle manire le rendre incomprhensible est appel chiffrem ent (ou en cry p tion ).
Le rsultat de ce processus de chiffrement est appel te x te chiffr (ou encore c r y p to
gram m e). Le processus de reconstruction du texte en clair partir du texte chiffr est
appel dch iffrem en t (ou d cry p ta g e ). Ces diffrents processus sont illustrs par la
figure 1.1.

FlG. 1.1 Chiffrement et dchiffrement


Lart et la science de garder le secret de messages est appel cry p to g ra p h ie pratique
par des cry p to g ra p h e s. Les cry p ta n a lystes pratiquent la cry p ta n a lyse qui est lart
de dcrypter des messages chiffrs. La branche des mathmatiques qui traite de la cryp
tographie et de la cryptanalyse sappelle la cr y p to lo g ie et ses pratiquants sont appels
cryp tologu es. De nos jours, presque tous les cryptologues sont des mathmaticiens
thoriciens 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 numris, ou une image vido numrique. Du point de vue de

Chapitre 1

Principes de base

lordinateur, A i nest rien dautre que de linformation 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 linformation binaire, parfois de la mme
taille que A i, parfois plus grand2. La fonction de chiffrement, note E , transforme A i
en C. Ce qui en notation mathmatique scrit :
E ( M ) = C.

La fonction inverse, note D, de dchiffrement transforme C en A i :


D{C) = A i.

Comme le but de toutes ces oprations nest rien dautre que de retrouver le message
en clair partir de la version chiffre de ce mme message, lidentit suivante doit tre
vrifie :
D ( E ( M ) ) = A i.

Authentification, intgrit, non dsaveu


En plus de la confidentialit, on attend souvent de la cryptographie daccomplir d autres
tches:
1. A u th e n tifica tio n . Le destinataire d un message doit pouvoir sassurer de son
origine. Un intrus ne doit pas tre capable de se faire passer pour quelquun
d autre.
2. In tg rit. Le destinataire d un message doit pouvoir vrifier que celui-ci na
pas t modifi en chemin. Un intrus doit tre incapable de faire passer un faux
message pour un lgitime.
3. N o n dsaveu. Un expditeur ne doit pas pouvoir, par la suite, nier tort avoir
envoy un message.
Ce sont des exigences vitales en matire d interactions sociales par ordinateur; elles
sont lanalogue des rencontres face face. Quelquun est-il celui quil prtend tre? La
pice didentit, le permis de conduire, le diplme de mdecin, ou le passeport dune
personne sont-ils valides? Ce sont les questions auxquelles lauthentification, lintgrit,
et le non dsaveu rpondent.

Algorithmes cryptographiques
Un a lgorith m e cry p to g ra p h iq u e est une fonction mathmatique utilise pour le
chiffrement et le dchiffrement3.
1. A partir du chapitre suivant, ce livre ne traite que de cryptographie applique de linform ation
binaire.
2. En com binant com pression et chiffrement, C peut tre plus petit que A 4. Toutefois, en gnral,
le chiffrement lui seul ne fait pas lopration de com pression.
3. Gnralement, un algorithm e cryptographique com prend deux fonctions: une pour chiffrer et
lautre pou r dchiffrer.

1.1

Terminologie

Si la scurit dun algorithme est base sur le fait que celui-ci est tenu secret, on parlera
alors d algorithme restreint. De tels algorithmes ne prsentent plus quun intrt
historique car de nos jours ils sont inadquats pour les besoins actuels de scurit.
Un groupe d utilisateurs important ou variable ne peut utiliser de tels algorithmes
car chaque fois quun membre quitte le groupe, tous les autres doivent se mettre
utiliser un autre algorithme. Si quelquun rvle accidentellement le secret, tout le
mende doit changer dalgorithme. Encore plus accablant, les algorithmes restreints
ne permettent aucun contrle de qualit et aucune standardisation. Chaque groupe
dutilisateurs doit avoir son propre algorithme. Un tel groupe ne peut pas utiliser de
produits tout faits, matriels ou logiciels, vendus dans le commerce; un espion peut
acheter le mme produit et apprendre lalgorithme. Ils leur faut crire leur propres
algorithmes et les programmer eux mme. Sil ny a pas de bon cryptographe dans le
groupe, ils ne sauront pas sils ont un algorithme sr.
Malgr cela, les algorithmes restreints sont trs populaires pour les applications bas
niveau de scurit. Les utilisateurs ne ralisent pas, ou bien ne se soucient pas des
problmes de scurit inhrents leur systme.
La cryptographie moderne rsoud ce problme avec une clef, note 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 ace d es clefs. Les oprations de chiffrement
et de dchiffrement utilisent toutes les deux cette clef (i.e., elles dpendent de la clef
et ceci est dnot par lindice k), aussi les fonctions scrivent de la manire suivante:
E k{ M ) = C
D k(C) = M .

Ces fonctions vrifient la proprit suivante (voir la figure 1.2): :


D k(Ek( M ) ) = M .

FlG. 1.2 - Chiffrement et dchiffrement avec une clef


Certains algorithme utilisent des clefs diffrentes pour le chiffrement et le dchiffrement(voir la figure 1.3). Dans ce cas, la clef de chiffrement, note ki, est diffrente de
la clef de dchiffrement, note k,2 - Les relations suivantes dcrivent un tel cryptosys
tme:
E kl( M ) = C
D k2(C) - M
D k2(Ekl( M ) ) = M .
Avec ces algorihtmes, toute la scurit rside dans la (ou les) clef(s), et non dans
les dtails de lalgorithme. Ceci implique que lalgorithme peut tre publi et anlys.

Chapitre 1

4
Clef de
chiffrement

Texte en clair

Principes de base

Clef de
dchiffrement

Texte chiffr

Chiffrement

Texte en clair
original

Dchiffrement

F ig. 1.3 - Chiffrement et dchiffrement avec deux clefs

On peut fabriquer en masse un produit utilisant cet algorithme. Peu importe quune
espionne connaisse votre algorihtme; si elle ignore votre clef, elle ne pourra pas lire vos
messages.
Un cryptosystme est compos d un algorithme, et de tous les textes en clairs, textes
chiffrs, et clefs possibles.

Algorithmes clef secrte


Il y a deux types principaux d algorithmes base de clefs : clef secrte ou clef pu
blique. Les algorith m es c le f secrte sont des algorithmes o la clef de chiffrement
peut tre calcule partir de la clef de dchiffrement ou vice versa. Dans la plupart
des cas, la clef de chiffrement et la clef de dchiffrement sont identiques. Pour de tels
algorithmes, lmetteur et le destinataire doivent se mettre d accord sur une clef
utiliser avant dchanger des messages. Cette clef doit tre garde secrte. La scurit
d un algorithme clef secrte repose sur la clef : si celle-ci est dvoile, alors nimporte
qui peut chiffrer ou dchiffrer des messages dans ce cryptosystme.
Le chiffrement et le dchiffrement dans un algorithme clef secrte sont nots :
E k{ M ) = C
D k(C) = M .

Les algorithmes clef secrte peuvent tre classs en deux catgories. Certains oprent
sur le message en clair un bit la fois. Ceux-ci sont appels algorith m es de chif
frem ent en continu. D autres oprent sur le message en clair par groupes de bits.
Ces groupes de bits sont appels b lo cs, et les algorithmes correspondants sont appels
a lgorith m es d e ch iffrem en t par b lo cs. Pour des algorithmes raliss sur ordina
teur, la taille typique des blocs est de 64 bits ce qui est assez grand pour interdire
lanalyse et assez petit pour tre pratique4.

Algorithmes clef publique


Les algorith m es c le f p u b liq u e sont diffrents. Ils sont conus de telle manire
que la clef de chiffrement soit diffrente de la clef de dchiffrement. De plus, la clef de
dchiffrement ne peut pas tre calcule (du moins en un temps raisonnable) partir
de la clef de chiffrement. De tels algorithmes sont appels clef publique parce que
la clef de chiffrement peut tre rendue publique : n importe qui peut utiliser la clef de
4.
Autrefois, avant lutilisation de lou til inform atique, les algorithm es manipulaient gnralement le
texte en clair caractre par caractre. Vous pouvez considrer de tels algorithm es com m e un chiffrement
en continu d un caractre la fois.

1.1

Terminologie

chiffrement pour chiffrer un message mais seul celui qui possde la clef de dchiffrement
peut dchiffrer le message chiffr rsultant. Dans de tels systmes, la clef de chiffrement
est appele c le f p u b liq u e et la clef de dchiffrement est appele c le f prive. La clef
prive est aussi parfois appele c le f secrte mais pour viter toute confusion avec les
algorithmes clef secrte, 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 prive soient diffrentes, le dchiffrement avec la clef
prive correspondante est not :
D k(C) = M .
Parfois, les messages seront chiffrs avec la clef prive et dchiffrs avec la clef publique ;
une telle technique est utilise pour les signatures numriques (voir 2.6). Malgr le
risque de confusion possible, ces oprations seront notes :
E k{ M ) = C
D k(C) = M .

Cryptanalyse
Le but principal de la cryptographie est de prserver le texte en clair de lindiscr
tion des espions (aussi appels adversaires, attaquants, intercepteurs, intrus, oppo
sants, oreilles indiscrtes, cryptanalystes, dcrypteurs, ou tout simplement ennemis).
On suppose que les espions ont plein accs aux communications entre lexpditeur et
le destinataire.
La cryptanalyse est la science de la reconstitution du texte en clair sans connatre
la clef. Une cryptanalyse russie peut fournir soit le texte en clair, soit la clef. La
cryptanalyse peut galement mettre en vidence les faiblesses dun cryptosystme qui
peuvent ventuellement faciliter les attaques contre celui-ci5.
Une tentative de cryptanalyse est appele attaque. Un des axiomes fondamentaux
de la cryptographie, nnonc pour la premire fois par lhollandais A. Kerckhoffs au
dixneuvime sicle, est que lennemi possde tous les dtails de lalgorithme et quil ne
lui manque que la clef spcifique utilise pour le chiffrement [795]6. Bien que cela ne
soit pas toujours le cas dans le monde rel de la cryptanalyse, c est toujours vrai dans
le monde acadmique de la cryptanalyse, et c est de toute faon une bonne assertion
dans le monde rel de la cryptanalyse. Si lon ne sait pas casser un algorithme mme
en sachant comment il fonctionne, on ne sait certainement pas le casser sans cette
connaissance.
Il y a quatre types gnriques dattaques cryptanalytiques. Il va de soi que chacune
dentre elles repose sur lhypothse que le cryptanalyste dispose de la connaissance
complte de lalgorithme de chiffrement :
1. L a ttaq u e te x te ch iffr seu lem en t. Le cryptanalyste dispose du texte chif
fr de plusieurs messages, tous ayant t chiffrs avec le mme algorithme. La
5. La perte d une clef par des moyens autres que la cryptanalyse est appele com prom ission.
6. Bien sr, on peut supposer que la C IA n a pas lhabitude de com m uniquer au M ossad quoique
ce soit au sujet de ses algorithm es. Bien que le M ossad le dcouvre de toute faon...

Chapitre 1

Principes de base

tche 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
ses pour chiffrer les messages ce qui permettrait de dchiffrer dautres messages
chiffrs avec ces mmes clefs.
Donnes: 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 dduire
partir de Ci+i = E k { M i + 1 ).

M i+ 1

2. L a tta q u e te x te en cla ir con n u . Le cryptanalyste a non seulement accs aux


textes chiffrs de plusieurs messages mais aussi aux textes en clair correspondants.
La tche est de retrouver la ou les clef(s) utilises pour chiffrer ces messages ou
un algorithme qui permet de dchiffrer nimporte quel nouveau message chiffr
avec la mme 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 eq u is : Soit k, soit un algorithme permettant de dduire A f,+ i partir de


C i+ i = Ek{M.r+ 1).
3. L a ttaq u e te x te en cla ir c h o is i7. Non seulement le cryptanalyste a accs
aux textes chiffrs et aux textes en clair mais de plus il peut choisir les textes en
clair chiffrer. Cette attaque est plus efficace que lattaque texte en clair connu
car le cryptanalyste peut choisir des textes en clair spcifiques qui donneront plus
d informations sur la clef. La tche consiste retrouver la ou les clefs utilises
pour chiffrer ces messages ou un algorithme qiii permette de dchiffrer nimporte
quel nouveau message chiffr avec la mme 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 dduire JAt+i partir de
f'+l -4. L attaq u e te x te en clair ch oisi a d a p ta tiv e 8. C est un cas particulier de
lattaque 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
chiffrs prcdents. Dans une attaque texte en clair choisi, le cryptanalyste est
juste autoris choisir un grand bloc de texte en clair au dpart 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 rsultat pour le premier et
ainsi de suite.
Il y a au moins trois autres types dattaques cryptanalytiques.
1. L atta qu e te x te ch iffr choisi. Le cryptanalyste peut choisir diffrents textes
chiffrs dchiffrer. Les textes dchiffrs lui sont alors fournis. Par exemple, le
cryptanalyste a un dispositif qui ne peut tre dsassembl et qui fait du dchif
frement automatique, sa tche est de retrouver la clef.
7. Parfois appele
au point suivant.
8. Parfois appele

attaque texte en clair choisi statique

attaque texte en clair choisi dynamique

par opp osition la m thode dcrite


.

1.1

Terminologie
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 cryptosystmes clef pu
blique et sera illustre dans le paragraphe 19.3. Une attaque texte chiffr choisi
fonctionne parfois pour les cryptosystmes clef secrte9.
2. L a ttaq u e c le f ch oisie. Cela nest pas une attaque o le cryptanalyste peut
choisir la clef; il est seulement au courant de quelques relations entre diffrentes
clefs. C est trange et obscur. Ce nest pas trs 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 limaginer. Il arrive quun cryptanalyste dispose du
texte en clair d un message ou quil soudoie quelquun pour chiffrer un message choisi.
Parfois, vous navez mme pas besoin de soudoyer quelquun : 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-ttes
et des conclusions qui peuvent tre connues ou devines par le cryptanalyste. Le code
source chiffr est particulirement vulnrable cause de lapparition frquente des mots
clefs: # d efin e, s tr u c t, e ls e , return. Le code excutable chiffr souffre de la mme
vulnrabilit : 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 mme texte en
clair choisi) ont t menes avec succs durant la Seconde Guerre mondiale. Le livre de
David K a h n [468, 469, 470] donne quelques exemples historiques de ce type dattaques.
Et noubliez pas laxiome de Kerckhoffs: ne comptez pas sur un cryptosystme dont
la rsistence rside dans le fait que lennemi ne sait pas comment fonctionne votre
algorithme. Vous vous trompez si vous croyez quil vaut mieux garder secret les dtails
de votre algorithme plutt que de laisser la communaut scientifique lanalyser. De
plus, il serait naf de penser que personne ne dsassemblera votre code excutable pour
reconstruire votre algorithme10. Les meilleurs algorithmes dont nous disposions sont
ceux qui ont ts rendus publics et attaqus par les meilleurs cryptographes au monde,
et qui ne sont toujours pas casss11.
Les cryptanalystes nont pas toujours accs lalgorithme 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 accs. Si lalgorithme
est utilis dans un programme commercial de scurit, c est seulement une question
de temps et d argent pour dsassembler le programme et retrouver lalgorithme. Si
lalgorithme est utilis dans un systme militaire de communication, cest aussi une
question de temps et d argent pour acheter (ou voler) lquipement et reconstruire
lalgorithme. Il y a beaucoup de cas historiques o les cryptanalystes ne connaissaient
pas lalgorithme ; parfois ils lont cass, parfois ils ont chou. Dans tous les cas il est
irraliste de compter sur la confidentialit de lalgorithme.
9.
Une attaque texte en clair choisi mene de front avec une attaque texte chiffr choisi est
parfois appele a tta q u e te x te choisi.
10. C eci est arriv en 1994 avec lalgorithm 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 schangent leurs algorithm es les uns les autres, s appuyant sur
leurs pairs pour dceler toute faiblesse dans leurs travaux.

Chapitre 1

Principes de base

Ceux qui clament avoir un systme inviolable seulement parce quils ne peuvent pas
eux-mmes le casser sont soit des gnies, soit des fous. Malheureusement, il y en a plus
de la seconde espce 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 remde de charlatan.
Pour diffrencier les bons algorithmes des mauvais, les bons cryptographes acceptent
le regard critique de leurs pairs.

Scurit des cryptosystmes


Les diffrents algorithmes ont des niveaux de scurit divers, plus ou moins difficiles
casser. Si le cot ncessaire pour casser un algorithme dpasse la valeur de linformation
chiffre, alors cet algorithme est probablement sr. Si le temps ncessaire pour casser
un algorithme est plus long que le temps durant lequel linformation chifre doit rester
secrte, alors cet algorithme est probablement sr. Sil faut plus dinformation pour
casser lalgorithme quil nen a t chiffr avec la mme clef, alors votre algorithme est
probablement sr.
Je dis probablement car il est toujours possible quune nouvelle avance soit faite
en cryptanlyse. D un autre ct, une information perd de sa valeur avec le temps. Il est
important que la valeur dune information reste toujours infrieure au cot ncessaire
pour briser la protection qui lentoure.
Lars Knudsen a class ces diffrentes manires de casser un algorithme. Les voici par
ordre dcroissant de svrit:
1. C assage co m p le t. Un cryptanalyste trouve la clef k telle que Dk(C) = Ai.
2. O b te n tio n g lob a le. Un cryptanalyste trouve un algorithme de remplacement
A quivalent Dy.(C) sans connatre k.
3. O b te n tio n locale. Un cryptanalyste trouve le texte en clair d un message chiffr
quil 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 con d ition n ellem en t sr si peu importe la quantit de texte
chiffr dont le cryptanalyste dispose il ny a pas d information suffisante pour re
trouver le texte en clair. De fait, seul le masque jetable (voir 1.5) est invulnrable
tant donn des ressources infinies. Tous les autres cryptosystmes sont vulnrables
une attaque texte chiffr seulement, simplement en essayant toutes les clefs possible
une par une et en regardant si le texte en clair rsultant a un sens. Ceci sappelle une
attaque exh a u stive (voir la section 7.1).
La cryptographie se proccupe plus particulirement de cryptosystmes invulnrables
par calcul. Un algorithme est considr in vu ln rable par ca lcu l (ou parfois qualifi
de fort), sil ne peut pas tre cass avec les ressources disponibles actuellement et dans
le futur. Ce qui constitue ces ressources disponibles est ouvert linterprtation.

1.2

Steganographie

On peut mesurer la compiexit(voir la section 7.1) d une attaque de lune ou lautre


des manires suivantes:
1. C o m p le x it en in form a tion . La quantit dinformation ncessaire en entre
pour lalgorithme.
2. C o m p le x it en tem ps. Le temps ncessaire pour achever lattaque. Ceci est
aussi appell effort.
3. C o m p le x it en esp a ce. La quantit de mmoire ncessaire lattaque.
Comme rgle 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 complexits: une
attaque peut tre plus rapide au prix de besoins en mmoire plus importants.
Les complexits sont exprimes en un ordre de grandeur. Si un algorithme a, par
exemple, un effort de 2128, alors il faut 2128 oprations pour le casser12.
Peu importe, si vous faites lhypothse que vous aurez suffisamment de puissance de
calcul pour faire un million d oprations par seconde et que vous mettiez un million
de processeurs en parallle la tche, cela prendra encore 1019 annes pour retrouver
la clef pour lexemple donn plus haut. Cela correspond un milliard de fois lge de
lunivers.
Tandis que la complexit dune attaque est constante (cest--dire, jusqu ce quun
cryptanalyste trouve une meilleure attaque), la puissance de calcul est tout sauf
constante. Durant ce dernier demi-sicle, il y a eu des progrs phnomnaux en puis
sance de calcul et il ny pas de raison de penser que cela sarrtera si tt. Nombre
d attaques cryptanalytiques sont trs bien adaptes aux machines parallles : la tche
peut tre morcele en milliards de petites tches et aucun des processeurs ne doit interagir avec les autres. Annoncer quun algorithme est sr simplement parce quon ne
peut pas le casser avec la technologie daujourdhui est hasardeux. Les bons cryptosys
tmes sont conus pour tre invulnrables mme avec les puissances de calcul prvues
d ici de nombreuses annes dans le futur.

Terminologie historique
Historiquement, on appelle c o d e un cryptosystme qui sert au niveau des units linguis
tiques : mots, locutions, phrases, etc. Par exemple, le mot SOEUR peut tre le texte
chiffr pour la phrase entire : TOURNER GAUCHE DE 90 DEGRS ; le mot
NONNES peut tre le texte chiffr de TOURNER DROITE DE 90 DEGRS * ;
et les mots TR A LA LA peuvent tre le texte chiffr pour OBUSIER . Les codes
de ce type ne sont pas dcrits dans ce livre, ils sont prsents dans [795, 796]. Les codes
sont utiles dans certaines circonstances seulement. Les chiffres sont utiles en toute cir
constance. Sil ny a pas d entre pour le mot TROPPO dans le carnet de codage,
il ne peut pas tre cod . On peut tout chiffrer laide dun chiffre.

1.2

Steganographie

La stegan ograph ie sert cacher des messages secrets dans dautres messages, de
sorte que lexistence mme du secret est dissimule. Gnralement, lexpditeur crit
12. Ces oprations peuvent tre com plexes et coteuses en tem ps de calcul.

10

Chapitre 1

Principes de base

un message innoffensif et dissimule un message secret dans la mme feuille de papier.


Parmi les astuces historiques, on note les encres invisibles, de minuscules trous dpingle
dans des caractres slectionns, d infimes changements dans lcriture manuelle des
caractres, des marques au crayon sur un texte tap la machine, etc.
Plus rcemment, on peut cacher des messages secrets dans les images graphiques.
Remplacez le dernier bit significatif de chaque point de limage par celui dun message;
limage graphique ne changera pas de manire apprciable la plupart des standards
graphiques tant spcifis pour plus de variations de couleurs que lil humain ne peut
en saisir et le destinataire peut rcuprer le message. On peut stocker de cette faon
un message de 64 kilo-octets dans une image 1024 par 1024 nivaux de gris. Il existe
dans le domaine public diffrentes applications pour faire cela.
Les fo n ctio n s m im tiq u es de Peter Wayner permettent de dtourner des messages.
Elles modifient un message de sorte que son profil statistique ressemble quelque chose
dautre: une des rubriques classique du New York Times, une pice de Shakespeare,
ou un groupe de nouvelles sur Internet [1586, 1587]. Cette sorte de stganographie
ne trompera pas une personne mais elle peut tromper de gros ordinateurs passant au
crible lInternet la recherche de messages intressants.

1.3

Substitution et transposition

Avant lavnement des ordinateurs, la cryptographie traitait des cryptosystmes bass


sur les lettres (ou caractres). Les diffrents algorithmes cryptographiques remplaaient
des caractres par dautres ou transposaient les caractres. Les meilleurs systmes
faisaient les deux oprations plusieurs fois.
C est plus complexe de nos jours, mais la philosophie est reste essentiellement la mme.
La diffrence majeure est que les algorithmes actuels manipulent les bits au lieu des
caractres. Ce nest finalement quun changement de taille d alphabet : on passe de 26
lments 2 lments. La plupart des bons algorithmes de cryptographie combinent
toujours des substitutions avec des transpositions.

Chiffre substitution
Un chiffre su b stitu tio n est un chiffre dans lequel chaque caractre du texte en
clair est remplac par un autre caractre dans le texte chiffr. Le destinataire applique
la substitution inverse au texte chiffr pour recouvrer le texte en clair.
En cryptographie classique, il y a quatre types de base de substitution :
- Un ch iffre su b stitu tio n sim ple est un chiffre dans lequel chaque caractre du
texte en clair est remplac par un caractre correspondant dans le texte chiffr.
Les cryptogrammes publis dans les journaux sont des exemples de chiffres
substitution simple.
- Un ch iffre su b stitu tio n h o m o p h o n iq u e (ou chiffre su b stitu tion sim ple
rep rsen ta tion m u ltip le) est comme un chiffre substitution simple, sauf
qu un caractre du texte en clair on fait correspondre plusieurs caractres dans
le texte chiffr. Par exemple, A peut correspondre 5, 13, 25 ou 56, B
peut correspondre 7, 19, 31 ou 42 ; etc.

1.3

Substitution et transposition

11

- Un ch iffre su b stitu tio n sim ple par p oly g ra m m es est un chiffre pour lequel
les caractres sont chiffrs par blocs. Par exemple, ABA peut tre chiffr par
RTQ tandis que ABB est chiffr par SLL .
- Un ch iffre su b stitu tio n p o ly a lp h a b tiq u e est compos partir de plusieurs
chiffres substitution simple. Par exemple, il peut y avoir 5 chiffres substitution
simple utiliss ; celui qui est utilis dpend de la position du caractre chiffrer
dans le texte en clair.
Le fameux ch iffre d e Jules C sar, dans lequel chaque caractre du texte en clair est
remplac par celui qui se trouve trois places plus loin dans lalphabet modulo 26 (A est
remplac par D, B est remplac par E..., W est remplac par Z, X est remplac par A, Y
est remplac par B, Z est remplac par C) est un chiffre substitution simple.
R O T I3 est un programme de chiffrement frquemment utilis sur les systmes UNIX.
Dans ce chiffre, A est remplac par N , B est remplac par O , etc. Chaque lettre est
dcale de 13 places. .
Chiffrer un fichier deux fois avec R O T 13 redonne le fichier original :
M = R O T 1 3 (R O T 1 3 (A f)).

R O T I3 nest pas destin la scurit. Il est souvent utilis dans les messages de cour
rier lectronique pour cacher du texte pouvant tre offensant, pour viter de dvoiler
trop tt la solution d un casse-tte, etc.
Ce type de chiffres peut tre facilement cass car le chiffre ne cache pas les frquences
sous-jacentes des diffrents caractres du texte en clair. En langue anglaise, il ne faut
pas plus de 25 caractres du texte chiffr avant quun bon cryptanalyste ne puisse
reconstruire le texte en clair [1439]. Un algorithme gnral pour casser ce genre de
chiffre est dcrit dans [581, 589, 1602, 85, 1481, 1246, 880]. Une bonne ralisation sur
ordinateur est donne dans [700].
Les chiffres substitution reprsentation multiple furent utiliss ds 1401 par le
Duch de Mantoue en Italie [795]. Ils sont biens plus difficiles casser que les chiffres
substitution simple, mais toutefois ils ne cachent pas suffisamment les proprits
statistiques de la langue du texte en clair. Ces chiffres sont trivialement casss par
une attaque texte en clair connu. Une attaque texte chiffr seulement est plus
difficile mais elle ne prend que quelques secondes par ordinateur. Les dtails sont donns
dans [1272].
Les chiffres substitution simple par polygrammes sont des chiffres dans lesquels les
lettres sont chiffres par groupe. Le procd PLAYFAIR, invent en 1854, tait utilis
par les Britanniques pendant la Premire Guerre mondiale [795]. Il chiffre les lettres
par paires. La cryptanalyse de ce procd est prsente dans [589, 1481, 880]. Le chiffre
de H ill est encore un autre exemple de chiffre substitution simple par polygrammes
[734]. Les codes de Huffman sont parfois utiliss pour chiffrer, c est un chiffre substi
tution simple par polygrammes qui est peu sr.
Les chiffres substitution polyalphabtique ont t invents par Lon BATTISTA en
1568 [795]. Ils furent utiliss par les Nordistes durant la guerre de Scession. Bien quils
puissent tre facilement casss [820, 579, 589, 795] (plus particulirement avec laide
dordinateurs), nombre de produits commerciaux de scurit informatique utilisent ce
type de chiffre [1392, 1397, 1506]. La mthode pour casser le systme de chiffrement
substitution polyalphabtique, utilis par le traitement de texte WordPerfect, est

Chapitre 1

12

Principes de base

dcrite dans [145, 146J. Le chiffre de V i g e n r e et le chiffre de B e a u f o r t sont des


exemples historiques de chiffres substitution polyalphabtique.
Les chiffres substitution polyalphabtique utilisent plusieurs clefs monoalphabtiques.
Chaque clef est utilise tour de rle pour chiffrer une lettre du texte en clair (la
premire clef pour le premier caractre, la deuxime clef pour le deuxime, et ainsi de
suite). Lorsque toutes les clefs ont t utilises, on les rutilise en recommenant la
premire. Sil y a ainsi 20 clefs monoalphabtiques, tous les 20 caractres on utilise la
mme clef. Le nombre de clefs utilises donne la p rio d e du chiffre. En cryptographie
classique, les chiffres avec des priodes longues taient considrablement plus difficiles
casser que ceux avec des priodes courtes. Grce aux ordinateurs, il est facile de casser
mme ceux avec des priodes trs longues.
Un autre type de chiffre est celui o lon utilise un autre texte pour chiffrer le texte en
clair. Bien que ce chiffre ait une priode gale la longueur du texte en clair, il peut
aussi tre cass facilement [578, 795].

Chiffre transposition
Un chiffre tra n sp o sitio n est un chiffre dans lequel les caractres du texte en clair
demeurent inchangs mais dont les positions respectives sont modifies. Pour appliquer
la tra n sp o sitio n sim ple en colon n es, on crit le texte en clair horizontalement sur
un morceau de papier quadrill de largeur fixe et lon relve le texte chiffr verticalement
(voir la figure 1.4). Pour dchiffrer le texte chiffr, il suffit d crire verticalement celui-ci
sur un morceau de papier quadrill de la mme largeur et de lire horizontalement le
texte en clair.
Texte en clair
l a s s a s s in

est le d o cteu r

M a t r ix , r e g a r d e z d e r r i r e l h o r l o g e

LASSASSIN
ESTLEDOCT
EURMATRIX
REGARDEZD
ERRIERELH
0RL0GE

Texte chiffr :
LEERE OASUE RRSTR GRLSL M AIOA EAREG SDTDR ESORE EICIZ LN TXD H

F i g . 1.4 - Transposition simple en colonnes


La cryptanalyse de ces chiffres est prsente dans [589, 1481]. Comme les lettres du
texte chiffr sont les mmes que celles du texte en clair, une analyse statistique de la
frquence des lettres montre que chaque lettre se comporte peu prs comme dans la
langue d origine du texte. Cela donne un indice imprtant au cryptanalyste qui peut
essayer diffrentes techniques pour retrouver lordre correct des lettres. Appliquer une
deuxime transposition au texte chiffr augmente grandement la scurit. Il y a des
chiffres transposition encore plus compliqus mais les ordinateurs permettent de les

1.3

Substitution et transposition

13

casser pratiquement tous.


Le procd allemand A D F G V X , utilis pendant la Premire Guerre mondiale, est un
chiffre transposition (plus un chiffre substitution simple). C tait un algorithme trs
compliqu pour lpoque mais il a t cass par Georges P a i n VIN, un cryptanalyste
franais [468].
Bien que de nombreux cryptosystmes modernes utilisent la transposition, c est contrai
gnant parce que la transposition ncessite beaucoup de mmoire et parfois elle impose
que les messages chiffrer aient une longueur multiple d une certaine valeur. La sub
stitution est beaucoup plus utilise.

Machines tambours
Dans les annes 20, de nombreux dispositifs mcaniques ont t invents pour automa
tiser le chiffrement. Ils utilisaient une (ou plusieurs) pice mcanique appele ta m b ou r
(ou r o to r) qui tait conue de manire effectuer une opration de substitution.
Une m achines ta m b o u rs (ou m achines rotors) a un clavier et un ensemble de
rotors, et ralise une version du chiffre de VlGENRE. Chaque rotor est une permutation
arbitraire de lalphabet, a 26 positions et effectue une substitution simple. Par exemple,
un rotor pouvait tre conu pour substituer F A , U B , L C ,
etc. Les picots de sortie d un rotor entranent ceux du rotor suivant.
Par exemple, dans une machine quatre rotors, le premier rotor pouvait substituer
F A , le deuxime Y F , le troisime E Y , et le quatrime C
E ; C tant la sortie dans le texte chiffr. Puis certains rotors se dcalent et la
substitution est diffrente la fois suivante.
Cest la combinaison de tous ces rotors et des engrenages les entranant qui rendent
cette machine sre.Comme tous les rotors bougent, et des vitesses diffrentes, la p
riode dune machine n rotors est 26 . Certaines machines peuvent avoir des nombres
de positions diffrents sur chaque rotor, ce qui complique encore plus la tche du cryp
tanalyste.
La machine rotors la plus connue est la machine E n i g m a , utilise par les Allemands
pendant la Seconde Guerre mondiale. Lide de base est due Arthur S c h e r b iu s
et Arvid Gerhard D a m m en Europe. Elle a t brevete aux Etats-Unis par Arthur
S c h e r b iu s [1388]. Les Allemands avaient considrablement toff le concept de base
pour leur effort de guerre.
Il y avait un tableau qui permutait lgrement le texte en clair, et un rotor supplmen
taire qui obligeait chaque rotor oprer deux fois sur chaque lettre. Aussi complique
quelle fut, la machine ENIGMA a t casse durant la Seconde Guerre mondiale.
Une quipe de cryptographes polonais a cass une version simplifie de la machine
E n ig m a , une quipe britannique, dont Alan T u r in g faisait partie, a cass la vraie
machine E n i g m a . Pour plus d informations concernant les machines rotors et la fa
on dont elles peuvent tre casses voyez [795, 93, 451, 496, 449, 880, 1326, 1589, 691].
Deux comptes rendus fascinants relatant comment la machine E n i g m a a t casse
sont donns dans [737, 797],

Lectures recommandes
Ce nest pas un livre sur la cryptographie classique, aussi ne vais-je pas mtendre
plus avant sur ce sujet. Deux excellents livres prsentant la cryptologie davant lre

Chapitre 1

Principes de base

informatique sont [589, 1481]; la cryptanalyse des machines chiffrer se trouve dans
[451]. Dorothy D e n n in g prsente nombre de ces chiffres dans [462], et [880] donne une
analyse relativement mathmatique de ces mmes chiffres. Un autre texte plus ancien
sur la cryptographie, qui traite des sujets analogues, est [106]. Un article qui donne
un bon aperu du sujet est [580]. Les livres historiques de David K a h n sont aussi
excellents [795, 796, 797).

1.4

Ou exclusif simple

X O R est lopration ou exclusif, note ' en C ou en Mathmatiques. Cest une


opration classique sur les bits:

00 0 = 0
001 = 1
10=1

101 = 0
Remarquez les proprits suivantes:
a a= 0
a b b = a

Lalgorithme du ou exclusif simple est vraiment embarrassant; ce nest rien d autre


quun chiffre de V iG e n r e . Il est inclus ici car il est trs souvent utilis dans des logiciels
commerciaux, du moins dans le monde M S -D O S et le monde M a c i n t o s h [1506, 1392].
Si un logiciel de scurit clame quil utilise un algorithme de chiffrement propritaire
et qui est nettement plus rapide que le DES il y a de fortes chances quil sagisse
d une variante de ceci :
/* Usage: crypto key input_file output_file */
void mainfint argc, char *argv[])
FILE *fi, *fo;
int *cp;
int c;
if (cp = argv[l] ) {
if ((fi = fopen(argv[2] ,"rb")) != NULL) -[
if ((fo = fopen(argv[3],"wb")) != NULL) {
while ((c = getc(fi)) != EOF) {
if (!*cp) cp = argv[l];
c '= *(cp++);
putc(c,fo);
>
fclose(fo);
>

1.5

Masque jetable

15

fc lo s e (fi);

>
>
>
C est un algorithme clef secrte. Le texte en clair est combin la clef par une
opration ou exclusif pour produire le texte chiffr. Comme lapplication du ou
exclusif deux fois avec la mme valeur redonne la valeur initiale, le chiffrement et le
dchiffrement utilisent exactement le mme programme ( dnote lopration logique
ou exclusif) :
M K = C
CK = M

Il ny a pas de vraie scurit ici. Ce type de chiffre est trivial casser, mme sans
ordinateur [589, 1481]. Cela ne prendra que quelques minutes avec un ordinateur.
Faisons lhypothse que le texte est en langue anglaise. De plus, supposons que la clef
a une petite longueur arbitraire. Voici comment le casser :
1. Dcouvrir la longueur de la clef par un procd appel c o m p ta g e d e con
cid en ces [579]. Comparer le texte chiffr lui-mme mais dcal d un certain
nombre doctets : compter le nombre doctets identiques. Si les deux segments
de texte mis face face ont t cods avec la mme clef, quelque chose comme
plus de 6 % des octets seront gaux. Sils ont t cods avec une clef diffrente
alors moins de 0,4 % des octets seront gaux (avec comme hypothse une clef
quelconque et un texte en clair compos de caractres A SC II ; dautres textes
en clair donneront des pourcentages diffrents). Le plus petit dplacement qui
indique une concidence leve est la longueur de la clef recherche.
2. Dcaler le texte chiffr de cette longueur et appliquer le ou exclusif entre le texte
chiffr et le texte ainsi dcal. Cette opration limine la clef et vous laisse avec le
rsultat du ou exclusif du texte en clair avec lui-mme dcal. Comme langlais
a environ un bit d information utile par octet (voir 11.1), il y a suffisamment
de redondance pour choisir le dchiffrement correct.
Malgr cela, la liste des marchands de logiciels qui prtendent que cet algorithme est
presque aussi sr que lalgorithme DES continue de sallonger [1392]. C est cet
algorithme (avec une clef de 160 bits) que la NSA a finalement permis lindustrie
amricaine du tlphone cellulaire numrique dutiliser pour assurer la confidentialit
des communications. Un ou exclusif simple empchera peut-tre votre sur de lire vos
fichiers mais cela narrtera pas un cryptographe plus de quelques minutes.

1.5

Masque jetable

Croyez-le ou non, il existe un cryptosystme parfait. Il sappelle tech n iqu e du


masque je t a b le ( one-time pad ) 13 et a t invent en 1917 par le major Joseph
13. Note du traducteur : le term e masque jeta b le com m e traduction du vocable anglo-saxon
one-tim e pad a t em prunt [240].

Chapitre 1

16

Principes de base

M a u b o r g n e et Gilbert V e r n a m dA T & T [795]14. Dans sa forme classique, le masque


jetable nest rien dautre quune trs longue suite non rptitive et alatoire de lettres,
crite sur des pages relies ensemble pour former un bloc. Lmetteur utilise chaque
lettre du masque son tour pour chiffrer exactement un caractre du texte en clair.
L algorithme de chiffrement est simple : on ajoute le rang de la lettre chiffrer au rang
de la lettre correspondante du masque, le rsultat modulo 26 donne le rang de la lettre
du texte chiffr. Le destinataire dispose d un bloc identique et utilise le masque de la
mme manire pour dchiffrer les lettres du message chiffr une une.
Chaque lettre du masque est utilise une seule fois, pour un seul message. L metteur
chiffre le message et dtruit les pages correspondantes du bloc. Le destinataire a un
masque identique et utilise tour tour chaque lettre du masque pour dchiffrer chaque
lettre du message chiffr. If dtruit ensuite les mmes pages du bloc. A chaque nouveau
message on utilise de nouvelles pages et donc une nouvelle clef. Par exemple, si le
message est :

MASQUEJET ABLE
et que le morceau de masque utilis est :
TBFRGFARFMIKL
alors le texte chiffr est :
GCYIBKKWZNKWQ
puisque lon a:
M + T mod 26 = G
A + B mod 26 = C
S + F mod 26 = Y
etc.
En mettant lhypothse que ladversaire na pas accs au bloc qui contient le masque
jetable, ce systme est parfaitement sr. Un texte chiffr donn peut correspondre
nimporte quel texte en clair de mme longueur.
Comme tout masque est galement probable (rappelez-vous que le masque est une suite
alatoire), un adversaire na pas d information pour baser sa cryptanalyse. Le morceau
de masque aurait tout aussi bien pu tre :
RXDCXFHVQBYRX
qui donnerait le texte en clair :
OEUFDECAILLES
ou encore :
RTFDAPUVHMGNX
qui donnerait le texte en clair :
OISEAUPARADIS
14. En fait, un masque jetable est un cas particulier d un schm a seuil (voir 3.7).

1.5

Masque jetable

17

Ce point vaut la peine dtre rpt : comme tout texte en clair est quiprobable, il ny
a aucun moyen pour le cryptanalyste de dterminer quel est le bon texte en clair. Le
ou exclusif d une clef alatoire avec un texte en clair non alatoire produit un texte
chiffr compltement alatoire, peu importe la puissance de calcul.
Le point faible, et il est de taille, est que les lettres du masque doivent tre engendres
alatoirement. Toute attaque contre la technique du masque jetable se fera contre la
mthode utilise pour engendrer le masque. On ne peut pas envisager lutilisation dun
gnrateur pseudo-alatoire ; ceux-ci possdent toujours des proprits non alatoires.
Si vous utilisez un gnrateur vraiment alatoire c est beaucoup moins facile quil
ny parat (voir 17.14) cette technique est sre.
Lautre point important est que vous ne pouvez jamais utiliser nouveau le mme
morceau du masque. Mme avec un masque de plusieurs gigaoctets, un cryptanalyste
qui possde des textes chiffrs avec des squences de masque se recouvrant peut re
construire le texte en clair. Il compare chaque paire de textes chiffrs en dcalant lun
par rapport lautre et compte le nombre de lettres identiques en mme position.
Quand les textes sont aligns, la proportion de lettres identiques augmente dun coup
le pourcentage exact dpend de la langue utilise dans le texte en clair. Ensuite la
cryptanalyse est facile. Il sagit d un index de concidences mais avec deux priodes
seulement comparer [905].
Lide du masque jetable peut tre facilement tendue au chiffrement de donnes bi
naires. On utilise un masque compos de bits au lieu de caractres. Au lieu d addition
ner le texte en clair et le masque, on utilise le ou exclusif. Pour dchiffrer, on applique
le ou exclusif avec le mme masque jetable. On ne change rien d autre et on a un
niveau de scurit parfait.
Tout cela lair mirobolant, mais il y a quand mme quelques problmes. La longueur
du masque est gale la longueur du message transmettre. C est acceptable pour
quelques messages courts mais pas pour une ligne de transmission 1,544 mgabit par
seconde. Malgr tout, vous pouvez enregistrer 650 mgaoctets de bits alatoires sur
un CD-ROM mais il y a des problmes. Premirement, vous avez besoin d exactement
deux copies des bits alatoires alors que les CD-ROMs sont conomiquement intres
sants en grande quantit seulement. Deuximent, vous devez pouvoir dtruire les bits
alatoires dj utiliss. Un CD-ROM ne peut-tre effac autrement quen le dtrui
sant physiquement. Les cassettes numriques sont bien mieux adaptes ce genre de
besoins.
Mme si vous rsolvez les problmes de la distribution du masque et de sa sauvegarde,
vous devez encore vous assurer que lexpditeur et le destinataire soient parfaitement
synchroniss. Si le destinataire est dcal ne serait-ce que d un bit (ou si quelques
bits sont perdus pendant la transmission), le message dchiffr naura aucun sens. Si
quelques bits sont fausss durant la transmission (aucun bit n est ajout ou retir, ils
sont seulement modifis), seul ces bits-l seront mal dchiffrs. Dautre part, un masque
jetable ne permet aucune authentification.
Les masques jetables ont encore leur utilit aujourdhui, principalement pour des ca
naux de communications ultra-secrets et faible dbit. Le tlphone rouge entre les
Etats-Unis et lex-Union sovitique tait15, parat-il, chiffr laide de la technique du
masque jetable. Nombre de messages d espions sovitiques taient chiffrs par masque
jetable. De tels messages sont encore secrets mme aujourdhui et le resteront tout ja
15. Lest-il encore?

Chapitre 1

18

Principes de base

mais. Peu importe combien de temps les super-ordinateurs consacreront essayer de les
casser, peu importe le nombre de personnes qui essaieront encore dici un demi-sicle
avec des machines et des techniques inimaginables, ils resteront secrets. Mme quand
les extraterrestres venant dAndromde atterriront avec leurs gigantesques engins spa
tiaux et leur puissance de calcul inimaginable, ils ne seront pas capables de dchiffrer
les messages des espions sovitiques chiffrs laide de la technique du masque jetable
( moins quil puissent aussi voyager dans le temps et rcuprer les masques utiliss).

1.6

Algorithmes informatiques

Il y a de nombreux algorithmes cryptographiques. Les trois plus courants sont :


- DES (standard de chiffrement de donnes) Data Encryption Standard : lal
gorithme de chiffrement informatique le plus populaire. Le DES est un standard
amricain et mme international, du Gouvernement amricain et il a laval de
larme amricaine pour le chiffrement de donnes de nature sensible mais non
secrte. C est un algorithme clef secrte : la mme clef sert au chiffrement et au
dchiffrement.
- R SA (daprs le nom de ses concepteurs : R i v e s t , S h a m ir et A d l e m a n ) : lal
gorithme clef publique le plus populaire. Il peut aussi bien tre utilis pour le
chiffrement que pour la signature numrique.
- D SA (algorithme de signature numrique) Digital Signature Algorithm : un
autre algorithme clef publique. Il fait partie du standard de signature num
rique DSS ou Digital Signature Standard . Il ne peut pas tre utilis pour le
chiffrement mais seulement pour la signature numrique.
C est de ce genre de choses quil est question dans ce livre.

1.7

Grands nombres

Tout au long de cet ouvrage, j utilise des grands nombres pour dcrire diffrents points
en cryptographie. Il est ais de perdre de vue lordre de grandeur de ces grands nombres.
Le tableau 1.1 montre les quivalents des grands nombres manipuls en cryptographie
par rapport des grands nombres en physique.
Ces nombres sont des estimations dordre de grandeur. Us ont t puiss dans diffrentes
sources. La plupart des nombres venant de lastrophysique sont expliqus dans l article
de Freeman D y s o n : Time Without End: Physics and Biology in an Open Universe
dans Reviews of Modem Physics, volume 52, numro 3, juillet 1979, pages 447 460.
Les nombres indiqus pour les accidents de la circulation ont t calculs partir des
statistiques collectes par le ministre des Transports amricain : 163 morts par million
de personnes en 1993 et une longvit moyenne de 69,7 annes.

1.7

Grands nombres

19

Tab. 1.1 - Grands nombres

Equivalent physique
Probabilit de mourir foudroy (par jour)
Probabilit de gagner le gros Lot la loterie amricaine
Probabilit de gagner le gros lot la loterie amricaine
et de mourir foudroy le mme jour
Probabilit de se noyer
(aux Etats-Unis et par an)
Probabilit d tre tu dans un accident d automobile
(aux Etats-Unis en 1993)
Probabilit d tre tu dans un accident d automobile
(aux Etats-Unis et sur une vie)
Temps d ici la prochaine glaciation
Temps dici ce que le soleil explose en nova
Age de la terre
Age de lunivers
Nombre d atomes constituant la terre
Nombre d atomes constituant le soleil
Nombre d atomes constituant la galaxie
Nombre datomes constituant lunivers
(sans tenir com pte de la matire sombre)

Nombre
1 chance sur 9 milliards (2 )
1 chance sur 4000000 (222)

1077 (226E)

Volume de lunivers

1084 (2280) cm3

1 chance sur 261


1 chance sur 59000 (216)
1 chance sur 6100 (213)
1 chance sur 88 (27)
14000 ans (214)
109 (230) annes
109 (230) annes
1010 (234) annes
10E1 (2170)
1067 (2190)
1067 (2223)

Si lunivers est ferm :


Dure de vie de lunivers

1011 (237) annes


1018 (261) secondes

Si lunivers est ouvert :


Temps d ici ce que les toiles peu massives
se refroidissent
Temps d ici ce que les plantes quittent leur toile
Temps dici ce que les toiles quittent leur galaxie
Temps dici ce que les orbites disparaissent
par radiation gravitationnelle
Temps d ici ce que les trous noirs svaporent
compltement par le processus de H aw king
Temps dici ce que toute la matire soit liquide 0 K
Temps dici ce que toute la matire se transforme en fer
Temps d ici ce que toute la matire soit absorbe
par des trous noirs

1014 (247) annes


101E (2eo) annes
1019 (264) annes
102n (267) annes
1064 (2213) annes
1065 (2216) annes
10
10

1 r i2 6

annes
j

annes

Premire partie
Protocoles cryptographiques

Chapitre 2

Briques lmentaires
2.1

Introduction aux protocoles

Le but de la cryptographie est de rsoudre des problmes1. La cryptographie rsoud


des problmes qui ont voir avec la confidentialit, lauthentification, lintgrit, et
les gens mfiants ou malhonntes. Vous pouvez apprendre tout sur les algorithmes et
les techniques, mais ceux-ci ne sont intressants que sils sont mis contribution pour
rsoudre des problmes. Cest pourquoi nous allons dabord regarder les protocoles de
plus prs.
Un p r o to c o le est une srie d tapes, impliquant deux ou plusieurs participants, conu
pour accomplir une tche. Cette dfinition est importante. Il y est question d une
srie dtapes , c est--dire quun protocole est une suite ordonne d tapes et quil
a un dbut et une fin. Chaque tape doit tre excute son tour et aucune autre
tape ne peut tre excute avant que la prcdente ne soit finie. L expression deux
ou plusieurs participants indique quil faut au moins deux personnes pour accomplir
un protocole ; une personne isole ne peut accomplir un protocole. Il est vrai quune
personne seule peut raliser une srie d tapes pour accomplir une tche (par exemple,
cuire un gteau), mais ce nest pas un protocole. En dernier lieu, lexpression conu
pour accomplir une tche indique quun protocole doit faire quelque chose. Ce qui
ressemble un protocole mais qui naccomplit pas une tche nest pas un protocole
mais bien une perte de temps.
Les protocoles ont d autres caractristiques :
chaque participant dun protocole doit connatre le protocole et toutes les tapes
suivre davance ;
- chaque participant impliqu dans un protocole doit tre daccord pour adhrer
au protocole ;
- le protocole doit tre non ambigu : chaque tape doit tre bien dfinie et il ne
doit pas y avoir de possibilit de msentente ;
- un protocole doit tre complet: il doit y avoir une action spcifique chaque
situation possible.
1. D e fait, c est le but d e l inform atique tou t cou rt ce que beaucoup de gens tendent oublier.

Chapitre 2

24

Briques lmentaires

Les protocoles dans ce livre sont organiss en une srie dtapes. L excution d un
protocole parcourt linairement ces tapes, sauf sil y a des instructions de branchement
indiquant quil faut poursuivre partir dune autre tape. Chaque tape comprend des
calculs effectus par lun des participants, et/ou des messages envoys d un participant
un autre.
Un p r o t o c o le cry p to g ra p h iq u e est un protocole qui utilise la cryptographie. Les
participants peuvent tre des amis qui ont implicitement confiance les uns en les autres
ou ils peuvent tre des ennemis qui ne se font pas confiance du tout. Un protocole
cryptographique utilise certains algorithmes cryptographiques, mais en gnral le but
dun protocole va au-del de la simple confidentialit. Les participants dun protocole
peuvent vouloir partager partiellement un secret pour calculer une valeur, engendrer
une suite alatoire, convaincre lautre interlocuteur de son identit, ou signer simul
tanment un contrat. Tout lintret dutiliser la cryptographie dans un protocole est
d empcher ou de dtecter lespionnage ou la tricherie. Si vous n avez jamais vu de tels
protocols auparavant, cela va changer radicalement votre ide de ce que des participants
mutuellement mfiants peuvent accomplir sur un rseau informatique. En gnral, on
peut formuler cela ainsi:
- Il doit tre impossible de faire ou d apprendre plus que ce qui est prvu dans le
protocole.
C est beaucoup plus difficile quil ny parrat. De nombreux protocoles sont exami
ns dans les prochains chapitres. Dans certains, un des participant peut tromper les
autres. Dans d autres, un espion peut altrer le protocol ou apprendre des informations
secrtes. Certains protocoles chouent faute de prcision dans la dfinition des rgies.
D autres chouent parce que leurs auteurs ont manqu de mticulosit dans leur ana
lyse. Comme pour un algorithme, il est bien plus difficile de prouver quun protocle est
sr que le contraire.

But des protocoles


Dans la vie de tous les jours, il y a des protocoles informels pour quasiment tout : com
mander des marchandises par tlphone, jouer au poker, voter aux lections. Personne
ne pense vraiment ces protocoles ; ils ont volu au cours du temps, tout le monde
sait comment les utiliser et ils marchent.
De nos jours, les interactions humaines se font de plus en plus travers des rseaux
informatiques et non face face. Les ordinateurs ont besoin de protocoles pour faire
ce que les gens font sans y penser. Si vous dmnagez vers un autre pays et que vous
y trouvez un bureau de vote compltement diffrent de ce que vous avez lhabitude
dutiliser, vous vous adapterez facilement. Les ordinateurs ne sont pas aussi flexibles.
Nombre de protocoles face face requirent la prsence des gens pour assurer
limpartialit et la scurit. Enverriez-vous une liasse de billets un tranger pour quil
vous achte des marchandises? Joueriez-vous au poker avec quelquun si vous ne pouvez
pas le voir mlanger les cartes et les distribuer? Enverriez-vous au Gouvernement votre
vote par courrier sans quelque assurance que votre anonymat soit prserv?
Il est naf de croire que les utilisateurs dun rseau informatique sont honntes. Il est
naf de croire que les gestionnaires du rseau sont honntes. Il est mme naf de croire
que les concepteurs du rseau taient honntes. La plupart le sont mais les quelques

2.1

Introduction aux protocoles

25

autres peuvent faire beaucoup de dgts. En formalisant les protocoles, nous pouvons
examiner comment des participants malhonntes peuvent essayer de tricher et ainsi
dvelopper des protocoles qui excluent les tricheurs.
Non seulement les protocoles formalisent les comportements mais de plus il permettent
dabstraire le processus daccomplissement dune tche des mcanismes par lesquels
cette tche est accomplie. Un protocole de communication entre deux ordinateurs est
le mme, que ce soient des P C d IBM , des V A X de D i g i t a l o u encore des tlco
pieurs. Nous pouvons examiner les protocoles sans nous noyer dans les dtails de leur
ralisation concrte. Une fois que nous sommes convaincus de tenir un bon protocole,
nous pouvons le raliser avec nimporte quoi tel que des ordinateurs, des tlphones ou
mme des gaufriers intelligents.

Les acteurs
Pour illustrer les protocoles, j ai engag des acteurs (voir le tableau 2.1)2. Alice et
Bernard sont les acteurs principaux. Ils accompliront tous les protocoles gnraux
deux participants. Par convention, Alice commencera tous les protocoles. Bernard r
pondra. Si le protocole requiert lintervention d un troisime ou quatrime participant,
Christine et David seront appels la rescousse. Les autres acteurs joueront des rles
spcifiques qui seront dtaills plus tard.

T a b . 2.1

Alice
Bernard
Christine
David
Estelle
Martin
Ivan
Gatien
Patricia
Victor

- Liste des acteurs et de leur rle

participante de tous les protocoles


participant de tous les protocoles
participante des protocoles trois ou quatre participants
participant des protocoles quatre participants
espionne
attaquant malveillant actif
arbitre intgre
gardien : il surveillera Alice et Bernard dans certains protocoles
plaideuse
vrificateur (contrleur)

Protocoles arbitrs
Un arbitre est un tiers, personne de confiance et dsintresse qui veille au bon drou
lement du protocole (voir la figure 2.1a). L arbitre est dit dsintress parce quil
na pas dintrt dans laccomplissement du protocole et quil na aucune allgeance
envers les autres participants. L arbitre est dit de confiance parce que tous les par
ticipants au protocole acceptent que ce quil dit est vrai, que ce quil fait est correct
2.
Note du traducteur : dans la littrature anglo-saxonne, les prnom s des acteurs : A lice, B ob , Carol,
Dave, Eve, Mallet, Trent, W arden, P eggy et V ictor correspondent respectivem ent Alice, Bernard,
Christine, David, Estelle, M artin, Ivan, G atien, P atricia et V ictor dans cette dition franaise. Le
choix de Bernard plutt que B ob n est pas traditionnel mais cela ne change rien la com prhension
de louvrage car ces prnom s peuvent tre quelconques pour autant qu ils com m encent par la bonne
lettre.

Chapitre 2

26

Briques lmentaires

et que sa part du protocole sera complte. Les arbitres aident au bon accomplissement
de protocoles entre participants mfiants.

F ig. 2.1 - Types de protocoles


Dans le monde rel, les hommes de loi jouent souvent le rle darbitre. Par exemple,
Alice vend une voiture Bernard, un inconnu. Bernard veut payer par chque mais
Alice na aucun moyen de savoir si le chque est un chque en bois. Alice veut sassurer
de la solvabilit du chque avant de cder les papiers du vhicule (titre de proprit
inclus) Bernard. Bernard, qui na pas plus confiance en Alice quelle en lui, ne veut
pas donner le chque avant d avoir reu les papiers.
Un homme de loi qui a la confiance d Alice et de Bernardentre alors en scne. Grce
laide de celui-ci, Alice et Bernard peuvent se mettre d accord sur le protocole suivant,
qui garantit que ni lun ni lautre ne pourra tricher :
1 Alice donne les papiers et les clefs l homme de loi.
2 Bernard donne le chque Alice.
3 Alice dpose le chque sa banque.

2.1

Introduction aux protocoles

21

4 aprs un certain laps de temps ncessaire la vrification et l encaissement


du chque, lhomme de loi donne les papiers et les clefs Bernard. Si le chque
nest pas encaiss aprs le laps de temps donn, Alice en informe l homme de
loi et lui fournit la preuve de ce quelle avance; alors lhomme de loi rend les
papiers et les clefs Alice.

Dans ce protocole, Alice fait confiance lhomme de loi pour quil ne donne les papiers
et les clefs que si le chque est solvable (et donc encaiss) et pour quil lui rende ceuxci dans le cas contraire. Bernard fait confiance lhomme de loi pour quil garde les
papiers et les clefs jusqu ce que le chque soit encaiss. Pour lhomme de loi, peu
importe si le chque est solvable ou non. Il fera sa part du protocole dans tous les cas
puisquil sera pay de toute faon.
Dans cet exemple, lhomme de loi joue le rle dun agent de dpt. Les hommes de loi
agissent comme arbitres pour les testaments et parfois pour la ngociation de contrats.
Les Bourses agissent comme arbitres entre les acheteurs et les vendeurs.
Les banques agissent aussi comme arbitres. Bernard peut acheter la voiture d Alice
laide dun chque certifi :
1 Bernard fait un chque et le donne sa banque.
2 Aprs avoir retir du compte de Bernard le montant ncessaire pour couvrir le
chque et aprs lavoir plac sur un compte bloqu, la banque certifie le chque
et le rend Bernard.

3 Alice donne les papiers et les clefs Bernard et Bernard donne le chque certifi
Alice.
4 Alice dpose le chque sa banque.

Ce protocole est effectif parce quAlice a confiance en la certification ralise par la


banque. Alice pense que la banque garde bien son argent et quelle ne sen sert pas
pour des investissements douteux.
Un notaire est aussi un arbitre. Quand Bernard reoit un acte notari d Alice, il est
convaincu quAlice a bien sign ce document de sa propre main et volontairement. Le
notaire peut, si ncessaire, attester du fait en justice.
Le concept darbitre est aussi vieux que notre socit. Il y a toujours eu des gens
souverains, prtres, etc.
qui avaient lautorit et le devoir d agir honntement. Les
arbitres ont un rle et une position sociale particulire dans notre socit. Tromper
le public leur ferait perdre ce statut : des hommes de loi qui utiliseraient des dpts
fiduciaires des fins malhonntes sexposeraient la radiation de leur ordre. Cette
image de confiance ne correspond pas toujours la ralit mais nous montre lidal.
Cet idal peut tre adapt au monde de linformatique mais il y a quand mme quelques
difficults lorsque les ordinateurs arbitrent :
- Il est plus ais de trouver et davoir confiance en un tiers si on sait qui il est et si
on peut le rencontrer. Deux participants se mfiant lun de lautre ont de fortes
chances dtre mfiants vis--vis dun arbitre sans visage quelque part dans un
rseau.
- Le rseau informatique doit assumer le cot de larbitrage. Nous connaissons les
honoraires des notaires. Qui est prt en payer le cot dans un rseau informa
tique?

Chapitre 2

28

Briques lmentaires

- Il y a un dlai inhrent au protocole darbitrage.


- Larbitre doit soccuper de chaque transaction; il est un goulot d tranglement
potentiels dans toute ralisation grande chelle de protocoles. Augmenter le
nombre d arbitres peut aider faire face ce problme mais alors le cot de la
ralisation augmente aussi.
- Comme tout le monde sur le rseau doit faire confiance larbitre, il devient le
point sensible du rseau et la cible privilgie de ceux qui veulent corrompre le
rseau.
Malgr tout, les arbitres ont encore un rle jouer. Dans les protocoles, le rle de
larbitre sera tenu par Ivan.

Protocoles avec juge-arbitre


Larbitrage cote cher, aussi les protocoles arbitrs peuvent tre diviss en deux sousp r o to c o le s : un sous-protocole non arbitr qui est excut chaque fois que le protocole
est utilis, et un autre sous-protocole arbitr auquel on ne fait appel que sil y a un
litige entre les participants. Dans ce cas particulier, on ne parlera pas darbitre mais
de ju g e -a r b itr e (voir la figure 2.1b).
Un juge-arbitre est aussi un tiers dsintress et digne de confiance. Contrairement
un arbitre, il n est pas impliqu dans chaque protocole. Le juge-arbitre nest appel
que pour dterminer si une transaction a t effectue honntement.
Les juges sont des juges-arbitres professionnels. Contrairement au notaire, les juges
ninterviennent que lorsquil y a contestation. Alice et Bernard peuvent conclure un
contrat sans lintervention dun juge. Un juge ne verra jamais ce contrat sauf si lune
des parties porte laffaire devant les tribunaux.
Le protocole de signature de contrat peut tre formalis de la faon suivante :
Sous-protocole non arbitr (excut chaque fois)
1 Alice et Bernard ngocient les termes du contrat.
2 Alice signe le contrat.
3 Bernard signe le contrat.
Sous-protocole avec juge-arbitre (excut uniquement en cas de contestation) :
1 Alice et Bernard comparaissent devant un juge.
2 Alice prsente sa dfense.
3 Bernard prsente sa dfense.
4 Le juge tranche.
La diffrence entre un arbitre et un juge-arbitre (du moins pour les besoins de cet
ouvrage) est que le juge-arbitre nest pas toujours ncessaire. Sil y a contestation, un
juge est appel pour trancher. Sil ny a pas contestation, un juge nest pas ncessaire.
Il existe des protocoles informatiques avec juges-arbitres. Ces protocoles reposent sur
lhypothse que les participants sont honntes mais si quelquun triche, les donnes
collectes pendant lexcution du protocole permettront un tiers dsintress de d
terminer sil y a eu tricherie. Dans un bon protocole avec juge-arbitre, ce dernier peut

2.1

Introduction aux protocoles

29

galement indiquer lidentit de celui qui a trich. Au lieu dempcher la tricherie, les
protocoles avec juge-arbitre dtectent la tricherie. Le caractre invitable de la dtec
tion agit comme une mesure prventive et dcourage la fraude.

Protocoles discipline intrinsque


Un p r o to c o le disciplin e in trin squ e est le meilleur type de protocole. Le protocole
lui-mme garantit lintgrit de la transaction (voir la figure 2.1c). Il ne faut pas dar
bitre pour utiliser le protocole. Il ne faut pas de juges-arbitres pour rgler les conflits.
Le protocole est construit de telle faon que les contestations soient impossibles. Si l un
des participants essaie de tricher, lautre participant le dtecte immdiatement et le
protocole est interrompu. Quels que soient les espoirs du tricheur, ils seront dus.
Dans le meilleur des mondes, tout protocole devrait tre discipline intrinsque.
Malheureusement, il nexiste pas un tel protocole pour chaque type de transaction
possible.

Attaques de protocoles
Les attaques diriges contre les protocoles peuvent viser soit les algorithmes cryptogra
phiques utiliss par les protocoles, soit les techniques cryptographiques utilises pour
raliser les algorithmes, ou encore le protocole lui-mme. Comme ce paragraphe ne
traite que les protocoles, nous allons supposer que les algorithmes et les techniques
sont sres et ne regarder que les attaques contre le protocole lui-mme.
II y a plusieurs faons d attaquer un protocole. Quelquun qui n est pas impliqu dans
le protocole peut espionner tout ou partie de celui-ci. C est ce que lon appelle une
attaque passive parce que lattaquant ne modifie pas le protocole. Tout ce quil peut
faire cest observer le protocole et ainsi essayer de collecter de linformation. Ce type
dattaque correspond une attaque texte chiffr seulement, telle celle que dcrite dans
le paragraphe 1.1. Les attaques passives sont difficiles dtecter, aussi les protocoles
essayent de sen prmunir plutt que de les dtecter. Dans de telles attaques le rle de
lespion sera jou par Estelle.
Un attaquant peut aussi essayer d altrer le protocole pour le tourner son avantage. Il
peut prtendre tre quelquun dautre, intercaler de nouveaux messages, supprimer des
messages, remplacer un message par un autre, envoyer un vieux message, dtruire le
canal de communication ou encore modifier linformation enregistre par un ordinateur.
On parlera alors da ttaq u es actives car elles requirent une attitude active de la part
de lattaquant. La manire dont sont menes ces attaques dpendent du rseau.
Les attaquants passifs ne sont intresss que par linformation quils peuvent glaner
concernant les participants au protocole. Ils collectionnent les messages qui circulent
entre les diffrents participants et en essayant de les cryptanalyser. Les attaques ac
tives peuvent au contraire avoir bien dautres objectifs. Lattaquant peut vouloir soit
obtenir de linformation, soit dgrader les performances du systme, soit corrompre de
linformation existante, soit encore avoir accs des ressources non autorises.
Les attaques actives sont bien plus srieuses, plus particulirement dans les protocoles
o les participants nont pas confiance entre eux. Lattaquant nest pas forcment un
tranger. Il peut tre un utilisateur lgitime du systme. Il peut tre ladministrateur
du systme. Il peut mme y avoir plusieurs attaquants actifs, travaillant ensemble,

Chapitre 2

30

Briques lmentaires

chacun tant un utilisateur lgitime. Le rle de lattaquant malicieux actif sera jou
par Martin.
Il se peut que lattaquant soit un des participants au protocole. Ilpeut mentir pendant
le protocole ou mme ne pas du tout suivre les rgles. Ce type dattaquantest appel
tricheur. Les trich eu rs passifs respectent le protocole mais ils essaient dobtenir
plus d informations que le protocole ne leur permet normalement. Les tricheu rs actifs
altrent le protocole en cours en essayant de tricher.
Il est trs difficile de garantir la scurit du systme si la plupart des participants
sont des tricheurs actifs mais, parfois, il est possible pour les participants lgitimes de
dtecter quil y a tricherie active. De toute faon, les protocoles doivent se prmunir
de manire fiable contre la tricherie passive.

2.2

Communications laide
dun cryptosystme clef secrte

Comment deux parties peuvent-elles communiquer de manire sre? Ils chiffrent leur
communication bien sr. Le protocole complet est plus compliqu que cela. Voyons
comment Alice peut envoyer un message chiffr Bernard :
1 Alice et Bernard choisissent un cryptosystme.
2 Alice et Bernard choisissent une clef.
3 Alice chiffre son texte en clair l aide de l algorithme choisi et avec la clef
slectionne. Cette tape produit un texte chiffr.

4 Alice envoie le texte chiffr Bernard.


5 Bernard dchiffre le texte chiffr avec le mme algorithme et la mme clef, et
finalement lit le message.

Que peut apprendre Estelle un espion qui se place entre Alice et Bernard, en coutant
le protocole? Si tout ce quelle peut entendre est la transmission de ltape 4, elle peut
essayer de cryptanalyser le texte chiffr. Cette attaque passive est une attaque texte
chiffr seulement. Il existe des algorithmes qui sont rsistants (pour autant que lon
sache) peu importe la puissance de calcul dont Estelle dispose pour sy attaquer.
Toutefois, Estelle nest pas stupide. Elle sait que si elle peut couter les tapes 1 et
2 du protocole, elle aura ce quil lui faut. Elle connatra alors lalgorithme et la clef;
elle en saura autant que Bernard. Quand le message est transmis ltape 4, tout ce
quelle a faire est de le dchiffrer pour elle-mme.
Un bon cryptosystme est un systme o la scurit est inhrente la connaissance
de la clef et non pas celle de lalgorithme. C est pourquoi la gestion des clefs est un
problme si important en cryptographie. Avec un algorithme clef secrte, Alice et
Bernard peuvent raliser ltape 1 en public mais ils doivent raliser ltape 2 en secret.
La clef doit rester secrte avant, pendant et aprs le protocole, sinon, le message ne
serait plus confidentiel3.
3.
La cryptographie clef publique rsout ce problm e d une autre manire qui sera dcrite dans
le paragraphe 2.5.

2.3

Fonctions sens unique

31

Martin, un attaquant actif, peut faire d autres choses. Il peut essayer de casser le canal
de communication de ltape 4, sassurant ainsi quAlice ne peut pas transmettre du
tout son message Bernard. Martin peut aussi intercepter les messages dAlice et les
remplacer par dautres de son cru. Si de plus Martin connat la clef (en interceptant la
communication de ltape 2 par exemple), il peut chiffrer ses propres messages et les
envoyer Bernard en lieu et place des messages intercepts. Bernard naurait aucun
moyen de dtecter que ces messages ne viennent pas d Alice. Si Martin ne connaissait
pas la clef, les messages quil enverrait en remplacement seraient du charabia lorsquils
seraient dchiffrs par Bernard. Bernard, pensant que le message vient dAlice, croirait
que le rseau, ou Alice, ont de srieux problmes.
Quant Alice, que peut-elle faire pour fausser le protocole? Elle peut donner une copie
de la clef Estelle. A laide de celle-ci, Estelle peut lire tout ce que Bernard dit. Elle
peut reproduire ses propos dans le New York Times. Bien que cela soit grave, la faute
nest pas imputable au protocole. Il ny a rien dans le protocole qui puisse empcher
Alice de donner une copie du texte en clair Estelle. Bien sr, Bernard peut faire
tout ce quAlice peut faire. Ce protocole prsume quAlice et Bernard se font confiance
mutuellement.
En rsum, un cryptosystme clef secrte a les problmes suivants :
- Les clefs doivent tre distribues secrtement. Elles ont autant de valeur que
tous les messages chiffrs avec elles car connatre les clefs donne accs tous les
messages. Pour des cryptosystmes utiliss lchelle de la plante, la distribution
des clefs peut tre une tche dcourageante. Souvent, des messagers apportent
les clefs leur destination (de la main la main).
- Si la clef est compromise (vole, devine, extorque, achete, etc.) alors Estelle
peut dchiffrer tous les messages chiffrs laide de cette clef. Elle peut alors
se faire passer pour lun des participants et insuffler ses propres messages pour
tromper lautre participant.
- Si une clef diffrente est utilise pour chaque paire dutilisateurs dun rseau, le
nombre total de clefs crot trs vite par rapport au nombre d utilisateurs. Par
exemple, 10 utilisateurs ont besoin de 45 clefs diffrentes pour pouvoir mener
nimporte quelle conversation deux deux ; 100 utilisateurs ont besoin de 4950
clefs diffrentes. Ce problme peut tre minimis en gardant un petit nombre
dutilisateurs mais cela nest pas toujours possible.

2.3

Fonctions sens unique

La notion de fo n ctio n s sens u n iqu e est fondamentale pour la cryptographie clef


publique. Bien quelles ne constituent pas un protocole en elles-mmes, les fonctions
sens unique sont des lments de base de la plupart des protocoles dcrits dans ce
livre.
Une fonction sens unique est une fonction relativement aise calculer mais consid
rablement plus difficile inverser. En dautres termes, tant donn un x, il est facile de
calculer f(x), mais tant donn f(x) il est difficile de calculer x. Dans ce contexte, dif
ficile veut dire quil faudrait des millions d annes pour calculer la fonction inverse
mme si tous les ordinateurs du monde sattelaient la tche.

32

Chapitre 2

Briques lmentaires

Casser une assite est un bon exemple de fonction sens unique. Il est facile de cas
ser lassite en mille morceaux. Toutefois, il est trs difficile de recoller les morceaux
ensembles pour reconstruire lassite.
Cela a lair correct mais on ne peut pas en dmontrer la vracit. D un point de
vue strictement mathmatique, il ny a pas de preuve que des fonctions sens unique
existent ni mme d indice quelles peuvent tre dfinies [233, 532, 603, 662]. Cependant,
de nombreuses fonctions ont lair dtre sens unique: nous pouvons facilement les
calculer et, ce jour, nous ne connaissons pas de moyen simple pour les inverser. Par
exemple, x2 dans un corps fini est facile calculer mais le calcul de \fx est nettement
plus difficile. Par la suite, je prtendrai que des fonctions sens unique existent. Nous
en reparlerons dans le paragraphe 11.2.
Mais quoi peuvent bien servir des fonctions sens unique? On ne peut pas les
utiliser telles quelles pour le chiffrement. Un message chiffr laide dune fonction
sens unique nest pas d une grande utilit: personne ne peut le dchiffrer4. Pour la
cryptographie clef publique, nous avons besoin de ce que lon appelle une fon ctio n
sens u n iqu e b r ch e s e c r te 5.
Une fo n ctio n sens unique brch e secrte est un type spcial de fonction sens
unique. Il est facile de la calculer dans un sens et difficile de le faire dans lautre sens.
Mais pour celui qui connat le secret, il est ais de calculer la fonction dans lautre sens.
En d autres termes, il est facile de calculer f (x) tant donn x et difficile de calculer x
tant donn f{x). Toutefois, il existe une information secrte, y, telle qutant donn
f(x) et y, il est facile de calculer x.
Une montre est un bon exemple de fonction sens unique brche secrte. Il est facile
de dmonter une montre en ses centaines de pices. Il est trs difficile de remettre
les pices ensemble pour reconstruire une montre qui fonctionne. Toutefois, grce
linformation secrte que constitue le plan de montage de la montre, il est bien plus
facile de reconstruire la montre.

2.4

Fonctions de hachage sens unique

Une fo n c tio n d e h achage sens u n ique porte de nombreux noms: fonction de


compression, fonction de contraction, digest, empreinte digitale, code correcteur
cryptographique, code de vrification d intgrit, code de dtection de manipulation6.
Peu importe comment on les appelle, de telles fonctions sont fondamentales pour la
cryptographie moderne. Ces fonctions interviennent comme lments de base dans de
nombreux protocoles.
Des fonctions de hachage ont t utilises en informatique depuis longtemps. Une fonc
tion de hachage est une fonction, mathmatique ou autre, qui convertit une chane de
caractres de longueur quelconque en une chane de caractres de taille fixe (souvent
de taille infrieure, cette chane est appele em p rein te). Un exemple de fonction de
hachage simple est une fonction qui partir dune chane de caractres calculerait un
4. E xercice : crivez un message sur une assiette, cassez l assiette en mille m orceaux, et donnez
ensuite les morceaux un ami. Demandez-lui de lire le message. Constatez quel point votre ami est
impressionn par cette fonction sens unique.
5. Il existe des applications cryptographiques des fonctions sens unique tou t court (voir 3.2).
6. N ote du traducteur : les fonctions de hachages sont parfois appeles fonctions adressage
dispers .

2.5

Communications laide dun cryptosystme clef publique

33

octet qui serait le rsultat du ou exclusif de tous les caractres de la chane donne.
Le but de lopration est de dterminer une empreinte digitale de la chane de caractres
dentre. Cette empreinte permettrait de dterminer si une autre chane a des chances
dtre identique celle pour laquelle lempreinte a t calcule. Comme les fonctions
de hachage ont la caractristique de faire correspondre plusieurs valeurs d entre dif
frentes une mme valeur de sortie, on ne peut pas sen servir pour dterminer avec
certitude si deux chanes sont gales mais on peut lutiliser pour avoir une garantie
raisonnable d galit.
Une fonction de hachage sens unique est une fonction de hachage qui est aussi une
fonction sens unique ; il est ais de calculer lempreinte partir de la chane d entre
mais il est difficile dengendrer des chanes qui ont une certaine empreinte. La fonction
de hachage du paragraphe prcdent nest pas sens unique : tant donn un octet, il
est trivial dengendrer une chane dont le ou exclusif de ses caractres donne cet
octet-l. Vous ne pourriez pas faire cela pour des fonctions de hachage sens unique.
Avec une bonne fonction de hachage sens unique, il est aussi difficile de produire
deux chanes ayant la mme empreinte.
La fonction de hachage est publique; il ny a pas de secret dans lopration. Une fonction
de hachage est sre parce quelle est sens unique. La sortie ne dpend pas de lentre
de manire observable. Tout changement d un bit quelconque lentre entrane le
changement, en moyenne, de la moiti des bits du rsultat. Etant donn une empreinte
il est irralisable par calcul de trouver une chane ayant cette empreinte.
Pensez cela comme un moyen d associer une empreinte des fichiers. Si vous vou
lez vrifier que quelquun possde un fichier donn (que vous avez aussi) sans quil
vous lenvoie, vous lui demandez alors lempreinte du fichier. Sil vous envoie la bonne
empreinte, alors il est trs probable que la personne a le fichier en question. C est
particulirement adapt aux transactions financires o lon ne veut pas quun retrait
de cent francs devienne un retrait de mille francs. Normalement, vous utiliseriez une
fonction de hachage sens unique sans clef de telle manire que nimporte qui puisse
calculer lempreinte. Si vous voulez que seul votre correspondant soit capable de la
calculer, alors lisez le paragraphe suivant.

Code dAuthentifcation de Messages


Un C o d e d A u tie n tifica tio n d e M essages (C A M ) est une fonctions de hachage
sens unique qui fonctionne de plus avec une clef secrte (voir 18.14). Lempreinte d
pend la fois de lentre et de la clef. Tout se passe en thorie comme avec une fonction
de hachage sauf quil faut avoir la clef pour calculer lempreinte. On peut construire un
CAM partir dune fonction de hachage ou d un algorithme de chiffrement par bloc.
Il existe aussi des fonctions spcialement conues pour faire un C A M .

2.5

Communications laide
dun cryptosystme clef publique

On peut comparer un algorithme clef secrte un coffre-fort. La clef est la com


binaison du coffre. Celui qui connat la combinaison peut ouvrir le coffre, mettre un
document lintrieur et le refermer. Quelquun dautre, qui possde aussi la combi

Chapitre 2

34

Briques lmentaires

naison, peut ouvrir le coffre et prendre le document. Toute personne qui ne connat
pas la clef na pas dautre ressort que d apprendre lart de percer les coffres-forts.
En 1976, Whitfeld D i f f i e et Martin H e l l m a n ont chang ce paradigme de la cryp
tographie tout jamais [494]7. Ils ont dcrit la cry p to g ra p h ie c le f publique. Au
lieu d une clef, il y a deux clefs diffrentes : une publique et une prive. De plus, il est
difficile de calculer la clef prive partir de la clef publique. Toute personne peut
laide de la clef publique chiffrer un message mais elle ne peut pas le dchiffrer. Seule la
personne en possession de la clef prive peut dchiffrer le message. C est comme si quel
quun avait chang le coffre-fort de la cryptographie en une bote aux lettres. Mettre
une lettre dans la bote revient chiffrer avec la clef publique, tout le monde peut le
faire. Il suffit de la glisser dans la fente. Sortir le courrier de la bote revient dchiffrer
avec la clef prive. C est difficile en gnral, il faut un chalumeau. Cependant, celui
qui dtient le secret (la clef physique de la bote aux lettres) peut facilement retirer le
courrier de la bote.
Mathmatiquement, le procd est bas sur une fonction sens unique brche secrte
dcrite ci-dessus. Le chiffrement est la direction facile La clef publique constitue les
instructions pour le chiffrement : tout le monde peut chiffrer un message. Le dchif
frement est la direction difficile. C est suffisamment difficile pour que des gens avec
des ordinateurs C r a y et des milliers (ou mme des millions) dannes leur disposi
tion ne puissent pas dchiffrer les messages sans connatre le secret. Le secret, ou la
brche secrte, est la clef prive. Avec ce secret, le dchiffrement est aussi facile que le
chiffrement.
Voici comment Alice peut envoyer un message Bernard en utilisant la cryptographie
clef publique :
1 Alice et Bernard choisissent un cryptosystme clef publique.
2 Bernard envoie Alice sa clef publique.
3 Alice chiffre son message en utilisant la clef publique de Bernard et lui envoie
le rsultat.

4 Bernard dchiffre le message dAlice en utilisant sa clef prive.


Remarquez comment la cryptographie clef publique rsout le problme la distribution
des clefs de la cryptographie clef secrte. Avant, Alice et Bernard devaient se mettre
daccord sur une clef en secret. Alice pouvait en choisir une au hasard mais elle devait
toutefois la faire parvenir Bernard. Elle pouvait la lui avoir donne par le pass mais
cela imposait de se rencontrer auparavant. Elle pouvait la lui envoyer par courrier
recommand mais cela prend du temps. La cryptographie clef publique rend la chose
facile. Sans aucun arrangement au pralable, Alice peut envoyer un message confideiitiel
Bernard. Estelle, qui coute tout lchange, dispose de la clef publique de Bernard
et du message chiffr avec cette clef, mais elle ne peut ni retrouver la clef prive de
Bernard ni le contenu du texte en clair du message.
Plus gnralement, un groupe d utilisateurs en rseau saccordent pour utiliser un cryp
tosystme clef publique. Chaque utilisateur a sa ou ses clefs publiques et prives.
Toutes les clefs publiques sont disponibles dans une base de donnes quelque part.
7. La N SA prtend avoir eu connaissance du con cept ds 1966, mais ne la jam ais prouv.

2.5

Communications laide dun cryptosystme clef publique

35

Ainsi le protocole est plus simple :


1 Alice obtient la clef publique de Bernard par la base de donnes.
2 Alice chiffre son message en utilisant la clef publique de Bernard et lui envoie
le rsultat.

3 Bernard dchiffre le message dAlice en utilisant sa clef prive.


Dans le premier protocole, Bernard devait envoyer sa clef publique Alice avant quelle
ne puisse lui envoyer un message. Le second protocole est plus proche du courrier
traditionnel. Bernard nest pas concern par le protocole tant quil ne lit pas son
courrier.

Cryptosystmes hybrides
Les premiers algorithmes clef publique furent publis lpoque o il tait question
de prendre le DES comme standard. Il en rsulta une sorte de politique partisane dans
le milieu de la cryptographie. D i f f i e la dcrivit dans ces termes [492] :
Lexcitation provoque par les cryptosystmes clef publique dans la
presse populaire et la presse scientifique na pas t partage par ladmi
nistration cryptographique. Lanne de la dcouverte de la cryptographie
clef publique, la National Security Agency (N SA) proposait d'adop
ter un systme cryptographique conventionnel, conu par International
Business Machines (IB M ), comme standard fdral de chiffrement de
donnes (DES, Data Encryption Standard ). Marty Hellman et moi
critiquions la proposition sur le fait que sa clef tait trop courte, mais
les fabricants taient prts soutenir le standard propos et nos critiques
taient vues par beaucoup comme une tentative d enrayer le processus de
cration du standard au profit de nos propres travaux. La cryptographie
clef publique fut attaque son tour dans la litrature commerciale [1131]
et par des articles se voulant techniques [850, 1159], comme si elle tait plus
un produit en concurrence quune rcente dcouverte. Ceci nempcha pas
nanmoins la NSA rclamer sa part de mrite. Son directeur prcisa dans
lEncyclopdie Britannica [1466] qu il avaient dcouvert la cryptographie
deux clefs dix ans plus tt , bien quaucune preuve de cette affirmation
nait jamais vu le jour.
En pratique, les algorithmes clef publique ne se substituent pas aux algorithmes
clef secrte. On les utilise pour chiffrer des clefs et non des messages. Il y a deux raisons
cela:
- Les algorithmes clef publique sont lents. Les algorithmes clef secrte sont
gnralement au moins 1000 fois plus rapides que les algorithmes clef publique.
Il est vrai que les ordinateurs sont de plus en plus rapides et quils pourront
dans quinze ans utiliser la cryptographie clef publique aussi rapidement que la
cryptographie clef secrte aujourdhui. Mais les besoins en bande passante aug
mentent aussi et on aura toujours besoin de chiffrer des donnes plus rapidement
que cela nest possible avec la cryptographie clef publique.

Chapitre 2

36

Briques lmentaires

- Les cryptosystmes clef publique sont vulnrables aux attaques texte en clair
choisi. Si C = E(Ai) o A i est un texte en clair parmi n textes en clair possibles,
alors il suffit un cryptanalyste de chiffrer les n messages et de comparer les
textes chiffrs rsultant avec C (la clef de chiffrement est publique). Il ne pourra

pas trouver la clef de dchiffrement de cette manire, mais il pourra dterminer


M.

Une attaque texte en clair choisi peut tre particulirement efficace sil y a relative
ment peu de messages chiffrs possibles. Par exemple, si A i est un montant en francs
infrieur un million, cette attaque marchera; le cryptanalyste essaye les un million
de montants possibles. (Le chiffrement probabiliste rsoud ce problme; voir 23.15.)
Mme si A i nest pas aussi clairement dfini, cette attaque peut tre trs efficace.
Savoir simplement quun texte chiffr ne correspond pas un texte en clair particulier
peut savrer une information utile. Un cryptosystme clef secrte ne prsente pas
ce dfaut car un cryptanalyste ne peut pas faire des chiffrements dessai avec une clef
inconnue.
Dans la plupart des applications pratiques, la cryptographie clef publique est utilise
pour protger et distribuer les clefs de session, et ces clefs d e session sont utilises
dans des algorithmes clef secrte pour protger les messages transmis [879]. Cela est
parfois appel im c r y p to sy st m e hybride.
1 Bernard envoie sa clef publique Alice.
2 Alice engendre une clef de session alatoire, k, la chiffre avec la clef publique
de Bernard et envoie le rsultat Bernard.
E B{k)

3 Bernard utilise sa clef prive pour dchiffrer le message dAlice et ainsi retrou
ver la clef de session.
D B(EB(k)) = k

4 Alice et Bernard utilisent alors la mme clef de session pour chiffrer leur
conversation.

En ce qui concerne la distribution des clefs, la cryptographie clef publique rsout un


important problme de manipulation de clefs. Avec la cryptographie clef secrte, la
clef de chiffrement repose quelque part avant de servir. Si Estelle met la main dessus,
elle peut dchiffrer les messages qui seront chiffrs avec cette clef. Avec le protocole
ci-dessus, la clef de chiffrement est cre au moment de son utilisation pour chiffrer
les communications et elle est dtruite ds quon en a plus besoin. Cela rduit consi
drablement le risque de compromettre la clef de session. Bien sr, c est la clef prive
qui risque dtre compromise, mais moindre risque puisquelle nest utilise quune
fois par communication pour chiffrer une clef de session. Il en sera question au para
graphe 3.1.

Les nigmes de Merkle


Ralph Merkle a invent le premier un systme de cryptographie clef publique. En
1974, il sest inscrit un cours de scurit en informatique donn par Lance Hoffman

2.6

Signatures numriques

37

lUniversit de Berkeley en Californie. Son devoir de fin dnne, soumis bien avant
la fin de lanne avait pour sujet le problme des Communications prives par des
canaux peu srs [1073]. Hoffman ne put comprendre lide de Merkle et ce dernier
abandonna peut-tre le cours. Il continua de travailler sur le problme, malgrs un
chec continuel faire comprendre ces rsultats.
La technique de Merkle tait base sur des nigmes plus faciles rsoudre pour
lexpditeur et le destinataire que pour un espion. Voici comment Alice envoie un
message chiffr Bernard sans avoir besoin dchanger une clef avec lui.
1 Bernard engendre 220 (ou environ un million) de messages de la form e: Ceci
est lnigme numro x. Voici la clef secrte y , o x est un nombre altoire
et y une clef secrte alatoire, x et y sont tous les deux diffrents pour chaque
message. Il chiffre chaque message avec une clef de 20 bits diffrente et les
envoie Alice.

2 Alice choisi un message au hasard et opre une attaque exhaustive pour retrou
ver le texte en clair. Cela demande un travail important mais pas impossible.

3 Alice chiffre son message secret avec la clef quelle a rcupre et lenvoie
Bernard avec x.
4 Bernard connat la clef secrte y quil avait mise dans le message x, aussi
peut-il dchiffrer le message.

Estelle peut casser ce systme, mais elle doit faire beaucoup plus de travail que Alice
ou Bernard. Pour retrouver le message de ltape 3, elle doit effectuer une attaque
exhaustive sur chacun des 220 messages de ltape 1; cette attaque a une complexit
de 240. La valeur de x naidera pas Estelle car elle a t donne au hasard ltape 1.
En gnral, Estelle doit effectuer un effort environ gal au carr de celui produit par
Alice.
Cet avantage de n par rapport n2 est petit pour les standards cryptographiques mais
cela peut suffir dans certaines circonstances. Si Alice et Bernard pauvent tester dix
mille clefs par seconde, il leur faudra chacun une minute pour mener bien leur tape
et une autre minute pour envoyer les nigmes de Bernard Alice par une liaison 1,544
mgaoctets. Si Estelle dispose de moyens de calcul comparables, il lui faut environ un
an pour casser le systme. Il existe d autres algorithmes encore plus difficiles casser.

2.6

Signatures numriques

Les signatures manuscrites sur des documents ont t longtemps utilises pour prou
ver lidentit de leur auteur ou du moins laccord du signataire avec le contenu du
document. Quest-ce qui rend une signature si importante [1396] ?
1. Une signature est authentique. La signature convainc le destinataire que le signa
taire a dlibrment sign le document.
2. Une signature ne peut pas tre falsifie (imite). La signature est la preuve que
le signataire a dlibrment sign le document.

Chapitre 2

38

Briques lmentaires

3. Une signature nest pas rutilisable. La signature fait partie du document et


une personne malintentionne ne peut pas dplacer la signature sur un autre
document.
4. Un document sign est inaltrable. Une fois le document sign, il ne peut plus
tre modifi.
5. Une signature ne peut pas tre renie. La signature et le document sont des
objets physiques. Le signataire ne peut pas prtendre plus tard ne pas avoir
sign le document.
Dans la ralit, aucune de ces affirmations nest, tout fait vraie. Les signatures peuvent
tre falsifies; des signatures peuvent tre transfres d un document lautre. Les
documents peuvent tre altrs aprs avoir t signs. Toutefois, nous acceptons de
vivre avec ces problmes : c est difficile de tricher et on risque dtre dmasquer.
On aimerait bien faire la mme chose avec des ordinateurs mais il y a des problmes.
Premirement, les fichiers informatiques sont facilement copiables. Mme si la signature
de quelquun est difficile falsifier (une image graphique de la signature manuscrite,
par exemple), il est facile de la transfrer d un document un autre par couper,
coller . La simple prsence d une telle signature ne garantit rier. Deuximement, il
est facile de modifier un document aprs quil a t sign sans laisser de traces de la
modification.

Signature de documents laide dun cryptosystme clef se


crte et dun arbitre
Alice veut signer un message numrique et lenvoyer Bernard. Avec laide d Ivan et
d un cryptosystme clef secrte, elle peut le faire.
Tvan est un arbitre puissant et respect. Il peut communiquer avec Alice et Bernard
(ou toute autre personne dsirant signer un message numrique). Il partage une clef
secrte, K a avec Alice et une clef secrte diffrente K b avec Bernard. Ces clefs ont t
tablies longtemps avant que le protocole ne soit excut et elles peuvent tre utilises
plusieurs fois pour plusieurs signatures.
1 Alice chiffre son message pour Bernard avec la clef K a et envoie le rsultat
Ivan.

2 Ivan dchiffre le message avec K a 3 Ivan assemble le message dchiffr et un avis comme quoi il a reu ce message
d Alice. Ivan chiffre le rsultat avec K b -

4 Bernard dchiffre le tout avec K b - Il peut maintenant lire le message et la


certification dIvan comme quoi Alice a bien envoy ce message.

Comment Ivan sait-il que le message vient bien d Alice et non pas dun imposteur? Il
dduit cela du message chiffr. Comme seuls lui et Alice partagent la clef secrte, seule
Alice peut chiffrer un message avec cette clef.
Est-ce aussi valable quune signature sur papier? Voyons caractristique par caract
ristique :
1. La signature est authentique. Ivan est un arbitre en qui on a confiance et Ivan
sait que le message venait dAlice. Le certificat d Ivan sert de preuve Bernard.

2.6

Signatures numriques

39

2. La signature est infalsifiable. Seule Alice (et Ivan mais tout le monde lui fait
confiance) connat K A, donc seule Alice peut envoyer un message chiffr avec K A
Ivan. Si quelquun avait essay de se faire passer pour Alice, Ivan sen serait
rendu compte immdiatement ltape 2 du protocole et naurait pas certifi
lauthenticit du message.
3. La signature nest pas rutilisable. Si Bernard essaie de prendre le certificat d Ivan
et quil lassocie un autre message, Alice crierait limposture. Alors, un arbitre
(qui peut tre Ivan, mais cela peut tre nimporte quel arbitre ayant accs la
mme information) demanderait Bernard de produire le texte en clair. Larbitre
chiffrerait le texte en clair avec K A et constaterait que le message chiffr ne
correspond pas celui que Alice a donn Ivan. Bien entendu, Bernard ne peut
pas produire un message chiffr valide puisquil ne connat pas K A.
4. Le document sign est immuable. Si Bernard falsifiait le message aprs lavoir
reu, Ivan pourrait dvoiler limposture exactement de la mme faon que celle
dcrite au paragraphe prcdent.
5. La signature ne peut pas tre renie. Mme si plus tard, Alice prtend ne pas
avoir envoy le message, le certificat d Ivan dmontre le contraire. Rappelez-vous
que tout le monde a confiance en Ivan, ce quil dit est la vrit.
Si Bernard veut montrer le document sign par Alice Christine, il ne peut pas rvler
sa clef secrte Christine. Il doit passer par Ivan galement :
1 Bernard prend le message en clair et le texte du certificat dIvan, chiffre le tout
avec K b et envoie cela Ivan.

2 Ivan dchiffre le tout avec K b 3 Ivan vrifie dans sa base de donnes que le message original venait bien dAlice.
4 Ivan chiffre le tout avec K (la clef secrte quil partage avec Christine) et
envoie le rsultat Christine.

5 Christine dchiffre le tout avec K c . Elle peut maintenant lire le message en


clair et le certificat dIvan qui affirme quAlice a bien envoy ce message.

Ces protocoles sont valables mais ils sont coteux en temps pour Ivan. Il doit passer ses
journes chiffrer et dchiffrer des messages, jouant le rle dintermdiaire pour toute
paire de correspondants qui veulent schanger des documents signs. Il doit garder une
copie de chaque message (encore que ceci puisse-tre vit en envoyant au destinataire
une copie du message crypt de lexpditeur). Ivan va devenir le goulot d tranglement
du systme de communication mme sil est incarn par un programme informatique
sans me.
Ce qui est plus ardu reste encore de crer et d entretenir quelquun comme Ivan, quel
quun en qui tout le monde dans le rseau a confiance. Ivan doit tre infaillible ; mme
sil ne fait quune erreur sur un million de signatures, personne naura confiance en
lui. Ivan doit tre totalement sr. Si sa base de donnes de clefs secrtes venait tre
divulgue ou si quelquun modifiait son code, toute signature deviendrait inutilisable.
Des faux documents prtendument signs des annes auparavant pourraient fleurir. Il
en rsulterait le chaos. Cela pourrait marcher en thorie mais il en va autrement de la
pratique.

Chapitre 2

40

Briques lmentaires

Signature de documents laide dun cryptosystme clef pu


blique
Il existe des algorithmes clef publique qui peuvent tre utiliss pour des signatures
numriques. Pour certains algorithmes lalgorithme R SA (voir 19.3) en est un
exemple la clef publique, ou la clef prive peuvent tre utilises pour le chiffrement.
Chiffrez un document avec votre clef prive et vous avez une signature numrique
sre. Dans dautres cas lalgorithme DSA (voir 20.1) en est un exemple il
y a un algorithme spar pour les signatures numriques qui ne peut pas tre utilis
pour le chiffrement. Cette ide a t exprime pour la premire fois par DIFFIE et
H e l l m a n [494] et a t tendue et amliore par d autres [1293, 1339, 1034, 1294, 440].
Se rfrer [1105] pour une vue gnrale sur le domaine.
Le protocole est simple :
1 Alice chiffre le document avec sa clef prive, signant ainsi le document.
2 Alice envoie le rsultat Bernard.

3 Bernard dchiffre le message avec la clef publique d Alice, vrifiant ainsi la


signature.

Ce protocole est nettement meilleur que le prcdent. Ivan nest pas ncessaire ni pour
signer, ni pour vrifier les signatures8. Alice et Bernard nont mme pas besoin dIvan
pour rsoudre les contestations : si Bernard ne peut effectuer ltape 3, alors il sait que
la signature nest pas valide.
Ce protocole a aussi les proprits que nous recherchons :
1. La signature est authentique: quand Bernard vrifie le message avec la clef pu
blique d Alice, il sait quAlice la sign.
2. La signature est infalsifiable : seule Alice connat sa clef prive.
3. La signature nest pas rutilisable : la signature est une fonction du document et
elle ne peut tre transfre sur nimporte quel autre document.
4. Le document sign est immuable : sil y a la moindre falsification du document,
il ne peut plus tre vrifi avec la clef publique d Alice.
5. La signature ne peut pas tre renie. Bernard na pas besoin de laide d Alice
pour vrifier sa signature.

Documents signs et datations


En fait, Bernard peut duper Alice dans certaines circonstances. Il peut rutiliser la
signature et le document ensemble. Ce nest pas trs intressant si Alice a sign un
contrat (quest-ce quune copie de plus ou de moins du contrat original?) mais cela
devient trs intressant si Alice a sign un chque numrique.
Supposons qu Alice envoie Bernard un chque numrique dune valeur de 100 francs
Bernard porte le chque la banque, celle-ci vrifie la signature et transfre largent du
8. II est ncessaire pour assurer que la clef publique d A lice est bien la sienne.

2.6

Signatures numriques

41

compte d Alice au compte de Bernard. Bernard qui est un personnage peu recommandable garde une copie du chque numrique. La semaine suivante, il peut lapporter de
nouveau la banque (ou mme une autre banque). La banque vrifie la signature et
transfre largent d un compte lautre. Si Alice ne vrifie jamais ses relevs bancaires,
Bernard peut continuer ainsi ad vitam aeternam.
Pour viter cela, les signatures numriques contiennent souvent une datation (date +
heure) Cette datation de la signature est attache l ensemble du message et signe
avec le reste du message. La banque stocke ces datations dans une base de donnes.
Ds lors, si Bernard essaie d encaisser le chque dAlice une deuxime fois, la banque
compare la datation avec sa base de donnes. Comme la banque dj honor ce chque
avec la mme datation, la banque appelle la police. Bernard passe alors quhize ans en
prison et occupe son temps libre apprendre les protocoles cryptographiques.

Signature de documents laide dun cryptosystme clef pu


blique et dune fonction de hachage sens unique
Dans les applications pratiques, les algorithmes clef publique sont souvent trop in
efficaces pour signer de longs documents. Pour gagner du temps, les protocoles de
signatures numriques sont souvent raliss avec des fonctions de hachage sens
unique [432, 433]. Au lieu de signer le document, Alice signe lempreinte du document.
Dans ce protocole, les choix de la fonction de hachage sens unique et de lalgorithme
de signature numrique ont t fixs avant quil ne se droule.
1 Alice calcule, laide de la fonction de hachage sens unique, lempreinte de
son document.
2 Alice chiffre, laide de lalgorithme de signature numrique, cette empreinte
avec sa clef prive, signant ainsi par la mme occasion le document.

3 Alice envoie le document et lempreinte signe Bernard.


4 Bernard calcule, laide de la fonction de hachage sens unique,lempreinte
du document quAlice lui a envoy. Ensuite, laide de lalgorithme de signa
ture numrique, il dchiffre lempreinte signe avec la clef publique dAlice. La
signature est valide si lempreinte de la signature est la mme que lempreinte
quil a produite.

La vitesse de ce procd est beaucoup plus leve et comme les chances d avoir deux
documents diffrents ayant la mme empreinte de 160 bits sont seulement de 1 sur 2160,
tout le monde peut sans crainte identifier la signature de lempreinte la signature du
document lui-mme. Si la fonction utilise nest pas sens unique, il serait ais de crer
plusieurs documents ayant la mme empreinte et d amener quelquun les signer tous
son insu en ne lui faisant signer quun seul. Ce protocole nest pas valable sans une
fonction de hachage sens unique.
Ce protocole a d autres avantages. Premirement, la signature peut tre garde spa
rment du document. Deuximement, pour le destinataire, les exigences en espace de
stockage pour le document et la signature sont beaucoup plus restreintes. Un systme
darchivage peut utiliser ce type de protocole pour vrifier lexistence d un document
sans stocker son contenu. La base de donnes centrale ne stockerait que les empreintes
des fichiers. Elle ne doit avoir aucun accs aux fichiers ; les utilisateurs envoient leurs

Chapitre 2

Briques lmentaires

empreintes la base de donnes, et la base de donnes enregistre ces empreintes ainsi


que la datation. Sil y a par la suite un dsaccord quant lauteur et la datation d un
document, la base de donnes na qu rechercher lempreinte dans ses fichiers. Cela a
des implications trs importantes pour la vie prive : Alice peut obtenir le copyright
dun document et cepandant garder le document secret. Ce nest que si elle doit prouver
ses droits quil lui faut rendre le document public (voir 4.1).

Algorithmes et terminologie
Il y a de nombreux algorithmes de signature numrique. Tous sont des algorithmes
clef publique : il y a une information secrte pour signer les documents et il y a une
information publique pour vrifier les signatures. Parfois le procd de signature est
appel ch iffrem en t avec une c le f p riv e et le procd de vrification est appel
dch iffrem en t avec une c le f pu bliqu e. Cela prte confusion et nest valable que
pour un seul algorithme, R SA . Et diffients algorithmes prsentent des diffrences de
ralisation. Par exemple, lutilisation de fonctions de hachage sens unique et/ou
de datations ajoute des tapes aux procds de signature et de vrification. Plusieurs
algorithmes peuvent tre utiliss pour des signatures numriques mais pas pour chiffrer.
En gnral, je ferai rfrence aux procds de signature et de vrification sans plus
entrer dans le dtail des algorithmes utiliss. Signer un message avec une clef prive K
est not :
Sk ( M )

et vrifier une signature avec une clef publique correspondante est :


Vk ( M) .

La squence de bits associe au document sign (dans lexemple ci-dessus, lempreinte


du document signe avec la clef prive) sera appele signature n um riqu e ou sim
plement signature. Le protocole, par lequel le destinataire dun message est convaincu
de lidentit de lexpditeur et de lintgrit du contenu du message, est appel authen
tification. Ces protocoles sont exposs plus en dtail dans le paragraphe 3.2.

Signatures multiples
Comment Alice et Bernard peuvent-ils signer le mme document numrique? Sans les
fonctions de hachage sens unique, il y a deux faons de procder. Dans le premier
cas, Alice et Bernard signent sparment des copies du document lui-mme. Le message
rsultant aura le double de la taille du document original. Dans le deuxime cas, Alice
signe le document en premier et ensuite Bernard signe la signature dAlice. Cela marche
sauf quil est impossible de vrifier la signature dAlice sans vrifier celle de Bernard.
Si une empreinte du document est signe en lieu et place du document lui-mme, alors
le protocole pour la signature multiple est facile :
1 Alice signe le document.
2 Bernard signe le document.

3 Bernard envoie sa signature Alice.


4 Alice envoie le document, sa signature et la signature de Bernard Christine.

2.6

Signatures numriques

43

5 Christine vrifie les signatures dAlice et de Bernard.


Alice et Bernard peuvent faire les tapes 1 et 2 en srie ou en parallle. Dans ltape
5, Christine peut vrifier nimporte quelle signature sans vrifier lautre.

Non dsaveu et signatures numriques


Alice peut tricher avec les signatures numriques et il ny a rien que lon puisse faire
pour lviter. Elle peut signer un document et prtendre aprs coup quelle ne la
pas sign. D abord, elle signe le document normalement. Ensuite, elle publie de faon
anonyme sa clef prive, ou elle la laisse traner dans un lieu public, ou elle prtend
seulement avoir fait lune de ces deux actions. Alice prtend alors que sa clef prive est
compromise et que d autres sen servent en se faisant passer pour elle. Elle nie avoir
sign le document et tout ceux quelle avait signs avec sa clef prive. Ceci sappelle
un dsaveu.
La datation permet de limiter la porte de ce type de tricherie mais Alice peut toujours
prtendre que sa clef a t compromise avant la signature du document. Si Alice fait les
choses dans les temps, elle peut signer un document puis prtendre ne pas lavoir fait.
Voila pourquoi on entend si souvent parler de clefs prives caches dans des dispositifs
rsistant linvestigation afin quAlice ny ait pas accs et quelle ne puisse en abuser.
Bien que rien ne puisse tre fait pour viter ce type dabus, on peut prendre des
mesures pour viter que danciennes signatures ne puissent tre remises en cause lors
de la contestation d une nouvelle signature. Par exemple, Alice pourrait perdre sa
clef pour viter de payer Bernard la babiole quil lui a vendue la veille et par la mme
occasion remettre en cause tout dbit sur son compte en banque. La solution est pour
le destinataire dun document sign de le faire dater [456],
Le protocole gnral se trouve dans [32]:
1 Alice signe un message.
2 Alice remplie une entte avec des informations sur son identit. Elle signe cette
entte et le message sign et envoie le tout Ivan.

3 Ivan vrifie la signature globale et lidentit dAlice. Il ajoute une datation au


message sign et lentte. Ensuite, il signe et envoie le tout Bernard et
Alice.

4 Bernard vrifie la signature dIvan, lidentit dAlice et la signature de celle-ci.


5 Alice vrifie le message que Ivan a envoy Bernard. Si elle na pas mis le
message, elle le fait rapidement savoir.

Un autre protocole utilise Ivan aprs le fait [213]. Aprs avoir reu un message sign,
Bernard peut en envoyer une copie Ivan pour vrification. Ivan peut attester de la
validit de la signature dAlice.

Applications des signatures numriques


Une des premires utilisations des signatures numriques fut de vrifier les traits de
limitations des essais nuclaires [1460, 1472]. Les tats-Unis et lUnion sovitique (quel
quun sait-il encore ce qutait lUnion Sovitique?) pouvaient mettre des sismographes

Chapitre 2

44

Briques lmentaires

sur le territoire de leur homologue pour contrler les essais nuclaires rellement effec
tus. Le problme tait que la nation qui contrlait voulait tre sre que lhomologue
ne truquait pas les donnes produites par les sismographes placs sur son sol. De plus,
chaque nation voulait sassurer que les sismographes nenvoient que les informations
spcifiquement ncessaires au contrle.
Les techniques d authentification traditionnelles permettaient de faire face au premier
problme mais seules les signatures numriques permettaient de faire face aux deux
problmes. Grce ces dernires, la nation contrle pouvait lire les donnes des sis
mographes sur son territoire et la nation qui contrle savait que les donnes navaient
pas t falsifies.

2.7

Signatures numriques avec chiffrement

En combinant les signatures numriques avec la cryptographie clef publique, nous


pouvons concevoir un protocole qui combine la scurit du chiffrement avec lauthentification des signatures numriques. Pensez une lettre signe dans une enveloppe :
la signature numrique donne une preuve de lidentit de son auteur et le chiffrement
offre la confidentialit.
1 Alice signe le message avec sa clef prive.
Sa ( M )

2 Alice chiffre le message sign avec la clef publique de Bernard et lui envoie le
rsultat.
E b (Sa ( M ) )

3 Bernard dchiffre le message avec sa clef prive.


D b (E b (Sa { M ) ) ) = S a { M )

4 Bernard vrifie avec la clef publique d Alice et obtient le message initial.


Va (Sa ( M ) ) = M

Il semble naturel de signer avant de chiffrer. Quand Alice crit une lettre, elle la signe
et le met ensuite dans lenveloppe. Si elle met la lettre non signe dans lenveloppe
et signe ensuite lenveloppe, alors Bernard pourrait craindre que la lettre naie t
remplace. Si Bernard montrait Christine la lettre et lenveloppe dAlice, Christine
pourrait laccuser de mentir sur la lettre qui est arrive dans lenveloppe.
En matire de correspondance aussi il est prudent de signer avant de chiffrer. C est
non seulement plus sr un adversaire ne peut retirer la signature dun message pour
y mettre la sienne mais il faut prendre en compte des considrations lgales: si le
signataire ne peut pas voir le texte quil signe, sa signature pourrait alors tre conteste
au vues de la loi [1323]. De plus, il existe des attaques cryptanalytiques contre cette
technique utilise avec des signatures R S A (voir 19.3).
Alice na aucune raison dutiliser la mme paire clef publique, clef prive pour chiffrer
et signer. Elle peut avoir deux paires de clef: une pour chiffrer et une pour signer. La

.7

Signatures numriques avec chiffrement

sparation prsente des avantages: elle peut livrer sa clef de chiffrement la police sans
compromettre sa signature, une clef peut tre mise en dpt (voir 4.13) sans affecter
lautre, et les clefs peuvent avoir des tailles diffrentes ou encore expirer des dates
diffrentes.
Bien sr, les messages doivent tre dats pour viter quils ne soient rutiliss. La
datation peut aussi aider se prmunir contre dautres ennuis comme celui dcrit dans
le paragraphe suivant.

Renvoyer un message comme accus de rception


Considrons une ralisation de ce protocole avec en plus la possibilit denvoyer des
messages de confirmation. Chaque fois que quelquun reoit un message, il ou elle le
renvoie lexpditeur comme accus de rception.
1 Alice signe un message avec sa clef prive, le chiffre avec la clef publique de
Bernard et lui envoie le rsultat.
E b {Sa { M) )

2 Bernard dchiffre le message avec sa clef prive et vrifie la signature avec la


clef publique dAlice, s assurant ainsi que c est bien Alice qui a sign le message
et obtenant galement le message en clair.
Va (D b (E b (Sa ( M )))) - M

3 Bernard signe le message avec sa clef prive, le chiffre avec la clef publique
dAlice et envoie le rsultat Alice.
E A(SB( M ) )

4 Alice dchiffre le message avec sa clef prive, et vrifie la signature avec la


clef publique de Bernard. Si le message obtenu est le mme que celui quelle a
envoy Bernard, elle sait que celui-ci a reu le message correctement.

Si le mme algorithme est utilis pour la signature numrique et le chiffrement, une


attaque est possible [505]. Dans ce cas, lopration de signature numrique est linverse
de lopration de chiffrement : Vx E x et S x = E>x
Faisons lhypothse que Martin est un utilisateur lgitime du systme ayant sa propre
clef publique et sa propre clef prive. Voyons ce qui se passe si Martin lit le courrier
de Bernard. Martin enregistre le message qu Alice envoie Bernard ltape 1, puis
il envoie ce message Bernard prtendant en tre lauteur. Bernard pense que cest
un message lgitime de Martin, il le dchiffre donc avec sa clef prive et essaie ensuite
de vrifier la signature de Martin en le dchiffrant avec la clef publique de Martin. Le
message obtenu qui est du pur charabia est :
E m {D b {E b {D a {M)))) = E m {D a { M) ) .

Mme ainsi, Bernard continue excuter le protocole et envoie un accus de rception


Martin :
E m (D b (E m (D a (M)))).

Chapitre 2

Briques lmentaires

Maintenant, il suffit Martin de dchiffrer le message avec sa clef prive, de le chiffrer


avec la clef publique de Bernard, de le dchiffrer une fois de plus avec sa clef prive et
finalement de chiffrer le rsultat avec la clef publique d Alice. Voil! Martin a A4.
Il nest pas draisonnable dimaginer que Bernard puisse envoyer laccus de rception
de manire automatique. Le protocole peut tre, par exemple, inclus dans le logiciel
de communication et celui-ci peut envoyer les accuss de rception de manire au
tomatique. C est, cette obstination envoyer un accus de rception du charabia
qui affaiblit le protocole. Si Bernard vrifiait la lisibilit du message avant d envoyer
laccus de rception, il viterait ce problme de scurit.
Il y a moyen d amliorer cette attaque de telle manire que Martin puisse envoyer un
message diffrent de celui quil a enregistr. Il est trs important de ne jamais signer
nimporte quel message envoy par d autres personnes ni de dchiffrer des messages
quelconques et de donner le rsultat quelquun dautre.

Protection contre lattaque


L attaque ci-dessus marche parce que lopration de chiffrement est la mme que lop
ration de vrification de signature et que lopration de dchiffrement est la mme que
lopration de signature. Un protocole sr utiliserait une opration pour le chiffrement
lgrement diffrente de lopration de signature numrique, lattaque serait vite.
Le problme peut tre rsolu en utilisant au choix des clefs diffrentes pour chaque
opration, des algorithmes diffrents pour chaque opration, des datations qui rendent
le message entrant diffrent du message sortant, ou encore des signatures numriques
avec fonction de hachage sens unique(voir 2.6).
En gnral, le protocole suivant est parfaitement sr :
1 Alice signe le message.
2 Alice chiffre le message et sa signature avec la clef publique de Bernard (uti
lisant un algorithme de chiffrement diffrent de celui utilis pour la signature)
et envoie le rsultat Bernard.

3 Bernard dchiffre le message avec sa clef prive.


4 Bernard vrifie la signature dAlice.
Il est possible de modifier le protocole afin quAlice chiffre le message avant de le signer.
Bien que cela puisse tre utile dans certaines circonstances quand un intermdiaire
doit pouvoir vrifier la signature sans tre capable de lire le message en gnral c est
mieux de chiffrer tout. Pourquoi donner de linformation Estelle aprs tout?

Attaques contre la cryptographie clef publique


Dans tous ces protocoles clef publique, j ai pass sous silence comment Alice obtient
la clef publique de Bernard. Le paragraphe 3.1 explique cela en dtail mais cela vaut
la peine den parler maintenant.
La mthode la plus facile pour obtenir une clef publique est de lobtenir partir d une
base de donnes sre quelque part. Cette base de donnes doit tre publique de telle
manire que n importe qui puisse y qurir la clef publique de quelquun d autre. La base
de donnes doit aussi tre protge en criture sauf pour Ivan ; sinon Martin pourrait

2.8

Gnrateurs alatoires et pseudo-alatoires

remplacer la clef publique de Bernard par une de son choix. Aprs cela, Bernard ne
pourrait plus lire les messages qui lui seraient destins tandis que Martin le pourrait.
Mme si les clefs publiques sont stockes dans une base de donnes sre, Martin peut
encore remplacer une clef par une autre pendant sa transmission. Pour viter cela, Ivan
peut signer chaque clef publique avec sa propre clef prive (voir 2.6). Quand Ivan
fait cela, il agit comme une Autorit d Authentification de Clefs ou comme un
Centre de Distribution de Clefs (appelons-le C D C en abrg). Dans les ralisations
pratiques, le C D C signe un message composite contenant le nom de lutilisateur, la clef
publique et toute autre information importante concernant lutilisateur. Ce message
composite sign est stock dans la base de donnes du C D C . Quand Alice obtient la
clef publique de Bernard, elle vrifie la signature du C D C pour sassurer de la validit
de la clef quelle a obtenue.
En analyse finale, cela ne rend pas les choses impossibles pour Martin, juste plus
difficiles. Alice a encore la clef publique du C D C stocke quelque part. Martin doit
remplacer cette clef par la sienne, fausser la base de donnes et remplacer les clefs
valides par les siennes toutes signes avec sa clef prive comme sil tait le C D C et
alors il est arriv ses fins. Mme des signatures sur papier peuvent tre contrefaites si
Martin sen donne la peine. Comme il a t dit prcdemment, cela sera racont dans
les moindres dtails au paragraphe 3.1.

2.8

Gnrateurs
alatoires

alatoires

et

pseudo

Pourquoi se proccuper de gnrateurs alatoires de nombres dans un livre sur la


cryptographie? Il y a dj un gnrateur alatoire de nombres inclus dans chaque
compilateur ; ce nest quun simple appel de fonction aprs tout. Malheureusement,
ces gnrateurs alatoires de nombres ne sont en gnral pas srs du tout du point de
vue cryptographique et probablement mme pas trs alatoires. La plupart dentre eux
sont dsesprment mauvais.
Les gnrateurs alatoires de suites ne sont pas alatoires parce quils ne doivent pas
ltre. La plupart des applications simples, telles que les jeux informatiques, ont besoin
de tellement peu de nombres alatoires quon ne sen rend mme pas compte. Toutefois,
la cryptographie est trs sensible aux proprits des gnrateurs alatoires de nombres.
Utilisez un gnrateur de mauvaise qualit et vous commencerez avoir des corrlations
gnantes et des rsultats tranges [1239, 1248]. Si la scurit dpend de votre gnrateur
alatoire de nombres, des corrlations non dsires ou des rsultats tranges ne font
pas votre affaire.
Le problme dun gnrateur alatoire de nombres est quil ne produit pas une suite
alatoire. Probablement, ce quil produit ne ressemble mme pas de loin une suite
alatoire. Bien sr, il est impossible de produire une suite alatoire laide d un or
dinateur. K n u t h cite John VON N e u m a n n comme maxime: Toute personne qui
envisage dutiliser des mthodes arithmtiques pour produire des chiffres alatoires est,
bien sr, en tat de pch. [864] Les ordinateurs sont des bestioles dterministes : on

les alimente lentre, des oprations tout fait prvisibles dterministes ont
lieu lintrieur et finalement un rsultat sort lautre bout. Entrez la mme chose
en deux instants diffrents et vous obtiendrez le mme rsultat la sortie chaque

Chapitre 2

Briques lmentaires

fois. Entrez la mme chose dans deux ordinateurs identiques et le mme rsultat sera
produit par chacun d eux. Il ny a quun ensemble fini d tats dans lesquels peut se
trouver un ordinateur (un grand nombre fini, mais un nombre fini toutefois) et ce qui
sort sera toujours une fonction dterministe de ce qui entre et de ltat de lordinateur.
Cela veut dire que tout gnrateur alatoire de nombres sur ordinateur (du moins, sur
une machine de Turing) est, par dfinition, priodique. Tout ce qui est priodique est,
par dfinition, prvisible. Et ce qui est prvisible nest pas alatoire. Un vrai gnrateur
alatoire de suites ncessite une entre vraiment alatoire ; un ordinateur ne peut pas
fournir cela.

Suites pseudo-alatoires
Le mieux que peut produire un ordinateur est un gn rateu r p seu d o-a la toire de
suites. Quest-ce? Beaucoup de gens se sont attaqus au problme de dfinir cela
formellement, mais je m abstiendrai ici. La priode de la suite doit tre suffisamment
longue de telle manire quune suite finie de longueur raisonnable c est--dire une
suite qui soit utile dans un contexte donn ne soit pas priodique. En dautres
termes, si vous avez besoin d une suite dun milliard de bits alatoires, ne choisissez
pas un gnrateur qui a une priode de 16000 bits. Ces sous-suites non priodiques
relativement courtes, doivent tre autant que possible indiscernables d une suite ala
toire. Par exemple, elles doivent avoir le mme nombre de 1 que de 0 ; peu prs la
moiti des segments (suites de bits ayant la mme valeur) doivent tre de longueur 1,
un quart de longueur 2, un huitime de longueur 3, etc. On ne doit pas pouvoir les
compresser. Les distributions des segments de 0 et des segments de 1 doivent tre les
mmes [645, 864, 106, 1359]. Ces proprits peuvent tre mesures empiriquement et
compares aux prvisions statistiques en utilisant un test en y 2.
Pour nos besoins, un gnrateur de suites est pseudo-alatoire sil satisfait la proprit
suivante :
1. Il a lair alatoire. Cela veut dire quil russit tous les tests statistiques que lon
peut trouver. (Commencez par ceux dcrits dans [864].)
Pas mal defforts ont t investis pour produire des bonnes suites pseudo-alatoires
sur ordinateur. Les descriptions de tels gnrateurs abondent dans la littrature aca
dmique, avec des tests varis sur leur caractre alatoire. Tous ces gnrateurs sont
priodiques (il ny a pas moyen de lviter) ; mais avec des priodes potentielles de 2256
bits et plus, il peuvent tre utiliss pour les applications les plus exigeantes.
Mais le problme des corrlations non dsires et des rsultats tranges est toujours
prsent. Tout gnrateur dterministe en produira si vous lutilisez dune certaine faon.
Et cest cette proprit que le cryptanalyste utilisera pour attaquer le systme.

Gnrateurs pseudo-alatoires cryptographiquement srs


Les applications cryptographiques exigent plus des gnrateurs pseudo-alatoires de
suites que les autres applications informatiques. Alatoire du point de vue de la
cryptographie ne signifie pas statistiquement alatoire bien que cela en fasse partie.
Pour quune suite pseudo-alatoire soit cry p tog ra p h iq u em en t sre, le gnrateur

2.8

Gnrateurs alatoires et pseudo-alatoires

49

doit en plus satisfaire la proprit suivante :


2. Il est imprvisible. Il doit tre impossible par calcul de prdire quel sera le bit ala
toire suivant, connaissant compltement lalgorithme ou le matriel qui engendre
la suite et connaissant tous les bits dj engendrs.
Les suites pseudo-alatoires cryptographiquement sres ne peuvent tre comprimes...
moins davoir le secret : le germe utilis pour initialiser le gnrateur.
Comme tout algorithme cryptographique, les gnrateurs pseudo-alatoires de suites
cryptographiquement srs peuvent subir des attaques. Tout comme il est possible de
casser un algorithme de chiffrement, il est possible de casser un gnrateur pseudo
alatoire de suites cryptographiquement sr. Faire des gnrateurs rsistant aux at
taques est tout lintret de la cryptographie.

Suites vraiment alatoires


Maintenant nous entrons dans le domaine des philosophes. Existe-t-il quelque chose
d'alatoire! Quest-ce quune suite alatoire? Comment savoir si une suite est alatoire?
Est-ce que 101110100 est plus alatoire que 101010101 ? La mcanique quantique
nous apprend quil y a des phnomnes physiques que lon peut qualifier dalatoire
dans le monde rel. Mais est-ce que ce caractre alatoire est prserv quand on le
transpose dans le monde macroscopique des puces informatiques et des machines
nombre dtats fini?
Toute philosophie mise part, de notre point de vue, un gnrateur de suites est
vraiment alatoire sil jouit de la proprit suivante :
3. Il ne peut pas tre reproduit de manire fiable. Si vous excutez le gnrateur de
suites deux fois avec exactement les mmes entres (du moins des entres aussi
identiques que possible), vous obtenez deux suites alatoires diffrentes.
La sortie dun gnrateur satisfaisant ces trois proprits conviendrait pour engendrer
un masque jetable, gnrer des clefs ou pour toute autre application cryptographique
qui a besoin d un gnrateur vraiment alatoire. La difficult est de dterminer si une
suite est vraiment alatoire. En chiffrant de manire rpte une chane avec DES et
une clef fixe, on obtient une suite qui a lair alatoire; vous ne pourrez pas savoir si elle
nest pas alatoire, moins d employer lquipe de la NSA qui travaille sur le DES.

Chapitre 3

Protocoles lmentaires
3.1

Echange de clefs

Une technique cryptographique courante consiste utiliser une clef diffrente pour
chiffrer chaque conversation entre deux individus. On parlera alors de clef de session
parce quelle nest utilise que pour une session particulire de communication. Comme
on le vera au paragraphe 8.5, les clefs de session sont utiles car elles n existent que
durant la dure de la communication. Il nest pas simple de faire aboutir cette clef de
session commune entre les mains des participants de la conversation.

change de clefs laide de la cryptographie clef secrte


On fait lhypothse que Alice et Bernard sont des utilisateurs dun rseau, et partagent
chacun une clef avec, le Centre de Distribution des Dlefs (CDC)[1270], Ivan dans notre
protocole. Ces clefs doivent tre mises en service avant le protocole1.
1 Alice appelle Ivan et demande une clef de session pour communiquer avec
Bernard.

2 Ivan engendre alatoirement une clef de session. Il chiffre deux copies de celleci, lune avec une clef secrte quil partage avec Alice, et lautre avec une clef
secrte quil partage avec Bernard. Ivan envoie les deux copies Alice.

3 Alice dchiffre sa copie de la clef de session.


4 Alice envoie Bernard sa copie de la clef de session.
5 Bernard dchiffre sa copie de la clef de session.
6 Alice et Bernard utilisent la clef de session pour communiquer confidentielle
ment.

Ce protocole repose sur la scurit absolue de Ivan qui sera plutt un programme
informatique de confiance quune personne de confiance. Si Martin corrompt Ivan,
tout le rseau est compromis. Il a alors sa disposition toutes les clefs secrtes que
1.
Le protocole passe sous silence le rel problm e de la distribution de ces clefs secrtes; on fait
lhypothse q u elles sont en service et que M artin ne sait pas o elles se trouvent.

Chapitre 3

52

Protocoles lmentaires

Ivan partage avec tous les utilisateurs ; il peut lire tous les messages passs quil a
enregistrs et toutes les communications futures. Tout ce quil doit faire cest placer
une coute sur les lignes de communication et enregistrer le trafic des messages chiffrs.
Lautre inconvnient de ce systme est que Ivan reprsente un potentiel goulot d tran
glement. Il doit participer chaque change de clef. Si Ivan se trompe, cela perturbe
tout le systme.

change de clefs laide de la cryptographie clef publique


Le cryptosystme hybride de base a t dcrit dans le paragraphe 2.5. Alice et Bernard
utilisent la cryptographie clef publique pour se mettre daccord sur une clef de session,
et lutilisent pour chiffrer des donnes. Dans une application pratique, les deux clefs
publiques signes dAlice et Bernard seront accessibles dans une base de donne. Cela
rend le protocole plus simple, et Alice peut envoyer de manire sre un message
Bernard, mme sil na jamais entendu parler d elle :
1 Alice obtient la clef publique de Bernard de la part du C D C .
2 Alice engendre une clef de session alatoire, la chiffre avec la clef publique de
Bernard et envoie le rsultat Bernard.

Bernard dchiffre

Alice et Bernard
conversation.

le message dAlice en utilisant sa clef prive.


utilisent alors la mme clef de session pour chiffrer leur

Lattaque de lintercepteur
Tandis quEstelle ne peut pas faire mieux que tenter de casser lalgorithme clef
publique, ou tenter une attaque texte chiffr seulement contre les textes chiffrs,
Martin peut dchiffrer les messages entre Alice et Bernard. Martin est beaucoup plus
fort quEstelle. Non seulement il peut couter les messages entre Alice et Bernard, mais
il peut aussi modifier des messages, dtruire des messages et en insrer des nouveaux
de son cru. Martin peut
se faire passer pour Bernard en sadressant Alice et se
faire passer pour Alice en sadressant Bernard. Voici comment lattaque peut tre
conduite :
1 Alice envoie sa clef publique Bernard. Martin intercepte cette clef et envoie
sa propre clef publique Bernard.

2 Bernard envoie sa clef publique Alice. Martin intercepte cette clef et envoie
sa propre clef publique Alice.

3 Quand Alice envoie un message Bernard, chiffr avec ce quelle croit tre
la clef publique de Bernard, Martin l intercepte. Comme ce message est en
fait chiffr avec sa clef publique, il le dchiffre avec sa clef prive, le chiffre
nouveau avec la clef publique de Bernard et envoie le rsultat Bernard.

4 Quand Bernard envoie un message Alice, chiffr avec ce quil croit tre la
clef publique dAlice, Martin lintercepte. Comme ce message est en fait chiffr
avec sa clef publique, il le dchiffre avec sa clef prive, le chiffre nouveau avec
la clef publique dAlice et envoie le rsultat Alice.

3.1

change de clefs

53

Mme si les clefs publiques d Alice et de Bernard sont stockes dans une base de
donnes, cette attaque peut tre conduite. Il suffit que Martin intercepte la requte
dAlice vers la base de donnes et quil envoie Alice sa propre clef publique la
place de celle de Bernard. Il peut faire la mme chose avec Bernard et remplacer la clef
dAlice par la sienne. Il peut mme subrepticement pntrer dans la base de donnes
et remplacer les clefs dAlice et Bernard par sa clef publique. Le lendemain, il attend
simplement quAlice et Bernard dialoguent entre eux. Il intercepte alors les messages
et les modifie. Il a russi.
Lattaque de lintercepteur marche parce quAlice et Bernard nont aucun moyen de
vrifier quils parlent bien lun lautre. En faisant lhypothse que Martin est rapide
et quil nintroduit pas de dlai notable dans le comportement du rseau, aucun des
deux ne peut souponner que quelquun est l entre eux deux en train d espionner toute
leur correspondance suppose confidentielle.

Protocole cliquets
Le protocole cliquets, invent par Ron R i v e s t et Adi S h a m i r [1338] a de bonnes
chances de repousser lattaque de lintercepteur. Voici comment cela marche :
1 Alice envoie sa clef publique Bernard.
2 Bernard envoie sa clef publique Alice.
3 Alice chiffre son message avec la clef publique de Bernard. Elle envoie la moiti
du message chiffr Bernard.

4 Bernard chiffre son message avec la clef publique dAlice. Il envoie la moiti
du message chiffr Alice.

5 Alice envoie lautre moiti de son message chiffr Bernard.


6 Bernard runit les deux morceaux du messagechiffr venant dAlice
le rsultat avec sa clef prive. Bernard envoie lautremoiti de son
chiffr Alice.

et dchiffre
message

7 Alice runit les deux morceaux du message chiffr venant de Bernard et d


chiffre le rsultat avec sa clef prive.

Le point important est quune moiti de message est inutilisable sans lautre moiti ;
on ne peut dchiffrer les moitis sparment. Bernard ne peut lire aucune partie du
message d Alice avant ltape 6 et Alice ne peut lire aucune partie du message de
Bernard avant ltape 7. Il y a plusieurs moyens de raliser cela :
- Si lalgorithme de chiffrement est un algorithme par blocs, chaque moiti de
chaque bloc (par exemple, un bit sur deux) peut tre envoye dans chaque moiti
de message chiffr.
- Le dchiffrement du message peut tre dpendant du vecteur dinitialisation (voir
9.3) qui ne serait envoy quavec la deuxime moiti du message.
- La premire moiti du message pourrait tre une empreinte du message chiffr
(voir 2.4) et le message chiffr lui-mme pourrait tre la seconde moiti.

54

Chapitre 3

Protocoles lmentaires

Pour voir comment cela complique la vie de Martin, revoyons sa tentative de corruption
du protocole. Il peut toujours remplacer les clefs publiques d Alice et de Bernard par
sa propre clef publique dans les tapes 1 et 2. Mais maintenant, quand il intercepte
la premire moiti du message d Alice ltape 3, il ne peut pas le dchiffrer avec sa
clef prive et le rechiffrer avec la clef publique de Bernard. Il doit inventer un nouveau
message et envoyer la moiti Bernard. Quand il intercepte la moiti du message de
Bernard vers Alice ltape 4, il a le mme problme. Il ne peut pas le dchiffrer avec
sa clef prive et le rechifrer avec la clef publique dAlice. Il doit inventer un nouveau
message et envoyer la moiti de celui-ci Alice. Quand il intercepte les deux autres
moitis des messages d Alice et de Bernard aux tapes 5 et 6, il est trop tard pour quil
puisse changer les nouveaux messages quil a invents. La conversation entre Alice et
Bernard sera forcment compltement diffrente de ce quelle aurait d tre.
Martin peut peut-tre appliquer ce schma. Sil connat Alice et Bernard suffisamment
pour imiter les deux cts d une conversation entre eux, alors ils ne se rendront jamais
compte quils sont dups. Mais c est certainement plus difficile pour Martin que de
simplement intercepter et lire les messages quils schangent.

change de clefs laide de signatures numriques


Lutilisation de signatures numriques pendant un protocole d change de clefs de ses
sion permet galement dviter lattaque de lintercepteur. Ivan signe les clefs publiques
dAlice et de Bernard. Les clefs signes contiennent un certificat de proprit sign.
Quand Alice et Bernard reoivent les clefs, ils vrifient chacun la signature dIvan.
Aprs cela, ils savent que la clef publique appartient bien leur correspondant. Le
protocole d change de clefs de session peut alors avoir lieu.
Martin a de srieux problmes. Il ne peut pas se faire passer pour Alice ou Bernard car
il ne connat pas leurs clefs prives. Il ne peut pas remplacer une des clefs publiques
par la sienne parce que sa clef est signe comme tant celle de Martin. Tout ce quil
peut faire c est couter le trafic entre Alice et Bernard ou encore il peut couper la ligne
pour empcher Alice et Bernard de dialoguer.
Ce protocole repose sur Ivan mais le risque de corrompre le C D C est nettement in
frieur. Si Martin corrompt Ivan (sil investit le C D C ), tout ce quil obtient c est la
clef prive d Ivan. Cette clef ne lui permet que de signer de nouvelles clefs ; il ne peut
dchiffrer aucune clef de session ou lire quelque message que ce soit. Pour pouvoir lire
les messages qui transitent, Martin doit pouvoir se faire passer pour un utilisateur du
rseau et amener des utilisateurs lgitimes chiffrer des messages avec sa fausse clef
publique.
Martin peut monter ce geiue dattaque. Avec la clef prive dIvan, il peut crer des clefs
signes factices pour tromper Alice et Bernard. Aprs, soit il peut les enregistrer dans
la base de donnes la place des clefs lgitimes, soit il peut intercepter les requtes
vers la base de donnes et rpondre la place de celle-ci en envoyant ses clefs factices.
Cela lui permet de mettre en uvre une attaque de lintercepteur et dcouter les
communications des utilisateurs.
Cette attaque marche, mais rappelez-vous que Martin doit tre un attaquant puissant.
Intercepter et modifier des messages est nettement plus difficile que de lire et dchiffrer
les messages qui transitent sur un rseau qui utilise un algorithme clef secrte. Sur
un canal de diffusion, tel quun rseau radio, il est presque impossible de remplacer
un message par un autre, encore que le rseau entier puisse tre brouill. Dans les

3.1

55

change de clefs

rseaux informatiques, cest plus facile et il semble que cela devienne plus facile chaque
jour. Il est possible de duper les protocoles d intercommunication et d attaquer les
routeurs dun rseau; les attaque actives ne signifient pas quelquun dans les gouts
avec un sttoscope et elles ne sont pas rserves aux agences dont le nom comporte
trois lettres.

Transmission simultane de clefs et de messages


Alice et Bernard nont pas besoin de terminer le protocole d change de clefs avant
dchanger des messages. Dans le protocole suivant, Alice envoie un message, A4,
Bernard sans quil ny ait eu d change de clefs au pralable :
1 Alice engendre une clef de session alatoire, K , et chiffre A4 en utilisant K .
E k (M)

2 Alice obtient la clef publique de Bernard par la base de donnes.


3 Alice chiffre K avec la clef publique de Bernard.
E b ( K)

4 Alice envoie le message chiffr et la clef de session chiffre Bernard.


E k (A4),E b ( K )

Pour mieux se prmunir contre une attaque de lintercepteur, Alice peut signer
la transmission.

5 Bernard dchiffre la clef de session, K , en utilisant sa clef prive.


6 Bernard dchiffre le message dAlice en utilisant la, clef de session.
Cest avec ce systme hybride que la cryptographie clef publique est souvent utilise
dans les systmes de communication. Elle peut tre combine aux signatures num
riques, la datation, ou tout autre protocole de scurit.

Diffusion de clef et de message


Il ny a pas de raison pour quAlice ne puisse envoyer le message chiffr plusieurs
personnes. Dans lexemple suivant, Alice envoie le message chiffr Bernard, Christine
et David :
1 Alice engendre une clef de session alatoire, K , et chiffre A4 avec K .
E k (A4)

2 Alice obtient les clefs publiques de Bernard, Christine et David par la base de
donnes.

3 Alice chiffre K avec la clef publique de Bernard, chiffre K avec la clef publique
de Christine et chiffre K avec la clef publique de David.
E b (K) , E c ( K) ,E d (K)

Chapitre 3

56

Protocoles lmentaires

4 Alice diffuse le message chiffr et toutes les clefs chiffres qui veut bien les
recevoir.
E b (K),Ec (K),Ed (K),Ek ( M )

5 Seuls Bernard, Christine et David peuvent dchiffrer la clef de session K


laide de leur clef prive.

6 Seuls Bernard, Christine et David peuvent dchiffrer le message d'Alice en


utilisant K .

Cet algorithme peut tre ralis dans un rseau stocke-et-relaie . Un serveur central
peut relayer le message dAlice Bernard, Christine et David avec chacun une version
chiffre de la clef de session. Le serveur na pas tre sr et il na pas avoir la
confiance des utilisateurs car il ne peut dchiffrer aucun message.

3.2

Authentification

Quand Alice accde un ordinateur (ou un distributeur de billets automatique, ou un


service de banque domicile, ou tout autre type de terminal), comment lordinateur
peut-il savoir qui elle est? Comment lordinateur sait-il quelle nest pas Estelle essayant
de se faire passer pour Alice? Traditionnellement, les mots de passe servent rsoudre
ce problme. Alice entre un mot de passe, et lordinateur confirme quil est correct.
Alice et lordinateur connaissent tous deux cette information secrte, et lordinateur le
demande Alice chaque fois quelle essaie dentrer en communication avec lui.

Authentification laide de fonctions sens unique


Ce que Roger N e e d i i a m et Mike G u y ont ralis, cest que lordinateur na pas besoin
de connatre les mots de passe: lordinateur doit juste tre capable de distinguer un
mot de passe correct d un mot de passe incorrect. C est facile laide de fonctions
sens unique [1601, 528, 1285, 1127]. Au lieu de stocker les mots de passe, lordinateur
stocke le rsultat de la fonction sens unique applique chacun des mots de passe.
1 Alice envoie son mot de passe lordinateur.
2
3

L ordinateur calcule la fonction sens unique du mot de passe.


L ordinateur compare le rsultat de ce calcul
donnes.

celui quil a danssa

Lattaque de quelquun qui pntre dans le systme informatique et qui vole la liste
des mots de passe est moins craindre, car lordinateur ne stocke plus la table des
mots de passe corrects mais bien la liste des rsultats de lapplication de la fonction
sens unique aux mots de passe. Cette liste est inutilisable parce que la fonction sens
unique ne peut pas tre inverse pour retrouver les mots de passe.

Attaque par dictionnaire et salage


Mme le fichier des mots de passe chiffrs avec une fonction sens unique est vulnrable.
Pendant son temps libre, Martin construit la liste des 1000 000 mots de passe les plus

basede

3.2

Authentification

57

utiliss. Il calcule alors la fonction sens unique pour tous les 1000 000 mots de passe
et stocke le rsultat.
Si chaque mot de passe a environ 8 octets, le fichier rsultant naura pas plus de 8
mga-octets ; ce qui tient aisment sur quelques disquettes. Ensuite, Martin vole le
fichier des mots de passe chiffrs. Il compare les mots de passe chiffrs avec son fichier
des mots de passe chiffrs possibles et localise ceux qui sont identiques.
Cest une attaque par dictionnaire. Celle-ci est tonnamment efficace en pratique
(voir 8.1). Le salage est un moyen de rendre cette attaque plus difficile. Le sel est
une chane alatoire qui est jointe au mot de passe avant quil ne soit transform par la
fonction sens unique. Ensuite, le sel utilis et le rsultat de la fonction sens unique
sont tous deux stocks dans la base de donnes. Si le nombre de valeurs de sel possibles
est suffisamment grand, cela empche presque tout fait lattaque par dictionnaire
de mots de passe communs car Martin doit calculer les valeurs de la fonction sens
unique pour chaque sel. C est un embryon de vecteur d initialisation (voir 9.3).
Lide ici est dobliger Martin chiffrer chacun des mots de passe de son dictionnaire
quil tente comme mot de passe de quelquun et ce pour chaque nouvelle personne et
non une fois pour toutes.
Il faut pas mal de sel. La plupart des systmes U N IX nutilisent que 12 bits pour
le sel. Mme avec cela, Daniel K l e in a dvelopp un programme qui retrouve 21 %
des mots de passe sur un systme donn en peu prs une semaine [848, 849]. David
F e l d m e ie r et Philip K a r n ont rassembl une liste d environ 732 000 mots de passe
communs combins avec 4096 valeurs possibles de sel. Ils estiment quenviron 30 %
des mots de passe dun systme donn peuvent tre retrouvs grce cette liste [563].
Saler nest par le remde universel; augmenter le nombre de bits du sel ne va pas
rsoudre tous les problmes. Le sel ne protge que contre les attaques par dictionnaires
contre un fichier de mots de passe chiffrs, mais non contre une attaque concerte
dirige contre un seul mot de passe. Le salage masque le fait que certaines personnes
ont le mme mot de passe sur plusieurs systmes mais cela ne rend pas meilleurs des
mots de passe mal choisis.

SKEY
SKEY est un programme dauthentification dont la scurit repose sur une fonction
sens unique / . Il est facile expliquer.
Pour mettre en place le systme, Alice entre un nombre alatoire R. L ordinateur calcule
f(R), f {f {R)) , f(.f(f(R))) et ainsi de suite cent fois. Notons ces nombres X i , . . . , x 10oLordinateur affiche la liste de ces nombres et Alice la met dans sa poche labri.
Lordinateur conserve aussi Xioi en clair dans une base de donnes ct du nom
dAlice.
La premire fois quAlice veut se connecter, elle entre son nom et aqoo- Lordinateur cal
cule f ( x ioo) et le compare avec arioi sil sont gaux, Alice est authentifie. Lordinateur
remplace alors aqoi par .x10o dans la base de donnes. Alice barre aqoo de sa liste.
Chaque fois quAlice se connecte, elle entre le dernier nombre x* quelle na pas encore
barr sur sa liste. L ordinateur calcule f{xf) et le compare avec xi + 1 qui se trouve dans
la base de donne. Estelle ne peut pas obtenir d information intressante car chacun
des nombres nest utilis quune seule fois, et la fonction est sens unique. De cette
manire, un attaquant ne peut pas se servir de la base de donnes. Bien sr, quand

58

Chapitre 3

Protocoles lmentaires

Alice est court de nombres sur sa liste, elle doit refaire lopration d initialisation du
systme.

Authentification grce la cryptographie clef publique


Mme avec du sel, le premier protocole prsente des dfauts de scurit srieux. Quand
Alice entre son mot de passe dans le systme, toute personne qui a accs au chemin
des donnes entre le point de saisie et lordinateur hte 2 peut le lire. Elle peut accder
lordinateur hte travers un long chemin tortueux en passant par quatre socits
industrielles concurrentes, trois pays, ou encore deux universits avant-gardistes. En
chacun de ces points de passages, Estelle peut couter la squence daccs. Si Estelle a
accs au processeur et la mmoire de lordinateur hte, elle peut lire le mot de passe
avant quil ne soit chiffr.
La cryptographie clef publique peut rsoudre ce problme. Lordinateur hte gre
un fichier avec la clef publique de chaque utilisateur ; chaque utilisateur garde sa clef
prive. Voici un premier protocole naf. Lors de la squence d accs, le protocole se
droule comme suit :
1 L ordinateur hte envoie une chane de caractres alatoire Alice.
2 Alice chiffre cette chane avec sa clef prive et envoie le rsultat lordinateur
hte avec son nom.

3 L ordinateur hte utilise la clef publique dAlice qui est dans sa base de donnes
et dchiffre le message l aide de celle-ci.
4 Si la chane obtenue est la mme que celle que lordinateur hte a envoye
Alice en premier lieu, lordinateur hte sait que c est bien Alice qui essaie
d accder au systme.

Personne dautre na accs la clef prive dAlice et donc personne ne peut se faire
passer pour Alice. Ce qui est plus important encore : Alice nenvoie jamais sa clef prive
sur la ligne de communication vers lordinateur hte. Estelle, qui coute le protocole,
ne peut obtenir aucune information qui lui permette de deviner la clef prive ou de se
faire passer pour Alice.
La clef prive est longue et non mnmonique. De plus, elle sera manipule automatique
ment par le logiciel et le matriel de communication de lutilisateur. Le terminal dAlice
doit donc tre intelligent et Alice doit avoir confiance en lui, mais ni lordinateur
hte distance, ni le canal de communication nont tre srs.
En gnral, il est idiot de chiffrer des chanes de caractres alatoires envoyes par
un autre participant : des attaques telles que celles dcrites dans le paragraphe 19.3
peuvent tre montes.
Un protocole de preuve d identit sr prend la forme plus complique suivante :
1 Alice effectue des calculs partir de quelques nombres alatoires et de sa clef
prive. Elle envoie le rsultat lordinateur hte.

2 L ordinateur hte envoie Alice un nombre alatoire diffrent.


2.
N ote du traducteur : on parlera ici d ordinateur hte pour dsigner lordinateur auquel Alice
dsire se connecter pour le diffrencier de lordinateur dont A lice se sert ventuellement pour se
connecter, stocker sa clef prive et effectuer sa part des calculs. C e dernier ne doit pas forcment tre
un P C mais peut tou t aussi bien tre une carte puces.

3.2

Authentification

59

3 Alice effectue des calculs partir des nombres alatoires (ceux quelle avait
choisis et celui qui lui a t envoy par lordinateur) et de sa clef prive. Elle
envoie le rsultat lordinateur hte.

4 L ordinateur hte effectue un calcul partir des diffrents nombres qu il a reus


dAlice et de la clef publique dAlice pour vrifier quAlice connat bien sa clef
prive.

5 Si tel est le cas, lidentit dAlice est vrifie.


Si Alice na pas plus confiance en lordinateur hte que lordinateur hte na confiance
en Alice, alors Alice peut demander lordinateur hte de prouver son identit de la
mme manire.
Ltape 1 peut paratre superflue et droutante mais elle est ncessaire pour rsister
certaines attaques. Les sections 21.1 et 21.2 dcrivent mathmatiquement plusieurs
algorithmes et protocoles. Voyez aussi [946].

Authentification mutuelle par protocole cliquets


Alice et Bernard sont deux utilisateurs qui veulent sidentifier mutuellement. Chacun
dentre eux a un mot de passe que lautre connat: Alice a Pa et Bernard a Pg. Voici
un protocole qui ne marche pas :
1 Alice et Bernard changent leurs clefs publiques.
2 Alice chiffre Pa avec la clef publique de Bernard et envoie le rsultat Bernard.

3 Bernard chiffre Pg avec la clef publique dAlice et envoie le rsultat Alice.


4 Alice dchiffre PB et vrifie que c 'est correct.
5 Bernard dchiffre P a et vrifie que c est correct.
Martin peut monter avec succs une attaque de lintercepteur (voir 3.1) :
1 Alice et Bernard changent leurs clefs publiques. Martin intercepte les deux
messages. Il remplace la clef publique de Bernard par la sienne et envoie le
rsultat Alice. Il remplace la clef publique dAlice par la sienne et envoie le
rsultat Bernard.

2 Alice chiffre Pa avec la clef publique quelle croit tre celle de Bernard et envoie
le rsultat Bernard. Martin intercepte le message, dchiffre P a avec sa clef
prive, rechiffre Pa avec la clef publique de Bernard et envoie le rsultat
Bernard.

3 Bernard chiffre Pg avec la clef publique quil croit tre dAlice et envoie le
rsultat Alice. Martin intercepte le message, dchiffre Pg avec sa clef prive,
rechiffre Pg avec la clef publique dAlice et envoie le rsultat Alice.

4 Alice dchiffre Pg et vrifie que c est correct.


5 Bernard dchiffre P a et vrifie que c est correct.
Du point de vue dAlice et Bernard, rien ne change. Mais maintenant, Martin connat
Pa et Pg

Chapitre 3

60

Protocoles lmentaires

Donald D a v ie s et W yn P r ic e dcrivent comment le protocole cliquets peut empcher


cette attaque [435] : Steve B e l l o v i n et Michael M e r r i t t dcrivent des mthodes
dattaque contre ce protocole [118]. Si Alice est un utilisateur et Bernard un ordinateur
hte, Martin peut prtendre tre Bernard, excuter les tapes 1 5 du protocole avec
Alice et ensuite couper la communication. Cela doit tre idalement fait avec grand art
par Martin en simulant du bruit de ligne ou des pannes de rseau mais peu importe,
Martin a le mot de passe dAlice. Il peut maintenant se mettre en communication avec
Bernard et complter le protocole. Voil ! Martin a le mot de passe de Bernard.
Le protocole peut tre modifi de telle manire que Bernard donne son mot de passe
avant Alice en faisant lhypothse que le mot de passe de lutilisateur est nettement
plus sensible que le mot de passe de lordinateur hte. Une variante plus complique
permet dattaquer cette version modifie du protocole (voir [118]).

SKID
SKID2 et SK ID 3 sont des protocoles didentification clef secrte dvelopps pour
le projet R IP E du programme R A C E [1316] (voir 25.7). Ils utilisent une fonction
sens unique clef (un C A M , pour Code d'Authentification de Messages , voir
2.4) pour fournir la scurit, et tous les deux font lhypothse quAlice et Bernard
partagent une clef secrte K .
SKID2 permet Bernard de prouver son identit Alice. Voici le protocole :
1 Alice choisit un nombre alatoire, R a Le document R IP E prcise quil doit
avoir 64 bits. Elle lenvoie Bernard.

2 Bernard choisit un nombre alatoire, R b - Le document R IP E prcise quil doit


avoir 64 bits. Il envoie Alice :
R b ,H k {R a ,Rb ,B)
H k est le C A M . (Le document R IP E suggre dutiliser la fonction R IP E M A C voir 18.14). Dans la formule, B est le nom de Bernard.

3 Alice calcule H k (R a , R b ,B) et compare avec ce quelle a reu de Bernard. Si


les valeurs sont gales alors Alice sait quelle communique avec Bernard.

SKID3 offre lidentification mutuelle d Alice et Bernard. Les


tiques celles de SKID2 et le protocole se poursuit ainsi :

tapes1 3 sontiden

4 Alice envoie Bernard :


H k {R b ,A)
Dans la formule, A est le nom dAlice.

5 Bernard calcule H k {R b ,A) et compare avec ce quil a reudAlice. Sils va


leurs sont gales alors Bernard sait quil communique avec Alice.

Ce protocle nest pas sr contre lattaque de lintercepteur. En gnral, lattaque de


lintercepteur est redouter dans les protocoles qui ne mettent pas en jeu un secret de
quelque nature que ce soit.

3.3

Authentification et change de clefs

61

Authentification de message
Quand Bernard reoit un message de la part d Alice, comment est-il sr de son authen
ticit? Si Alice a sign son message, cest facile. La signature numrique suffit pour
convaincre nimporte qui de lauthenticit du message.
La cryptographie clef secrte permet une part dauthentification. Quand Bernard
reoit de la part d Alice un message chiffr avec la clef quil partagent, il sait quil
vient bien dAlice. Personne dautre ne connat leur clef. Toutefois, Bernard na aucun
moyen de prouver ce fait un troisime parti. Bernard ne peut pas montrer le message
Ivan et le convaincre quil vient d Alice. Ivan peut tre convaincu que le message
vient soit d Alice, soit de Bernard (car ils sont les seuls possder cette clef secrte),
mais il ne peut pas savoir lequel.
Si le message nest pas chiffr, Alice pourrait aussi utiliser un CAM . Cela convaincra
aussi Bernard de lauthenticit du message, mais cela prsente le problme que la
solution apporte par la cryptographie clef secrte.

3.3

Authentification et change de clefs

Les protocoles suivants rsolvent un problme informatique gnral.


Alice et Bernard sont en deux points distants dun rseau. Ils veulent dialoguer entre
eux en toute confidentialit. Comment Alice et Bernard peuvent-ils changer une clef
secrte et en mme temps tre srs quils se parlent bien lun lautre et non pas
Martin? Dans la plupart des cas, on fait lhypotlise quIvan partage une clef secrte
distincte avec chaque participant et que ces clefs ont t mises en place avant le dbut
du protocole.
La tableau 3.1 rcapitule les symboles rencontrs dans les protocoles.

- Symboles utiliss dans les protocoles dauthentification et dchange de clefs


le nom dAlice
le nom de Bernard
chiffrement avec une clef partage par Ivan et Alice
ea
Eg
chiffrement avec une clef partage par Ivan et Bernard
I
un numro dordre
K
une clef de session alatoire
L
une longvit
des datations
Ta ,Tb
des nombres alatoires choisis par Alice et Bernard respectivement
Il a ; l ig

T a b . 3.1

A
B

Note du traducteur: ce num ro perm et diffrencier les diffrentes utilisations d un mm e protocole.

Wide-Mouth Frog
Le. protocole Wide-Mouth Frog [287, 288] est probablement le protocole de gestion
de clefs secrtes le plus simple qui utilise un serveur en qui lon a confiance. Alice
et Bernard partagent chacun une clef secrte avec Ivan. Ces clefs ont elles-mmes t
distribues secrtement et avec garantie d authenticit par un autre canal externe dont

Chapitre S

62

Protocoles lmentaires

nous admettrons quil est sr. Ces clefs sont seulement utilises pour la distribution
des clefs et non pas pour chiffrer des messages entre utilisateurs. Rien quen utilisant
deux messages, une clef de session est transfre d Alice Bernard :
1 Alice combine la datation, le nom de Bernard, B et une clef de session alatoire
et chiffre le tout avec la clef secrte qu elle partage avec Ivan. Elle envoie le
rsultat chiffr Ivan avec son nom.
A , E a (Ta , B, K)

2 Ivan dchiffre le message dAlice. Ivan combine une nouvelle datation, le nom,
dAlice, et la clef de session alatoire. Il chiffre le tout avec la clef secrtequil
partage avec Bernard. Ivan envoie le rsultat chiffr Bernard.
E B(TB, A , K )

Lhypothse la plus risque faite par ce protocole est quAlice est suffisamment com
ptente pour engendrer des clefs de session valables. Rappelez-vous quil nest pas ais
dengendrer des nombres alatoires ; le protocole fait peut-tre trop confiance Alice
ce propos.

Yahalom
Lauteur de ce protocole est Y a h a l o m [187]. Comme dans le protocole prcdent, Alice
et Bernard partagent une clef secrte avec Ivan [287, 288].
1 Alice combine son nom avec un nombre alatoire et envoie le tout

Bernard:

A, R a

2 Bernard combine le nom d Alice, le nombre alatoire dAlice, un autre nombre


alatoire et chiffre le tout avec la clef secrte qu il partage avec Ivan. Il envoie
ceci Ivan avec son nom :
B , E b (A,R a ,R b )

3 Ivan engendre deux messages. Le premier est constitu du nom de Bernard,


une clef de session alatoire pour Alice et Bernard, le nombre alatoire dAlice
et le nombre alatoire de Bernard; le tout tant chiffr avec la clef secrte qu'il
partage avec Alice. Le deuxime est constitu du nom dAlice et de la clef de
session alatoire; le tout tant chiffr avec la clef secrte quil partage avec
Bernard. Il envoie les deux messages chiffrs Alice :
E a ( B , K , R a ,R b ),E b (A, K)

4 Alice dchiffre le message chiffr avec sa clef secrte, extrait K , et confirme que
R a a la mme valeur qu ltape 1. Alice envoie Bernard deux messages. Le
premier est le message quelle a reu dIvan, chiffr avec la clef de Bernard. Le
deuxime est R B, chiffr avec la clef de session:
E b ( A , K) , E k (R b )

3.3

Authentification et change de clefs

63

5 Bernard dchiffre le message chiffr avec sa clef, extrait K et confirme que R b


est le mme que celui de ltape 2.

Finalement, Alice et Bernard sont convaincus quils se parlent bien lun lautre et
non pas un tiers. La nouveaut ici c est que Bernard est le premier contacter Ivan
qui nenvoie quun seul message Alice.

Needham et Schroeder
Ce protocole, invent par Roger N e e d h a m et Michael S c h r o e d e r [1159], utilise aussi
la cryptographie clef secrte et Ivan.

1 Alice envoie un message Ivan constitu de son nom, du nom de Bernard, et


dune valeur alatoire:

(A , B , R a )
2 Ivan chiffre, avec la clef secrte qu il partage avec Bernard, un message consti
tu dune clef de session alatoire et du nom dAlice. Ensuite, il chiffre, avec la
clef secrte qu il partage avec Alice, un message constitu de la valeur alatoire
dAlice, du nom de Bernard, de la clef de session et du message chiffr avec la
clef secrte quil partage avec Alice. Finalement, il envoie Alice le message
chiffr :
E a (Ra , B , K , E b (K,A))

3 Alice dchiffre le message et extrait K . Elle confirme que R a est bien la mme
valeur quelle a envoye Ivan ltape 1. Ensuite, elle envoie Bernard le
message qu lvan a chiffr avec la clef de Bernard :
E b (K,A)

4 Bernard dchiffre le message et extrait K . Il engendre alors un autre nombre


alatoire. Il chiffre ce nombre avec K et envoie le rsultat Alice:
E k {Bb )

5 Alice dchiffre le message avec K . Elle engendre R b 1 et le chiffre avec K .


Elle envoie le rsultat Bernard:
E k {Rb 1

6 Bernard dchiffre le message avec K et vrifie quil s agit bien de R b ~ 1.


Toutes ces alles et venues avec Ra , R b et R b 1 garantissent quil ny a pas dattaque
o les messages sont rejous. La prsence de R a ltape 3 confirme Alice que le
message dIvan est lgitime et non pas une rptition d une rponse une excution
antrieure du protocole. Quand Ace dchiffre R b avec succs et quelle envoie R b 1
chiffr Bernard ltape 5, celui-ci est assur que les messages d Alice ne sont pas
des rptitions de messages dexcutions antrieures du protocole.
Le plus grand problme de scurit avec ce protocole est que les vieilles clefs de session
ont de la valeur. Si Martin parvient obtenir une ancienne clef de session K , il peut

Chapitre S

64

Protocoles lmentaires

monter lattaque suivante avec succs [467]. Tout ce quil doit faire c est enregistrer
les messages d Alice Bernard pendant ltape 3. Alors, une fois quil a K , il peut
prtendre tre Alice :
1 Martin envoie Bernard, le message suivant :
E

(K ,A )

2 Bernard extrait K , engendre R b et envoie celle quil croit tre Alice:


E k (R b )

3 Martin intercepte le message, le dchiffre avec K et envoie Bernard :


E k {R b - 1)

4 Bernard vrifie que le message prtendument dAlice est Rb 1.


Maintenant, Martin a convaincu Bernard quil est Alice.
Un protocole avec datation peut faire chouer cette attaque [467, 462]. Une datation
est ajoute au message d Ivan chiffr ltape 2 avec la clef de Bernard: E B(K,A,T).
Pour les datations, une horloge systme sre et prcise est ncessaire, ce qui nest pas
trivial en soit raliser.
Les consquences sont dramatiques si la clef secrte partage entre Alice et Ivan vient
tre compromise. Martin peut lutiliser pour obtenir des clefs de session pour dialoguer
avec Bernard (ou toute autre personne avec qui il veut converser). Pis encore, Martin
peut continuer faire cela mme si Alice change sa clef [96].
N e e d h a m et S c h r o e d e r ont essay de corriger leur protocole pour faire face ces at
taques [1160]. Leur nouveau protocole est essentiellement le m m e que celui d OTWAYR e e s publi dans le mme numro du mme journal.

Otway-Rees
Ce protocole utilise aussi la cryptographie clef secrte [1234].
1 Alice engendre un message constitu dun numro d ordre, de son nom, du nom
de Bernard, et dun nombre alatoire, le tout chiffr avec la clef secrte quelle
partage avec Ivan. Elle envoie le message chiffr Bernard avec le numro
d ordre, son nom elle et son nom lui:
I , A , B , E a (R a ,I,A,B)
2 Bernard engendre un message constitu dun nouveau nombre alatoire, du
numro dordre, du nom dAlice et celui de Bernard, le tout chiffr avec la clef
secrte quil partage avec Ivan. Il envoie le message chiffr rsultant Ivan
avec le message chiffr quil a reu dAlice, le numro dordre, son nom elle
et son nom lui:
I,A ,B ,E a {R a ,I,A ,B ),E b {R b ,I,A,B)

3.3

65

Authentification et change de clefs

3 Ivan engendre une clef de session alatoire. Il cre alors deux messages. L un
est compos du nombre alatoire dAlice et de la clef de session, et est chiffr
avec la clef qu il partage avec Alice. L autre est compos du nombre alatoire
de Bernard et de la clef de session, et est chiffr avec la clef quil partage avec
Bernard. Il envoie les deux messages avec le numro dordre Bernard:
I , E a (RA jK ) , E b (R b , K )

4 Bernard envoie Alice le message chiffr avec la clef dAlice et avec le numro
dordre:
I , E a {R a , K)

En mettant lhypothse que tous les nombres alatoires sont corrects et que le numro
dordre na pas chang en cours de route, Alice et Bernard sont maintenant convaincus
de leurs identits respectives et ils ont une clef secrte avec laquelle communiquer.

Kerberos
K e r b e r o s est une variante du protocole de Needham et Schroeder, il est prsent en
dtail dans le paragraphe 17.4. Dans le protocole de base K e r b e r o s version 5, Alice et
Bernard partagent chacun des clefs avec Ivan. Alice veut engendrer une clef de session
pour dialoguer avec Bernard.

1 Alice envoie un message Ivan avec son identit et celle de Bernard:


A ,B

2 Ivan engendre un message avec la datation, une longvit, une clef de ses
sion alatoire, et lidentit dAlice. Il chiffre cela avec la clef quil partage avec
Bernard. Ensuite il engendre un autre message avec la datation, la longvit,
la clef de session et lidentit de Bernard, et il chiffre le rsultat avec la clef
quil partage avec Alice. Il envoie les deux messages chiffrs Alice:
E a ( T, L,K,B) ,E b (T,L,K,A)

3 Alice engendre un message avec son identit et la datation, chiffre cela avec K
et envoie le rsultat Bernard. Alice envoie aussi Bernard le message qu elle
a reu dIvan, chiffr avec la clef de Bernard :
E k (T,A),E b (T,L,K,A)

4 Bernard engendre un message avec la datation plus un, le chiffre avec K et


envoie le rsultat Alice :
E k (T + 1)

Le protocole marche mais il prsume que toutes les horloges sont synchronises avec
lhorloge dIvan. En pratique, cet effet est obtenu en synchronisant les horloges
quelques minutes prs d une horloge de rfrence et en dtectant les rptitions dans
lintervalle de temps donn.

Chapitre 3

66

Protocoles lmentaires

Neuman-St ubblebine
Que ce soit par des erreurs de systme ou par sabotage, il se peut que les horloges se
dsynchronisent, Si cela arrive, il existe une attaque possible contre la plupart de ces
protocoles [646]. Si lhorloge de lexpditeur est en avance, Martin peut intercepter un
message de lexpditeur et le rejouer plus tard quand la datation devient jour sur le
site du destinataire. Cette attaque peut avoir des consquence dsagrables.
Ce protocole prsent pour la premire fois dans [821] et corrig dans [1162] tente de
contrer cette attaque. C est une amlioration du protocole Yalahom qui en fait un
excellent protocole.
1 Alice engendre un message avec son nom, un nombre altoire et lenvoie
Bernard.
A, R a

2 Bernard chiffre le nom dAlice, le nombre alatoire, et la datation avec la clef


qu il partage avec Ivan. Il envoie le rsultat, son nom et un autre nombre ala
toire Ivan.
B , R b ,E b (A,R a ,Tb )

3 Ivan engendre une clef de session alatoire et cre alors deux messages. Le
premier est constitu du nom de Bernard, du nombre alatoire d Alice, de la
clef de session, et de la datation, le tout chiffr avec la clef qu'il partage avec
Alice. Le second se compose du nom d Alice, de la clef de session, et de la
datation, le tout chiffr avec la clef qu il partage avec Bernard. U envoie les
deux messages Alice avec le nombre alatoire de Bernard.
E a (B, R a ,K,T b ),E b (A,K,T b ),R b

4 Alice dchiffre le message chiffr avec sa clef, extrait K , et vrifie que R a est
bien le mme qu ltape 1. Alice envoie deux messages Bernard. Le premier
est celui quelle a reu de Ivan et qui est chiffr avec la clef de Bernard. Le
second est R b , chiffr avec la clef de session.
E b (B, K, T b ),E k (Rb )

5 Bernard dchiffre le message chiffr avec sa clef, extrait K , et vrifie que TB


et R b ont la mme valeur qu ltape 2.

Si les nombres alatoires et les datations correspondent, Alice et Bernard sont convain
cus de lidentit de lun lautre et ils partagent une clef secrte. Il n est pas ncessaire
que les horloges soient synchronises car les datations proviennent toutes de lhorloge
de Bernard ; il vrifie uniquement des datations quil a engendres lui-mme.
Ce protocole prsente un autre avantage: Alice peut utiliser le message quelle a reu de
Ivan pour d autres authentifications avec Bernard jusqu une certaine limite de temps
fixe lavance. Supposons que Bernard et Alice ont termin le protocole ci-dessus
et ont fini de communiquer. Alice et Bernard sont en mesure de mener une nouvelle
authentification en trois tapes, sans laide de Ivan.
1 Alice envoie Bernard le message que Ivan lui avait envoy ltape 3 et un
nouveau nombre alatoire.
E b (A,K,T b ),Ra

3.3

Authentification et change de clefs

67

2 Bernard envoie Alice un autre nouveau nombre alatoire, et le nouveau


nombre alatoire dAlice chiffr avec leur clef de session.
R'B,E K (R'A)

3 Alice envoie Bernard son nouveau nombre alatoire chiffr avec leur clef de
session.
E k (R'b )

Les nouveaux nombres alatoires empchent toute attaque consistant rejouer de vieux
messages.

DASS
Les protocoles DASS, dvelopps par D i g it a l E q u i p m e n t C o r p o r a t i o n , per
mettent aussi lauthentification mutuelle et lchange de clefs [606, 1523, 1522].
Contrairement aux autres protocoles, DASS utilise la fois la cryptographie clef
secrte et la cryptographie clef publique. Alice et Bernard ont chacun une clef prive.
Ivan possde des copies signes de ces clefs prives.
1 Alice envoie Ivan un message constitu du nom de Bernard.
B

2 Ivan envoie Alice la clef publique de Bernard, K b , signe avec la clef prive
dIvan, T . Le message sign comprend le nom de Bernard.
St ( B , K b )

3 Alice vrifie la signature dIvan pour confirmer que la clef quelle a reue est
bien la clef publique de Bernard. Elle engendre une clef secrte alatoire, et une
paire alatoire clef publique, clef prive : Kp. Elle chiffre une datation avec
K . Elle signe une longvit de clef, L, son identification, A , et K p avec sa clef
prive, K A. Enfin, elle chiffre K avec la clef publique de Bernard et signe le
rsultat avec K p. Elle envoie le tout Bernard:
E k (Ta ),SKa ( L, A, K p),Sk p (EKb ( K ))

4 Bernard envoie Ivan (ce peut tre un autre Ivan) un message contenant le
nom dAlice:
A

5 Ivan envoie la clef publique dAlice Bernard, signe avec la clef publique
dIvan :
St ( K a )

6 Bernard vrifie la signature d lvan pour confirmer que la clef qu il a reue est
bien la clef publique dAlice. Il vrifie alors la signature dAlice et rcupre
K p. Il vrifie la signature et utilise sa clef prive pour retrouver K . Ensuite, il
dchiffre TA pour tre sr que le message nest pas prim.

Chapitre 3

68

Protocoles lmentaires

7 Si Vauthentification mutuelle est ncessaire, Bernard, chiffre une nouvelle da


tation avec K et envoie le rsultat Alice.
E k (Tb )

8 Alice dchiffre Tb avec K pour tre sre que le message nest pas prim.
D E C a ralis les protocoles DASS. Vous trouverez plus d informations dans [35].

Denning-Sacco
Ce protocole utilise aussi la cryptographie clef publique [467]. Ivan conserve une base
de donne contenant toutes les clefs publiques.
1 Alice envoie un message Ivan avec son nom et celui de Bernard:
A ,B

2 Ivan envoie Alice la clef publique de Bernard, K b , quil signe avec sa propre
clef prive, T. Ivan envoie aussi Alice la clef publique de celle-ci, K a , quil
signe avec sa clef prive.
St ( B , K b ),St ( A, K a )

3 Alice envoie Bernard une clef de session alatoire et une datation signs avec
sa clef prive et chiffrs avec la clef publique de Bernard, le tout accompagn
des deux clefs publiques signes.
E b (Sa (K,T a )),St { B , K b ),St ( A , K a)
4 Bernard dchiffre le message dAlice avec sa clef prive et vrifie la signature
dAlice avec la clef publique de celle-ci. Pour plus de sret, il vrifie que la
datation est toujours valide.

ce niveau, Alice et Bernard ont tous les deux la clef K , et peuvent communiquer en
scurit.
Cela a lair de fonctionner mais il nen est rien. Aprs avoir terminer le protocole avec
Alice, Bernard peut se faire passer pour Alice [9]:
1 Bernard envoie Ivan son nom et celui de Christine .
B ,C

2 Ivan envoie Bernard les clefs publiques de Bernard et Christine qu il signe.


St ( B , K b ),St (C, Kc )

3 Bernard envoie Christine la clef de session et la datation quil a reus dAlice


aprs les avoir chiffrs avec la clef publique de Christine, le tout accompagn
des certificats dAlice et de Christine.
E c (Sa (K,T a )),St ( C, K c ),St ( A , K a)

3.3

69

Authentification et change de clefs

4 Christine dchiffre le message d Alice avec sa clef prive et contrle la


signature dAlice avec la clef de celle-ci. Elle vrifie que la datation est toujours
valide.

Christine croit maintenant parler avec Alice; Bernard la trompe avec succs. En fait,
Bernard peut tromper nimporte quel membre du rseau jusqu ce que la datation
expire.
Ce problme est facile rgler. Il suffit d ajouter les noms dans le message chiffr
ltape 3:
E b {Sa {A, B, K, T a )),St { B , K b ),St { A , Ka )

Maintenant Bernard ne peut plus rutiliser le vieux message d Alice avec Christine
parce quil est clairement ddi la communication entre Alice et Bernard.

Woo-Lam
Ce protocole utilise encore la cryptographie clef publique [1612, 1613]:
1 Alice envoie Ivan un message contenant son nom et celui de Bernard.
A ,B

2 Ivan envoie Alice la clef publique de Bernard quil signe avec sa propre clef
prive.
St ( K b )

3 Alice vrifie la signature de Ivan. Elle envoie alors Bernard son nom et un
nombre alatoire, quelle chiffre avec la clef publique de Bernard.
E k b ( A, R a )

4 Bernard envoie Ivan son nom, celui dAlice et le nombre alatoire dAlice
quil chiffre avec la clef publique de Ivan.
A , B , E k t {Ra )

5 Ivan envoie Bernard la clef publique dAlice quil signe avec sa propre clef
prive. Il lui envoie aussi le nombre alatoire dAlice, une clef de session ala
toire, le nom dAlice, le nom de Bernard, le tout sign avec la clef prive de
Ivan et chiffr avec la clef publique de Bernard.
S t ( K a ),EKb (St (Ra ,K, A, B))

6 Bernard contrle la signature de Ivan. Il envoie alors Alice la deuxime partie


du message que Ivan lui a envoy ltape 5 et un autre nombre alatoire, le
tout chiffr avec la clef publique dAlice.
E Ka (St (Ra , K, A, B) , Rb )
7 Alice vrifie la signature de Ivan et son nombre alatoire. Elle envoie alors
Bernard le second nombre alatoire quelle chiffre avec la clef de session.
E k (R b )

8 Bernard dchiffre son nombre alatoire et vrifie quil na pas chang.

Chapitre 3

70

Protocoles lmentaires

Autres protocoles
X .509 sont
24.9. Le protocole K r y p t o K n ig h t est dcrit dans le pa
ragraphe 24.6. Le protocole: Echange de Clef Chiffr 3, est dcrit dans le para
graphe 22.5.
Il y a beaucoup d autres protocoles dans la littrature. Les protocoles

dcrits dans le paragraphe

K u p e r e e [695] est un autre protocole clef publique. D autres protocoles ltude


utilisent

beacons, un noeud du rseau en qui lon a confiance et qui met en continu

des nombre alatoires authentifis [783].

Les leons
Il faut tirer quelques leons importantes des protocoles prcdents, la fois de ceux
qui ont ts casss et de ceux qui ne lon pas t:
- Beaucoup de protocoles chouent parce que leurs concepteurs essayent dtre
trop intelligents. Ils optimisent leurs protocoles en laissant de ct des points
importants: les noms, des nombres alatoires, et ainsi de suite. Le remde est de
tout rendre explicite [44, 45].
- On a vite fait de sembrouiller en essayant doptimiser, cela dpend beaucoup des
hypothses que lon fait. Par exemple, si lon dispose de datations sres, on peut
faire beaucoup de choses impossibles sans cela.
Le choix du protocole dpend de larchitecture du rseau utilis pour les commu
nications. Voulez-vous minimiser la taille des messages ou leur nombre? Est-ce
que tous les partis peuvent se parler les uns les autres ou seulement quelques uns
dentre eux.
De telles questions permettent de dvelopper des mthodes formelles pour lanalyse
des protocoles.

3.4

Analyse formelle des protocoles dau


thentification et dchange de clefs

Le problme d obtenir une clef de session sre entre deux ordinateurs (et deux per
sonnes) est si important quil a men de nombreuses recherches. Une part des re
cherches a t dvoue au dveloppement de protocoles tels que ceux examins dans
les paragraphes 3.1, 3.2, et 3.3. Ceci a conduit de plus amples et plus intressants
problmes: lanalyse formelle des protocoles dauthentification et d change de clefs. On
a trouv des failles dans certains protocoles apparament srs des annes aprs quils
furent proposs et les chercheurs voulaient des outils permettant de prouver la scurit
d un protocole ds le dbut. Bien que la plupart de ce travail puisse sappliquer aux pro
tocoles cryptographiques en gnral, lemphase en recherche concerne principalement
lauthentification et lchange de clefs.
3. E n c r y p te d K e y E x ch a n g e.

3-4

Analyse formelle des protocoles dauthentification et dchange de clefs

71

Il y a quatre approches fondamentales de lanalyse de protocoles cryptographiques


[1053] :
1. Modliser et vrifier le protocole en utilisant des languages de spcification et
des outils de vrification qui ne sont pas spcifiquement ddis lanalyse de
protocoles cryptographiques.
2. Dvelopper des systmes experts avec lequel un concepteur de protocoles peut
inventer et tester diffrents scnarios.
3. Modliser les ncssits dune famille de protocoles laide de rgies logiques sur
lanlyse de savoir et de croyance.
4. Dvelopper une mthode formelle base sur les proprits de rcriture de termes
algbriques dans les sytmes cryptographiques.
Une discussion complte de ces quatres approches et des recherches qui tournent autour
dpasse largement le sujet de ce livre. Voir [1055, 1357] pour une bonne introduction;
nous allons juste toucher du bout des doigts les avances majeures dans le domaine.
La premire approche traite un protocole cryptographique comme nimporte quel autre
programme et soccuppe de prouver son exactitude. Certains chercheurs prsentent un
protocole comme une machine tat fini [1455, 1357], dautres utilisent des exten
sions du calcul des prdicats du premier ordre [823], et d autres encore analysent les
protocoles laide de languages de spcification [1568]. Toutefois, ce nest pas pareil
de prouver lexactitude que de prouver la scurit et cette approche ne permet pas
de dtecter de nombreux protocoles dfectueux. Bien quelle ft largement tudie en
premier lieu, la plupart des travaux dans le domaine ont ts redirigs alors que la
troisime approche gagnait en popularit.
La deuxime approche utilise des systmes experts pour dterminer si le protocole peut
atteindre un tat indsirable (comme la divulgation d une clef par exemple). Si cette
approche est plus apte dtecter les failles, elle ne garantie pas la scurit et ne fournit
pas non plus de technique pour dcouvrir des attaques. C est efficace pour dterminer
si un protocole a une faille donne mais pas pour trouver une faille inconnue dans un
protocole. On trouvera des exemples dune telle approche dans [997, 1525]; un systme
base de rgles dvelopp par larme amricaine qui sappelle l Interrogateur4 est
examin dans [1098].
La troisime approche est de loin la plus populaire, elle fut lance par Michael
B u r r o w s , Martin A b a d i et Roger N e e d h a m . Ils ont dvelopp un modle de logique
formelle pour lanalyse de savoir et de croyance appel la logiqu e B A N [287, 288].
BAN est la logique la plus utilise pour analyser les protocoles dauthentification. Elle
repose sur lhypothse que lauthentification est une fonction dpendant de lintgrit
et de la fracheur, et elle permet de suivre la valeur de ces deux attributs au cours
du protocole au moyen de rgles logiques. Malgrs le dveloppement de beaucoup de
variantes et d extensions, la plupart des concepteurs de protocoles se rfrent encore
aux premiers travaux.
La logique BAN ne permet pas de prouver la scurit; elle permet seulement de rai
sonner sur lauthentification. Cette logique est simple et immdiate, facile appliquer
4. L I n te r ro g a to r en anglais.

72

Chapitre 3

Protocoles lmentaires

et pourtant utile pour dtecter des failles. Certaines formulations de la logique BAN
ressemblent ceci:
Alice croit A . (Alice agit comme si X tait vrai.)
Alice voit X . (Quelquun a envoy Alice un message contenant X .
Celle-ci peut le lire et lenvoyer nouveau aprs un ventuel dchiffre
ment.)
Alice a dit X . ( un moment donn, Alice a envoy un message conte
nant X . On ne sait pas quand il a t envoy ou mme sil a t envoy
durant le protocole en cours. On sait seulement que Alice croyait X quand
elle la dit.)
X est rcent (ou frais). (A na jamais t envoy dans un message
quelquinstant que ce soit avant le protocole en cours.)
Et ainsi de suite. La logique B A N fournit aussi des rgles pour raisonner sur des
croyances lintrieur dun protocole. En appliquant ces rgles aux formulations lo
giques concernant le protocole, on peut prouver certaines choses ou rpondre certaines
questions propos du protocole. Par exemple, une des rgles est celle de la signification
dun message:
Si Alice croit quelle et Bernard partagent une clef secrte K et si Alice
voit X chiffr avec K , et si Alice na pas chiffr X avec K , alors Alice croit
que Bernard a dit X .

Une autre rgle est celle de la vrification de nombre alatoire


Si Alice croit que X na pu tre prononc que rcemment et que Bernard
a dit A , alors Alice croit que Bernard croit A .

Il y a quatre tapes dans une analyse avec BAN :


1. Dcrire le protocole dans une forme idalise laide de formulations logiques
telles que les prcdentes.
2.

Ajouter toutes les hypothses concernant ltat initial du protocol.

3.

Insrer des formules logiques inhrentes aux formulations: des assertions propos
de ltat du systme aprs chaque formulation.

4.

Applliquer les rgles logiques aux assertions et aux hypothses pour trouver les
croyances de chaque parti au cours du protocole.

Les auteur de la logique B A N voient les protocoles idaliss comme des spcifications
plus claires et plus compltes que les descriptions traditionnelles de la littrature...
[287, 288]. D autres ne se laissent pas impressionner et critiquent cette tape car elle
pourrait dnaturer le protocole rel [1161, 1614], Voir [225, 1563] pour une poursuite
du dbat. D autres dtracteurs essayent de montrer que la logique BAN peut conduire
pour certains protocoles des caractristiques clairement fausses [1161] voir [289,
1513] pour une rfutation et que la logique BA N concerne seulement la confiance
et pas la scurit [1513]. De plus amples dbats se trouvent dans [1495, 707, 1011],

3-4

Analyse formelle des protocoles dauthentification et dchange de clefs

73

Malgrs ces critiques, la logique B A N est un succs. Elle a contribu trouver des failles
dans diffrents protocoles dont N E E D H A M -S C H R O E D E R et une premire version dun
protocole C C IT T X .509 [308]. Elle a permis de montrer des redondances dans beau
coup de protocoles comme Y a h a l o m , N e e d h a m - S c h r o e d e r , et K e r b e r o s . Bien
des articles publis font tat de la scurit de leurs protocoles grce la logique BAN
[41, 1162, 80].
Dautres systmes de logique ont ts publis, certains sont des extensions de la logique
BAN [647, 588,1562, 829], et les autres sont bass sur B A N pour palier des faiblesses
connues [1495, 1011]. La plus prise parmi celles-l est G N Y [647] bien quelle prsente
certains dfauts [41]. Des probabilits de croyance ont t ajoutes la logique B A N
avec un succs mitig [296, 507]. D autres logiques formelles sont proposes dans [163,
799, 292]; dans [1518], les auteurs essayent de combiner les aspects de plusieurs logiques.
Enfin, il existe des logiques o les croyances peuvent changer avec le temps [1130, 1515].
Avec quatrime approche lanalyse des protocoles cryptographiques, on modlise le
protocole par un systme algbrique, on exprime ltat de connaissance des participants
en ce qui concerne le protocole, et on analyse alors sil est possible dateindre certains
tats. Cette approche na pas connu autant d gards que les logiques formelles, mais a
ne saurait tarder. Michael M e r r i t t la utilise le premier en montrant quun modle
algbrique permet danalyser les protocoles cryptographiques. On trouvera dautres
approches dans [506, 1512, 1538, 1539, 1540, 1514, 1614],
LAnalyseur de Protocoles des laboratoires de recherche de la marine amricaine5 est
probablement lapplication la plus russie de ces techniques [1516, 824, 1054, 1517]; il
a mis en vidence de nouvelles failles et d autre dj connues dans quelques protocoles
[1052, 1053, 1055]. L 'Analyseur de Protocoles utilise des dfinitions d actions du type:
- Accepter (Bernard, Alice, A i, N ). (Bernard accepte le message A i comme prove
nant d Alice durant la manche N de Bernard.)
- Apprendre(Estelle,A4). (Estelle apprend A4.)
- Envoyer(Alice, Bernard, Q, A i). (Alice envoie A4 Bernard en rponse la
requte Q.)
Request(Bernard, Alice, Q, N ). (Bernard envoie Q Alice durant la manche N
de Bernard.)
A parjjr de ces actions, on peut spcifier des exigences. Par exemple:
- Si Bernard a accept un message A4 de la part d Alice un moment donn, alors
Estelle n a appris A4 aucun moment.
- Si Bernard a accept un message A4 de la part d Alice dans la manche N de
Bernard, alors Alice a envoy A4 Bernard en rponse une requte survenue
durant la manche N de Bernard.
Pour utiliser l Analyseur de Protocoles, le protocole doit tre spcifier avec les construc
teurs prcdents. On distingue alors quatre phases dans lanalyse: la dfinition des
rgles de transition pour les participants hontes, la description des oprations acces
sibles tous les participants (hontes ou malhontes), la description des blocs de base
5. N a vy R esea rch L a b o ra to ry (N R L ).

Chapitre 3

74

Protocoles lmentaires

constituant le protocole, et la description des exigences. Le but de tout ceci est de


montrer quun protocole donn remplit ses exigences. Les outils comme YAnalyseur
de Protocoles pourrait ventuellement conduire des protocoles dont la scurit serait
prouve.
Alors que le gros du travail dans les mthodes formelles vise appliquer les dites
mthodes des protocoles existants, dautres travaux tendent utiliser les mthodes
formelles pour concevoir le protocole ds le dpart. Les premiers pas dans cette direction
sont dans [713]. L 'Analyseur de Protocoles tente aussi d accomplir cela [1516, 224,
1517].
Lapplication de mthodes formelles aux protocoles cryptographiques reste une ide
assez nouvelle et il est vraiment difficile de savoir o elle mne. Pour linstant, le point
sensible semble rsider dans le processus de formalisation.

3.5

Cryptographie clef publique clefs


multiples

Pour la cryptographie clef publique, il y a deux clefs. Un message est chiffr avec lune
et dchiffr avec lautre. En gnral, lune des clefs est prive et lautre est publique.
Toutefois, faisons maintenant lhypothse quAlice a une clef et Bernard lautre. Alice
peut chiffrer un message que seul Bernard pourra dchiffrer et Bernard peut chiffrer
un message que seule Alice pourra lire.
Ce concept a t gnralis par Colin B o y d [220]. Imaginez une variante de la crypto
graphie clef publique avec trois clefs: K a , K b , K c , distribues comme indiqu dans
le tableau 3.2.
T a b . 3 .2

- Clefs en possession de chacun des participants

Participant :
Alice
Bernard
Christine
David
Etienne
Francis

Clef(s) en sa possession :
Ka
Kb
Kc
K a et K b
K b et K c
K a et K c

Alice peut chiffrer un message avec K a de manire qutienne qui dispose de K b et de


K c puisse le dchiffrer, de mme que Bernard et Christine sils se mettent ensemble.
Bernard peut chiffrer un message afin que Francis puisse le lire et Christine peut chiffrer
un message de faon que David puisse le lire. David peut chiffrer un message avec K a
de manire quEtienne puisse le lire, avec K b de manire que Francis puisse le lire,
ou encore avec K a et K b de manire que Christine puisse le lire. De mme, Etienne
peut chiffrer un message de telle manire quAlice, David ou Francis puissent le lire.
Les diffrentes possibilits sont rsumes par le tableau 3 .3 et il ny en a pas d autres.
Ce schma peut tre tendu n clefs. Si un sous-ensemble de ces clefs est utilis pour
chiffrer le message, le complment de celui-ci (les clefs non utilises pour le chiffrement)

3.6

Secret morcel

75

T a b . 3 .3

- Chiffrement trois clefs

Chiffr avec les clefs :


Ka
Kb
Kc
K a et K b
K a et K c
K b et K c

Doit tre dchiffr avec les clefs :


K b et K c
K a et K c
K a et K b
KC
Kb
Ka

est ncessaire pour dchiffrer le message.

Diffusion de message
Imaginez que vous ayez cent oprateurs sur le terrain. Vous voulez envoyer des messages
certains sous-ensembles de vos oprateurs mais vous ne connaissez pas lavance
la composition des sous-ensembles. Vous pouvez chiffrer le message sparment pour
chaque destinataire, ou crer des clefs pour chaque combinaison possible. La premire
option augmente considrablement le trafic des communications ; la deuxime ncessite
un trs grand nombre de clefs.
La cryptographie clefs multiples est nettement plus facile. Considrons trois opra
teurs: Alice, Bernard et Christine. Vous donnez Alice K a et K b , Bernard K b et
K c , et Christine K a et K c - Ainsi, vous pouvez dialoguer avec nimporte quel sousensemble dentre eux. Si vous voulez envoyer un message que seule Ace puisse lire,
chiffrez-le avec K c - Quand elle reoit le message, elle le dchiffre avec K a et puis K r .
Si vous voulez envoyer un message que seul Bernard puisse lire, chiffrez-le avec K a - Si
vous voulez envoyer un message que seule Christine puisse lire, chiffrez-le avec K b - Si
vous voulez envoyer un message quAlice et Bernard puissent lire, chiffrez-le avec K a
et K c , et ainsi de suite.
Cela peut paratre peu excitant, mais avec 100 oprateurs, ce schma est pour le moins
efficace. Envoyer des messages individuels ncessite de partager une clef avec chaque
oprateur (100 clefs au total). Pour couvrir tous les sous-ensembles possibles, il faut
2100 2 clefs (on exclus les messages destins tous les oprateurs et aucun). Le
schma qui vient d tre dcrit marche avec un seul texte chiffr et 100 clefs diffrentes.
Le seul inconvnient est quil faut aussi diffuser le sous-ensemble doprateurs auquel ce
message est destin; sans cela, chaque oprateur devrait essayer toutes les combinaisons
de clefs possibles la recherche de la bonne. Les nom des destinataires suffisent. Dans
la ralisation directe de ceci, chacun reoit une quantit massive de donnes relatives
aux clefs.
Il y a dautres techniques pour la diffusion de messages, certaines ne prsentent pas le
problme prcdent. Elles sont dcrites dans le paragraphe 22.7.

3.6

Secret morcel

Imaginer que vous ayez invent une nouvelle crme de garniture super-collante et super
sucre. Peut-tre avez vous fait une sauce pour hamburger encore plus insipide que

Chapitre 3

16

Protocoles lmentaires

celle de vos concurrents. C est important, vous devez garder le secret. Vous ne pouvez
indiquer la composition exacte des ingrdients qu vos employs en qui vous avez
le plus confiance: mais quarrive-t-il si lun d entre eux vous quitte pour aller la
concurrence? Le secret est dvoil et il ne faudra pas attendre longtemps avant que
tous les marchands de fastfood du quartier ne fassent des hamburgers aussi insipides
que les vtres.
Pour remdier cela, on fera appel au secret m orcel. Il y a moyen de prendre un
message et de le couper en morceaux [553]. Chaque morceau en lui-mme na aucune
signification mais si vous les rassemblez vous pouvez faire la sauce. Si un employ vous
quitte avec un morceau de la recette, cette information est inutilisable par elle-mme.
Le morcellement de secret le plus simple partage un message entre deux personnes.
Voici un protocole o Ivan partage un message entre Alice et Bernard.
1 Ivan engendre une chane alatoire de bits, R, ayant la mme longueur que le
message A i.

2 Ivan combine A i avec R par ou exclusif pour obtenir S.


A4 R = S

3 Ivan donne R Alice et S Bernard.


Pour reconstruire le message, Alice et Bernard nont quune tape effectuer :
4 Alice et Bernard combinent leurs morceaux par ou exclusif pour reconstruire le
message :
R S = A4

Cette technique, pour autant que tout soit fait correctement, est absolument sre.
Chaque lment est en lui-mme sans valeur. Essentiellement, Ivan chiffre le message
avec un masque jetable. Il donne ensuite le masque une personne et le message chiffr
lautre. Le paragraphe 1.5 explique la technique du masque jetable; ce systme de
chiffrement est absolument sr. Aucune puissance de calcul ne permet de retrouver le
message avec un seul morceau.
Il est ais d tendre ce schma plusieurs personnes. Pour morceler un message entre
plus de deux personnes, on combine dautres chanes alatoires de bits avec le message
Dans lexemple qui suit, Ivan partage le message en quatre morceaux :
1 Ivan engendre trois chanes alatoires de bits, R, S et T , ayant chacune la
mme longueur que le message A i.

2 Ivan combine par ou exclusif A i avec les trois chanes :


AA@RST = U

3 Ivan donne R Alice, S Bernard, T Christine et U David.


Et voici comment Alice, Bernard, Christine et David reconstruisent le message :
4 Alice, Bernard, Christine et David se mettent ensemble pour calculer:
R @ S < $ > T U = A4

3.7

Secret rparti

77

Cest un protocole juge-arbitre. Ivan a tous les pouvoirs et il peut faire ce quil
veut. Il peut donner du charabia et prtendre que ce sont les bons lments du secret ;
personne ne le saura jusqu ce quils essaient de reconstruire le secret. Il peut donner
un morceau Alice, Bernard, Christine et David, puis dire tout le monde que seuls
Alice, Christine et David sont ncessaires pour reconstruire le secret. Il peut alors
licencier Bernard. Et comme c est Ivan qui dcide comment partager le secret, c est en
son pouvoir dagir ainsi.
Il y a toutefois un dfaut ce protocole : si un des morceaux est perdu, le message est
perdu aussi. Par exemple, si Christine sen va chez le concurrent avec son morceau de
la recette de la sauce, les autres sont dans lembarras. Elle ne peut pas reproduire la
recette, mais il en est de mme pour Alice, Bernard et David. Alice, Bernard et David
nont quune information commune : la longueur du message rien de plus. Cela est
d au fait que R, S, T, U et A4 ont tous la mme longueur; ds que lon connat lun
deux, on connat la longueur du message. Rappelons que A4 nest pas morcel dans le
sens usuel du terme, il est combin par ou exclusif avec des chanes alatoires de bits.

3.7

Secret rparti

Vous mettez au point un programme de lancement de missiles nuclaires. Vous voulez


tre sr quun fou furieux ne puisse pas dclencher le lancement. Vous voulez tre sr
que deux fous furieux ne puissent pas dclencher le lancement. Vous voulez que trois
officiers parmi cinq deviennent fous furieux avant dautoriser le lancement.
Cest un problme facile rsoudre. Construisez un systme de lancement mcanique.
Donnez une clef chacun des cinq officiers et arrangez-vous pour quil faille quau moins
trois officiers mettent leur clef dans la bonne serrure avant que vous ne les autorisiez
faire sauter lennemi du jo u r6.
On peut faire encore plus sophistiqu. Peut-tre qu un gnral et deux colonels peuvent
lancer le missile, mais si le gnral est occup jouer au golf alors il faut cinq colonels
pour autoriser le lancement du missile. Fabriquez le contrleur de lancement de manire
quil ncessite cinq clefs. Donnez trois clefs au gnral et une clef chaque colonel. Le
gnral avec laide de deux colonels peut lancer le missile. Cinq colonels peuvent faire
de mme mais un gnral et un colonel ne peuvent rien faire, ni quatre colonels.
Un schma de rpartition, appel schma seil permet tout cela et plus encore.
Au niveau le plus simple, vous pouvez prendre nimporte quel message (par exemple,
une recette secrte, un code de lancement, ou mme une liste de blanchissage) et le
diviser en n lments, appels parts, de telle manire que nimporte quel ensemble de
m parts puisse tre utilis pour reconstruire le message. Plus prcisment, on parlera
de schma seuil(m ,n). Avec un schma seuil-(3,4), Ivan divise la recette secrte
de la sauce entre Alice, Bernard, Christine et David de manire que trois dentre eux
puissent mettre leurs parts ensemble pour reconstruire le message. Si Christine est en
vacances, Alice, Bernard et David peuvent le faire. Si Bernard est cras par un bus,
Alice, Christine et David peuvent le faire. Mais si Bernard est cras par un bus et que
Christine est en vacances, Alice et David ne peuvent pas reconstruire le message.
6.
Si vous tes vraim ent inquiet, vous pou vez loigner les serrures grande distance et exiger que
les clefs soient insres simultanment. Vous ne voudriez quand m m e pas qu un officier fou furieux
qui aurait vol deux clefs soit capable d annihiler tou te une ville?

78

Chapitre S

Protocoles lmentaires

Les schmas seuil sont plus varis que cela. Tout scnario de rpartition peut tre
modlis laide de schmas. Vous pouvez diviser un message entre les occupants de
votre immeuble, pour cela vous avez besoin de : 1) sept occupants du premier tage et
cinq occupants du deuxime tage ; 2) il y a quelquun du troisime tage, dans ce cas
il ne faut que cet occupant-l, trois occupants du premier tage et deux personnes du
deuxime tage ; 3) il y a quelquun du quatrime tage, auquel cas il faut cet occupant
et un occupant du troisime tage, ou cet occupant et deux personnes du premier tage
avec une personne du deuxime tage, etc.
Cette ide a t invente indpendamment par Adi S h a m i r [1421] et George B l a k l e y
[189], et tudie en profondeur par Gus SiMMONS [1473]. 11 y a plusieurs algorithmes
diffrents dcrits dans le paragraphe 23.2.

Rpartition de secret avec des tricheurs


Il y a plusieurs moyens de tricher avec le schma seuil. Voici seulement quelques-uns
dentre eux :
Scnario 1 : Les colonels Alice, Bernard et Christine sont dans un bunker quelque part
sous terre. Un jour, ils reoivent un message cod de leur prsident: Lancer les
missiles. Nous allons rayer de la carte la recherche sur les rseaux neuronaux. Alice,
Bernard et Christine rvlent leur part, mais Christine donne un nombre alatoire. Elle
est en fait une pacifiste et elle ne veut pas lancer les missiles. Comme Christine n a pas
donn la bonne part, le secret quils rcuprent nest pas le bon. Les missiles restent
dans leurs silos. Pis encore, personne ne sait pourquoi. Alice et Bernard, mme sils
collaborent, ne peuvent pas prouver que la part de Christine nest pas valable.
Scnario 2 : Les colonels Alice et Bernard sont dans leur bunker avec Martin. Martin
sest dguis en colonel et aucun des autres ne souponne la supercherie. Le mme
message est envoy par le prsident et chacun rvle sa part. Ha, Ha ! scrie Martin,
Ce message du prsident est factice et j en suis l auteur. Maintenant je connais vos
parts. Il senfuit alors par lescalier avant que quiconque ne puisse lattraper.
Scnario 3 : Les colonels Alice, Bernard et Christine sont dans leur bunker avec Martin
qui une fois de plus sest dguis. Le mme message vient du prsident et chacun rvle
sa part. Martin ne rvle la sienne quaprs avoir entendu les trois autres. Comme les
trois autres permettent de reconstituer le secret, il fabrique rapidement une part valide
et rvle celle-ci. Maintenant, non seulement il connat le secret mais de plus personne
ne se rend compte quil ne fait pas partie du schma.
Certains protocoles qui contrent ce type de tricheurs sont dcrits dans le para
graphe 23.2.

Rpartition de secret sans Ivan


Une banque veut que sa chambre forte ne souvre que si trois employs parmi cinq
utilisent leur clef. Cela ressemble un schma seuil (3,5), sauf quil y a un hic.
Personne ne doit connatre tout le secret. Il ny a pas d Ivan pour rpartir le secret
en cinq parties. Il existe des protocoles par lesquels cinq personnes peuvent crer un
secret et recevoir chacun un lment de manire quaucun des participants ne puisse
reconstruire le secret sans les autres. Ces protocoles ne seront pas abords dans ce livre,
voyez [445] pour les dtails.

3.7

Secret rparti

79

Rpartition de secret sans rvlation des parts


Ces schmas prsentent un problme. Quand tout le monde se runit pour reconstruir
le secret, chacun doit rvler sa part. Il peut en tre autrement. Si le secret rparti est
une clef prive (pour une signature numrique par exemple), alors n dtenteurs dune
partie du secret peuvent partiellement signer un document. Le document est sign avec
la clef prive rpartie seulement aprs la derniere signature partielle et personne nest
inform de la part dun autre. Le secret peut alors tre rutilis et son maniement
ne ncessite pas d oprateur de confiance. Ce concept est explor plus avant par Yvo
D e s m e d t et Yair F r a n k e l [481, 482].

Secret rparti vrifiable


Ivan donne Alice, Bernard, Christine et David une part du secret chacun, ou du
moins prtend le faire. La seule faon pour chacun d eux pour savoir sil a une part
valide est de reconstruire le secret. Ivan a pu envoyer Bernard une part de rien
du tout, ou bien Bernard a reu accidentellement une mauvaise part cause dune
erreur de transmission. Le secret rparti vrifiable permet chacun deux de contrler
individuellement quil possde une part valide, sans quil soit ncessaire de reconstruire
le secret [560, 1245].

Secret rparti avec veto


Un secret est rparti entre cinquante personnes de manire que dix d entre-elles puissent
reconstituer le secret. C est facile. Mais peut-on raliser un schma de secret rparti
avec la contreinte supplmentaire que vingt personnes puissent empcher les autres quel que soit leur nombre - de reconstruire le secret? Il se trouve que cest possible
[160].
Les mathmatiques sous-jacentes sont compliques, mais lide de base est que chacun
reoit deux parts : un oui et un non . Au moment de reconstruire le secret, chacun
soumet une de ses deux parts. Le choix de la part dpend du souhait du participant
quand la reconstruction du secret. Sil y a au moins m parts oui et au plus n
parts non , alors le secret est reconstruit. Dans la cas contraire, il ne lest pas.
Bien sr, rien nempche un nombre suffissant de personnes favorables daller dans un
coin sans les autres (en supposant quils se connaissent) et de reconstruire le secret.
Mais dans la situation ou chacun soumet sa part dans un ordinateur central, cela nest
pas possible.

Secret rparti avec dsistement


Vous avez install votre de systme de secret rparti et vous voulez maintenant licencier
un des participants. Vous pourriez instaurer un nouveau schma mais cela demande
du temps. Il existe des mthodes pour copier ce systme. Elles permettent d activer
instantanment un nouveau schma ds quun participant devient indsirable [851].

80

3.8

Chapitre 3

Protocoles lmentaires

Protection cryptographique de bases de


donnes

La liste des membres dune association professionnelle est une information intressante.
D une part, vous voulez distribuer la base de donnes tous les membres : vous voulez
quils puissent communiquer entre eux, changer des ides, et sinviter les uns les autres
pour boire une tasse de th. Dautre part, si vous distribuez des copies de la base de
donnes des membres, une copie finira tt ou tard par tomber dans les mains dagents
dassurance ou dautres fournisseurs de courrier publicitaire.
La cryptographie peut amliorer la situation. Vous pouvez chiffrer la base de donnes
de manire quil soit facile d extraire ladresse dun membre mais quil soit difficile
d obtenir la liste dadresses complte.
Ce schma, dcrit dans [552, 551], est vident. Choisissez une fonction de hachage
sens unique et un algorithme clef secrte. Chaque enregistrement dans la base de
donnes est compos de deux champs. Le champ d indexation est le nom de famille de
ladhrent converti par la fonction de hachage sens unique. Le champ de donnes est
le nom complet et ladresse de ladhrent, chiffr en utilisant le nom de famille comme
clef.
Chercher un membre ayant un nom de famille donn est facile. Premirement, calculez
lempreinte du nom de famille par la fonction de hachage sens unique et cherchez cette
empreinte dans les champs dindex de la base de donnes. Sil y a une concordance, alors
il existe un membre ayant ce nom de famille. Sil y a plusieurs concordances, alors il y a
plusieurs personnes dans la base de donnes ayant le mme nom de famille. Finalement,
pour chaque concordance, dchiffrez le nom complet et ladresse en utilisant le nom de
famille comme clef.
Dans [552], les auteurs utilisent ce systme pour protger un dictionnaire de 6000
verbes espagnols. Ils indiquent que les dgradations de performance dues au chiffrement
sont minimes. Des possibilits supplmentaires sont offertes par [551] pour faire des
recherches sur des index multiples mais lide est la mme. Le problme principal avec
ce systme est que vous ne pouvez pas retrouver un enregistrement d une personne si
vous ne connaissez pas lorthographe exacte du nom de famille de celle-ci. Vous pouvez
essayer plusieurs orthographes jusqu ce que vous trouviez la bonne, mais ce nest pas
trs pratique de passer en revue tous les noms commenant par Sch quand vous
recherchez Schneier .
Cette protection nest pas parfaite. Il est possible pour un vendeur particulirement
persvrant de reconstruire la base de donnes des membres en essayant tous les noms
de famille possibles. Sil dispose du Bottin, il peut le faire. Cela peut prendre plusieurs
semaines un ordinateur ddi cette tche, mais c est faisable. Toutefois, la tche est
plus difficile, ce qui signifie plus cher pour un fournisseur de courriers publicitaires.
Une autre approche, dcrite dans [192], permet d extraire des statistiques concernant
des donnes chiffres.

Chapitre 4

Protocoles intermdiaires
4.1

Services de datation

Dans de nombreuses situations les gens veulent pouvoir certifier quun document exis
tait une date donne. Pensez une contestation de copyright ou de brevet : celui qui
peut produire le document le plus ancien gagne la partie. Il y a plusieurs manires de
faire cela avec des documents papier. Des notaires peuvent signer les documents ; des
hommes de loi peuvent garder des copies. Si un litige apparat, le notaire ou lhomme
de loi peut attester de lexistence de la lettre une certaine date.
Dans le monde numrique, c est beaucoup plus difficile. Il n y a pas moyen dexaminer
des documents numriques pour dtecter des signes de falsification. Ils peuvent tre
copis et modifis volont sans que cela soit dcelable. Il est trivial de changer la
date de cration dun fichier informatique. Personne ne peut regarder un document
numrique et affirmer: Oui, ce document a t cr avant le 4 novembre 1952.
Stuart H a b e r et W . Scott S t o r n e t t a chez B e l l c o r e ont rflchi au problme [683,
684, 99]. Ils voulaient un protocole de datation de documents qui ait les trois proprits
suivantes :
- les donnes elles-mmes doivent tre dates indpendamment de leur support
physique ;
- il ne doit pas tre possible de changer le moindre bit dun document sans que
cela soit apparent ;
- il doit tre impossible de dater un document avec une date et une heure diffrentes
de la vraie date.

Solution arbitre
Ce protocole utilise Ivan, qui assume le rle d un service de datation sr et fiable. Bien
sr, Alice veut dater un document :
1 Alice transmet une copie du document Ivan.
2 Ivan enregistre la date et lheure auxquelles il a reu le document et garde une
copie de sauvegarde du document.

Chapitre 4

82

Protocoles intermdiaires

Maintenant, si quelquun met en doute laffirmation d Alice concernant la date de cra


tion du document, elle doit juste faire appel Ivan. Il produira sa copie du document
et vrifiera quil la bien reue la date mentionne.
Ce protocole marche mais il a des dfauts. Premirement, il n y a pas de confidentialit :
Alice doit donner une copie du document Ivan. Toute personne lcoute pendant
cette transaction peut le lire. Elle peut chiffrer le document, mais mme ainsi il doit
encore tre stock dans les bases de donnes d Ivan. Quelle est la scurit de ces bases
de donnes ?
Deuximement, la base de donnes elle-mme doit tre gigantesque car les besoins
d archivage seraient normes. De plus une trs large bande passante serait requise pour
envoyer de grands documents Ivan.
Le troisime dfaut est li aux erreurs potentielles. Une erreur de transmission ou un
dfaut magntique dans lordinateur central d Ivan pourrait invalider compltement
laffirmation d Alice quant la date de cration du document.
Quatrimement, il se peut que quelquun daussi honnte quIvan pour grer le service
de datation nexiste pas. Peut-tre quAlice fait appel aux services de la socit de
Bernard: Datation et Art Nouveau. Il ny a rien qui empche Alice et Bernard
dtre complices et de dater des documents comme bon leur semble.

Solution arbitre amliore


Lutilisation des fonctions de hachage sens unique et les signatures numriques
peuvent viter la plupart de ces dfauts :
1 Alice produit, laide de la fonction de hachage sens unique, une empreinte
du document.

2 Alice transmet lempreinte Ivan.


3 Ivan date lempreinte avec la date et lheure auxquelles il a reu lempreinte et
signe le rsultat.

4 Ivan envoie lempreinte signe et la datation Alice.


Cela permet de pallier tous les dfauts sauf le dernier mentionn. Alice ne doit plus
craindre de devoir rvler le contenu de son document : lempreinte est suffisante. Ivan
ne doit plus stocker des copies des documents (ni mme de leur empreinte), ainsi les
problmes de capacit de stockage excessive sont rsolus (rappelez-vous que les fonc
tions de hachage sens unique nont pas de clef). Alice peut immdiatement examiner
lempreinte date et signe quelle a reue ltape 4 et ainsi dtecter toute erreur de
transmission. Il reste le risque quAlice et Ivan puissent tre complices pour produire
nimporte quelle datation.

Protocole de filiation
Un moyen d viter ce dernier dfaut est de lier la datation d Alice avec les autres
datations dj produites par Ivan, pour dautres utilisateurs ventuels. Comme lordre
dans lequel Ivan recevra les requtes nest pas connu davance, la datation d Alice doit
tre plus rcente que celle de la requte prcdente. Et comme la requte qui suit celle
dAlice est lie la datation qu Alice a obtenue, sa requte doit forcment avoir eu lieu
avant. La requte dAlice est donc prise en sandwich dans le temps.

4-1

Services de datation

83

Si A est le nom d Alice, lempreinte quAlice veut dater est Hn, et la datation prcdente
est Tn- 1 , alors le protocole est donn par:
1 Alice envoie Hn et A Ivan.
2 Ivan envoie en rponse Alice :
S K ( n , A , 11n fljL i f n

ly S n li-^ n )

o Ln est l information qui relie la datation prcdente:


H ( I n - l , H n - \ , T n -.\ )

Sk signifie que le message est sign avec la clef publique dIvan. Le nom dAlice
certifie celle-ci comme auteur de la requte. Le paramtre n indique le numro
dordre de la requte: c est la ne datation produite par Ivan. La datation est
donne par le paramtre Tn. L information additionnelle consiste en l'identi
fication de lauteur, lempreinte, la datation et lempreinte de la datation du
document prcdent quIvan a dat.

3 Aprs quIvan ait dat le document suivant, il envoie Alice lidentification de


lauteur de ce document: In+ i

Si quelquun met en doute la datation dAlice, elle contacte les auteurs des documents
antrieurs et postrieurs : In- t et In+i- Si leurs documents sont aussi remis en question,
ils se mettent en contact avec In- 2 et In+2 , et ainsi de suite. Chacun peut montrer que
son document a t dat aprs celui qui prcde et avant celui qui suit.
Ce protocole rend trs difficile la complicit entre Alice et Ivan et les empche de pro
duire un document avec une fausse datation. Ivan ne peut pas postdater un document
car cela ncessiterait de connatre lavance la requte qui prcdera ce document.
Mme sil pouvait falsifier cela, il devrait alors connatre davance la requte avant
* cela , et ainsi de suite. Il ne peut pas antidater un document car la datation
doit tre prise en sandwich entre des documents dats juste avant et juste aprs : or
ces documents ont dj t dats. Le seul moyen de contrer ce schma est d inventer
des chanes de requtes fictives, passes et futures par rapport au document dAlice,
suffisamment longues pour dcourager toute personne de contester la datation.

Protocole distribu
Les gens meurent. Les datations se perdent. Beaucoup dvnements peuvent se pro
duire entre le moment de la datation et la contestation de celle-ci. Quand la contestation
arrive, Alice ne pourrait plus forcment obtenir une copie de la datation d/ _ i . Ce
dfaut peut tre vit en incorporant dans la datation d Alice les datations des 10
requtes qui ont prcd celle d Alice et en envoyant Alice les identifications des
auteurs des 10 requtes qui ont suivi la sienne. Alice a ainsi plus de chance de trouver
quelquun qui a encore sa datation.
Suivant le mme ordre dide, le protocole suivant se passe tout fait de la collaboration
dIvan :
1 A partir dHn, Alice engendre une suite de valeurs alatoires en se servant dun
gnrateur alatoire de suites cryptographiquement sr:

v 1,v2,v3,...yk

Chapitre 4

84

Protocoles intermdiaires

2 Alice interprte chacune de ces valeurs comme lidentification I dune autre


personne. Elle envoie H n chacune dentre elles.

3 Chacune de ces personnes associe la date et lheure l empreinte, signe le


rsultat et envoie le rsultat Alice.

4 Alice collecte et stocke toutes les signatures pour former la datation.


Le gnrateur alatoire de suites cryptographiquement sr de ltape 1 empche Alice
de choisir des identificateurs corrompus comme vrificateurs. Mme si elle fait des
changements mineurs son document pour obtenir un ensemble didentificateurs cor
rompus, ses chances de russir sont ngligeables. La fonction de hachage rend alatoire
le choix des I ; Alice ne peut pas les forcer.
Ce protocole marche car le seul moyen dont dispose Alice pour tricher est de convaincre
les k personnes de collaborer. Comme elle les choisit alatoirement ltape 1, les
chances dy arriver sont quasi inexistantes. Plus la socit est corrompue, plus k doit
tre lev.
De plus, il faut prvoir un mcanisme qui tienne compte des personnes qui ne peuvent
pas produire une datation sur le champ. Dans ce cas, tout ce qui serait ncessaire
serait un sous-ensemble des k rponses attendues pour former une datation valable.
Les dtails dpendent de la ralisation.

Dveloppements futurs
D autres amliorations des protocoles de datation sont prsentes dans [99]. Les au
teurs utilisent des arbres binaires pour augmenter le nombre de datations qui dpendent
dune datation donne, rduisant par la mme occasion la possibilit de produire des
chanes de datations fictives. Ils recommandent galement dditer publiquement lem
preinte des datations du jour, dans les journaux par exemple. Cela remplit une fonction
similaire lenvoi de lempreinte un ensemble alatoire de personnes dans le protocole
distribu. De fait, B e l l C O R E fait cela dans chaque numro du New York Times du
dimanche depuis 1992.
Ces protocoles de datation sont brevets [685, 686, 687]. Une socit inattendue de
Bellcore, SU RETY TECHNOLOGIES, dtient les brevets et a mis sur le march un sys
tme de notaire numrique mettant en oeuvre ces protocoles. Dans la premire ver
sion, les clients envoyaient une requte certifie un serveur central de coordination.
En suivant la technique de Ralph M e r k l e [590], qui permet de construire des arbres
grce des fonctions de hachage [77], le serveur produit un arbre d empreintes dont les
feuilles sont toutes les requtes reues durant une seconde, et renvoie chaque client
la liste des empreintes du chemin allant de la feuille lui correspondant jusqu la racine
de larbre. Le client la conserve localement et peut produire un certificat de notaire
numrique pour chacun des fichiers qui ont ts certifis. La suite des racines de ces
arbres forme le dossier de validation universel qui est accessible dans de multiples
banques de donnes et publi sur CD-ROM. Le logiciel client comprend une fonction
de validation qui permet lutilisateur de tester si un fichier a t certifi dans sa
forme actuelle 1 2.
1. Pour cela il faut rcuprer la racine de larbre appropri et la com parer la valeur obtenue en
appliquant la fonction de hachage adquate sur le fichier et son certificat.

2. Pour plus d informations, contacter Surety T ech n ologies, 1 Main S t ., Chatham, NJ, 07928
tats-U nis, T l: (201) 701-0600, Fax: (201) 701-0601.

4-2

Canal subliminal

4.2

85

Canal subliminal

Alice et Bernard ont t arrts et vont aller en prison. Il entre la prison des hommes
et elle entre la prison des femmes. Leur seul moyen de communiquer est par missives.
Gatien, le gardien, est dispos permettre lchange de messages entre Alice et Bernard
pour autant que ceux-ci ne soient pas chiffrs. Gatien sattend ce quils complotent
pour concocter un plan d vasion, aussi veut-il pouvoir tout lire.
Gatien espre aussi duper soit Alice, soit Bernard. Il veut que lun accepte un message
factice comme un message valide venant de lautre. Alice et Bernard sont prts
prendre le risque dtre dups, sinon ils ne pourraient pas communiquer du tout et ils
doivent prparer leurs projets. Pour mener cela bien, ils doivent duper le gardien
et trouver un moyen de communiquer confidentiellement. Ils doivent mettre en place
un canal subliminal, un canal cach de communication entre eux, au nez et la
barbe de Gatien, bien que les messages eux-mmes ne contiennent pas dinformation
confidentielle. A laide de messages signs inoffensifs ils vont changer de linformation
confidentielle bien que Gatien lise toute la correspondance.
Un canal subliminal simple pourrait tre le nombre de mots dans une phrase. Un
nombre impair de mots correspondrait 1 , tandis quun nombre pair de mots
correspondrait 0 . Ainsi, tandis que vous lisez ce paragraphe d apparence innocente,
j ai envoy mes collaborateurs sur le terrain le message 110 . Le dfaut de cette
technique est dtre de la simple stganographie (voir 1.2); il ny a pas de clef: la
scurit dpend uniquement de la confidentialit de lalgorithme. Une meilleure scurit
est certainement possible.
Gustavus SlMMONS a invent le concept de canal subliminal dans les algorithmes de si
gnature numrique conventionnels [1464, 1477]. Comme les messages subliminaux sont
cachs dans ce qui ressemble des signatures numriques normales, c est une forme
de dissimulation. Gatien voit transiter des messages innocents signs mais il rate com
pltement linformation qui circule sur le canal subliminal. En fait, lalgorithme de
signature numrique subliminal est indiscernable dun algorithme de signature num
rique normal, du moins pour Gatien. Gatien non seulement ne peut pas lire le canal
subliminal mais il ne peut mme pas dceler sa prsence.
En gnral, le protocole ressemble ceci :
1 Alice engendre un message innocent, alatoirement.
2 A laide dune clef secrte quelle partage avec Bernard, Alice signe ce message
innocent de manire cacher son message subliminal dans la signature. C est
le cur du protocole canal subliminal (voir 20.S).

3 Alice envoie le message sign Bernard via Gatien.


4 Gatien lit le message innocent et vrifie la signature. Ne dtectant rien danor
mal, il passe le message Bernard.

5 Bernard vrifie la signature du message innocent, confirmant ainsi que le mes


sage vient bien dAlice.

6 Bernard ignore le message innocent et, utilisant la clef secrte quil partage
avec Alice, il extrait le message subliminal.

Quen est-il de la tricherie? Gatien ne fait confiance personne et personne ne lui


fait confiance. Il peut toujours empcher la communication, mais il na aucun moyen

86

Chapitre 4

Protocoles intermdiaires

dintroduire des messages factices. Comme il ne peut pas engendrer de signature valide,
Bernard dtecterait la tentative de Gatien ltape 5. Et comme il ne connat pas la
clef secrte partage, il ne peut pas lire le canal subliminal. Plus important encore, il
na pas la moindre ide que des messages subliminaux sont changs. Des messages
numriques signs ne sont pas diffrents daspect des messages numriques signs avec
messages subliminaux cachs dans la signature.
La tricherie entre Alice et Bernard est plus problmatique. Dans certaines ralisations
du canal subliminal, linformation secrte dont Bernard a besoin pour lire les messages
subliminaux est la mme information dont Alice a besoin pour signer les messages
innocents. Si tel est le cas, Bernard peut se faire passer pour Alice. Il peut signer
des messages dont Alice serait alors prtendment lauteur et Alice ne peut rien faire
pour len empcher. Si elle doit lui envoyer des messages subliminaux, elle doit lui faire
confiance pour quil n abuse pas de sa clef prive
Dautres ralisations du canal subliminal nont pas ce dfaut Une clef secrte partage
entre Alice et Bernard permet Alice d envoyer des messages subliminaux Bernard
mais elle est diffrente de la clef prive d Alice. Cette clef secrte ne permet pas
Bernard de signer des messages la place d Alice. Alice na pas faire confiance
Bernard pour quil nabuse pas de sa clef prive.

Applications du canal subliminal


Lapplication la plus vidente du canal subliminal est observe dans un rseau des
pionnage. Si tout le monde envoie et reoit des messages signs, les espions ne se feront
pas remarquer en envoyant des messages subliminaux dans des documents signs. Bien
entendu, les espions de la partie adverse peuvent faire la mme chose.
Grce un canal subliminal, Alice peut signer un contrat sous la menace. Quand elle
signe le contrat, elle introduit le message subliminal : J y suis contrainte. D autres
applications sont plus subtiles. Une socit peut signer des documents et cacher des
messages subliminaux, lui permettant ainsi de suivre les documents tout au long de leur
existence. Le Gouvernement peut marquer de la monnaie numrique. Un programme de
signature malveillant peut dvoiler la clef prive par le canal subliminal. Les possibilits
sont sans fin.

Signature numrique exempte de canal subliminal


Alice et Bernard changent des messages signs pour ngocier les termes dun contrat.
Ils utilisent un protocole de signature numrique. Toutefois, cette ngociation de
contrat sert de faade leurs activits despionnage. Quand ils usent de lalgorithme
de signature numrique, peu leur importe les documents quils signent. Ils utilisent un
canal subliminal dans les signatures pour changer de linformation secrte entre eux.
Les services de contre-espionnage, en revanche, ne savent pas que cette ngociation
de contrat et leurs signatures sont des faades. Ceci a conduit certaines personnes
crer des schmas de signature exempts de canal subliminal. Ce sont des sch
mas de signature numrique qui ne peuvent pas tre modifis pour contenir un canal
subliminal [477, 479].

4-3

Signatures numriques incontestables

4.3

87

Signatures numriques incontestables

Des signatures numriques conventionnelles peuvent tre copies intgralement. Parfois,


cette proprit est souhaitable comme dans le cas des annonces publiques par exemple.
Dans d autres situations cela peut tre un dfaut. Imaginez une lettre signe, person
nelle ou commerciale. Si plusieurs copies de cette lettre circulent dans la nature, cela
peut tre embarrassant et mme prter au chantage. La meilleure solution est une si
gnature numrique qui peut tre reconnue valable, mais que le destinataire ne peut pas
montrer un tiers sans le consentement du signataire.
La socit A l i c e S o f t w a r e C o m p a n y distribue le clbre logiciel D E W ( D oEVERYTHiNG -W O RD tm ). Pour garantir que leur logiciel nest pas infect par un virus,
ils ajoutent une signature numrique. Toutefois, ils veulent que seuls les acheteurs lgi
times du logiciel, pas les pirates, puissent vrifier la signature. Cependant, si des copies
de DEW sont infectes, il ny aurait aucun moyen pour la socit A l i c e S o f t w a r e
C o m p a n y de contester une signature valable.
Les signatures in con testa b les [211] conviennent pour ce genre de tche. Tout comme
les signatures numriques normales, une signature incontestable dpend du document
sign et de la clef prive du signataire. Mais contrairement une signature numrique
normale, une signature incontestable ne peut tre vrifie sans le consentement du
signataire. Signature intransfrables serait un nom plus appropri, mais on continue
les appeler ainsi car si Alice est force de confirmer ou de dsavouer une signature au
tribunal par exempleelle ne peut pas contester sa propre signature.
Les mathmatiques sur lesquelles repose ce protocole sont dcrites dans le para
graphe 16.7, mais lide de base est simple:
1 Alice prsente une signature Bernard.
2 Bernard engendre un nombre alatoire et lenvoie Alice.
3 Alice effectue un calcul, utilisant le nombre alatoire et sa clef prive, et envoie
le rsultat Bernard. Alice ne peut faire ce calcul que si la signature est valide.

4 Bernard confirme ce fait.


Il y a un protocole suplmentaire dans lequel Alice prouve quelle na pas sign un
document, sans pouvoir le contester sil sagit bien de sa signature.
Bernard ne peut pas contourner le protocole et convaincre Christine que la signature
dAlice est valide, parce que Christine ne sait pas que les nombres de Bernard sont
alatoires. Il peut trs bien avoir refait le protocole lenvers sur papier sans laide
dAlice et ensuite montrer le rsultat Christine. Christine ne peut pas tre convaincue
que la signature dAlice est valide moins dexcuter le protocole avec Alice elle-mme.
Cela peut ne pas avoir beaucoup de sens maintenant mais cela en aura une fois que les
mathmatiques sous-jacentes auront t prsentes au paragraphe 23.4.
Cette solution n est pas parfaite. Y vo D e s m e d t et Moti Y u n g montrent que Bernard
peut, dans certaines applications convaincre Christine de la validit de la signature
dAlice [487].
Par exemple, Bernard achte une copie lgale du logiciel D E W . Il peut valider la
signature qui accompagne le logiciel quand il le veut. Bernard peut alors convaincre
Christine quil est un vendeur de la socit A l i c e S o f t w a r e C o m p a n y . Il lui vend
une copie pirate du logiciel D E W . Quand Christine essaie de valider la signature avec

88

Chapitre 4

Protocoles intermdiaires

Bernard, il valide simultanment la signature avec Alice. Quand Christine lui envoie
le nombre alatoire, il lenvoie Alice. Quand Alice rpond, il envoie la rponse
Christine. Christine est alors convaincue quelle est une acheteuse lgitime du logiciel
alors quil nen est rien. Cette attaque est un cas particulier du problme du grand
matre aux checs qui est dcrit en dtail dans le paragraphe 5.2.
Telles quelles, les signatures icontestables ont de nombreuses applications; il y a beau
coup de situation o Alice ne veut pas que n importe qui puisse vrifier sa signature.
Elle ne veut srement viter que sa correspondance personnelle puisse tre vrifie par
la presse, montre et vrifie hors du contexte, o mme vrifie aprs que les choses ont
chang. Si elle signe une bribe dinformation quelle a vendue, elle ne veut pas que ceux
qui nont pas pay pour linformation puissent tout de mme en vrifier lauthenticit.
En contrlant ceux qui vrifient sa signature, Alice protge sa vie prive.
Une variante des signatures incontestables permet de sparer le lien entre le signataire
et le message, et le lien entre le signataire et la signature [911]. Dans ce cadre, nim
porte qui est capable de vrifier que le signataire a bien produit la signature, mais la
coopration du signataire est ncessaire pour vrifier que la signature est valide pour
le message en question.
Il existe une notion similaire, celle de signatures incontestables arbitres. Imaginez
quAlice travaille pour la socit Toxines et envoie des documents compromettants
un journal en utilisant un protocole de signature incontestable. Alice peut confirmer sa
signature au prs du journaliste, et personne d autre. Toutefois, Bernard, le contre
matre suspecte Alice d avoir divulgu les documents. Il demande Alice de contester
le protocole pour se laver de tout soupon, et Alice refuse. Bernard prtend que la seule
raison poussant Alice refuser est sa culpabilit et il la licencie.
Les signatures incontestables arbitres sutilisent comme les signatures incontestables
sauf que seul Ivan peut effectuer le protocole de contestation. Bernard ne peut pas
demander Alice de contester sa signature car seul Ivan en est capable. Si Ivan est le
sytme judiciaire, il ne devra effectuer le protocole quen cas de dispute.

4.4

Signatures numriques vrificateur


ddi

La SARL Logiciels Alice fait des ventes astronomiques de D E W , tel point que Alice
passe plus de temps vrifier des signatures incontestables qu laborer de nouveaux
logiciels.
Alice voudrait engager une presonne charge de vrifier les signatures pour toute len
treprise. Alice, ou tout autre programmeur, pourrait signer des documents avec un
protocole de signature incontestable; mais les vrifications seraient toutes faites par
Christine.
Il se trouve que c est possible grce aux signatures vrificateur ddi [337, 1221].
Alice peut signer un document de sorte que Bernard est convaincu de la validit de
la signature sans pouvoir convaincre un troisime parti; ce faisant, Alice peut dsigner
Christine comme future vrificatrice de la signature. Alice na pas mme besoin de
la permission de Christine; il lui suffit dutiliser la clef publique de celle-ci. De plus
Christine peut encore confirmer la signature dAlice quAlice soit partie en voyage,
quelle ait quitt la socit, ou quelle soit morte.

4-5

Signatures par procuration

89

Les signatures vrificateur ddi sont une sorte de compromis entre les signatures nu
mriques classiques et les signatures incontestables. Dans certaines circonstances, Alice
voudra restreindre le nombre des personnes capables de vrifier sa signature. D un autre
ct, donner un contrle total Alice peut compromettre lutilisation des signatures :
Alice pourrait refuser de cooprer pour confirmer ou dsavouer une signature en prtexant quelle a perdu les clefs ncessaires, ou en tant simplement injoignable. Les
signatures vrificateur ddi assurent Alice la protection d une signature incontes
table sans lui permettre dabuser de cette protection. Alice prfrera voir les choses
ainsi: les signatures vrificateur ddi lui permettent d viter des utilisations indrisables, de la protger si elle perd sa clef, et dassurer la prnit du fonctionnement
des signatures si elle est en vacances, lhopital, ou morte.
Cette ide permet toutes sortes d applications. Christine peut se dclarer notaire
publique . Elle publie sa clef et nimporte qui peut la dsigner comme vrificatrice de
ses signatures. Elle peut faire payer chaque confirmation de signature et mener une vie
tranquille.
Christine peut tre un bureau de brevetage, une agence gouvernementale, ou lordi
nateur hte d une organisation. Ce protocole permet de diffrencier les personnes qui
signent les documents de celles qui vrifient les signatures.

4.5

Signatures par procuration

Les signatures vrificateur ddi permettent de dsigner quelquun dautre comme


vrificateur des signatures. Alice doit par exemple partir en voyage daffaires quelque
part o elle na pas accs un rseau informatique, comme la jungle africaine. Ou il
se peut quelle soit indispose aprs une opration chirurgicale. Elle attend un courrier
lectronique important et a briff son secrtaire Bernard pour rpondre en consquence.
Comment Alice peut-elle permettre Bernard de signer des messages pour elle, sans
lui donner sa clef prive?
Les signatures par procuration apportent une solution [1010], Alice peut donner
une procuration Bernard, en remplissant les proprits suivantes:
- Distingabilit. Nimporte qui peut distinguer une signature par procuration
dune signature usuelle.
- Non falsification. Seul le signataire original et le signataire interpos peuvent
produire une signature par procuration.
- Signataire interpos malveillant. Un signataire interpos ne peut pas pro
duire de signature de signature sans quon puisse dtecter quil sagit dune si
gnature par procuration.
- Vrification. Une signature par procuration peut convaincre un vrificateur de
laccord du signataire original sur le message sign.
- Identification. Le signataire original peut dterminer lidentit du signataire
interpos partir dune signature par procuration.
- Non dsaveu. Un signataire interpos ne peut pas dsavouer une signature par
procuration quil a produit.

Chapitre 4

90

Protocoles intermdiaires

Dans certains cas, une forme didentification plus large est ncessaire, permettant
nimporte qui de dterminer lidentit du signataire interpos partir de la signature
par procuration. Des protocoles de signatures par procuration, bass sur diffrentes
ralisations de signatures numriques, se trouvent dans [1010].

4.6

Signatures collectives

David C h a u m prsente ainsi ce problme dans [333] :


Une socit a plusieurs ordinateurs. Chacun est connect au rseau local.
Chaque dpartement de la socit a sa propre imprimante (aussi connec
te au rseau local) et seul le personnel du dpartement a le droit de se
servir de cette imprimante. Avant dimprimer, limprimante doit donc tre
convaincue que lutilisateur travaille dans ce dpartement . En mme temps,
la socit impose la confidentialit ; le nom de lutilisateur ne peut pas tre
rvl. Toutefois, si quelquun dcouvre en fin de journe quune imprimante
a t utilise trop souvent, le directeur doit tre capable de retrouver qui
en a abus pour envoyer une facture au coupable.
La solution ce problme est appele signature collective. Les signatures collectives
ont les proprits suivantes :
- Seuls les membres du groupe peuvent signer des messages.
- Celui qui reoit une signature peut vrifier que cest une signature valide de ce
groupe mais ne peut pas dterminer quel membre du groupe a sign.
- En cas de litige, la signature peut tre ouverte pour rvler lidentit du
signataire.

Signature collective avec arbitre


Ce protocole utilise un arbitre en qui lon a confiance :
1 Ivan engendre un lot de paires clef prive, clef publique et donne chaque
membre du groupe une liste diffrente de clefs prives uniques. Il ny a pas de
doublon entre les listes3.

2 Ivan publie la liste principale de toutes les clefs publiques pour le groupe dans
un ordre alatoire. Il reste seul savoir qui possde quelle clef.

3 Quand un membre du groupe veut signer un document, il choisit une clef au


hasard parmi sa liste personnelle.

4 Quand quelquun veut vrifier quune signature appartient au groupe, il re


cherche dans la base de donnes publique la clef publique et vrifie la signature.

5 En cas de litige, Ivan connat la correspondance entre les clefs publiques et les
membres du groupe.
3.
Si le groupe com porte n membres, et chaque m em bre a m paire de clefs, il y a en tou t n X m
paires de clefs au total.

1^.1

Signatures numriques Fait-Stop

91

Le dfaut de ce protocole est quil ncessite lintgrit d Ivan. Il connat les clefs prives
de tout le monde et il peut imiter des signatures. De plus, la liste des clefs de chaque
membre doit tre suffisamment longue pour viter que lon puisse analyser quelles clefs
ils ont utilises.
Larticle de C h a u m [333] donne d autres protocoles. Pour certains d entre eux, Ivan
ne peut pas imiter de signatures. Dans dautres Ivan nest pas toujours ncessaire.
Un autre protocole [352] permet non seulement de cacher lidentit du signataire, mais
aussi dlargir le groupe de nouveaux membres. On trouvera encore un autre protocole
dans [1241]

4.7

Signatures numriques Fail-Stop

Faisons lhypothse quEstelle est un adversaire puissant. Elle a de grands rseaux in


formatiques, des pices pleines d ordinateurs Cray : une puissance informatique consi
drablement plus importante que celle d Alice. Tous ces ordinateurs fonctionnent jour
et nuit pour trouver la clef prive d Alice. Et enfin, le rsultat tombe. Estelle peut
maintenant se faire passer pour Alice signant sa place des documents volont.
Les signatures numriques Fail-Stop , introduites par Birgit P f i t z m a n n et Michael
W a i d n e r [1250], empchent ce genre de tricherie. Si Estelle falsifie des signatures de
cette manire, alors Alice peut prouver quil y a eu falsification. Si Alice signe des
documents et renie sa signature aprs coup, prtendant quil y a eu falsification, un
tribunal peut vrifier ses dires.
Lide de base des signatures numriques Fail-Stop est que pour chaque clef publique
possible, de nombreuses clefs prives conviendraient. Chacune de ces clefs prives donne
des signatures numriques diffrentes. Toutefois, Alice na quune clef prive et elle ne
peut calculer quune signature. Alice ne sait rien des autres clefs prives.
Estelle essaie de retrouver la clef prive d Alice (dans ce cas-l, Estelle peut tre Alice
qui essaie de trouver une seconde clef prive pour elle-mme). Elle collectionne les
messages signs et, en utilisant sa batterie dordinateurs Cray, elle essaie de retrouver
cette clef prive. Mme si elle finit par trouver une clef prive valide, comme il y en a
de nombreuses possibles, il est fort probable quelle en ait dcouvert une diffrente de
celle quAlice utilise. La probabilit quEstelle retrouve la bonne clef peut tre rendue
si faible quelle est ngligeable.
Maintenant, quand Estelle falsifie une signature au bas dun document avec la clef
prive quelle a trouve, cette signature sera diffrente de celle qui aurait t calcule
par Alice. Quand Alice est trane devant les tribunaux, elle peut produire les deux
signatures diffrentes du mme message : celle obtenue laide de sa clef prive et celle
produite par Estelle. Elle peut ainsi prouver quil y a eu falsification. De mme, Alice
ne peut pas fabriquer les deux signatures diffrentes et Alice est toujours lie par sa
signature.
Ce schma de signature empche Estelle dimiter la signature d Alice par puissance
de calcul seulement ; en revanche, il ne peut rien contre Martin qui fort probablement
entrera par effraction au domicile d Alice et volera sa clef prive, ou encore contre Alice
qui signe un document et puis qui soi-disant perd sa clef. Pour se protger du premier,
Alice devrait s'acheter un bon chien de garde; ce genre de choses dpasse le cadre de
la cryptographie.

Chapitre 4

92

Protocoles intermdiaires

Des dveloppements thoriques et des applications concernant les signatures FailStop sont dcrits dans [1249, 1251, 732, 733].

4.8

Calcul avec donnes chiffres

Alice veut connatre la valeur d une certaine fonction f ( x ) pour une valeur particulire
de x. Malheureusement, son ordinateur est en panne. Bernard est dispos lui calculer
f(x) mais Alice ne veut pas que Bernard connaisse x. Comment Alice peut-elle laisser
Bernard calculer f ( x ) sans lui rvler x ?
C est le problme gnral du calcul avec donnes chiffres, appel aussi cacher de
linformation un oracle . Dans lexemple ci-dessus, Bernard est loracle : il rpond
des questions. On peut appliquer cela certaines fonctions ; nous en reparlerons dans
le paragraphe 23.6.

4.9

Mise en gage

La Grande Alice, magicienne extraordinaire, va maintenant vous prouver son talent.


Elle va deviner quelle carte Bernard va choisir avant mme quil ne le fasse ! Observez
comment Alice crit sa prdiction sur un bout de papier. Emerveillez-vous quand Alice
met le bout de papier dans une enveloppe et scelle celle-ci. Frissonnez quand Alice
tend cette enveloppe un membre de lassemble choisi au hasard. Choisis une carte,
Bernard, nimporte quelle carte. Il la regarde et la montre Alice et au public. C est
un sept de carreau. Alice rcupre maintenant lenveloppe. Elle louvre. La prdiction,
crite avant que Bernard ne choisisse, dit sept de carreau ! Applaudissements.
Le truc est quAlice change d enveloppe la fin du tour. Toutefois, les protocoles
cryptographiques peuvent fournir une mthode o ce tour de passe-passe est impossible.
Pourquoi est-ce utile? Voici une histoire plus banale:
Alice la cambiste, veut convaincre linvestisseur Bernard que sa mthode
de choix dactions en hausse est fiable.
Bernard : Choisis cinq actions pour moi. Si elles sont toutes en hausse,
je te confie mes affaires.
Alice : Si je choisis cinq actions pour toi, tu peux investir toi-mme
sans me payer en retour. Pourquoi est-ce que je ne te montrerais pas plutt
les actions que j ai choisies le mois dernier?
Bernard : Comment puis-je savoir que tu n as pas chang ton choix
du mois dernier aprs avoir connu les rsultats? Si tu mindiques ton choix
maintenant, je sais que tu ne peux pas le changer. Je ninvestirai pas dans
ces actions avant d avoir achet ta mthode. Fais-moi confiance.
Alice : Je prfre te montrer mon choix du mois prcdent. Fais-moi
confiance.
Voil le problme : Alice veut sen remettre un choix mais elle ne veut pas rvler ce
choix avant un certain temps. Bernard, de son ct, veut tre sr quAlice ne puisse
pas changer son choix aprs coup.

4-9

Mise en gage

93

Mise en gage laide de la cryptographie clef secrte


Ce protocole de mise en gage utilise la cryptographie conventionnelle :
1 Bernard engendre une chane de bits alatoire, R, et lenvoie Alice :
R

2 Alice cre un message constitu du bit quelle veut mettre en gage, b (cela peut
mme tre plusieurs bits), et de la chane alatoire de Bernard. Elle chiffre le
tout avec une clef alatoire, K et envoie le rsultat Bernard.
E K (R,b)

Cest la partie de mise en gage du protocole. Bernard ne peut pas dchiffrer le message
et donc il ne connat pas la valeur du bit.
Quand vient le moment pour Alice de rvler la valeur du bit, le protocole se poursuit
ainsi :
3 Alice envoie la clef Bernard.
4 Bernard dchiffre le message pour retrouver le bit. Il vrifie la chane alatoire
pour vrifier la validit du bit.

Si le message ne contenait pas la chane alatoire de Bernard, Alice pourrait, en ca


chette, dchiffrer le message quelle a donn Bernard en essayant diffrentes clefs,
jusqu ce quelle en trouve une qui donne au bit une valeur autre que celle quelle avait
mise en gage. Comme le bit ne peut avoir que deux valeurs, elle serait sre de trouver
une clef qui convienne aprs trs peu dessais. La chane alatoire de Bernard empche
cette attaque. Alice doit trouver un nouveau message qui non seulement contient son
bit invers mais aussi la chane alatoire de Bernard inchange. Si lalgorithme de chif
frement est bon, les chances pour Alice de trouver une autre clef sont infimes. Alice ne
peut pas changer la valeur du bit aprs lavoir mis en gage.

Mise en gage laide de fonctions sens unique


Ce protocole utilise des fonctions sens unique4 :
1 Alice engendre deux chanes de bits alatoires, Ri et R ? .
R i ,R2

2 Alice cre un message contenant les deux chanes alatoires et le bit quelle veut
mettre en gage (cela peut mme tre plusieurs bits).
(Ri,R2,b)

3 Alice applique la fonction sens unique H au message et envoie le rsultat


Bernard ainsi quune des deux chanes alatoires.

H(Ri,R2,b),Ri
4.
Remarquez que tou te fonction sens unique gnrale convient pou r ce ty p e d e protocole, pas
seulement les fonctions de hachage sens unique.

Chapitre 4

94

Protocoles intermdiaires

Cette dernire transmission est la mise en gage proprement dite. Alice a utilis une
fonction sens unique ltape 3 et donc Bernard ne peut pas linverser pour retrouver
la valeur du bit.
Quand.vient le tour d Alice pour rvler le bit, le protocole se poursuit ainsi:
4 Alice envoie Bernard le message dorigine:

5 Bernard applique la fonction sens unique ce message et compare la valeur


obtenue et R\ la valeur quAlice avait envoye ltape S et R\. Si elles
concordent, le bit est valable.

Lavantage de ce protocole sur le prcdent est que lorsque la communication est tablie,
seule une communication unidirectionnelle est ncessaire : Bernard na pas parler
Alice. Alice envoie Bernard un message pour mettre en gage le bit et un message
pour le rvler.
La chane alatoire de Bernard nest pas ncessaire car le message de mise en gage
d Alice est le rsultat d une fonction sens unique. Alice ne peut pas tricher et trouver
un autre message (Ri,R'2,b'), tel que H(Ri,R'2,b') = H(R\,R 2 ,b). Si Alice nenvoyait
pas Ri, alors elle pourrait changer les valeurs de Ri et R^ et ainsi changer la valeur
de b. Le fait que Bernard connaisse dj R\ len empche.

Mise en gage laide dun gnrateur pseudo-alatoire de suites


Ce protocole est encore plus simple [1146] :
1 Bernard engendre une chane alatoire de bits et l envoie Alice.
Rb

2 Alice engendre un germe alatoire pour un gnrateur pseudo-alatoire de


bits. Ensuite pour chaque bit de la chane alatoire de Bernard, elle envoie
Bernard:
(a) soit la sortie du gnrateur alatoire si le bit de Bernard est 0 ;

(b) soit

le ou exclusif de la sortie du gnrateur et de son bit, si le bit de


Bernard est 1.

Quand vient le moment pour Alice de rvler son bit, le protocole se poursuit ainsi :
3 Alice envoie Bernard le germe alatoire.
4 Bernard effectue l tape 2 du protocole pour vrifier quAlice tait honnte.
Si la chane alatoire de Bernard est assez longue, et que le gnrateur pseudo-alatoire
de bits est imprvisible, Alice na aucun moyen pratique de tricher.

f.10

Jouer pile ou face

95

Pts
Les chanes de mise en gage quAlice envoie Bernard sont parfois appeles pts. Un
pt est une suite de bits, bien que les protocoles nutilisent pas cette proprit. Comme
le dit Gilles B r a s s a r d : Ils pourraient tout aussi bien tre faits de poussire dtoile
(ou de photons polariss!) si cela s avrait utile. [239] Les pts ont les proprits
suivantes :
- Alice peut mettre un pt en gage. Ce faisant, elle sengage quant la valeur
dun bit spcifique.
- Alice peut ouvrir nimporte quel pt quelle a mis en gage. Quand elle ouvre un
pt, elle peut convaincre Bernard de la valeur du bit quelle a mis en gage lors
quelle a mis le pt en gage. Donc, elle ne peut pas ouvrir un pt indiffremment
la fois comme un 0 ou comme un 1.
- Bernard ne peut rien apprendre sur la mthode pour ouvrir un pt non encore
ouvert et mis en gage par Alice. C est vrai mme aprs quAlice a ouvert dautres
pts.
- Les pts ne contiennent pas dautre information que le bit mis en gage par Alice.
Les pts eux-mmes ainsi que les procds de mise en gage et d ouverture ne sont
en aucune faon corrls avec d autres secrets quAlice pourrait vouloir cacher
Bernard.

4.10

Jouer pile ou face

Cest lheure d une petite histoire, avec Joe K i l i a n [832] :


Alice et Bernard veulent jouer pile ou face mais ils nont pas de pice
lancer. Alice propose une mthode pour jouer pile ou face mentalement.
Premirement, tu penses un bit alatoire, ensuite je pense un bit
alatoire. Ensuite on prend le ou exclusif des deux bits. suggre-t-elle.
Mais que se passe-t-il si lun de nous deux ne choisit pas alatoire
ment? demande Bernard.
Peu importe. Aussi longtemps que lun des deux bits est vraiment
alatoire, le ou exclusif des deux bits doit tre alatoire. rpond Alice, et
aprs un moment de rflexion, Bernard est d accord.
Peu de temps aprs, Alice et Bernard trouvent dans la rue un livre sur
lintelligence artificielle. En bonne citoyenne, Alice dit : L un de nous deux
doit ramasser le livre et le mettre dans une poubelle. Bernard est d accord
et suggre quils utilisent leur protocole de tirage pile ou face pour dcider
qui devra jeter le livre.
Si le dernier bit est 0, alors tu ramasseras le livre, et si c est un 1,
alors je le ferai. Quel est ton bit ? dit Alice.
Bernard rpond 1.
Comme le mien, rpond-t-elle avec espiglerie. Ce nest pas ton bon
jour.

Chapitre 4

96

Protocoles intermdiaires

Inutile d insister, ce protocole de tirage pile ou face a un dfaut ma


jeur. Bien quil soit vrai quun bit x vraiment alatoire, combin par ou
exclusif avec un autre bit x non corrl donne un bit vraiment alatoire, le
protocole d Alice ne garantit pas que les deux bits aient des distributions
indpendantes. En fait, il nest pas difficile de vrifier quaucun protocole
mental ne permet deux parties, avec des ressources infinies, de jouer pile
ou face honntement. Alice et Bernard taient bien embts jusqu ce quils
reoivent une lettre d un obscur tudiant en cryptographie. Linformation
que contenait la lettre tait bien trop thorique pour avoir une quelconque
utilit pratique mais lenveloppe qui contenait la lettre tait par contre
dune trs grande utilit.
LorsquAlice et Bernard voulurent nouveau jouer pile ou face, ils
jourent une version modifie du protocole. D abord, Bernard choisissait
un bit, mais au lieu de lannoncer immdiatement, il lcrivait sur un bout
de papier et plaait celui-ci dans une enveloppe. Ensuite, Alice annonait
son bit. Finalement, Alice et Bernard sortaient de lenveloppe le bit de
Bernard et calculaient le bit alatoire. Ce bit tait vraiment alatoire si un
d entre eux au moins avait jou honntement. Alice et Bernard avaient un
protocole qui marchait ; le rve du cryptographe d avoir un rle social tait
satisfait et ils vcurent heureux jusqu la fin de leurs jours.
Ces enveloppes ressemblent des pts. Quand Manuel B lum introduisit le problme
du jeu pile ou face au tlphone [201], il obtint une solution grce au protocole de
mise en gage suivant :
1 Alice met en gage un bit alatoire, en utilisant l un des protocoles de mise en
gage dcrits au paragraphe 4-9.

2 Bernard essaie de deviner le bit.


3 Alice rvle le bit Bernard. Bernard gagne le tirage s il a devin correctement
le bit dAlice.

En gnral, un tel protocole doit satisfaire les proprits suivantes :


- Alice doit tirer pile ou face avant que Bernard ne devine.
- Alice ne doit pas tre capable de changer la pice aprs avoir entendu le choix de
Bernard.
- Bernard ne doit pas pouvoir savoir comment la pice a atterri avant de faire son
choix.
Il y a de nombreuses faons de raliser cela.

Jouer pile ou face laide de fonctions sens unique


Si Alice et Bernard peuvent se mettre d accord sur le choix d une fonction sens
unique, le protocole est simple :
1 Alice choisit un nombre alatoire, x. Elle calcule y = f (x), o f {x) est la
fonction sens unique.

4-10

97

Jouer pile ou face

2 Alice envoie y Bernard.


3 Bernard devine si x est pair ou impair et envoie sa supposition Alice.
4 Si la supposition de Bernard est correcte, le rsultat du lancer est face. Si
la supposition de Bernard est incorrecte, le rsultat du lancer est pile. Alice
annonce le rsultat du lancer et envoie x Bernard.

5 Bernard vrifie que y = f(x).


La scurit de ce protocole dpend du choix de f(x). Si Alice peut trouver x et x', o
x est pair et x' est impair et o y = f { x ) = f{x'), alors elle peut tromper Bernard
chaque lancer. De plus, Alice doit veiller ce que le bit de poids faible de x ne soit pas
corrl avec f(x). Sinon, Bernard peut tromper Alice de temps autre. Par exemple,
si x est pair dans 75 % des cas, Bernard est avantag5.

Jouer pile ou face laide de la cryptographie clef publique


11 y a un autre protocole qui marche avec soit la cryptographie clef publique, soit
la cryptographie clef secrte. La seule exigence est que lalgorithme soit commutatif,
comme suit :
D Kl ( E k2 (EKl ( M) ) ) = E k , {A4)
En gnral, cette proprit nest pas satisfaite par les algorithmes clef secrte,
mais lest par les algorithmes clef publique (lalgorithme clef publique R S A , par
exemple). Voici le protocole:
1 Alice et Bernard engendrent chacun une paire clef publique, clef prive .
2 Alice engendre deux messages, lun indiquant face et lautre pile. Ces messages
doivent contenir une chane alatoire unique, de manire quAlice puisse vri
fier leur authenticit plus tard dans le protocole. Alice chiffre les deux messages
avec sa clef et les envoie Bernard.
E A ( M l ) , E A ( M 2)

3 Bernard, qui ne peut lire aucun des deux messages, choisit lun dentre eux au
hasard (il peut lancer une pice de monnaie, engager un ordinateur malfaisant
pour tenter en vain de dcider lequel choisir, ou mme consulter son horoscope
chinois - peu importe). Il chiffre celui quil a choisi avec sa clef et envoie le
rsultat Alice.
E b (E a ( M ) )
A4 reprsente donc soit A4i soit A42.

4 Alice qui ne peut pas lire ce message, le dchiffre avec sa clef et envoie le rsultat
Bernard.
D a {E b (E a ( M) ) )

E b ( M i ) si M = M !

E b {A42) si A4 A42

5.
Le bit de poids faible constitue parfois un mauvais ch oix car il arrive q u il soit plus facile
calculer.

Chapitre 4

98

Protocoles intermdiaires

5 Bernard dchiffre le message avec sa clef pour dcouvrir le rsultat du lancer.


Il envoie le message dchiffr Alice.
D b (E b ( M ) )

Mi

M 2 si M = M 2

si M = M i

6 Alice lit le rsultat du lancer et vrifie que la chane alatoire est correcte.
7 Alice et Bernard rvlent tous les deux leurs clefs de telle manire quils
puissent vrifier que ni lun ni lautre na trich.

Ce protocole est scurit intrinsque. Chaque participant peut immdiatement dtec


ter toute tentative de tricherie de lautre. Aucun tiers nest ncessaire pour conduire
le protocole ni pour rsoudre les litiges aprs que le protocole a t excut. Pour voir
pourquoi il en est ainsi, essayons de tricher.
Si Alice veut tricher et imposer le tirage face, elle dispose de trois moyens pour modifier
le lancer.Premirement, elle peut chiffrer deux messages face ltape 2. Bernard
dcouvrirait celalorsquAlice rvle sa clef (ou ses clefs) ltape 7.Deuximement,
elle peut mal dchiffrer le message ltape 4. Toutefois, elle ne peut pas trouver
un moyen de dchiffrer le message pour imposer un autre contenu qui ne soit pas
du charabia. Bernard dcouvrirait la supercherie ltape 5. Troisimement, elle peut
mentir quand la validit du message ltape 6. Bernard sen rendrait compte ltape
7, quand Alice ne pourrait pas prouver que le message n est pas valide. Bien sr, Alice
peut refuser de participer toute tape du protocole, auquel cas la supercherie dAlice
serait vidente pour Bernard.
Si Bernard veut tricher et imposer le tirage pile, il n a pas plus de possibilits. Il peut
mal chiffrer le message ltape 3, mais Alice dcouvrirait la supercherie ltape 6 en
lisant le message. Il peut mal excuter ltape 5 mais cela donnerait aussi du charabia
quAlice dcouvrirait ltape 6. Il peut prtendre navoir pu bien excuter correcte
ment ltape 5 cause d une tricherie d Alice, mais ce type de tricherie serait dcouvert
ltape 7. Finalement, il peut envoyer un message pile ltape 5, peu importe le
message quil a dchiffr, mais Alice pourrait immdiatement vrifier lauthenticit de
ce message ltape 6.

Jouer pile ou face dans un puits


Il est intressant de remarquer que dans tous ces protocoles, Alice et Bernard nap
prennent pas le rsultat du lancer en mme temps. Il y a un instant du protocole o un
des participants (Alice dans les deux premiers protocoles et Bernard dans le dernier)
connat le rsultat du lancer mais ne peut pas le changer. Ce participant peut toutefois
retarder la divulgation du rsultat lautre participant. On dira alors que lon jo u e
pile o u face dans un puits. Imaginez un puits. Alice est prs du puits et Bernard est
trs loin. Bernard lance une pice, celle-ci atterrit dans le puits. Alice peut maintenant
regarder dans le puits et voir le rsultat mais elle ne peut pas atteindre la pice pour
changer son tat. Bernard ne peut pas voir le rsultat du lancer jusqu ce quAlice
lautorise sapprocher suffisamment prs pour regarder dans le puits.

j .l l

Poker laveugle

99

Gnration de clef par jeu pile ou face


Une application concrte de ce protocole est la gnration de clef. Les protocoles de
jeu pile ou face, permettent Alice et Bernard dengendrer une clef alatoire sans
que lun ou lautre ne puisse influer sur la clef. Et en faisant lhypothse quAlice et
Bernard chiffrent tous leurs changes, cette clef sera labri des oreilles indiscrtes.

4.11

Poker laveugle

Un protocole similaire au troisime protocole de jeu pile ou face permet Alice


et Bernard de jouer au poker, chacun tant une extrmit dune liaison par courrier
lectronique Au lieu de fabriquer et de chiffrer deux messages (un pour pile et un pour
face), Alice fabrique 52 messages,
un pour chaque carte du paquet.
Bernard choisit 5 messages au hasard, les chiffre avec sa clef publique et les renvoie
Alice. Alice dchiffre les messages et envoie le rsultat Bernard qui dchiffre ceux-ci
son tour pour dcouvrir sa donne. Il envoie, sans les chiffrer avec sa clef dans ce cas-l,
5 autres messages Alice, qui les dchiffre pour dterminer sa donne. Durant le jeu,
des cartes supplmentaires peuvent tre distribues en suivant le mme protocole.
la fin du jeu, Alice et Bernard rvlent leurs jeux et leurs paires de clefs ; ainsi chacun
peut tre assur que lautre na pas trich.

Poker laveugle avec trois joueurs


Le jeu de poker est plus amusant avec plus de joueurs. Le protocole de base du poker
laveugle peut tre tendu trois joueurs et plus. Une fois de plus, lalgorithme
cryptographique doit tre commutatif.
1 Alice, Bernard, et Christine, chacun, engendrent une clef secrte ou une paire
clef prive, clef publique .
2 Alice engendre 52 messages, un pour chaque carte jouer. Ces messages
doivent contenir une chane alatoire unique de manire quelle puisse vri
fier leur authenticit plus tard dans le protocole. Alice chiffre tous les messages
avec sa clef et les envoie Bernard.
E A ( M n)

3 Bernard, qui ne peut lire aucun des messages, en choisit 5 au hasard. R les
chiffre avec sa clef et les renvoie Alice.
E B(EA( M n))
4 Bernard envoie les 47 autres messages Christine.
E A( M n)

5 Christine, qui ne peut lire aucun des messages, en choisit 5 au hasard. Elle les
chiffre avec sa clef et les renvoie Alice.
E c (EA( M n))

Chapitre 4

100

Protocoles intermdiaires

6 Alice, qui ne peut lire aucun des messages qui lui sont renvoys, dchiffre ceuxci avec sa clef et envoie les rsultats Bernard ou Christine (en fonction de
leur provenance).
D A(EB(EA( M n))) = E B( M n)
D A(Ec (EA( M n))) = E c ( M n)

7 Bernard et Christine dchiffrent les messages avec leurs clefs respectives pour
dcouvrir leurs donnes.
D B(EB ( M n)) M n
Dc {Ec { M n)) = M n

8 Christine choisit 5 autres messages parmi les 42 restant. Elle les envoie Alice.
E A( M n)

9 Alice dchiffre les messages pour dcouvrir sa donne.


D A(EA( M n))

AAn

10 A la fin du jeu, Alice, Bernard et Christine dvoilent leurs jeux et leur clefs
afin que chacun puisse vrifier quil ny a pas eu tricherie.

Des cartes supplmentaires peuvent tre distribues de la mme manire. Si soit


Bernard, soit Christine veut une carte, il ou elle prend le talon chiffr et excute le
protocole avec Alice. Si Alice veut une carte, celui ou celle qui a le talon ce moment-l
lui envoie une carte au hasard.
Idalement, ltape 10 ne devrait pas tre ncessaire. Les joueurs ne devraient pas tre
obligs de rvler leur jeu en fin de partie : seuls les joueurs qui nont pas suivi devraient
le faire. Puisque ltape 10 ne fait partie du protocole que pour dtecter les tricheurs,
on peut y remdier.
Au poker, il est seulement intressant de savoir si le gagnant a trich ou non. Tous
les autres peuvent tricher tant quils veulent du moment quils ne gagnent pas. Voyons
donc des cas o diffrents joueurs gagnent.
Si Alice gagne, elle dvoile son jeu et ses clefs. Bernard peut utiliser la clef prive d Alice
pour confirmer quelle a honntement excut ltape 2 (en d autres termes que les 52
messages correspondent bien aux 52 cartes jouer). Christine peut confirmer quAlice
ne ment pas concernant la composition de son jeu en chiffrant les cartes d Alice avec
la clef dAlice et en vrifiant que les messages obtenus correspondent bien ceux que
Christine lui a envoys ltape 8.
Si soit Bernard, soit Christine gagne, il ou elle rvle son jeu et ses clefs. Alice peut
confirmer que les cartes sont authentiques en comparant avec sa chane alatoire. Elle
peut confirmer que le jeu est compos des cartes distribues en les chiffrant avec la clef
du gagnant, et en comparant avec ce quelle a envoy ltape 3 ou 5.
Ce protocole ne protge pas contre la complicit de plusieurs joueurs malfaisants. Alice
et un autre joueur peuvent effectivement se liguer contre le troisime et plumer celui-ci
sans veiller le moindre soupon. Il est donc important de vrifier les chanes alatoires
et les clefs chaque fois que les joueurs rvlent leur jeu. Et si vous tes assis cette

4-11

Poker laveugle

101

table virtuelle avec deux autres joueurs qui ne rvlent jamais leur main quand lun
des deux est le donneur (Alice, dans le protocole ci-dessus), arrtez de jouer.
Il faut noter que si cela constitue une thorie intressante, le raliser sur un ordinateur
est une tche ardue. Une ralisation sur des stations de travail Sparc avec trois joueurs
(un par station) prend huit heures pour mlanger les cartes [515].

Attaques contre les protocoles de poker laveugle


Les cryptographes ont montr quil y a des petites fuites dinformation dans ces pro
tocoles de poker laveugle quand lalgorithme RSA est utilis [456, 575]. Plus prci
sment, si la reprsentation binaire de la carte est un rsidu quadratique (voir 11.3),
alors la carte chiffre est aussi un rsidu quadratique. Cette proprit peut tre utilise
pour marquer certaines cartes tous les as par exemple. Cela ne rvle pas grand
chose sur les jeux des joueurs, mais dans un jeu comme le poker, la moindre parcelle
dinformation peut tre un avantage long terme.
Shaf G o l d w a s s e r et Silvio M i c a l i [626] ont dvelopp un protocole de poker
laveugle deux joueurs qui ne souffre pas de ce dfaut. Mais sa complexit le rend
bien plus thorique que pratique. Un protocole gnral de poker laveugle n joueurs
qui limine le problme de fuite d information a t dvelopp dans [393].
Le compte rendu dautres recherches sur les protocoles de poker sont donns dans
[575, 1636, 393]. Un protocole compliqu qui vite aux joueurs de devoir rvler leur
jeu est dcrit dans [394]. Don COPPERSMITH dcrit deux moyens de tricher au poker
laveugle si celui-ci utilise lalgorithme R S A [374].

Distribution anonyme de clefs


Bien quil soit improbable que quiconque utilise ce protocole pour jouer au poker par
modem, Charles P f l e e g e r dcrit une situation o ce protocole serait bien utile [1254],
Considrez le problme de la distribution des clefs. Si nous mettons lhypothse que
les utilisateurs ne peuvent pas engendrer leurs clefs eux-mmes (elles doivent avoir une
certaine forme, ou elles doivent tre signes par un organisme, ou quelque chose de
similaire), alors nous devons mettre en place un serveur centralis pour engendrer et
distribuer les clefs. Le problme est de trouver un moyen pour distribuer les clefs de
manire que personne, mme pas le serveur lui-mme, puisse dterminer qui a quelle
clef.
Le protocole suivant rsout le problme :
1 Alice engendre une paire clef prive, clef publique . Pour ce protocole, elle
garde les deux clefs secrtes.

2 Le C D C engendre une suite continue de clefs.


3 Le C D C chiffre les clefs une une avec sa propre clefpublique.
4 Le C D C transmet les clefs une une sur le rseau.
5 Alice choisit une clef au hasard.
6 Alice chiffre la clef choisie avec sa clef publique.
7 Alice attend un peu (suffisamment longtemps pour que le serveur ne puisse pas
deviner quelle clef elle a choisie) et envoie la clef doublement chiffre au CDC.

Chapitre 4

102

Protocoles intermdiaires

8 Le C D C dchiffre la clef doublement chiffre avec sa clef prive, donnant une


clef chiffre avec la clef publique dAlice.

9 Le serveur envoie cette clef chiffre Alice.


10 Alice dchiffre la clef avec sa clef prive.
Estelle, qui coute tout, na pas la moindre ide de la clef choisie par Alice. Elle voit un
flot continu de clefs passer ltape 4. Quand Alice renvoie sa clef au serveur ltape
7, elle est chiffre avec sa clef publique, qui est galement secrte. Estelle na aucun
moyen de corrler celle-ci avec le flot de clefs du serveur. Quand le serveur renvoie la
clef Alice ltape 9, elle est aussi chiffre avec la clef publique d Alice. Ce nest qu
ltape 10, quand Alice dchiffre sa clef, que celle-ci est dvoile.
Si vous utilisez lalgorithme R S A , il y a des fuites dinformation dans ce protocole,
au rythme d un bit par message. C est li aux rsidus quadratiques une fois de plus.
Si vous envisagez de distribuer des clefs ainsi, veillez ce que la fuite dinformation
soit suffisamment faible. Bien sr, si Alice ne peut pas faire confiance au C D C, la
fuite d information est invitable. Un C D C malveillant garderait un enregistrement
de toutes les clefs quil engendre. Il pourrait ensuite parcourir cet enregistrement pour
dterminer quelle est la clef dAlice.
Ce protocole prsume quAlice agit honntement. Si lalgorithme R SA est utilis, elle
peut agir pour obtenir plus dinformation quelle ne devrait en avoir. Ce n est pas un
problme dans notre scnario, mais peut le devenir dans d autres circonstances.

4.12

Accumulateurs sens unique

Alice fait partie de la socit Clique dimport export. Il lui arrive de rencontrer les
autres membres dans des restaurants mal clairs et de chuchoter des secrets droite
gauche. Le problme est que le restaurant est si mal clair quelle a du mal voir si
la personne lautre bout de la table est aussi membre.
La socit Clique peut opter pour plusieurs solutions. Chaque membre peut porter
une liste des membres. Cela pose deux problmes. Premirement, tout le monde doit
transporter une importante base de donnes, et deuximement, ils doivent surveiller
de prs leurs listes des membres. D un autre ct, un secrtaire.de confiance pourrait
distribuer des cartes didentit signes numriquement. Ceci prsente lavantage sup
plmentaire de permettre aux tranger de vrifier lappartenance d un membre (pour
des remises chez lpicier par exemple), mais cela requiert un secrtaire de confiance.
Aucun membre de la socit Clique ne mrite une telle confiance.
Une solution originale consiste utiliser quelque chose du nom de a ccu m u lateu r
sens unique [126]. C est, une sorte de fonction de hachage sens unique, la diffrence
prs que c est, commutatif. C est dire quil est, possible d appliquer cette fonction
la liste des membres dans nimporte quel ordre en obtenant toujours la mme valeur.
On peut mme rajouter des membres toujours sans se soucier de lordre.
Aussi, voici ce quAlce fait. Elle calcule laccumulation de tous les noms des membres
except le sien. Ensuite, elle stocke le rsultat avec son nom. Bernard, ainsi que tous
les autres membres, font de mme. Maintenant, quand Alice et Bernard se rencontrent
dans le restaurant, mal clair, ils changent simplement leurs valeurs d accumulation et
leurs noms. Alice vrifie alors que lajout du nom de Bernard sa valeur daccumulation

4-13

Divulgation tout ou rien de secrets

103

produit le mme rsultat que lajout du nom d Alice sa propre valeur daccumulation.
Bernard fait de mme. Chacun sait alors que lautre est bien un membre. De plus, aucun
des deux na la moindre ide des identits des autres membres.
Encore mieux, on peut donner toutes les valeurs daccumulation des personnes ext
rieures. Alice peut alors prouver son appartenance la socit une personne extrieure
(peut-tre pour obtenir une remise au magasin local de contre espionnage) sans que la
personne extrieure puisse deviner la liste entire des membres.
Pour ajouter de nouveaux membres, il suffit denvoyer leurs noms aux autres.
Malheureusement, le seul moyen d effacer un membre et d envoyer tout le monde
une nouvelle liste et de recalculer les valeurs daccumulation. Mais la socit Clique
na besoin de faire cela que si un membre dmissionne; les membres morts peuvent
rester sur la liste. (Aussi trange que cela puisse paratre, cela na jamais pos de
problme).
Cest une ide intelligente qui entre en application chaque fois que vous dsirez les
mmes effets que les signatures numrique sans avoir recourt un signeur centralis.

4.13

Divulgation tout ou rien de secrets

Imaginez quAlice soit un ex-agent, secret de lex-Union sovitique, aujourdhui sans


emploi. Pour se faire de largent, elle vend des secrets. Toute personne prte en
payer le prix peut acheter un secret. Elle a mme un catalogue. Tous les secrets sont
mentionns avec un numro et avec des titres allchants : O est Jimmy Hoffa? ,
Qui contrle secrtement la Commission Trilatrale? , Pourquoi Boris Yeltsin
parat-il toujours avoir aval une couleuvre? , etc.
Alice ne donnera pas deux secrets pour le prix d un, ni la moindre information concer
nant nimporte quel secret. Bernard, un acheteur potentiel, ne veut pas acheter des
secrets au hasard, ni dire Alice quel secret il veut lui acheter. Cela ne regarde pas
Alice, sinon, elle pourrait ajouter la fin de son catalogue : Quels sont les secrets qui
intressent Bernard?
Un protocole de poker ne marchera pas dans ce cas-l car, la fin du protocole, Alice
et Bernard doivent mutuellement rvler leur jeu. B y aussi des astuces que Bernard
peut utiliser pour apprendre plus d un secret.
La solution sappelle les protocoles divulgation tout ou rien de secrets (aussi
connus sous le nom de A N D O S : all-or-nothing disclosure of secrets ) [249], car ds
que Bernard a obtenu linformation sur un quelconque secret dAlice, il a perdu toute
chance dapprendre quoi que ce soit concernant les autres secrets.
Il y a plusieurs protocoles A N D O S dcrits dans la littrature cryptographique. Certains
dentre eux seront dcrits dans le paragraphe 23.9.

4.14

Dpt de clefs

Voici comment Silvio

M lC A U

introduit ce sujet [1091] :

Les coutes tlphoniques, autorises par les autorits judiciaires, consti


tuent le moyen le plus efficace de la socit pour prvenir le crime et pour
confondre les criminels. Il y a donc une crainte lgitime quant la large

104

Chapitre 4

Protocoles intermdiaires

diffusion de la cryptographie clef publique, qui pourrait tre un outil


puissant dans les mains des organisations criminelles et terroristes. De fait,
plusieurs projets de loi proposent quune agence gouvernementale puisse,
dans certaines circonstances dfinies par la loi, tre capable d obtenir le
texte en clair de toute communication sur un rseau public. Actuellement,
cette demande se traduirait en une obligation pour tous les citoyens de:
1) utiliser un cryptosystme faible c est--dire, un cryptosystme que
les autorits (mais aussi nimporte qui d autre !) pourrait casser sans grand
effort; 2) remettre, a priori, leur clef secrte cette autorit. Il nest pas
tonnant quune telle alternative ait provoqu un toll gnral. La plupart
des citoyens concerns estiment que le secret de la vie prive doit passer
avant la scurit nationale et la mise en application de la loi.
Le dpt de clefs est au coeur du programme gouvernemental amricain C L IP P E R et
de son standard de chiffrement par clefs sous dpt Escrowed. Encryption Standard .
Il s agit ici de dvelopper un cryptosystme qui permetrait, la fois de protger la vie
prive de chacun et de faire des coutes sous autorisation judiciaire.
Ce standard tire sa fiabilit de puces rsistante linvestigation. Chaque puce de chif
frement aurait un numro d identification unique et une clef secrte. Cette clef est
divise en deux morceaux et fiche avec son numro dans deux organismes distincts de
dpt. Chaque fois que la puce chiffre un fichier de donnes, elle commence par chiffrer
la clef de session avec cette clef secrte unique. La clef de session chiffre et le numro
didentification de la puce sont transmis lors de la communication. Quand un organisme
de rpression veut dchiffrer le traffique chiffr avec une de ces puces, elle se procure
les clefs appropries au prs des organismes de dpt grce au numro d identification,
ensuite elle combine les deux clefs au moyen de lopration X O R , elle dchiffre la clef
de session, quelle peut utiliser pour dchiffrer le trafique de messages. U y a quelques
complications pour faire fonctionner cela au nez et la barbe des tricheurs; les dtails
seront abords au paragraphe 24.16. On peut faire la mme chose avec des logiciels en
utilisant la cryptographie clef publique [84, 1581, 1582, 1583].
M i c a l l i appelle son ide les c r y p t o s y s t m e s q u i t a b l e s [1091, 1090]6. Dans ces
cryptosystmes, la clef prive est morcelle et chaque morceau est confi une autorit
diffrente. Comme pour un schma de secret rparti, les autorits peuvent se mettre
ensemble pour reconstruire la clef prive. De plus, les morceaux ont la proprit de
pouvoir tre valids individuellement, sans reconstruire la clef prive.
Alice peut crer sa propre clef prive, la diviser en n morceaux et donner chacun des n
morceaux un dpositaire7. Aucun de ces dpositaires ne peut reconstruire individuel
lement la clef prive dAlice. Toutefois, chacun des dpositaires peut vrifier la validit
du morceau de clef qui lui a t confi ; Alice ne peut pas envoyer un des dpositaires
une chane de bits alatoire et esprer sen tirer ainsi. Si lautorit judiciaire autorise
une coute, les autorits comptentes pour faire respecter la loi peuvent rquisitionner
les n morceaux auprs des n dpositaires. Avec les n morceaux, les autorits peuvent
reconstruire la clef prive et peuvent placer une coute sur les lignes d Alice. En outre,
Martin, doit corrompre tous les n dpositaires pour tre capable de reconstruire la clef
prive dAlice et ainsi violer sa vie prive.
6 . Le gouvernem ent am rcain aurait pay un m illion de dollars M i c a l l i pou r l utilisation de son
brevet [1092, 1093]; des com pagnies de banques ont ensuite achet le brevet de M i c a l l i .
7. N ote du traducteur : en franais, on parle galement de fidicom missaire .

4-If

Dpt de clefs

105

Voici comment le protocole est dfini :


1 Alice cre sa paire clef prive, clef publique . Elle partage sa clef prive en
plusieurs morceaux publics et privs.

2 Alice envoie un morceau public et le morceau priv correspondant chaque


dpositaire. Ces messages doivent tre chiffrs. Elle envoie aussi la clef publique
au C D C .

3 Chaque dpositaire effectue un calcul pour vrifier que le morceau public et


le morceau priv dont il dispose sont corrects. Chaque dpositaire stocke le
morceau priv quelque part en scurit et envoie le morceau public au C D C.

4 Le C D C effectue un autre calcul sur les morceaux publics et la clef publique. Si


tout est correct, il signe la clef publique dAlice et soit il la renvoie celle-ci,
soit il laffiche dans une base de donnes quelque part.

Si une autorit judiciaire autorise une coute, alors chaque dpositaire remet son mor
ceau au C D C . Le C D C reconstruit alors la clef prive. Avant cela, ni le C D C , ni
aucun des dpositaires ne pouvait reconstruire individuellement la clef prive : tous les
dpositaires sont requis pour reconstruire la clef.
Tout algorithme clef publique peut tre rendu quitable de cette manire. Certains
algorithmes particuliers sont dcrits dans le paragraphe 23.10. Larticle de M lC A L i
[1091, 1090] prsente des mthodes pour combiner cela avec un schma seuil, de
manire quun sous-ensemble des dpositaires (par exemple, 3 parmi 5) soit ncessaire
pour reconstruire la clef prive. Il montre aussi comment combiner cela avec un transfert
inconscient (voir 5.5) afin que les dpositaires ne puissent pas connatre lidentit du
propritaire de la clef prive reconstruite.
Les cryptosystmes quitables ne sont pas parfaits. Un criminel peut exploiter le sys
tme en utilisant un canal subliminal (voir 4.2) pour insrer une autre clef secrte
dans son morceau. De cette manire, il peut communiquer de faon sre avec quelquun
dautre en utilisant cette clef subliminale sans avoir se soucier dune mise sur coute
judiciaire. Un autre protocole appel d p t d e clefs s ret in tgre rsoud ce
problme [957, 834]. Lalgorithme et le protocole seront dcrits au paragraphe 23.10.

La politique du dpt de clefs


Mis part les plans gouvernementaux de dpts de clefs, il existe plusieurs propositions.
Ceci nous amne nous poser la question suivante: quels sont les avantages pour
lutilisateur de mettre sa clef sous dpt?
En fait, il ny en a aucun. L utilisateur nen retire rien quil ne puisse se procurer luimme. Il peut sauvegarder ses clefs si il veut (voir 8.8). Le dpt de clef garanti que
la police peut couter ses conversations ou lire ses dossiers mme sils sont chiffrs. Il
garanti que la NSA peut couter ses appels internationaux sans autorisation, mme
sils sont chiffrs. Peut-tre sera-t-il autoris utiliser la cryptographie dans des pays
qui maintenant lont bannie, mais a semble tre le seul avantage.
Le dpt de clef a de considrables dsavantages. Lutilisateur doit faire confiance
lagent de scurit des dpts, ainsi qu lintgrit des personnes impliques dans la
procdure. Il doit croire que les agents de dpts ne changeront pas leur politique,
que le gouvernement ne changera pas ses lois et que ceux qui ont toute autorit pour

106

Chapitre 4

Protocoles intermdiaires

obtenir ses clefs le fasse dans le cadre de la loi et avec responsabilit. Imaginez une
attaque terroriste massive New York; quelles seraient les limites dpasses par la
police en rpercussion?
Il est dur d imaginer des plans de dpts de chiffrement fonctionnant tels que ses parti
sans le voudraient, c est--dire sans aucune sorte de pression lgale. La prochaine tape
vidente est de bannir lutilisation des chiffrements non dposs. C est probablement la
seule manire de rendre un systme commercial lucratif, et cest certainement la seule
manire de les faire utiliser par des criminels et terroristes techniquement trs quips.
Il nest pas facile de dire sil sera ais de faire disparatre la cryptographie non dpo
se, ou si cela affectera la cryptographie en tant que discipline acadmique. Comment
puis-je rechercher des programmes dalgorithmes cryptographiques sans avoir en ma
possession du matriel de chiffrement non dpos; aurai-je besoin d une autorisation
spciale ?
Il y a des questions lgales. Les dpts de clefs engageront-ils la responsabilit des uti
lisateurs sil y avait une fuite de donnes chiffres? Si le gouvernement amricain essaie
de protger les agences de dpts, cela ne voudrait-il pas dire que c est lutilisateur qui
sera systmatiquement en faute si le secret devait tre compromis soit par lutilisateur
soit par lagence de dpts?
Que se passerait-il si une grande entreprise de dpts de clefs, gouvernementale ou
civile, se faisait voler toutes ses clefs mises en dpt? Que se passerait-il si le gou
vernement amricain essayait d touffer laffaire? Cela aurait un indniable effet sur la
volont des utilisateurs continuer utiliser le dpt de clefs. Si ce nest pas volontaire,
quelques scandales de ce genre auraient pour effet d augmenter la pression politique
pour soit le rendre volontaire, soit rajouter des rgles complexes cette industrie.
Ce qui serait encore plus dangereux serait un scandale rendu publique o un membre
de lopposition ladministration en place, ou un vif opposant aux agences de ren
seignement ou de police, aurait t sous surveillance pendant plusieurs annes. Ceci
pourrait faire monter un sentiment hostile au chiffrement mis sous dpt.
Si les signatures de clefs sont comme les chiffrement de clefs mises sous dpt, il y a
alors d autres dbouchs. Peut-on accepter des autorits quelles utilisent des signatures
de clefs pour mener des oprations contre des criminels? Est-ce-que lauthenticit des
signatures bases sur des clefs dposes sera reconnue en cour de justice? Quels recours
auront les utilisateurs si les autorits utilisent leurs signatures de clefs pour signer des
contrats dfavorables, pour aider une industrie tatise, ou pour voler de largent?
La globalisation de la cryptographie amne toute une srie de questions. Est-ce-que les
politiques de dpts de clefs seront compatibles entre diffrentes nations? Est-ce-que les
entreprises multi-nationales devront dposer leurs clefs sparment dans chaque pays
afin de respecter les diffrentes lgislations? Sans un minimum de compatibilit, un
des avantages supposs des dpts de clefs (utilisation internationale de chiffrement)
disparat.
Que se passerait-il si des pays ne faisaient pas confiance en la scurit des agences
de dpts de clefs? Comment les utilisateurs feraient-ils des affaires? Leurs contrats
digitaux seront-ils confirms par la cour, ou est-ce-que le fait que leur signature de
clef soit sous dpt aux Etats-Unis leur permet de dire quen Suisse quelquun d autre
aurait pu signer ce contrat lectronique ? Y aura-t-il des dispositions spciales pour les
personnes faisant des affaires dans de tels pays?
Et propos de lespionnage industriel, il ny a aucune raison de croire que les pays

4-14

Dpt de clefs

107

faisant de lespionnage industriel pour leurs grandes entreprises ou leurs entreprises


nationalises ralentiront leurs actions sur les systmes de chiffrement des dpts de
clefs. En effet, puisquaucun pays ne va autoriser les autres surveiller ses oprations de
renseignement, lutilisation tendue de chiffrements dposs augmentera probablement
la pose dcoutes tlphoniques.
Mme si les pays respectueux du droit civil utilisent le dpt de clefs pour la seule
poursuite lgitime des criminels et des terroristes, on peut tre certain quil sera aussi
utilis pour traquer des dissidents, faire chanter des opposants politiques, etc... Les
communications digitales offrent aujourdhui, la diffrence des technniques analo
giques, la possibilit de surveiller de manire bien plus pousse les mouvements des
citoyens, les opinions, les achats et les associations.
Il nest pas facile de dire si cela affectera les dpts de clefs commerciaux, except que
dans 20 ans, vendre la Turquie ou la Chine un systme de dpt de clefs prt
lemploi ressemblera fortement vendre des matraques en Afrique du Sud dans les
annes 1970, ou construire une usine chimique en Iraq en 1980. Pire, des enregistre
ments faciles et indtectables de communications pourront inciter des gouvernements
surveiller les communications de nombreux de leurs citoyens, mme ceux qui navaient
jamais essay auparavant. Il ny a pas de garantie que les dmocraties librales seront
insensibles cette tentation.

Chapitre 5

Protocoles avancs
5.1

Preuves divulgation nulle

Alice : Je connais le mot de passe de lordinateur de la Rserve Fdrale


Amricaine, la recette secrte de la sauce de McDonald et le contenu du
volume 4 de louvrage de K n u t h .
Bernard : Non, tu ne les connais pas.
Alice : Si, je les connais.
Bernard : Que non !
Alice : Mais si !
Bernard: Prouve-le!
Alice : Bon, je vais tout te dire. (Elle murmure loreille de Bernard.)
Bernard: C est intressant. Maintenant, je sais aussi. Et je vais tout
raconter au Washington Post.
Alice: Ae!
Malheureusement, le moyen le plus simple pour Alice de prouver Bernard quelle
connat un secret est de lui dvoiler celui-ci. Mais alors, partageant le secret Bernard
peut ensuite le raconter qui veut bien lentendre et Alice ny peut rien. (Dans la
littrature, d autres acteurs montent sur les planches pour ce genre de protocoles.
Patricia joue gnralement le rle du plaideur et Victor le rle du vrificateur. Ces
noms sont utiliss dans les exemples venir.)
En utilisant les fonctions sens unique, Patricia peut effectuer une p reu v e d iv u l
gation nulle [628]. Ce protocole dmontre Victor que Patricia a une information
mais il ne donne aucun moyen Victor de dterminer quelle est cette information.
Ces preuves prennent la forme de protocoles interactifs. Victor pose Patricia une srie
de questions. Si Patricia connat linformation, elle peut rpondre toutes les questions
correctement. Si elle ne la connat pas, elle a 50 % de chances de rpondre correctement.
Aprs une dizaine de questions ou plus, Victor sera convaincu que Patricia connat
linformation. De plus, aucune des questions ou rponses ne donne Victor le moindre
indice concernant linformation de Patricia except le fait que Patricia la connat.

Chapitre 5

110

Protocoles avancs

Preuve divulgation nulle de base


Jean-Jacques Q u i s q u a t e r et Louis G u il l o u [1292] illustrent les preuves divulgation
nulle laide de lhistoire d une grotte. La grotte, illustre la figure 5.1, a un secret.
Celui qui connat la formule magique peut ouvrir la porte entre C et D. Pour toute
autre personne, les deux tunnels mnent un cul-de-sac.

F lG . 5.1 - Grotte divulgation nulle

Patricia connat le secret de la grotte. Elle veut le prouver Victor mais elle ne veut
pas lui rvler la formule magique. Voici comment elle le convainc :
1 Victor se place au point A.
2 Patricia entre dans la grotte jusquau point C ou jusquau point D.
3 Aprs que Patricia a disparu dans la grotte, Victor va jusquau point B .
4 Victor crie Patricia en lui demandant :
(a) soit de sortir par le tunnel de gauche ;

(b) soit

de sortir par le tunnel de droite.

5 Patricia s excute, en utilisant la formule magiquesi ncessaire.


6 Patricia et Victor rptent les tapes 1 5 unnombre n de fois.
Supposons que Victor filme tout ce quil voit avec une camra. Il enregistre disparais
sant dans la cave, il enregistre le moment o il crie Patricia par quel tunnel elle doit
sortir et il filme Patricia sortant. Il enregistre les n essais. En voyant ce film, Christine
serait-elle convaincue que Patricia connat la formule magique? Non Victor et Patricia
auraient pu sentendre lavance ce que Victor crierait et Patricia naurait eu qu
aller dans le bon tunnel. Elle serait ainsi toujours sortie du bon ct sans connatre
la formule magique. Us pourraient encore procder autrement. Patricia va dans un des

5.1

Preuves divulgation nulle

111

passages et Victor lui fait une requte alatoire. Si Victor a demand le bon passage,
tout va bien; sinon, ils coupent cette squence du film final. De quelque manire que
ce soit, Victor peut obtenir un film avec exactement la mme squence d vnements
que dans une preuve relle o Patricia connat la formule magique.
Cela prouve deux choses. Premirement, Victor ne peut pas convaincre un troisime
parti de ta validit de la preuve. Deuximement, le protocole a une divulgation nulle.
Dans le cas o Patricia ne connaissait pas la formule magique, Victor napprendra
videmment rien en regardant le film. Mais comme il ny a pas de moyen de distinguer
un enregistrement rel d un faux, Victor ne peut rien apprendre de la preuve relle,
elle a forcment une divulgation nulle.
La technique utilise dans ce protocole est appele couper-et -choisir cause de sa
similitude avec le protocole classique pour diviser quelque chose quitablement :
1 Alice coupe en deux.
2 Bernard choisit une des moitis pour lui-mme.
3 Alice prend la moiti restante.
Il est dans lintrt d Alice de partager honntement ltape 1, car Bernard peut
choisir sa part ltape 2. Michael R a b i n est le premier avoir utilis la technique
couper-et-choisir en cryptographie [1293]. Les concepts de p r o to c o le in te ra ctif
et de divulgation nulle furent formaliss par la suite [628, 629].
La technique couper-et~choisir marche parce que Patricia ne peut pas deviner coup
sr le ct par lequel Victor lui demandera de sortir. Si elle ne connat pas le secret,
elle ne peut ressortir que par o elle est entre. Elle a 50 % de chance de deviner le
ct par lequel Victor lui demandera de sortir au tour suivant, elle a donc 50 % de
chance de pouvoir le duper. Les chances de pouvoir le duper en deux tours sont de
25 % et les chances de pouvoir le duper en n tours n fois sont de une sur 2n . Aprs
16 tours, Patricia a une chance sur 65 536 de duper Victor chaque fois. Victor peut
raisonnablement conclure que si les 16 preuves de Patricia sont toutes valables, alors
elle doit connatre la formule magique pour ouvrir la porte entre C et D. (Lanalogie
avec la grotte nest pas parfaite. Patricia peut simplement prendre un des tunnels et
ressortir par lautre ; la technique couper-et-choisir n est pas ncessaire. Toutefois, la
preuve mathmatique en a besoin.)
Faites lhypothse que Patricia connat une information et que cette information est la
solution d un problme trs difficile. Le protocole de base consiste en plusieurs tours :
1 Patricia utilise son information et un nombre alatoire pour transformer son
problme en un autre problme trs difficile qui est isomorphe la fonction
initiale. Elle utilise alors son information et le nombre alatoire pour rsoudre
le nouveau problme difficile.

2 Patricia met en gage la solution de ce nouveau problme laide dun protocole


de mise en gage quelconque.

3 Patricia dvoile Victor le nouveau problme trs difficile. Victor ne peut pas
utiliser ce nouveau problme pour dduire la moindre information concernant,
le problme initial ou sa solution.

4 Victor demande Patricia :


(sl) soit de prouver que l ancien et le nouveau problmes sont isomorphes,

Chapitre 5

112

Protocoles avancs

(b) soit

de dvoiler la solution mise en gage ltape 2, et de prouver que c est


bien une solution du nouveau problme.

5 Patricia s excute.
6 Patricia et Victor effectuent les tapes 1 5 un nombre n de fois.
Vous souvenez-vous de la camra dans lpisode de la cave? On peut faire la mme
chose ici. Victor peut transcrire tous ses changes entre lui et Patricia. Il ne peut pas
utiliser la transcription pour convaincre Christine, car il peut sentendre avec Patricia
pour construire une simulation qui maquille le savoir de Patricia. Cet argument prouve
que le protocole est divulgation nulle.
Les mathmatiques sous-jacentes ce type de preuve sont compliques. Les problmes
et les transformations alatoires doivent tre choisis judicieusement de manire que
Victor nobtienne pas la moindre information concernant la solution du problme ini
tial, mme aprs plusieurs itrations du protocole. Tous les problmes difficiles ne
peuvent pas tre utiliss pour des preuves divulgation nulle mais c est, le cas pour
nombre d entre eux.

Isomorphisme de graphes
Un exemple permettra de mieux illustrer ce concept. Celui-ci vient de la thorie des
graphes [621, 624]. Un graphe est un rseau de lignes connectant des points. Si deux
graphes sont identiques mis part les noms des tiquettes, on dit quils sont iso
m orph es. Pour des graphes extrmements grands, il peut falloir des sicles de calcul
pour vrifier sils sont isomorphes; c est lun des problmes difficiles abords au para
graphe 11.1.
Faites lhypothse que Patricia connat lisomorphisme entre deux graphes G i et GV
Le protocole suivant convainc Victor que Patricia connat bien cet isomorphisme :
1 Patricia permute alatoirement les nuds de G\ pour obtenir un autre graphe.
H qui est isomorphe G i. Comme Patricia connat lisomorphisme entre G\ et
H , elle connat aussi lisom.orphisme entre H et G'2 Pour toute autre personne,
trouver l isomorphisme entre G'i et H ou entre G'2 et H , est aussi difficile que
de trouver lisomorphisme entre G\ et G 2 2 Patricia envoie H Victor.
3 Victor demande Patricia:
{a) soit de lui prouver que G\ et H sont isomorphes ;

(b) soit

de lui prouver que G 2 et H sont isomorphes.

4 Patricia s excute :
{a) soit elle prouve que Gi et H sont isomorphes sans prouver que G 2 et H
sont isomorphes ;

( b ) soit elle prouve que G 2 et H sont isomorphes sans prouver que G i et H


sont isomorphes.

5 Patricia et Victor rptent les tapes 1 f un nombre n de fois.

5.1

Preuves divulgation nulle

11S

Si Patricia ne connat pas lisomorphisme entre G\ et G 2 , elle ne peut pas crer un


graphe H qui soit isomorphe aux deux autres. Elle peut alors uniquement crer un
graphe qui est isomorphe soit G \, soit G2 mais pas aux deux. Comme dans lexemple
prcdent, elle na que 50 % de chance de deviner quelle preuve Victor lui fera subir
ltape 4.
Le protocole ne donne aucune information utile Victor pour laider dcouvrir liso
morphisme entre Gi et G2 . Comme Patricia engendre un nouveau graphe H chaque
tour du protocole, il ny a aucune information pour Victor, mme aprs plusieurs
tours. 1 1 ne pourra pas dcouvrir lisomorphisme entre Gi et G2 partir des rponses
de Patricia.
Victor reoit une nouvelle permutation de H h chaque tour, ainsi que lisomorphisme
entre H et G\ ou bien Gi- Victor pourrait aussi bien gnrer cela lui-mme. Le fait
que Victor peut crer une simulation prouve que le protocole est divulgation nulle.

Circuit hamiltonien
Une variante de cet exemple fut prsente pour la premire fois par Manuel B l u m [133].
Patricia connat un chemin ferm continu, suivant les lignes, et qui passe par tous les
points une fois et une seule. Un tel chemin est appel circu it ham iltonien .
Trouver un tel chemin est un autre problme difficile. Patricia dispose de cette
information quelle a certainement obtenue en construisant le graphe partir d un
certain circuit hamiltonien et elle veut convaincre Victor quelle connat un tel che
min.
Patricia connat le circuit hamiltonien du graphe G. Victor connat G mais pas le
circuit hamiltonien. Patricia veut prouver quelle connat ce circuit hamiltonien sans
le dvoiler. Voici comment le protocole se droule :
1 Patricia permute alatoirement le graphe G. Elle dplace les points et change
leurs tiquettes pour former un nouveau graphe, H . Comme G et H sont topologiquement isomorphes (cest--dire, des graphes identiques), si elle connat
un circuit hamiltonien de G, elle peut alors facilement trouver un circuit hamil
tonien de H . Si elle navait pas cr H elle-mme, dterminer lisomorphisme
entre les deux graphes aurait t un problme autrement plus difficile ; cela peut
prendre des annes de temps de calcul. Elle chiffre ensuite H et obtient H ' 1.

2 Patricia donne une copie de H ' Victor.


3 Victor demande Patricia :
(sl) soit de lui prouver que H est le chiffrement dun graphe isomorphe G ;

(b ) soit de lui montrer un circuit hamiltonien de H .


4 Patricia s excute :
(a) soit elle prouve que H est le chiffrement dun graphe isomorphe G en
rvlant la permutation et en dchiffrant tout, sans montrer un circuit
hamiltonien de G ou H ;
1.
Cela doit tre un chiffrement probabiliste de chaque ligne connectant deu x points de H , c est
dire un 0 chiffr ou un 1 chiffr pou r chaque ligne dans H .

Chapitre 5

U4

Protocoles avancs

(b ) soit elle montre un cycle hamiltonien de H en ne dchiffrant que les lignes


constituant le circuit hamiltonien, sans prouver que G et H sont topologiquement isomorphes.

5 Patricia et Victor effectuent les tapes 1 4 un nombre n de fois.


Si Patricia est honnte, elle peut produire la preuve ltape 3 Victor. Toutefois, si
elle ne connat pas un circuit hamiltonien de G, elle ne peut pas crer un graphe H qui
lui permette de relever les deux dfis. Le mieux quelle puisse alors faire est soit de crer
un graphe isomorphe G, soit de crer un graphe qui ait le mme nombre de lignes et
de points avec un circuit hamiltonien correct. Comme elle a 50 % de chance de deviner
quelle preuve Victor lui fera passer ltape 3, Victor peut rpter le protocole assez
de fois pour se convaincre que Patricia connat un circuit hamiltonien de G.

Preuves divulgation nulle en parallle


Le protocole de base de preuve divulgation nulle ncessite n changes entre Patricia
et Victor. Pourquoi ne pas les faire tous en parallle :
1 Patricia utilise son information et n nombres alatoires pour transformer le
problme difficile en n problmes isomorphes diffrents. Elle utilise ensuite son
information et les nombres alatoires pour rsoudre les n nouveaux problmes
difficiles.

2 Patricia met en gage la solution aux n nouveaux problmes.


3 Patricia dvoile les n nouveaux problmes Victor. Victor ne peut pas utili
ser ceux-ci pour obtenir de linformation concernant le problme initial ou sa
solution.

4 Pour chacun des nouveaux problmes difficiles, Victor demande Patricia :


(a ) soit de lui prouver que les nouveau et ancien problmes sont isomorphes ;

(b) soit

de lui montrer la solution quelle a mise en gage l tape 2 et lui


prouver que c est une solution du nouveau problme.

5 Patricia s excute pour chacun des nouveaux problmes difficiles.


Malheureusement, ce nest pas si simple. Ce protocole ne remplit pas les mmes pro
prits de divulgation nulle que le protocole prcdent. A ltape (4), Victor peut choisir
comme requtes le rsultat d une fonction de hachage sens unique applique aux va
leurs mises en gages la premire tape, rendant ainsi la transcription non simulable.
Le protocole est toujours divulgation nulle, mais dune manire diffrente. Il a lair
st en pratique, mais personne ne sait comment le prouver. Nous savons que dans cer
taines circonstances, certains protocoles pour certains problmes peuvent marcher en
parallle en restant divulgation nulle [251, 112, 548, 618].

Preuves divulgation nulle non interactives


Christine ne peut pas tre convaincue parce que le protocole est interactif et elle nest
pas partie prenante du protocole. Pour convaincre Christine, et toute autre personne
qui serait intresse, on a besoin dun protocole non interactif.

5.1

Preuves divulgation nulle

115

Des protocoles ont t invents pour des preuves divulgation nulle non interactives
[1380, 204, 1381, 207]. Ces protocoles ne ncessitent aucune interaction; Patricia peut
les publier et ainsi apporter la preuve quiconque se donne la peine de la vrifier.
Le protocole de base est similaire celui des preuves divulgation nulle en parallle,
mais une fonction sens unique prend la place de Victor:
1 Patricia utilise son information et n nombres alatoires pour transformer son
problme difficile en n problmes isomorphes diffrents. Elle utilise ensuite son
information et les nombres alatoires pour rsoudre les n nouveaux problmes
difficiles.

2 Patricia met en gage les solutions aux n nouveaux problmes difficiles.


3 Patricia utilise toutes ces mises en gage comme entre une fonction de ha
chage sens unique. Aprs tout, les mises en gage ne sont rien dautre que des
suites de bits. Elle sauve alors les n premiers bits du rsultat de sa fonction de
hachage sens unique.

4 Patricia prend les n bits engendrs ltape S. Pour chaque ie nouveau pro
blme difficile suivant que le ie bit vaut 0 ou 1 elle excutera lune des
deux tapes suivantes :
(a.)sil vaut 0 , elle prouve que lancien et le nouveau problmes sont iso
morphes ;

(b ) s il vaut 1, elle dvoile la solution quelle a mise en gage ltape 2 et


prouve que c est une solution du nouveau problme.

5 Patricia publie toutes les mises en gage de ltape 2 ainsi que les rponses de
ltape 46

Victor, Christine, ou toute autre personne intresse, vrifie que les tapes 1
5 ont t excutes correctement.

Cest tonnant : Patricia publie des donnes qui ne contiennent pas la moindre infor
mation sur son secret et pourtant ces donnes peuvent tre utilises pour convaincre
nimporte qui de lexistence du secret. On peut aussi utiliser le protocole pour des
schmas de signature numrique en appliquant la fonction de hachage sens unique
la fois aux messages initiaux et au message signer.
Cela marche parce que la fonction de hachage sens unique se comporte comme un
gnrateur alatoire non biais de bits. Pour que Patricia puisse tricher, elle devrait
tre capable de prdire le rsultat de la fonction de hachage sens unique. Rappelezvous que si elle ne connat pas la solution du problme difficile, elle ne peut rpondre
qu un des dfis de ltape 4 mais pas aux deux. Si elle arrivait savoir d avance
ce que la fonction de hachage sens unique donnera, elle pourrait tricher. Toutefois,
Patricia ne dispose daucun moyen pour forcer la fonction de hachage sens unique
produire certains bits, ou pour deviner ceux qui seront produits. La fonction sens
unique remplace en fait Victor dans le protocole, en choisissant au hasard un des deux
dfis ltape 4.
Pour un protocole non interactif, il doit y avoir bien plus ditrations dfi-rponse .
Patricia, et non Victor, choisit les problmes difficiles laide de nombres alatoires.
Elle peut prendre diffrents problmes, donc diffrents vecteurs de bits de mise en gage,

Chapitre 5

116

Protocoles avancs

jusqu ce que le rsultat de la fonction de hachage sens unique lui convienne. Pour
le protocole interactif, 1 0 itrations sont suffisantes (cela donne une probabilit de 1
chance sur 2 10 = 1024 que Patricia puisse tricher). Pour le protocole non interactif ce
nest pas suffisant. Rappelons que Martin peut toujours relever un des deux dfis
ltape 4. Il peut essayer de deviner les dfis quil devra relever ltape 4, effectuer
les tapes 1 3, et regarder sil a bien devin. Dans le cas contraire, il peut rpter
lopration jusqu un coup de chance. Un ordinateur permet aisment de faire 1024
tentatives. Pour se prmunir de cette attaque exhaustive, les protocoles non interactifs
requirent 64 itrations, ou mme 128, pour tre valables.
C est l tout lintrt dutiliser une fonction de hachage sens unique: Patricia ne peut
pas prdire la sortie de la fonction car elle ne peut pas prdire son entre. Les mises en
gage utilises en entre ne sont connues quaprs avoir rsolu les nouveaux problmes.

Gnralits
B l u m a prouv que tout thorme mathmatique peut tre converti en un graphe tel
que la preuve du thorme est quivalente un circuit hamiltonien. On trouvera dans
[623] une preuve du cas gnral statuant que tout problme NP admet une preuve
divulgation nulle si lon admet lexistence des fonctions de hachage sens unique et donc
de bons algorithmes de chiffrement. De cette faon toute preuve mathmatique peut
tre convertie en une preuve divulgation nulle. Grce cette technique, les chercheurs
peuvent prouver au monde entier quils connaissent la preuve dun thorme particulier
sans rien rvler de celle-ci. En effect, B l u m aurait pu publier ses rsultats sans les
dvoiler.
On distingue aussi les preu ves d iv u lg a tion m inim ale. Dans une preuve divul
gation minimale, les proprits suivantes sont vrifis :

- Patricia ne peut pas tromper V ictor: si Patricia ne connat pas la preuve, ses
chances de convaincre Victor sont ngligeables.
Victor ne peut pas tromper Patricia. Il na pas le moindre indice concernant la
preuve, part le fait que Patricia connat la preuve. En particulier, Victor ne peut
faire la dmonstration personne sans d abord en faire la preuve par lui-mme
partir de zro.
Pour les protocoles de preuve divulgation nulle, une proprit supplmentaire doit
tre vrifie :
- Victor napprend rien de Patricia quil ne puisse apprendre par lui-mme mis
part le fait que Patricia connat le secret.
Il y a une diffrence notable entre les preuves divulgation minimale et les preuves
divulgation nulle2. Ces concepts ont t prsents dans [628, 621, 624]. Des thories
plus pousses, bases sur des concepts mathmatiques diffrents ont t dveloppes
indpendamment dans [244, 323, 243].
2.
C e sujet dpasse le cadre de ce livre mais le lecteur intress pou rra faire b o n usage de la
bibliographie la fin de cet ouvrage.

5.2

Identification par preuve divulgation nulle

117

Il y a de plus diffrentes sortes de preuves divulgation nulle :


- P arfaite. Il existe un simulateur qui donne des transcriptions ayant la mme
distribution que les transcriptions relles3.
- P ro b a b iliste . Il existe un simulateur qui donne des transcriptions ayant la mme
distribution que les transcriptions relles, mis part un nombre constant d ex
ceptions.
- C alcu la toire. Il existe un simulateur qui donne des transcriptions que lon ne
peut distinguer des transcriptions relles.
Un simulateur nexiste peut-tre pas, mais on peut prouver que Victor
napprendra jamais de la preuve une quantit polynomiale d information4.

- In u tile .

Au fil des annes, pas mal de recherches ont t effectues, tant sur le plan thorique
que sur le plan pratique, sur les preuves divulgation minimale et divulgation nulle.
Mike B u r m e s t e r et Yvo D e s m e d t ont invent les p r e u v e s i n t e r a c t i v e s d i f f u s e s ,
o un plaideur peut diffuser une preuve interactive divulgation nulle un grand
groupe de vrificateurs [284]. Une horde de cryptographes a prouv que tout ce qui
peut tre prouv par une preuve interactive peut ltre aussi laide d une preuve
interactive divulgation nulle [755, 122].
Un bon article gnral sur le sujet est [550]. Pour des dtails mathmatiques suppl
mentaires, des variantes, des protocoles et des applications consultez [592, 621, 244,
323, 623, 123, 245, 1536, 1561, 242, 593, 619, 511, 594, 217, 113, 219, 833, 104, 950,
624, 480, 617, 620, 218, 1379, 76]. On a crit normment sur le sujet.

5.2

Identification par preuve divulgation


nulle

Dans le monde rel, nous utilisons des objets physiques pour prouver notre identit :
carte didentit, passeport, permis de conduire, cartes de crdits, etc. Les documents
contiennent quelque chose qui les rattache une personne : une photo, gnralement,
mais ce pourrait tout aussi bien tre une empreinte digitale, une empreinte rtinienne
ou une radiographie dentaire. Ne serait-ce pas intressant de fane la mme chose nu
mriquement?
Lutilisation des preuves divulgation nulle comme preuve d identit fut propose pour
la premire fois par Uriel F e i g e , Amos F i a t et Adi S h a m i r [568, 569]. La clef prive
dAlice devient fonction de son identit . Grce une preuve divulgation nulle, elle
prouve quelle connat sa clef prive et ainsi par la mme occasion prouve son identit.
On trouvera des algorithmes ddis cela au paragraphe 23.11.
Cette ide est vraiment efficace. Elle permet aux gens de prouver leur identit sans
aucune vidence matrielle. Toutefois, ce nest pas achev. Voici quelques exemples
dabus.
3. C est le cas des problm es du circuit ham iltonien et de l isom orphism e de graphes.
4. C est le cas de la preuve en parallle.

118

Chapitre 5

Protocoles avancs

Le problme du grand matre aux checs


Voici comment Alice, qui ne connat mme pas les rgles du jeu dchecs, peut vaincre
un grand matre. Elle dcide d affronter Gary K A S P A R O V et Anatoly K a r p o v , en
mme temps et au mme endroit mais dans des pices spares. Elle joue les blancs
contre K a s p a r o v et les noirs contre K a r p o v Chaque grand matre ignore la prsence
de lautre.
K a r p o v , avec les blancs, joue son premier coup. Alice note le coup et va dans la
pice o se trouve K a s p a r o v . Elle joue alors avec les blancs exactement ce coup-l.
K a s p a r o v joue ensuite son premier coup avec les noirs. Alice note le coup et va dans
la pice o se trouve K a r p o v et joue le coup de K a s p a r o v contre K a r p o v . Cela
continue ainsi jusqu ce quelle gagne la partie contre lun et perde contre lautre (ou
encore quelle termine les deux parties sur un match nul).
En fait, K a s p a r o v joue contre K a r p o v , et Alice joue simplement le rle d interm
diaire entre les joueurs, imitant les coups d un grand matre sur lchiquier de lautre.
Toutefois si ni K a s p a r o v , ni K a r p o v nest au courant de la prsence de lautre,
chacun sera bien surpris par la qualit de jeu dAlice.
Ce type de supercherie peut tre utilis contre les identifications par preuve divul
gation nulle [483, 130]. Pendant quAlice prouve son identit Martin, celui-ci peut
prouver en mme temps Bernard quil est Alice.

La supercherie des mafiosi


Lors d une prsentation des techniques d identification par preuve divulgation nulle,
Adi S h a m i r dit [1419] : Je pourrais aller un magasin gr par la mafia un million
de fois et ils ne seraient toujours pas capables de se faire passer pour moi.
Voici comment la mafia peut le faire. Alice mange au Petit Bernard , un restaurant
gr par la mafia. Christine fait ses emplettes chez David Dior , une bijouterie de
luxe. Bernard et Christine sont tous deux membres de la mafia et ils communiquent
par une liaison radio secrte. Alice et David ne sont au courant de rien.
A la fin du repas d Alice, quand elle sapprte payer et prouver son identit
Bernard, celui-ci signale Christine que la supercherie peut commencer. Christine
achte quelques diamants trs chers et sapprte prouver son identit David. Ensuite,
pendant quAlice prouve son identit Bernard, celui-ci transmet par radio linforma
tion Christine et Christine effectue le mme protocole avec David. Quand David
pose une question lors du protocole, Christine transmet la question Bernard qui de
mande Alice. Quand Alice rpond, Bernard transmet la bonne rponse Christine.
De fait, Alice ne fait que prouver son identit David. Bernard et Christine ne font que
sinterposer dans le protocole et font transiter les messages de lun lautre. Quand
le protocole se termine, Alice a prtendument achet des diamants trs chers (avec
lesquels Christine disparat dans la nature).

La supercherie des terroristes


Si Alice est prte collaborer avec Christine, elles peuvent aussi duper David. Dans
ce protocole, Christine est une terroriste rpute. Alice laide entrer dans le pays.
David est lofficier d immigration. Alice et Christine sont connectes par une liaison
radio secrte.

5.2

Identification par preuve divulgation nulle

119

Quand David pose des questions Christine dans le cadre du protocole de preuve
divulgation nulle, Christine les relaie par radio Alice, qui y rpond elle-mme.
Christine donne ces rponses-l David. En ralit, Alice prouve son identit David,
avec Christine faisant loffice de voie de communication. Quand le protocole se termine,
David pense que Christine est Alice et la laisse entrer dans le pays. Trois jours plus
tard, Christine commet un acte terroriste.

Propositions de solutions
Les supercheries des mafiosi et des terroristes sont toutes deux ralisables parce que
les conspirateurs communiquent par une liaison radio secrte. Un moyen dviter ces
fraudes consisterait exiger que toutes les identifications aient lieu dans une cage
de Faraday, qui bloque toutes les missions lectromagntiques. Dans lexemple des
terroristes, cela garantirait David que Christine ne reoit pas ses rponses dAlice.
Dans lexemple des mafiosi, Bernard pourrait construire une fausse cage de Faraday
dans son restaurant mais le bijoutier David en aurait une vraie : Bernard et Christine ne
pourraient pas communiquer. Pour rsoudre le problme du grand matre aux checs,
il faudrait, obliger Alice reter assise jusqu la fin de la partie.
Thomas B e t h et Y vo D e s m e d t proposent une autre solution qui utilise des horloges
prcises [155]. Si chaque tape du protocole doit se drouler un instant donn prcis,
les conspirateurs nauront pas de temps pour communiquer. Dans le cas de lhistoire des
grands matres aux checs, si chaque coup doit tre jou quand laiguille des secondes
passe par 0, alors Alice naura pas le temps de courir d une pice lautre. Bernard et
Christine nauront pas le temps de se passer les questions et les rponses.

La supercherie aux identits multiples


Il existe dautres moyens de violer les preuves divulgation nulle, dcrits galement
dans [483, 130]. Dans certaines ralisations, lidentit de ceux qui enregistrent une clef
publique nest pas contrle. Ainsi, Alice peut avoir plusieurs clefs prives et donc
plusieurs identits. Cela peut tre trs utile si elle a lintention de frauder le fisc. Alice
peut aussi commettre un crime et disparatre. Tout d abord, elle cre et publie plusieurs
identits. Elle nutilise pas lune d entre elles. Ensuite, elle se sert de cette identit-l
une fois et commet un crime de manire que celui qui la identifie soit le tmoin. Le
tmoin connat lidentit de la personne qui a commis le crime, mais Alice ne se sert
plus jamais de cette identit on ne pourra pas retrouver sa trace.
Pour viter cela, il devrait exister une technique qui empche chaque personne davoir
plus dune identit. Dans [130], les auteurs suggrent lide terrifiante de bbs
infalsifiables qui ne peuvent pas tre clons et qui ont un numro unique grav dans
leur code gntique. Ils suggrent aussi que chaque bb devrait requrir une identit
sa naissance (de fait, ce serait les parents qui devraient faire les dmarches car les bbs
ont dautres proccupations). Il est facile de tricher dans ce cas : les parents pourraient
requrir plusieurs identits la naissance de lenfant. A la fin, le caractre unique d un
individu serait bas sur la confiance.

Chapitre 5

120

Protocoles avancs

Le prt de passeports
Alice veut aller en Argentine, mais le Gouvernement refuse de lui donner un visa.
Christine propose de louer son identit Alice (Bernard stait propos en premier
mais cela posait des problmes vidents). Christine vend sa clef prive Alice et Alice
part en Argentine prtendant tre Christine.
Non seulement Christine a t paye pour son identit mais encore elle dispose main
tenant d un alibi parfait. Elle commet un crime pendant quAlice est en Argentine.
Christine a prouv son identit en Argentine : comment pourrait-elle commettre un
crime chez elle?
Bien sr, Alice est libre de commettre des crimes galement. Elle les commet avant son
dpart ou aprs son retour, de prfrence prs du domicile de Christine. D abord, elle
sidentifie comme Christine (elle a la clef prive de Christine, c est donc facile pour elle),
ensuite elle commet un crime et senfuit. La police vient alors apprhender Christine.
Christine prtendra quelle a lou son identit Alice mais qui pourrait croire une
histoire aussi insense?
Le problme est quAlice ne prouve pas effectivement son identit, elle prouve quelle
possde une information secrte. C est le lien entre cette information et la personne
qui est fauss. La solution des bbs infalsifiables viterait ce genre de fraudes, de
mme quun tat policier dans lequel chaque citoyen devrait trs frquemment prouver
son identit ( la fin de chaque jour, chaque coin de rue, etc.). Les mthodes de
biomtrie empreintes digitales, images rtiniennes, empreintes vocales, et ainsi de
suitepeuvent aider rsoudre le problme.

Preuve dappartenance un groupe


Alice veut prouver Bernard quelle est membre dune organisation super secrte, mais
elle ne veut pas rvler son identit. Ce problme est proche de celui de prouver son
identit et a t tudi [887, 907, 908, 1210, 1451]. Certaines solutions sont relies au
problme des signal;ures collectives (voir 4.6).

5.3

Signatures en aveugle

Une caractristique essentielle des protocoles de signature numrique est que le signa
taire d un document sait toujours ce quil signe. C est trs bien, sauf que nous voulons
linverse.
Il y a des situations o nous voulons que des gens signent un document sans jamais
en voir le contenu. Ce n est pas un protocole trs utile en tant que tel, mais nous
lutiliserons plus tard pour raliser des protocoles de vote et de paiement numrique. Il
y a moyen pour le signataire de presque savoir ce quil signe, sans savoir exactement.
Mais commenons par le dbut.

Signatures en aveugle total


Bernard est notaire. Alice veut quil signe un document mais elle ne veut pas quil ait
la moindre ide de ce quil signe. Bernard ne sintresse pas au contenu du document,,

5.3

Signatures en aveugle

121

il ne fait que certifier que le document a t enregistr devant notaire une certaine
date. Voil ce quoi il consent :
1 Alice prend le document et le multiplie par une valeur alatoire. Cette valeur
alatoire est appele f a c t e u r d e c a m o u f l a g e .
2

Alice envoie le document camoufl Bernard.

3 Bernard signe le document camoufl.


4 Alice divise par le facteur de camouflage, retrouvant ainsi le document original
sign par Bernard.

Ce protocole ne marche que si la fonction de signature et la fonction de multiplication


sont commutatives. Si ce nest pas le cas, il y a moyen de modifier le document au
trement quen utilisant la multiplication. Les algorithmes mathmatiques utiles sont
prsents dans le paragraphe 23.12. Pour le moment, faites lhypothse que cest une
multiplication et que les mathmatiques sont au point.
Bernard peut-il tricher? Peut-il acqurir de linformation concernant le document quil
signe? Si le facteur de camouflage est vraiment, alatoire, il ne peut pas. Le document
camoufl que Bernard signe ltape 2 ne ressemble en rien au document original
dAlice. Le document camoufl avec la signature de Bernard ltape 3 ne ressemble
en rien au document sign la fin de ltape 4. Mme si Bernard met la main sur le do
cument avec sa signature aprs laccomplissement du protocole, il ne peut pas prouver
( lui-mme ou toute autre personne) quil la sign dans le cadre de ce protocole-l.
Il sait que sa signature est valide. Il sait quil (ou quelquun d autre avec sa clef pri
ve) a sign ce document ; il peut, comme nimporte qui dautre, vrifier la signature.
Toutefois, il ne dispose d aucun moyen de corrler la moindre information quil a reue
durant le protocole avec le document sign. Sil signe un million de documents avec ce
protocole, il na toujours pas de moyen de savoir dans quel cas il a sign tel document.
Les proprits des signatures en aveugle total sont :
- La signature de Bernard sur le document est valide. La signature sert de preuve
que Bernard a sign le document. Bernard sera convaincu quil a sign le docu
ment. quand on le lui montrera. Les proprits des signatures numriques prsen
tes au paragraphe 2 . 6 sont aussi valables.
- Bernard ne peut pas faire le lien entre un document sign et lacte de signature
du document Mme sil garde une trace de toutes les signatures en aveugle quil
a effectues, il ne peut pas dterminer quand il a sign un document donn.
Estelle, assise entre les deux, qui coute tout le protocole, en sait, encore moins que
Bernard.

Signatures en aveugle
Avec le protocole de signature en aveugle total, Alice peut faire signer nimporte quoi
par Bernard : Bernard doit un million de francs Alice , Bernard est le pre du
premier-n dAlice , Bernard doit un sachet de drages Alice . Les possibilits
sont infinies. Nul besoin dinsister, ce protocole nest pas particulirement utile.
Il existe toutefois un moyen pour Bernard de savoir ce quil signe, tout en maintenant
les proprits intressantes de la signature en aveugle. Le cur de ce protocole est la

Chapitre 5

122

Protocoles avancs

technique du couper-et-choisir . Considrons un exemple. De nombreuses personnes


entrent dans le pays chaque jour et les services des douanes veulent sassurer quelles
ne font pas la contrebande de cocane. Les officiels peuvent fouiller tout le monde
mais ils utilisent plutt une solution probabiliste. Ils fouillent une personne sur dix
qui entrent. Une personne sur dix voit ses effets personnels fouills ; les neuf autres
personnes passent sans autre formalit. Les contrebandiers chroniques chapperont au
contrle la plupart du temps mais ils ont 10 % de chance dtre attraps. Et si le
systme pnal est efficace, la sanction pour avoir t pris une fois dpassera largement
le gain des neuf autres fois.
Si le service des douanes veut augmenter ses chances d attraper les contrebandiers, ils
doivent fouiller plus de personnes. Sils veulent diminuer leur chance, ils diminuent le
nombre de personnes fouilles. En manipulant les probabilits, ils contrlent lefficadt
du protocole pour attraper les contrebandiers.
Le protocole de signature en aveugle utilise une mthode similaire. Bernard reoit une
grande pile de documents relis. Il les o u v r e (i.e. les examine) tous sauf un et signe ce
dernier.
Imaginez que les documents camoufls sont dans des enveloppes. Le procd de ca
mouflage consiste mettre le document dans une enveloppe. Le procd de retrait du
facteur de camouflage consiste ouvrir lenveloppe. Quand le document est dans len
veloppe, personne ne peut le lire. Le document est sign grce une feuille de carbone
dans lenveloppe. Quand les signataires signent lenveloppe, leurs signatures passent
travers la feuille de carbone et sont ainsi transfres sur le document.
Le scnario suivant implique un groupe dagents du contre-espionnage. Leur identit
est secrte : mme lagence de contre-espionnage ne sait pas qui ils sont. Le directeur
de lagence veut donner chaque agent un document sign attestant : Le porteur de
la prsente signe (insrer le nom demprunt, de lagent ici) bnficie de limmunit
diplomatique totale. Chaque agent a sa propre liste de noms demprunt donc lagence

ne peut pas simplement distribuer des documents signs. Les agents ne veulent pas
envoyer leur nom d emprunt lagence: lennemi peut avoir investi lordinateur de
lagence. En outre, lagence ne veut pas signer en aveugle nimporte quel document que
lui donne lagent Un agent malin pourrait soumettre un message tel que: L agent
(nom) est retrait et a droit une pension dun million de francs par an. Sign:
Monsieur le Prsident. Dans ce cas un protocole de signature en aveugle est utile.
Faisons lhypothse que chaque agent a n noms d emprunt possibles, quil a choisi lui-

mme et que personne d autre ne connat. Supposons galement quil importe peu aux
agents sous quel nom demprunt ils obtiennent limmunit diplomatique. Enfin admet
tons que lordinateur de lagence sappelle Ordinateur Secret Central de l Agence de
Renseignements (O S C A R en dautres termes).
1 L agent Bernard prpare n documents, chacun utilisant un nom demprunt dif
frent, garantissant cet agent limmunit diplomatique.

2 Bernard camoufle chacun des documents avec un facteur de camouflage diff


rent.

3 Bernard envoie les n documents camoufls OSCAR.


4 OSCAR choisit n 1 documents au hasard et demande Bernard le facteur
de camouflage pour chacun de ces neuf messages.

5-4

Cryptographie clef publique base didentification

123

5 Bernard envoie les bons facteurs de camouflage OSCAR.


6

OSCAR retire le facteur de camouflage des n 1 documents et s assure quils


sont corrects.

7 OSCAR signe le n e document et lenvoie Bernard.


8

Bernard retire le facteur de camouflage et lit son nouveau nom demprunt:


Le Grand Blond avec une Chaussure Noire. Le document sign lui procure
limmunit diplomatique totale sous ce nom.

Ce protocole rsiste aux tricheries ventuelles de Bernard. Pour tricher, il devrait pr


dire de faon sre quel document OSCAR nexaminera pas. Ses chances sont de 1
sur n : pas trs bonnes. OSCAR sait cela aussi et il est confiant quand il signe le ne
document : celui quil na pas pu examiner. Avec ce document-l, le protocole est le
mme que le protocole prcdent de signature en aveugle total, et il prserve toutes les
proprits d anonymat.
Il est possible de rendre les chances pour Bernard de tricher avec succs aussi petites
que ncessaires. A ltape 4, OSCAR choisit au hasard n /2 documents et Bernard lui
envoie les bons facteurs de camouflage correspondants ltape 5. ltape 7, OSCAR
multiplie ensembles les documents restants et signe le tout. ltape 8 , Bernard re
tire les facteurs de camouflage. La signature d OSCAR nest valable que si les n /2
documents signs taient identiques. Pour tricher, Bernard doit deviner quel est le
sous-ensemble quOSCAR va choisir; ses chances de russite sont bien moindre que
lorsquil essaye de deviner le document quOSCAR nexaminera pas.
Il y a un autre moyen pour Bernard de tricher. Il peut engendrer deux documents
diffrents: un quOSCAR serait prt signer et un autre non. Ensuite, il trouve deux
facteurs de camouflage tels que lun appliqu au premier document et lautre au se
cond donnent le mme document camoufl. De cette faon, si OSCAR demande
examiner le document, Bernard lui donne le facteur de camouflage qui le transforme
en un document anodin. Si OSCAR ne demande pas voir le document et le signe,
Bernard utilise le facteur de camouflage qui transforme le document camoufl en do
cument malveillant. Bien que cela soit thoriquement possible, les mathmatiques des
algorithmes particuliers utiliss pour ce protocole, rendent les chances de Bernard de
trouver une telle paire de facteurs infiniment faibles. Nous en reparlons plus en dtail
dans le paragraphe 23.12.

Brevets
C h a u m a pos des brevets sur diffrents types de signatures en aveugle (voir le ta
bleau 5.1).

5.4

Cryptographie clef publique base


didentification

Alice veut envoyer un message confidentiel Bernard. Elle ne veut se procurer sa clef
publique dans un serveur de clefs; elle ne veut pas avoir vrifier la signature d un
troisime parti de confiance avec le certificat de sa clef publique; et elle ne veut mme

Chapitre 5

124

Numro
4 759 063
4 759 064
4 914 698
4 949 380
4 991 210

ab

Protocoles avancs

5.1 - Les brevets de signature numrique poss par Chaum

Date
Titre
19/7/88 Systmes
19/7/88 Systmes
3 /3 /9 0 Systmes
14/8/90 Systmes
5/2/91 Systmes

de
de
de
de
de

signature
signature
signature
signature
signature

en
en
en
en
en

aveugle
aveugle
aveugle
aveugle
aveugle

[324]
sans anticipation [325]
avec aperu [329]
avec retour de valeur [331]
imprvisible [334]

pas enregistrer la clef publique de Bernard sur son propre ordinateur. Elle veut juste
lui envoyer un message confidentiel.
Les c r y p t o s y s t m e s b a s e d i d e n t i f i c a t i o n 5 permettent de rsoudre ce problme
[1429]. La clef publique de Bernard est base sur son nom et son addresse lectronique
(ou encore son numro de tlphone, ou son addresse en ville, ou quoi que ce soit
dautre). Avec la cryptographie clef publique classique, Alice a besoin d un certificat
sign numriquement qui lie lidentit de Bernard sa clef publique. Avec la cryptogra
phie clef publique base d identification, la clef publique de Bernard est son identit.
C est une ide vraiment sduisante, lide idale dont on peut rver pour un systme
de courrier lectronique: si Alice connat laddresse de Bernard, elle peut lui envoyer
du courrier en toute scurit. Cela rend la cryptographie aussi transparente quil est
possible.
Le sytme est fond sur Ivan qui fournit des clefs prives bases sur lidentit. Si jamais
la clef dAlice est compromise, elle doit changer un aspect de son identit pour avoir
une autre clef. Le problme le plus srieux est d laborer un systme qui ne laisse pas
la possibilit des utilisateurs malhonntes de sunir pour crer une clef.
Une grande part de travail a t faite sur les mathmatiques sous-jacentes la plupart
au Japon qui savrent affreusement compliques quand il sagit de rendre le sytme
sr. De nombreuses solutions parmi celles proposes impliquent que Ivan choisisse un
nombre alatoire pour chaque utilisateur ce qui mon avis vient lencontre de lide
mme du systme. Certains algorithmes dcrits aux chapitres 19 et 20 peuvent sutiliser
base d identification. Pour les dtails algorithmiques et cryptographiques, se reporter
[198, 1429, 891, 1030, 1519, 1224, 1205, 909, 693, 675, 1138, 1031, 1520, 1544, 1552,
6 8 , 1218, 318, 319, 1553, 1547, 1551, 944, 1521, 750, 1238]. On trouvera un algorithme
qui ne repose pas sur des nombres alatoires dans [1043]. Le systme introduit dans
[1554, 1555, 1511] rsiste aux attaques clefs publiques choisies, de mme que celui
prsent dans [1550, 1548, 1549, 1003, 378, 1546]. Honntement, rien de ce qui a t
propos jusqu prsent nest la fois ralisable et sr.

5.5

Transfert inconscient

Le cryptographe Bernard essaie dsesprment de factoriser un nombre n de 500 bits.


Il sait que celui-ci est le produit de 5 nombres de 100 bits mais il nen sait pas plus.
(C est un problme srieux pour Bernard. Sil ne peut pas retrouver la clef, il devra
5. Ces cryptosystm es sont aussi qualifis de systmes sans partage interactif de clef.

5.5

Transfert inconscient

125

faire des heures supplmentaires et il va rater son poker laveugle hebdomadaire avec
Alice.)
Alice passe alors par l :
Il se trouve que je connais un facteur du nombre dit Alice, et je te le
donnerai pour cent francs. Cela fait un franc le bit. Pour montrer quelle
est srieuse, elle utilise un schma de mise en gage de bits et met en gage
chaque bit individuellement.
Bernard est intress, mais il na que 50 francs. Alice nest pas prte
abaisser son prix et elle propose de vendre Bernard la moiti des bits
pour la moiti du prix. Cela t vitera pas mal de boulot , dit-elle.
Mais comment puis-je tre sr que ton nombre est bien un facteur de
n ? Si tu me montres le nombre et que tu me laisses vrifier que c est un
facteur, alors je serai daccord avec tes conditions , dit Bernard.
Alice na pas lintention de le suivre dans cette voie, ils sont donc dans
une impasse. Alice ne peut pas convaincre Bernard que son nombre est un
facteur de n sans le rvler et Bernard nest pas prt payer 50 bits dun
nombre qui pourrait bien lui tre inutile.
Cette histoire emprunte Joe K i l i a n [832], introduit le concept de t r a n s f e r t i n
Alice transmet un groupe de messages Bernard. Bernard reoit un sousensemble de ces messages, mais Alice ignore quels sont ceux quil reoit. Cependant,
cela ne rsout pas tout fait le problme prcdent. Aprs que Bernard a reu une
moiti alatoire des bits, Alice doit encore le convaincre que les bits quelle envoie
constituent un facteur de n en utilisant une preuve divulgation nulle.
Dans le protocole suivant, Alice va envoyer Bernard un des deux messages. Bernard
en recevra un et Alice ne saura pas lequel.
c o n s c ie n t .

Alice engendre deux paires clef publique clef prive , soit 4 clefs au total.
Elle envoie les deux clefs publiques Bernard.

2 Bernard choisit une clef pour un algorithme clef secrte (le DES par
exemple). Il choisit une des clefs publiques dAlice alatoirement et chiffre sa
clef DES avec cette dernire. Il envoie la clef chiffre Alice sans lui dire
quelle clef publique il a utilise pour la chiffrer.

3 Alice dchiffre la clef de Bernard avec ses deux clefs prives. Dans un des cas
elle utilise la bonne clef et dchiffre avec succs la clef DES de Bernard. Dans
lautre cas, elle utilise la mauvaise clef et nengendre rien dautre quune suite
de bits sans sens qui nanmoins nen ressemble pas moins une clef DES
quelconque. Comme elle ne connat pas le texte en clair correct, elle ignore
quoi est quoi.

4 Alice chiffre ses deux messages chacun avec une des deux clefs DES quelle a
engendr ltape prcdente (une vraie et une sans sens) et envoie les deux
rsultats Bernard.

5 Bernard reoit lun des messages dAlice chiffr avec la bonne clef DES et
lautre message avec une clef factice. Bernard utilise sa clef DES pour dchiffrer
les deux messages dAlice mais il ne peut lire avec succs que lun dentre eux.

Chapitre 5

126

Protocoles avancs

ce point, le transfert inconscient est termin. Bernard a pu lire un des deux messages
(celui chiffr avec sa clef DES) et Alice na aucun moyen de savoir lequel. Une tape
supplmentaire est ncessaire pour quAlice ne puisse pas tricher.
1

Aprs avoir termin le protocole et quand les deux rsultats possibles du trans
fert sont connus, Alice doit donner Bernard ses clefs prives afin qu il puisse
vrifier quelle na pas trich. Aprs tout, elle pourrait avoir chiffr le mme
message avec les deux clefs ltape 4-

Ds lors, Bernard peut resconstituer le second message.


Ce protocole rsiste une attaque d Alice car elle n a aucun moyen de savoir quelle est
la bonne clef DES parmi les deux quelle a calcules. Le protocole rsiste une attaque
de Bernard, car avant que le protocole ne soit termin, il na aucun moyen d avoir les
clefs prives dAlice donc il ne peut pas calculer lautre clef DES qui a t utilise pour
chiffrer lautre message (celui des deux quil na pas pu lire). On pourrait penser que
ce nest quune mthode plus complique pour tirer pile ou face par modem, mais ce
protocole a des implications profondes quand il est utilis au sein de protocoles plus
compliqus.
Bien sr, rien n empche Alice d envoyer deux messages totalement dnus de senr :
Gna, Gna et Cornichon . Ce protocole garantit quAlice envoie Bernard un des
deux messages; il ne fait rien pour garantir que Bernard dsire recevoir lun dentre
eux.
Il existe d autres protocoles de transfert inconscient dcrits dans la littrature. Certains
d entre eux sont non interactifs, ce qui signifie quAlice peut publier ses deux messages
et que Bernard ne peut comprendre quun des deux. Il peut le faire lui-mme, il na
pas besoin de communiquer avec Alice pour cela [111]. Nombre de protocoles de ce
chapitre utilisent le protocole de transfert inconscient.
Personne na besoin de transfert inconscient en pratique, mais la notion est une brique
lmentaire importante pour construire des protocoles plus compliqus. Cependant il y
a plusieurs sortes de transfert inconscient: j ai deux secrets et vous en obtenez un, j ai
n secret et vous en obtenez un, j ai un secret et vous lobtenez qvec probabilit 1 / 2 , et
ainsi de suite. Toutes les variantes sont quivalentes [250, 395, 399].

5.6

Signatures inconscientes

Honntement, je ne connais pas dapplication pour cela, il en existe deux variantes


[350] :
1

. Alice possde n messages diffrents. Bernard peut choisir un des n messages pour
quAlice le signe, et Alice n aura aucun moyen de savoir quel message elle a sign.

. Alice possde un message. Bernard peut choisir une clef parmi n avec laquelle Alice
va signer le message, et Alice ne pourra pas dterminer la clef elle aura utilis.

C est une ide intressante, je suis sr quelle a son utilit quelque part.

5.7

Signature simultane de contrat

5.7

127

Signature simultane de contrat

Signature de contrat avec un arbitre


Alice et Bernard veulent conclure un contrat. Ils se sont mis daccord sur les termes du
contrat mais aucun des deux ne veut signer sans que lautre signe aussi. Face face,
cest facile : ils signent ensemble. A distance, ils peuvent utiliser un arbitre.
1

Alice signe mie copie du contrat et envoie le rsultat Ivan.

2 Bernard signe une copie du contrat et envoie le rsultat Ivan.


3 Ivan envoie un message Alice et Bernard indiquant chacun que lautre a
sign le contrat.

4 Alice signe deux copies du contrat et les envoie Bernard.


5 Bernard signe les deux copies du contrat et envoie une copie Alice et en garde
une pour lui-mme.
6

Alice et Bernard informent Ivan quils ont chacun une copie du contrat signe
par eux deux.

7 Ivan dchire les deux copies de contrat chacun avec une seule signature.
Le protocole marche parce quIvan empche les deux parties de tricher. Si Bernard
refusait de signer le contrat ltape 5, Alice pourrait demander Ivan la copie du
contrat dj signe par Bernard. Si Alice refusait de signer ltape 4, Bernard pourrait
faire de mme. Quand Ivan indique quil a reu les deux contrats ltape 3, Alice et
Bernard savent tous deux quils sont lis par le contrat. Si Ivan ne reoit pas les deux
contrats, il dchiffre celui quil a reu et aucune partie nest lie.

Signature simultane de contrat sans arbitre (face face)


Si Alice et Bernard taient assis face face, ils pourraient signer le contrat de la manire
suivante [1254] :
1 Alice signe avec la premire lettre de son nom et passe le contrat Bernard.
2 Bernard signe avec la premire lettre de son nom et passe le contrat Alice.
3 Alice signe avec la deuxime lettre de son nom et passe le contrat Bernard.
4 Bernard signe avec la deuxime lettre de son nom et passe le contrat Alice.
5 Cela continue ainsi jusqu ce quAlice et Bernard aient tous deux sign avec
leurs noms en entier.

Si vous ignorez le dfaut vident de ce protocole (Bernard a un nom plus long quAlice),
cela marchera. Aprs avoir sign avec une seule lettre, Alice sait quaucun juge ne la
considrera comme lie par les termes du contrat. Mais cette lettre est un acte de bonne
volont et Bernard rpond avec un acte similaire de bonne volont.
Aprs que chaque participant a sign avec quelques lettres, un juge sera certainement
convaincu que les deux parties ont sign le contrat. Toutefois, les dtails sont obscurs.
Srement quils ne sont pas lis aprs la premire lettre ; mais ils le sont certainement
ds quils ont sign leur nom entier. A quel point du protocole deviennent-ils lis?

Chapitre 5

128

Protocoles avancs

Aprs avoir sign avec la moiti de leurs noms? Les deux tiers de leurs noms? Les trois
quarts?
Comme ni Alice ni Bernard ne sont certains de linstant partir duquel ils sont lis,
ils craignent un peu, chaque instant, d tre lis. Cela na pas de sens pour Bernard
de dire : Tu as sign avec quatre lettres et moi je nai sign quavec trois lettres. Tu
es lie et moi pas. Il ny a pas de raison que Bernard ne continue pas le protocole.
Plus longtemps ils continuent, plus grande est la probabilit quun juge les considrent
comme lis. Une fois de plus, il n y a aucune raison de ne pas continuer le protocole.
Aprs tout, ils voulaient tous deux signer le contrat ; ils ne voulaient simplement pas
signer lun avant lautre.

Signature simultane de contrat sans arbitre ( distance)


Ce protocole exploite le mme type dincertitude [120]. Alice et Bernard alternent les
petits pas vers un contrat sign jusqu ce quils aient tous deux sign.
Dans ce protocole, Alice et Bernard changent une srie de messages signs de la forme :
Jaccepte de me considrer comme li(e) au contrat avec une probabilit p.
Celui qui reoit un tel message peut le montrer un juge et, avec une probabilit p, le
juge considrera le contrat comme sign.
1

Alice et Bernard conviennent dune date laquelle le protocole de signature


devra tre termin.

2 Alice et Bernard dcident dune diffrence de probabilits utiliser. Par


exemple, Alice peut dcider quelle ne veut pas tre lie avec une probabilit
de 2 % suprieure la probabilit de Bernard. Appelons A la diffrence de
probabilit dAlice et B celle de Bernard.

3 Alice envoie un message Bernard avec p = A.


4 Bernard envoie un message Alice avec p = A + B .
5 Soit p' la probabilit du message quAlice a reu de Bernard ltape prcdente.
Alice envoie Bernard un message sign avec le minimum de p = p' + A ou
p =l.
6

Soit p' la probabilit du message que Bernard a reu d Alice ltape prcdente.
Bernard envoie Alice un message sign avec le minimum de p = p' + B ou
p= 1.

7 Alice et Bernard continuent alterner les tapes 5


tous deux reu le message avec p = 1 , ou jusqu
ltape 1 soit dpasse.

et 6 jusquce quilsaient
ce queladate convenue

Tout au long du droulement du protocole, Alice et Bernard consentent tre lis par
le contrat avec une probabilit de plus en plus grande. Par exemple, le premier message
dAlice pourrait indiquer quelle se considre comme lie avec une probabilit de 2 %.
Bernard pourrait rpondre quil est li avec une probabilit de 3 %. Le message suivant
dAlice pourrait indiquer quelle est lie avec une probabilit de 4 %, et ainsi de suite
jusqu ce quils soient lis avec une probabilit de 1 0 0 %.
Si Alice et Bernard terminent tous deux le protocole, tout va bien. Si la date dchance
du protocole arrive, chaque participant peut montrer le contrat un juge avec le dernier

Signature simultane de contrat

5.7

129

message sign de lautre participant. Le juge choisit simplement une valeur alatoire
entre 0 et 1. Si la valeur est infrieure la probabilit que lautre participant a sign,
alors les parties sont lies. Si la valeur est plus grande que la probabilit, alors les
parties ne sont pas lies6. C est cela que lon entend par tre li au contrat avec une
probabilit p.
Cest le protocole de base, mais il peut y avoir d autres complications. Si Alice com
mence signer des messages avec des incrments de plus en plus faibles de probabilit,
Bernard peut rpondre dans le mme sens. Le juge peut trancher en labsence dun
des participants. La dcision du juge lie soit les deux parties, soit aucune ; il ny a pas
de situations o lune des parties est lie et lautre pas. Aussi longtemps que lune des
parties est dispose avoir une probabilit lgrement suprieure d tre lie lautre
(peut importe la petitesse de lcart), le protocole se terminera.

Signature simultane de contrat sans arbitre (en utilisant la


cryptographie)
Ce protocole cryptographique utilise la mme approche des petits pas [531]. Le DES
est utilis pour la description du protocole bien que tout algorithme clef secrte
conviendrait.
1

Alice et Bernard choisissent chacun alatoirement 200 clefs DES groupes par
paires. Il ny a rien de spcial propos de ces paires ; elles sont juste apparies
pour les besoins du protocole.

2 Alice et Bernard engendrent chacun n paires de messages, Gi et Di : Ceci


est la moiti gauche de ma ie signature. et Ceci est la moiti droite de
ma ie signature. , par exemple. L identificateur i va de 1 n. Les messages
comprendront aussi probablement une signature numrique du contrat comme
dfinie prcdemment, et une datation. Le contrat est considr comme sign
si lautre participant peut produire les deux moitis Gi et Di dune paire de
signatures.

3 Alice et Bernard chiffrent tous deux leurs paires de messages avec chaque paire
de clefs D ES, le message gauche avec la clef gauche de la paire, et le message
droit avec la clef droit de la paire.
4 Alice et Bernard s envoient rciproquement leur paquet de 2n messages chiffrs,
en s assurant que lautre sait que tel message appartient telle moiti de telle
paire.

5 Alice et Bernard s envoient rciproquement toutes les paires de clefs en utilisant


le protocole de transfert inconscient pour chaque j>aire. C est--dire quAlice
envoie Bernard soit la clef utilise pour chiffrer la moiti gauche, soit la clef
utilise pour chiffrer la moiti droite, indpendamment, pour chacune des n
paires. Bernard fait de mme. Ils peuvent alterner lenvoi des moitis, ou lun
peut envoyer les n et puis lautre faire de mme peu importe. Maintenant,
Alice et Bernard ont tous deux une clef de chaque paire mats chacun ignore
quelles sont les clefs en possession de lautre.
6. Le ju ge enregistre la valeur au cas o il y aurait d autres litiges lis ce contrat-

Chapitre 5

130
6

Protocoles avancs

Alice et Bernard dchiffrent tous deux les moitis de messages comme ils
peuvent, en utilisant les clefs quils ont reues. Ils s assurent que les messages
dchiffrs sont corrects.

7 Alice et Bernard s envoient rciproquement les premiers bits des 2n clefs DES.
8

Alice et Bernard rptent ltape 7 pour les deuximes bits des 2n clefs DES,
les troisimes bits, et ainsi de suite, jusqu ce que toutes les clefs DES aient
t transfres.

9 Alice et Bernard dchiffrent les moitis restantes des paires de messages et le


contrat est sign.

Pourquoi Alice et Bernard doivent-ils faire tout cela? Supposons quAlice veuille tricher
et voyons ce qui se passe. Aux tapes 4 et 5, Alice peut perturber le protocole en
envoyant Bernard des chanes de bits sans sens. Bernard dcouvrirait cela ltape
6 , quand il essaierait de dchiffrer la moiti quil a reue, quelle que soit cette moiti.
Bernard peut alors arrter sans dommage, puisquAlice ne peut dchiffrer aucune des
paires de messages de Bernard.
Si Alice tait trs maligne, elle pourrait ne perturber que la moiti du protocole. Elle
pourrait envoyer la moiti gauche de chaque paire correctement et envoyer du charabia
comme moiti droite. Bernard na que 50 % de chance de recevoir la moiti droite et
donc Alice peut tricher la moiti du temps. Toutefois, cela ne marche que sil ny a
quune paire de clefs. Sil ny avait que deux paires, ce type de supercherie pourrait
russir dans 25 % des cas. C est pour cela que n doit tre grand. Alice doit anticiper
correctement le rsultat de n protocoles de transfert inconscient; Alice na que 1 chance
sur 2 de russir cela. Si n = 10, Alice a une chance sur 1024 de rouler Bernard.
Alice peut aussi envoyer des bits alatoires Bernard ltape 8 . Peut-tre que Bernard
ne saura pas quelle lui a envoy des bits alatoires jusqu ce quil reoive la clef
complte et quil essaie de dchiffrer les moitis de messages. Mais une fois de plus, les
probabilits sont du ct de Bernard. Il a dj reu la moiti des clefs et Alice ne sait
pas quelles sont ces moitis. Alice est sre de lui envoyer un bit erron pour une des
clefs quil a dj reues, et lui, il saura immdiatement quAlice essaie de le rouler.
Peut-tre qu Alice va continuer ltape 8 jusqu ce quelle ait suffisamment de bits des
clefs pour casser les messages DES et ensuite arrter de transmettre les bits. Le DES
a une longueur de clef de 56 bits. Si elle reoit 40 des 56 bits, elle ne doit essayer que
2 16 (65 536) clefs pour pouvoir lire le message
une tche qui est certainement la
porte d un ordinateur. Mais Bernard aura exactement le mme nombre de bits des
clefs d Alice (ou un bit de moins tout au plus) et donc il pourra faire la mme chose.
Alice na pas dautre choix que de poursuivre le protocole.
Le point principal est quAlice doit jouer le jeu honntement, car les chances de rouler
Bernard sont bien trop minces. A la fin du protocole, les deux parties ont n paires de
messages signs, chacune d elles suffit pour une signature valable.
Alice a nanmoins la possibilit de tricher; elle peut envoyer des messages identiques
Bernard durant ltape 5. Bernard ne pourra sen rendre compte qu la fin du
protocole, mais il peut utiliser une transcription du protocole pour convaincre un juge
de la duplicit d Alice.
Il y a deux faiblesses dans les protocoles de ce type [120] :
Premirement, il y a un problme si lune des parties a nettement plus de puissance de
calcul que lautre. Si, par exemple, Ace peut casser lalgorithme plus rapidement que

5.8

Courrier lectronique certifi

131

Bernard, alors elle peut arrter plus tt de transmettre des bits ltape 8 et calculer
elle-mme les clefs de Bernard. Bernard qui ne peut pas faire la mme chose en un
temps raisonnable ne sera pas content.
Deuximement, il y a un problme si une des parties arrte le protocole plus tt. Si
Alice arrte abruptement le protocole, tous deux devront faire le mme effort pour
faire les calculs, mais Bernard na pas de rel recours lgal. Si, par exemple, le contrat
spcifie quil doit faire quelque chose dans une semaine, et qu Alice arrte le protocole
en un point o Bernard devrait consacrer un an calculer pour qu Alice soit vrai
ment engage, il y aurait alors un problme. La vraie difficult ici est quil ny a pas
dchance court terme laquelle le processus doit se terminer comme il se doit : soit
les deux parties lies, soit aucune.
On retrouve ces problmes avec les protocoles dcrits aux paragraphes 5.8 et 5.9.

5.8

Courrier lectronique certifi

Le mme protocole de transfert inconscient simultan - utilis pour la signature de


contrats peut tre utilis pour certifier du courrier lectronique [531]. Faites lhy
pothse quAlice veut envoyer un message Bernard mais elle ne veut pas quil le lise
sans avoir envoy un accus de rception sign. Les postiers le font couramment mais
la mme chose peut tre faite avec la cryptographie. Whitfield D i f f i e aborde pour la
premire fois ce problme dans [488].
A premire vue, le protocole de signature simultane de contrats peut faire cela. Alice
simplement chiffre son message avec une clef DES. Sa moiti du protocole peut tre
quelque chose comme : Ceci est la moiti gauche de la clef DES : 32F5. La moiti
du protocole pour Bernard serait quelque chose comme : Ceci est la moiti gauche
de mon accus de rception. Tout le reste serait de mme.
Pour voir pourquoi cela ne marche pas, rappelez-vous que le protocole dpend du
fait que le transfert inconscient de ltape 5 maintient lhonntet des deux parties.
Chacun des participants sait quil envoie lautre une moiti valide mais personne
ne sait laquelle. Ils ne trichent pas ltape 8 parce que les chances de russite sont
ridicules. Si Alice envoie non pas un message mais une moiti de clef DES, Bernard
na aucun moyen de vrifier la validit de la clef DES ltape 6 . Alice peut toujours
vrifier la validit de laccus de rception de Bernard donc celui-ci est oblig dtre
honnte. Alice peut en toute impunit envoyer Bernard une fausse clef DES et celuici ne sen rendra pas compte avant quAlice en reoive laccus de rception. Bonne
chance Bernard !
Eviter cela ncessite quelques amnagements du protocole :
1 Alice chiffre son message en utilisant une clef DES alatoire et envoie le r
sultat Bernard.
2

Alice engendre n paires de clefs DES. La premire clef de chaque paire est
engendre alatoirement; la seconde clef de chaque paire est le ou exclusif de
1a. premire clef et de la clef de chiffrement du message.

3 Alice chiffre un message factice avec chacune de ses 2n clefs.


4 Alice envoie Bernard tous les messages chiffrs en s assurant quil sache que
tel message est telle moiti de telle paire.

132

Chapitre 5

Protocoles avancs

5 Bernard, engendre n paires de clefs DES alatoires.


6

Bernard engendre une paire de messages qui forment un accus de rception


valide. Ceci est la moiti gauche de mon accus de rception et Ceci est
la moiti droite de mon accus de rception sont de bons candidats avec l'ad
jonction dun certain type de validation. Il fait n paires daccuss de rception,
chacune numrote. Comme dans le protocole prcdent, laccus de rception
est considr comme valide si Alice peut produire les deux moitis dun accus
de rception (avec le mme numro) et toutes ses clefs de chiffrement.

7 Bernard chiffre chacune de ses paires de messages avec les paires de clef DES,
la i e paire de messages avec la ie paire de clefs, le message gauche avec la clef
gauche de la paire et le message droit avec la clef droite de la paire.
8

Bernard envoie son paquet de messages Alice en s assurant quAlice sait que
tel message est telle moiti de telle paire.

9 Alice et Bernard s envoient rciproquement chaque paire de clefs en utilisant le


protocole de transfert inconscient. En dautres termes, Alice envoie Bernard
soit la clef utilise pour chiffrer le message gauche, soit la clef utilise pour
chiffrer le message droit, pour chacune des n paires. Bernard fait de mme. Ils
peuvent soit alterner les envois de moitis, soit envoyer les n dun coup, peu
impoile. Maintenant, Alice et Bernard ont une clef de chaque paire mais ni
lun ni l autre ne sait ce que lautre a reu.

10 Alice et Bernard dchiffrent les moitis comme ils peuvent et s assurent de la


validit des messages dchiffrs.

11 Alice et Bernard s envoient rciproquement le premier bit des n clefs DES.


(Sils s inquitent de la prsence ventuelle dEstelle capable de lire le courrier,
alors ils doivent chiffrer la transmission entre eux.)

12 Alice et Bernard rptent ltape 11 pour le deuxime bit des 2n clefs DES, le
troisime bit, et ainsi de suite jusqu ce que tous les bits de toutes les clefs

DES aient t transmis.


13 Alice et Bernard dchiffrent les moitis restantes des paires de messages. Alice
a un accus de rception valide de Bernard et celui-ci peut appliquer le ou
exclusif nimporte quelle paire de clefs pour retrouver la clef de chiffrement
du message dorigine.

Les tapes 5 8 pour Bernard et les tapes 9 12 pour Alice et Bernard sont les
mmes que pour le protocole de signature de contrats. La diffrence se marque par
les messages factices chiffrs dAlice. Ds donnent Bernard un moyen de vrifier les
transferts inconscients dAlice ltape 1 0 , qui oblige Alice tre honnte aux tapes
11 13. Et tout comme pour le protocole de signature simultane de contrat, une
moiti gauche et une moiti droite d une des paires de messages dAlice sont toutes
deux ncessaires pour terminer le protocole.
A

5.9

Echange simultan de secrets

Alice connat un secret A ; Bernard connat un secret B . Alice est dispose dire A
Bernard si Bernard lui dit B . Bernard est dispos dire B Alice si Alice lui dit A. Le

5.9

change simultan de secrets

133

protocole suivant peut tre observ dans une cours d cole, il ne marche manifestement
pas:
1 Alice : Je te le dirai si tu me le dis en premier.
2 Bernard : Je te le dirai si tu me le dis en premier.
3 Alice : Non, toi en premier.
4 Bernard: A h ! bon. (Bernard chuchote dans loreille dAlice.)
5 Alice : Ha ! Ha ! Je ne te dis rien.
6

Bernard : C est pas juste.

La cryptographie peut le rendre quitable. Les deux protocoles prcdentssont des


ralisations d un protocole plus gnral qui permet Alice et Bernardd changer
simultanment des secrets [531]. Plutt que de redonner tout le protocole, voici ce quil
faut changer au protocole de courrier numrique certifi :
Alice effectue les tapes 11 5 en utilisant A comme message. Bernard fait les mmes
tapes en utilisant B comme message. Alice et Bernard effectuent le transfert incons
cient de ltape 1 0 , dchiffrent les moitis comme ils peuvent ltape 1 1 , et effectuent
les itrations des tapes 1 2 et 13. Sils sont inquiets dune prsence ventuelle d Estelle,
ils peuvent chiffrer leurs messages. Finalement, Alice et Bernard dchiffrent tous deux
les moitis restantes des paires de messages et effectuent le ou exclusif de nimporte
quelle paire de clefs pour retrouver la clef de chiffrement du message initial.
Ce protocole permet Alice et Bernard dchanger simultanment des secrets, mais il
ne dit rien du tout de la qualit des secrets changs. Alice peut promettre Bernard
la solution du labyrinthe du Minotaure mais lui envoyer la carte du mtro de Boston.
Bernard recevra le secret d Alice peu importe la nature de celui-ci. On trouvera dautres
protocoles dans [1298, 202, 1001, 1528, 706, 755, 263, 362, 418].

Chapitre 6

Protocoles sotriques
6.1

Elections sres

moins quil ny ait un protocole qui vite la tricherie et qui garantisse la confiden
tialit, le vote informatique ne sera jamais utilis pour des lections grandeur nature.
Le protocole idal a au minimum les 6 caractristiques suivantes :
1. Seules les personnes autorises voter peuvent voter.
2. Personne ne peut voter plus dune fois.
3. Personne ne peut dterminer pour qui quelquun d autre a vot.
4. Personne ne peut dupliquer le vote de quelquun d autre. (Il savre que cette
exigence est la plus difficile remplir.)
5. Personne ne peut modifier le vote de quelquun d autre sans tre dcouvert.
6.

Tous les votants peuvent vrifier que leur vote a bien t pris en compte dans le
dcompte final.

De plus, certains schmas de vote pourraient ajouter lexigence :


7. Tout le monde sait qui a vot et qui na pas vot.
Avant daborder les protocoles compliqus qui ont ces caractristiques, voyons quelques
protocoles simplistes qui ne les ont pas.

Protocole de vote simpliste n 1


1 Tous les votants chiffrent leur vote avec la clef publique de lAutorit Centrale
de Dcompte ( C D ).
2

Tous les votants envoient leur vote ZA C D .

3 L A C D dchiffre les votes, les compte et rend les rsultats publics.

Chapitre 6

136

Protocoles sotriques

Ce protocole a des dfauts chaque point. LA C D na aucune ide d o viennent les


votes, et donc elle ne sait pas si les votes sont mis par des votants autoriss ou pas.
Elle na pas la moindre possibilit de dtecter si les votants votent plus d une fois.
Du ct des avantages, personne ne peut modifier le vote de quelquun d autre, mais
personne nessaierait de le faire quand cest tellement plus facile de voter un nombre
infini de fois pour forcer le rsultat de son choix.

Protocole de vote simpliste n 2


1 Tous

lesvotants

signent leur vote avec leur clef prive.

Tous

lesvotants

chiffrent leur vote sign avec laclef publique

Tous

lesvotants

envoient leur vote ZA C D .

L A C D dchiffre
rsultats publics.

les votes, vrifie les signatures,dcompte les

de ZA C D .

votes et rend les

Ce protocole satisfait les proprits ( 1 ) et ( 2 ) : seuls les votants autoriss peuvent voter
et personne ne peut voter plus d une fois. Pour cela, lA C D doit garder une trace des
votes reus ltape 3. Les votes sont signs avec la clef prive des votants donc lACD
sait qui a vot, qui na pas vot et combien de fois chaque votant a vot. Si un vote
sign par un votant non autoris arrive ou un vote sign par un votant qui a dj
vot lA C D lignore. De plus, personne ne peut modifier le vote dautrui mme sil
lintercepte ltape 2 grce la signature numrique.
Le dfaut de ce protocole est que la signature est attache au vote et quainsi lACD
sait qui a vot pour qui. Le chiffrement des votes avec la clef publique de lACD
empche quiconque coute le protocole de dterminer qui vote pour qui, mais ce nest
pas suffisant. C est comme si un assesseur de bureau de vote regardait par-dessus votre
paule dans lisoloir.
Les deux exemples suivants montrent quel point il est difficile de remplir ne serait-ce
que les trois premires exigences d un protocole de vote sr.

Vote avec signatures en aveugle


Ce que nous devons faire c est d une certaine faon dissocier le vote du votant tout en
maintenant lauthentification. C est exactement ce que ralise le protocole de signature
en aveugle.
1 Tous les votants engendrent dix ensembles de messages, chaque ensemble
contient un vote valide pour chaque vote possible (par exemple, si le vote est
une question optionnelle : oui ou non , chaque ensemble contient deux
votes, un pour oui et lautre pour non ). Chaque message contient ga
lement un numro de srie engendr alatoirement suffisamment grand pour
viter les collisions avec les autres votants.

2 Tous les votants camouflent individuellement tous les messages (voir 5.3) et
envoient le rsultat ZA C D .
3 L A C D vrifie dans sa base de donnes pour tre sre que des votants nont
pas dj auparavant soumis des votes camoufls pour leur signature. Elle ouvre
neuf des dix ensembles de messages et vrifie qu ils ont t faits dans les rgles.

6.1

lections sres

137

Ensuite, elle signe individuellement chaque message dans le dixime ensemble.


Enfin, elle les renvoie aux votants et enregistre les noms des votants dans sa
base de donnes.

4 Les votants dvoilent les messages pour donner un ensemble de votes signs
par TA C D . (Ces votes sont signs mais non chiffrs, donc les votants peuvent
aisment voir quel vote est oui et quel vote est non .)

5 Les votants choisissent lun des votes ( O Dmocratie !) et chiffrent celui-ci avec
la clef publique de lA C D .
6

Les votants envoient leur vote.

7 L A C D dchiffre les votes, vrifie les signatures, vrifie dans sa base de don
nes pour des numros de srie redondants, enregistre le numro de srie, et
dcompte les voix. Elle publie les rsultats du vote avec tous les numros de
srie et leur vote associ.

Un votant malveillant, appelons-le Martin, ne peut pas tricher dans ce systme. Le


protocole de signature en aveugle garantit que son vote est unique. Sil essaie d envoyer
le mme vote deux fois, lA C D dtectera le numro de srie redondant ltape 7 et
rejettera le second vote. Sil essaie d obtenir plusieurs votes signs ltape 2, lA C D
dcouvrira cela ltape 3. Martin ne peut pas engendrer des votes factices car il ne
connat pas la clef prive de lautorit. Il ne peut pas intercepter et modifier les votes
dautres votants pour les mmes raisons.
La technique couper et -chosir utilise ltape 3 sert assurer l'unicit des votes.
Sans cette tape, Martin pourrait crer un ensemble de votes identiques en tout point
sauf le numro de srie, et russir les faire tous valider.
Une A C D malintentionne ne peut pas dterminer la faon de voter des individus.
Comme le protocole de signature en aveugle empche lautorit de voir les numros de
srie avant quils soient mis, lA C D ne peut pas faire le lien entre un vote camoufl
quelle signe et le vote finalement mis. La publication de la liste des numros de srie
et de leur vote associ permet tous les votants de vrifier que leur vote a bien t
pris en compte.
Il y a encore des dfauts. Si ltape 6 nest pas anonyme et si lA C D peut enregistrer
qui a envoy tel vote, alors elle peut dterminer qui a vot pour qui. Toutefois, si elle
reoit les votes dans une urne scelle et quelle les dcompte plus tard, elle ne peut pas.
De plus, bien que lA C D ne puisse pas relier les votes aux individus, elle peut engendrer
un grand nombre de votes valides signs et tricher en les soumettant elle mme. Et si
Alice se rend compte que l A C D a chang son vote, elle na pas les moyens d en faire la
preuve. Il existe un protocole de ce type qui tente de corriger ces dfauts [1204, 1372].

Vote avec deux autorits centrales


Une solution est de rpartir le pouvoir de lA C D en deux parties. Aucune des deux
parties na assez de pouvoir pour tricher de son propre chef.
Le protocole suivant utilise une Autorit Centrale de Lgitimation (A C L ) pour au
thentifier les votants et une A C D spare pour compter les votes [1375].
1 Tous les votants envoient un message lA CL demandant un numro de vali
dation.

Chapitre 6

138

Protocoles sotriques

2 L 'ACL renvoie aux votants un numro de validation alatoire. L 'ACL main


tient une liste des numros de validation. L A C L maintient galement une liste
des destinataires des numros de validation, au cas o ils essaieraient de voter
nouveau.

3 L A C L envoie la liste des numros de validation ZA C D .


4 Tous les votants choisissent un numro didentification individuel alatoire. Ils
crent un message avec leur numro didentification, le numro de validation
quils ont reu et leur vote v. Ils envoient le message lA C D .

5 L 'A C D compare le numro de validation avec la liste quelle a reue de Z'ACL


ltape 3. Si le numro de validation y figure, Z'ACD le biffe (pour empcher
quiconque de voter deux fois). L A C D ajoute le numro didentification la
liste des gens qui ont vot pour un candidat donn et ajoute un au dcompte.
6

Aprs que tous les votes ont t reus, ZA C D publie le rsultat ainsi que les
listes des numros didentification et pour qui leur propritaire a vot.

Un avantage de ce systme est que tous les votants peuvent regarder la liste des nu
mros d identification et trouver le leur. Cela leur prouve que leur vote a t pris en
compte. Bien sr, tous les messages circulant entre les diffrents participants du pro
tocole doivent tre chiffrs et signs pour viter que quelquun puisse se faire passer
pour quelquun d autre et pour viter les interceptions.
LA C D ne peut pas modifier les votes parce que tous les votants vont rechercher leur
numro d identification. Si un votant ne le trouve pas ou le trouve dans une autre liste
que celle pour laquelle il a vot, il saura immdiatement quil y a eu tricherie. LACD
ne peut pas trafiquer lurne parce que lA C L surveille. L A C L sait combien de votants
ont t valids ainsi que leurs numros de validation. Toute modification de lun ou
lautre est immdiatement dtecte.
Martin qui nest pas un votant autoris, peut essayer de tricher en devinant un numro
de validation valide. La probabilit de succs de cette attaque peut tre minimise
en rendant le nombre de numros de validation possibles nettement plus grand que
le nombre de numros de validation effectivement mis : un million de nombres de
100 chiffres par exemple. Bien sr, les numros de validation doivent tre engendrs
alatoirement.
Malgr cela, lA C L fait, en quelque sorte, toujours autorit. Elle peut valider des
votants non autoriss. Elle peut valider des votants lgitimes plusieurs fois. Le risque
peut tre minimis en obligeant lA C L publier la liste des votants valids (mais pas
leur numro de vadation). Si le nombre de votants sur cette liste est infrieur au
nombre de votes compts, il y a anguille sous roche. Sil y a plus de votants valids
que de votes, cela signifie probablement que des votants valids ne se sont pas donns
la peine de voter. De nombreuses personnes sont enregistres pour voter choisissent de
ne pas participer aux ballottages.
Ce protocole est aussi vulnrable une collusion entre lA C D et lACL. Si les deux
se mettent ensemble, elles peuvent corrler leurs bases de donnes et dterminer qui a
vot pour qui.

6.1

139

lections sres

Vote avec une seule autorit centrale


Un protocole plus complexe peut tre utilis pour viter le danger de collusion entre
lACL et lA C D [1375]. Ce protocole est identique au prcdent except les deux
modifications suivantes :
- lA C L et lA C D sont une seule et mme organisation ;
- A N D O S (voir 4.13) est utilis pour distribuer des numros de validation ano
nymes ltape 2 .
Comme le protocole de distribution anonyme de clefs empche lA C D de savoir quel
votant a eu quel numro de validation, lA C D ne peut pas corrler les numros de
validation avec les votes reus. Il faut toutefois toujours tre sr que lA C D nattribuera
pas des numros de validation des votants non lgitimes. On peut aussi rsoudre le
problme avec des signatures en aveugle.

Vote amlior avec une seule autorit centrale


Ce protocole utilise aussi le protocole A N D O S [1181]. C est un excellent protocole et il
satisfait les 6 proprits dun bon protocole de vote. Il ne satisfait pas la 7e contrainte,
mais il a deux proprits supplmentaires par rapport celles mentionnes au dbut
de ce paragraphe :
7. Les votants peuvent changer davis (cest--dire, retirer leur vote et voter nou
veau) pendant une priode de temps donne.
8.

Si les votants dcouvrent que leur vote a t mal comptabilis, ils peuvent iden
tifier et corriger le problme sans compromettre la confidentialit de leur vote.

Voici le protocole :
1 L A C D publie la liste de tous les votants lgitimes.
2 Pendant un laps de temps spcifi, toute personne peut indiquer son intention
de voter auprs de ZA C D .

3 L A C D publie la liste des votants participant l lection.


4 Tous les votants reoivent un numro didentification, I, en utilisant le proto
cole A N D O S.

5 Tous les votants engendrent une paire clef publique clef prive : k,d. Si v est le
vote, ils engendrent le message suivant et lenvoient ZA C D :
I ,E k(I,v)
6

L A C D confirme les votes en publiant :


E k(I,v)

7 Tous les votants envoient Z'ACD :


I,d

Chapitre 6
8

Protocoles sotriques

L A C D utilise d pour dchiffrer les votes. A la fin de llection, elle publie les
rsultats de llection et pour chaque vote possible, la liste de tous les E k(I,v)
contenant ce vote-l.

9 Si un votant constate qu un vote nest pas comptabilis correctement, il proteste


en envoyant:
I ,E k{I,v),d
10

Si un votant veut changer son vote (c est possible dans certains types dlec
tions) de v v', il peut envoyer l A C D :
I ,E k(i,v'),d

Un autre protocole de vote [587] utilise des signatures en aveugle la place d ANDOS,
mais il est essentiellement le mme. Les tapes 1 3 sont des prliminaires au vote
lui-mme. Leur but est de dterminer et de publier le nombre total de votants. Bien
que certains d entre eux ne participeront probablement pas, cela rduit la possibilit
pour lA C D d ajouter des votes frauduleux.
A ltape 4, il est possible que deux votants reoivent le mme numro d identification.
Cette ventualit peut tre vite en ayant bien plus de numros d identification quil
ny a de votants. Si deux votants soumettent des votes avec le mme identificateur,
lA C D engendre un nouveau numro didentification i', choisit lun des deux votes et
publie :
r , E k(i,v)

Lmetteur de ce vote le reconnat et envoie un deuxime vote en rptant ltape 5


avec le nouveau numro d identification.
Ltape 6 donne la possibilit tous les votants de vrifier que lA C D a reu leur vote
correctement. Et si leur vote est mal comptabilis, ils peuvent le prouver ltape 9.
En faisant lhypothse que tous les votes sont corrects ltape 6 , le message quils
envoient ltape 9 constitue une preuve que leur vote a t mal comptabilis.
Le dfaut principal de ce protocole est que lA C D peut allouer des votes pour des gens
qui rpondent ltape 2 mais qui ne votent pas. Un autre dfaut est la complexit
du protocole A N D O S. Les auteurs recommandent de diviser une grande population
de votants en groupes plus petits, comme des districts lectoraux.
Il reste un problme plus srieux : lA C D peut ngliger de compter un vote. Ce problme
ne peut tre rsolu : Alice prtend que lA C D a sciemment oubli de compter son vote,
mais lA C D prtend quAlice na jamais vot.

Vote sans une autorit centrale de comptabilisation


Ce protocole permet de se passer compltement de lA C D , les votants se surveiellent
les uns les autres. Conu par Michael M e r r i t t [266, 597, 267], il est si difficile
manier que seule une poigne de participants peut le mettre en pratique, il est malgr
tout intressant tudier.
Alice, Bernard, Christine et David votent oui ou non (0 ou 1) propos d un sujet
particulier. Faites lhypothse que chaque participant a une clef publique et une clef

6.1

lections sres

141

prive, que tout le monde connat la clef publique de chacun.


1 Tous les votants choisissent un vote et effectuent ce qui suit:
(a) ajouter une chane alatoire leur vote;
( b ) chiffrer le rsultat de
( c )

chiffrer le rsultat de

(d ) chiffrer le rsultat de
( e )

chiffrer le rsultat de

ltape (a) avec la clef publique de David;


ltape (b) avec la clef publique de Christine;
ltape (c) avec la clef publique de Bernard;
ltape (d) avec la clef publique dAlice;

( f ) ajouter une nouvelle chane alatoire au rsultat de ltape (e) et chiffrer


le tout avec la clef publique de David. Ils enregistrent la valeur de cette
chane alatoire;

(g) ajouter une nouvelle chane alatoire au rsultat de ltape (f) et chiffrer le
tout avec la clef publique de Christine. Ils enregistrent la valeur de cette
chane alatoire;

(h ) ajouter une nouvelle chane alatoire au rsultat de ltape (g) et chiffrer


le tout avec la clef publique de Bernard. Ils enregistrent la valeur de cette
chane alatoire ;

(i) ajouter une nouvelle chane alatoire au rsultat de ltape (h) et chiffrer le
tout avec la clef publique dAlice. Ils enregistrent la valeur de cette chane
alatoire.
Si E est la fonction de chiffrement, R est une chane alatoire et V est un vote,
le vote ressemble ceci:
EA(Rb,E B(Ri>E c (R 3,ED(R2,EA(E B(Ec (ED(V1R 1))))))))
Tous les votants sauvegardent les rsultats intermdiaires chaque point du
calcul. Ces rsultats seront utiliss plus tard dans le protocole pour confirmer
que leur vote est parmi ceux qui ont t comptabiliss.

2 Tous les votants envoient leur vote Alice.


3 Alice dchiffre tous les votes avec sa clef prive, vrifie que son vote est bien
parmi lensemble des votes (en cherchant sa chane alatoire parmi les votes),
et ensuite elle retire toutes les chanes alatoires ce niveau.

4 Alice mlange lordre de tous les votes et envoie le rsultat Bernard.


Chaque vote ressemble ceci maintenant :
E B{Ri ,E c {R 3 ,E D(R 2 ,E A{E B(Ec {ED{V,R1)))))))

5 Bernard dchiffre tous les votes avec sa clef publique, vrifie que son vote est
bien parmi lensemble des votes, retire toutes les chanes alatoires ce niveau,
mlange tous les votes et envoie le rsultat Christine.
Chaque vote ressemble ceci maintenant:
E c ( R 3 ,E d ( R 2,E a ( E b ( E c ( E d ( V ,R 1 ) ) ) ) ) )

Chapitre 6

142
6

Protocoles sotriques

Christine dchiffre tous les votes avec sa clef publique, vrifie que son vote est
bien parmi lensemble des votes, retire toutes les chanes alatoires ce niveau,
mlange tous les votes et envoie le rsultat David.
Chaque vote ressemble ceci maintenant :
E d (R 2 ,E a (E b (E c (E d (V A ) ) ) ) )

7 David dchiffre tous les votes avec sa clef publique, vrifie que son vote est
bien parmi l ensemble des votes, retire toutes les chanes alatoires ce niveau,
mlange tous les votes et envoie le rsultat Alice.
Chaque vote ressemble ceci maintenant :
E a (E b (E c (E d (V,R i))))
8

Alice dchiffre tous les votes avec sa clef publique, vrifie que son vote est bien
parmi lensemble des votes, signe lensemble des votes, et envoie le rsultat
Bernard, Christine et David.
Chaque vote ressemble ceci maintenant:
S a (E b (E c (E d (V ,/Zi))))

9 Bernard vrifie et retire la signature dAlice. Il dchiffre tous les votes avec sa
clef publique, vrifie que son vote est bien parmi lensemble des votes, signe
lensemble des votes, et envoie le rsultat Alice, Christine et David.
Chaque vote ressemble ceci maintenant :
S B {E c{E D{V,Ry)))
10

Christine vrifie et retire la signature de Bernard. Elle dchiffre tous les votes
avec sa clef publique, vrifie que son vote est bien parmi lensemble des votes,
signe l ensemble des votes, et envoie le rsultat Alice, Bernard et David.
Chaque vote ressemble ceci maintenant:
SC{E D{V,Ry))

1 1

David vrifie et retire la signature de Christine. Il dchiffre tous les votes avec
sa clef publique, vrifie que son vote est bien parmi l ensemble des votes, signe
lensemble des votes, et envoie le rsultat Alice, Bernard et Christine.
Chaque vote ressemble ceci maintenant:
S d {V,R i)

12 Tous vrifient et retirent la signature de David. Ils s assurent que leur vote est
bien parmi lensemble des votes (en cherchant leur chane alatoire parmi les
votes).

13 Chacun retire les chanes alatoires de chaque vote et compte les voix.

6.1

lections sres

Non seulement ce protocole marche mais il est auto-arbitr. Alice, Bernard, Chris
tine et David sauront immdiatement si quelquun triche. Aucune A C D ou A C L nest
ncessaire. Pour voir comment cela marche, essayons de tricher.
Si quelquun essaie de rajouter des voix, Alice le dtectera ltape 3 quand elle
recevra plus de votes que de participants. Si Alice essaie de rajouter des voix, Bernard
le dtectera ltape 4.
Un moyen plus dtourn de tricher est de remplacer un vote par un autre. Comme les
votes sont chiffrs avec plusieurs clefs publiques, nimporte qui peut crer autant de
votes valides que ncessaire. Il y a deux rondes au protocole de dchiffrement : la ronde
1 est constitue des tapes 3 7, et la ronde 2 est constitue des tapes 8 11. Le
remplacement de votes est dtect de faon diffrente dans les deux rondes.
Si quelquun remplace un vote par un autre dans la ronde 2 , ces actions sont dcouvertes
immdiatement. A chaque tape les votes sont signs et envoys tous les votants. Si
un (ou plusieurs) votant constate que son vote n est plus dans lensemble des votes, il
peut immdiatement arrter le protocole. Comme les votes sont signs chaque tape,
et que tout le monde peut remonter la ronde 2 du protocole, il est ais de dterminer
qui a remplac des votes.
Remplacer un vote par un autre pendant la ronde 1 du protocole est plus subtil. Alice ne
peut pas le faire ltape 3, car Bernard, Christine ou David le dtecteraient ltape
5, 6 ou 7. Bernard pourrait essayer ltape 5. Sil remplace le vote de Christine ou de
David (rappelez-vous quil ne sait pas qui tel vote correspond). Christine ou David
sen rendront compte ltape 6 ou 7. Ils ignoreront qui a modifi leur vote (bien
que cela ne puisse tre que quelquun ayant dj manipul leur vote) mais ils sauront
que leur vote a t falsifi. Si Bernard est chanceux et choisit le vote dAlice pour la
substitution, elle ne sen rendra compte qu la deuxime ronde. A ce moment-l, elle
dtectera ltape 8 que son vote manque. Toutefois, elle ne saura pas qui a modifi
son vote. Durant la premire ronde, les votes sont mlangs d une tape lautre et
non signs: il est impossible pour qui que ce soit de remonter le protocole afin de
dterminer qui a truqu les votes.
Un autre moyen de tricher est d essayer de deviner qui a vot pour qui. A cause du
mlange durant la premire ronde, il est impossible de remonter le protocole pour
associer les votants aux votes. Le retrait des chanes alatoires pendant la premire
ronde est galement crucial pour prserver lanonymat. Si elles ne sont pas retires, le
mlange des votes peut tre dfait en rechiffrant les votes avec la clef publique de celui
qui a mlang. Tant que le protocole tient, la confidentialit des votes est sre.
Plus fort encore, cause de la chane alatoire initiale R i , mme des votes identiques
sont chiffrs diffremment chaque tape du protocole. Personne ne connat le rsultat
du vote avant ltape 1 1 .
Quels sont les dfauts de ce protocole? Premirement, le protocole ncessite un grand
nombre de calculs. Lexemple dcrit ici nimplique que 4 votants et c tait compliqu.
Cela ne marcherait jamais pour de vraies lections avec des dizaines de milliers de
votants. Deuximement, David apprend les rsultats de llection avant tout le monde.
Bien quil ne puisse plus en modifier le rsultat, cela lui donne un pouvoir que les
autres nont pas. Pour en finir, tout cela sapplique aux protocoles de vote avec autorit
centrale.
Le troisime problme est quAlice peut faire le mme vote que nimporte quel autre
votant. Pour comprendre pourquoi cela peut tre un problme, considrons une lection

Chapitre 6

144

Protocoles sotriques

trois personnes Alice, Bernard et Estelle. Estelle ne soucie pas du rsultat de llection,
mais elle veut connatre le vote d Alice. Pour cela, elle copie le vote dAlice et le rsultat
de llection sera forcment gal au vote d Alice.

Autres schmas de vote


De nombreux protocoles srs dlection ont t proposs. On peut les cataloguer en
deux tendances de base. Il y les protocoles de mlange, comme le vote sans autorit
centrale de tabulation o les votes sont mlangs de sorte que personne ne peut
associer un vote avec un votant.
Il y a aussi des protocoles de division o les votes indiciduels sont rpartis entre diff
rentes autorits de comptabilisation de sorte quaucune ne puisse tromper les votants
elle seule [364, 363, 128, 125]. Ces protocoles ne protgent la vie prive des votants
que dans la mesure o les parties du Gouvernement (ou quiconque gre llection)
ne conspirent pas contre le votant1.
Un protocole de division est donn dans [1373]. Lide de dpart est que chaque votant
partage son vote en plusieurs parties. Par exemple, sil sagit de voter oui ou non ,
un 1 pourrait signifier oui et un 0 pourrait signifier non ; le votant produirait
alors plusieurs nombres dont la somme ferait soit 0, soit 1. Ces parties sont chiffres et
envoyes aux autorits de comptabilisation, une par autorit. Chaque centre totalise les
parts quil reoit 2 et le vote final est la somme de tous les totaux. Il y a des protocoles
qui certifient que la somme des parts de chaque votant vaut bien 1 ou 0 .
Un autre protocole, d David C h a u m [328], permet de retrouver les votants qui
essaient de perturber les lections. Toutefois, dans ce cas, le vote doit tre recommenc
sans le votant trublion; cette approche nest pas pratique pour des votes grande
chelle.
Un autre protocole de vote plus complexe qui pallie certains des dfauts est dcrit
dans [770, 771]. Il y a mme un protocole de vote qui utilise le surchiffrement [222], Un
autre protocole de vote, qui prtend tre pratique pour des lections grande chelle,
est dcrit dans [587]. Et [351] permet aux votants de sabstenir.
Les protocoles de vote marchent, mais ils facilitent le commerce des votes. Le risque
devient d autant plus grand que lacheteur peut sassurer que le vendeur a vot comme
promis. Certains protocoles sont conus pour quun votant ne puisse pas prouver
autrui quil a vot dun ct donn [127, 4, 1374].

6.2

Calcul rparti sr

Le calcu l rp arti sr est un protocole par lequel un groupe de personnes peuvent


se rasssembler pour calculer la valeur d une fonction plusieurs arguments. Chaque
participant fournit un seul argument de la fonction. Chacun dans le groupe connatra
le rsultat de lvaluation de la fonction mais personne napprend rien qui ne puisse se
dduire du rsultat concernant les valeurs d arguments fournies par les autres membres.
Voici quelques exemples :
X. C ette ide de scinder une autorit centrale en plusieurs parties, en qui l on n a confiance que si
elles sont runies vient de [320].
2. Il y a des protocoles qui perm ettent de vrifier lexactitude des totaux.

6.2

Calcul rparti sr

Protocole n 1
Comment un groupe de personnes peuvent-elles calculer la moyenne de leurs salaires
sans que personne napprenne le montant du salaire d un autre?
1 Alice ajoute un nombre alatoire secret son salaire, chiffre le rsultat avec la
clef publique de Bernard et lenvoie Bernard.

2 Bernard dchiffre le rsultat d Alice avec sa clef prive. Il ajoute son salaire
ce quil a reu dAlice, chiffre le rsultat avec la clef publique de Christine et
lenvoie Christine.

3 Christine dchiffre le rsultat de Bernard avec sa clef prive. Elle ajoute son
salaire ce quelle a reu de Bernard, chiffre le rsultat avec la clef publique
de David et lenvoie David.

4 David dchiffre le rsultat de Christine avec sa clef prive. Il ajoute son salaire
ce quil a reu de Christine, chiffre le rsultat avec la clef publique dAlice et
lenvoie Alice.

5 Alice dchiffre le rsultat de David avec sa clef prive. Elle retire le nombre
alatoire de ltape 1 pour retrouver la somme des salaires de tout le monde.
6

Alice divise le rsultat par le nombre de personnes (4 dans ce cas-ci) et annonce


le rsultat.

Ce protocole fait lhypothse que tout le monde est honnte. Si les participants mentent
propos de leur salaire, la moyenne sera fausse. Un dfaut plus srieux est quAlice
peut truquer le rsultat prsent aux autres. Elle peut retirer le nombre quelle veut
du rsultat ltape 5 et personne ne sen rendrait compte. Alice pourrait en tre
empche en lobligeant mettre en gage son nombre alatoire en utilisant nimporte
quel schma de mise en gage de le paragraphe 4.9 mais quand elle rvle son nombre
alatoire la fin du protocole, Bernard peut connatre le montant du salaire d Alice.

Protocole n 2
Alice et Bernard sont ensemble au restaurant et discutent de leur ge respectif. Ni lun
ni lautre ne veut dire son ge lautre mais ils sont tous les deux curieux de savoir
qui est le plus g. Ils pourraient chacun murmurer leur ge loreille dun tiers de
confiance (le serveur, par exemple), qui calculera de tte et qui annoncera le rsultat
Alice et Bernard.
Il y a deux dfauts au protocole ci-dessus. Premirement, le serveur ordinaire na pas
de capacit de calcul pour traiter des problmes plus complexes que la comparaison
entre deux nombres. Deuximement, si Alice et Bernard taient vraiment soucieux du
caractre secret de leurs informations, ils devraient noyer le serveur dans un verre deau
de Vichy sinon celui-ci pourrait tout raconter au sommelier.
La cryptographie clef publique offre une solution bien moins violente. U existe un
protocole grce auquel Alice qui connat la valeur a, et Bernard qui connat la va
leur b, peuvent ensemble calculer f(a,b) de manire qu Alice nait aucune information
concernant b et que Bernard nait aucune information concernant a. Ainsi, Alice et
Bernard sont tous deux convaincus de la validit des calculs. Comme lalgorithme

Chapitre 6

146

Protocoles sotriques

cryptographique utilis est partie intgrante du protocole, les dtails seront donns
dans le paragraphe 23.14.
Bien sr, ce protocole ne protge pas contre les tricheurs actifs. Il ny a rien qui empche
Alice (ou Bernard par la mme occasion) de tricher sur son ge. Si Bernard tait
un programme informatique qui excutait aveuglment le protocole, Alice pourrait
apprendre son ge (est-ce que lge d un programme informatique est compt partir
du temps o il a t crit ou partir du temps o il a commenc tre excut?) par
applications rptes du protocole. Alice peut excuter le protocole en donnant comme
ge 60 ans. Aprs avoir appris quelle est plus ge, elle excute le protocole nouveau
en prtendant tre ge de 30 ans. Aprs avoir appris que Bernard est plus g, elle
excute le protocole nouveau avec 45 et ainsi de suite jusqu que ce quelle connaisse
lge de Bernard avec une prcision aussi grande que souhaite.
En faisant lhypothse que les participants ne trichent pas activement, il est ais
d tendre ce protocole plus de deux participants. Nimporte quel nombre de personnes
peuvent dterminer lordre de leurs ges par des applications honntes et rptes du
protocole ; et aucun participant napprendra lge dun autre participant.

Protocole n 3
Alice aime faire des choses un peu perverses avec des ours en peluche. Bernard a des
fantasmes rotiques propos des tables en marbre. Chacun est gn d voquer ses
ftiches particuliers mais aimerait bien trouver le compagnon qui partage leur ... hum
... style de vie.
Au Service Informatique Scuris de Rencontres de Groupetm nous avons conu
un protocole pour de telles personnes. Nous avons numrot une liste tonnante de
ftiches depuis a jusqu z . Discrtement, spars par un modem, Alice et
Bernard peuvent participer un protocole multi-participants sr. Ensemble, ils peuvent
dterminer sils partagent ou non un ftiche particulier. Si oui, ils peuvent envisager
une heureuse relation. Si non, ils peuvent se dire au revoir, assurs de la confidentialit
de leurs secrets. Personne, mme pas la Secure Multiparty Computation Dating
Servicetm ne saura jamais.
Voil comment a marche.
1

Alice applique une fonction de hachage a sens unique au nom de son ftiche et
obtient une suite de huit chiffres.

2 Alice se sert de cette suite de chiffres comme dun numro de tlphone au quel
elle appelle et laisse un message pour Bernard. Si personne ne rpond ou si le
numro nest pas en service, Alice applique autant de fois quil est ncessaire
la fonction de hachage au numro de tlphone pour avoir en ligne quelquun
qui puisse participer au protocole.

3 Alice dit Bernard combien de fois elle a du appliquer la fonction de hachage


au nom de son ftiche.

4 Bernard applique la fonction de hachage au nom de son ftiche le mme nombre


de fois. Il tlphone au numro que forme le rsultat et demande si personne
na laiss de message pour lui.

Bernard peut faire une attaque texte en clair choisi. Il peut appliquer la fonction de
hachage des noms de ftiches usuels et appeller aux numros de tlphones rsultants

6.2

147

Calcul rparti sr

la recherche de messages pour lui. Ce protocole ne marche vraiment que sil y a assez
de textes en clair possibles pour rendre cette attaque infaisable.
Il existe aussi un protocole mathmatique similaire au protocole n 2. Alice connat a,
Bernard connat b et ensemble ils vont dterminer si a = b de telle manire que Bernard
napprenne rien sur a et Alice napprenne rien sur b. Les dtails sont donns dans le
paragraphe 23.14.

Protocole n 4
Voici un autre problme pour le calcul rparti sr [1375]. Un comit se runit rguli
rement pour voter secrtement sur certains sujets. (Oui, ils gouvernent secrtement le
monde, ne dites personne que je vous lai dit.) Tous les membres du comit peuvent
voter par oui ou non . En plus, deux participants ont le droit dmettre des
super-votes : Soui et S non . Ils ne sont pas obligs dmettre des super
votes, ils peuvent mettre des votes normaux sils prfrent. Si personne nmet de
super-vote, alors la majorit des voix dcide de lissue du scrutin. Dans le cas o il ny
a quun seul super-vote, ou deux super-votes quivalents, tous les votes normaux sont
ignors. Dans le cas de deux super-votes contradictoires, la majorit des votes normaux
lemporte. Nous voulons un protocole qui ralise de faon sre ce type de vote.
Deux exemples illustreront le processus de vote. Faites lhypothse quil y a 5 votants
normaux, Nj IV5 et deux super-votants Si et S2. Voici le rsultat du vote n 1
Si

S -oui

S-2 Ni
non non

N2 N3
non non

N4
oui

N5
oui

Dans ce cas-l,seul compte le vote de Si et lersultat est oui .


Voici le rsultat du vote surle sujet suivant n 2 :
Si

S -oui

S2
S- non

Ni

non

N2
non

N3
non

N4
oui

N5
oui

Ici les deux super-votes sannulent et la majorit des non lemporte.


Sil nest pas ncessaire de cacher comment le vote a t tranch : par un super-vote ou
par une majorit de votes rguliers, c est une simple application du protocole de vote
sr. Sil est par contre important de garder cette information secrte, un protocole de
calcul rparti sr plus compliqu est ncessaire.
Ce type de vote peut exister dans la vie courante. Cela peut faire partie de la structure
dune socit o certaines personnes ont plus de pouvoir que d autres. Ou cela peut
faire partie des procdures de lONU o certaines nations ont plus de pouvoir que
dautres.

Protocoles rpartis inconditionnellement sr


Il sagit simplement dun cas particulier d un thorme plus gnral: un ensemble de n
participants peut calculer valuer nimporte quelle fonction n arguments de sorte que
chacun connatra le rsultat sans quun sous-ensemble de moins de n / 2 participants ne
puisse obtenir dautre information que leurs arguments et linformation inhrente au
rsultat. Pour les dtails, voir [121, 339, 1299, 622].

Chapitre 6

148

Protocoles sotriques

Evaluation rpartie sre de circuits


Alice a sa donne a, Bernard a sa donne b. Ensemble, ils dsirent calculer une certaine
fonction f{a,b) de manire quAlice napprenne rien sur la donne de Bernard et que
Bernard napprenne rien sur la donne d Alice. Le problme gnrique de calcul rparti
sr est aussi appel valu a tion rp a rtie sre d e circu its. Ici Alice et Bernard
peuvent crer un circuit boolen arbitraire. Ce circuit accepte les entres d Alice et
de Bernard et produit une sortie. Lvaluation sre de circuits est un protocole qui
accomplit trois choses :
1

. Alice peut entrer sa donne sans que Bernard ne puisse la connatre.

2. Bernard peut entrer sa donne sans quAlice ne puisse la connatre.


3. Alice et Bernard peuvent tous deux calculer la sortie en tant tous deux convain
cus que la sortie est correcte et que personne n a trich.
Les dtails concernant les valuations sres de circuits peuvent tre trouvs dans [832].

6.3

Diffusion de messages anonymes

Vous ne pouvez pas aller dner avec un groupe de cryptographes sans quil y ait du
chahut. Dans [327], David C h a u m introduit le Problme du Dner des Cryptographes:
Trois cryptographes sont en train de dner dans leur restaurant trois
toiles favori. Leur serveur les informe que des arrangements ont t pris
avec le matre dhtel pour que la note soit paye anonymement. L un des
cryptographes peut avoir pay le dner, ou cela peut tre la NSA. Les
trois cryptographes respectent leur droit respectif d effectuer un paiement
anonyme mais ils aimeraient bien savoir quand c est la NSA qui paie.
Comment les cryptographes, appels Alice, Bernard et Christine, dterminent-ils si lun
dentre eux paie le repas tout en prservant lanonymat du payeur?
C h a u m continue ainsi pour rsoudre le problme :
Chaque cryptographe lance une pice non biaise derrire son menu, entre
lui et le cryptographe sa droite, de telle faon queux deux seuls voient le
rsultat du lancer. Chaque cryptographe annonce alors haute voix si les
deux pices quil peut voir celle quil a lance et celle que son voisin de
gauche a lance sont tombes sur la mme face ou sur des faces opposes.
Si lun des cryptographes est le payeur, il annonce le contraire de ce quil
voit. Un nombre impair de diffrences annonc autour de la table indique
que lun des cryptographes paie laddition ; un nombre pair de diffrences
indique que la NSA paie (en faisant lhypothse que le repas n est pay
quune seule fois). Ainsi, si un cryptographe paie, aucun des deux autres
napprend quoi que ce soit concernant lidentit du payeur partir des
annonces.
Pour voir si cela marche, imaginez quAlice essaie de deviner quel autre cryptographe a
pay le dner (en faisant lhypothse que ni elle ni la NSA nont pay). Si elle voit deux

6.3

Diffusion de messages anonymes

149

faces diffrentes, alors les deux autres cryptographes, Bernard et Christine, ont tous
deux annonc identiques , ou ils ont tous deux annonc diffrentes . (Rappelezvous quun nombre impair de cryptographes annonant diffrentes indique que
lun dentre eux paie.) Si tous les deux ont dit diffrentes alors le payeur est le
cryptographe le plus proche de la pice qui est identique la pice cache (celle qui
a t lance entre Bernard et Christine). Si tous les deux ont dit identiques alors
le payeur est le cryptographe le plus proche de la pice diffrente de la pice cache.
De mme, si Alice voit deux faces identiques, alors soit Bernard a dit identiques et
Christine diffrentes ou inversment. Si la pice cache est la mme que les deux
pices quelle voit, alors le cryptographe qui a dit diffrentes est le payeur. Si la
pice cache est diffrente des deux pices quelle voit, alors le cryptographe qui a dit
identiques est le payeur. Dans tous les cas, Alice doit connatre le rsultat du lancer
entre Bernard et Christine pour dterminer qui a pay.
Ce protocole peut tre gnralis pour nimporte quel nombre de cryptographes : ils sont
tous assis en rond et lancent des pices entre eux. Mme deux cryptographes peuvent
effectuer le protocole: bien sr ils savent qui a pay mais quelquun qui observe le
protocole peut seulement dire si un des cryptographes a pay ou si la NSA a pay. Il
ne peut pas dire quel cryptographe a pay.
Les applications de ce protocole dpassent largement le cadre du restaurant. C est un
exemple d a b s e n c e i n c o n d i t i o n n e l l e d e m o y e n d e r e t r o u v e r l e x p d i t e u r e t
le d e s t i n a t a i r e . Un groupe d utilisateurs d un rseau disposent du protocole suivant
pour changer des messages anonymes.
1 Les utilisateurs s organisent sous forme dun anneau logique.
2 A intervalles rguliers les paires dutilisateurs adjacents lancent une pice entre
eux, en utilisant un protocole quitable de jeu pile ou face. Ils veillent ce que
tous leurs messages soient chiffrs de manire qu ils soient les seuls connatre
le rsultat du lancer.

3 A intervalles rguliers chaque utilisateur annonce soit identiques , soit dif


frentes .
Si les utilisateurs veulent diffuser cm message individuellement, ils commencent sim
plement inverser les annonces dans les rondes correspondant des 1 dans la repr
sentation binaire du message. Par exemple, si le message est 1001 , ils inversent
leur rponse, disent la vrit, disent la vrit et finalement inversent leur rponse.
En faisant lhypothse que les rsultats des lancers sont diffrentes , identiques ,
identiques , identiques , ils annoncent identiques , identiques , identiques ,
diffrentes .
Si les utilisateurs dtectent que le rsultat du protocole ne correspond pas au mes
sage quils essaient denvoyer, ils savent que quelquun dautre est galement en train
dessayer denvoyer un message. Ils arrtent alors de transmettre durant un nombre
alatoire de rondes avant dessayer nouveau. Les paramtres exacts doivent tre ba
ss sur le volume de messages circulant sur le rseau mais lide est claire.
Pour rendre les choses encore plus intressantes, les messages peuvent tre chiffrs par
les clefs publiques des uns et des autres. Alors, quand tout le monde reoit le message
(une ralisation concrte de cela ajouterait des en-ttes et des conclusions de messages
standards), seul le destinataire lgitime peut dchiffrer et lire le message. Personne
dautre ne sait qui la envoy. Personne ne sait qui peut le lire. L analyse de trafic, qui

150

Chapitre 6

Protocoles sotriques

trace et enregistre les motifs de communication entre les gens bien que les messages
soient eux-mmes chiffrs, est inutile dans ce cas-l.
Une alternative au lancer de pice entre participants adjacents est de partager un
fichier de bits alatoires. Peut-tre pourront-ils le ranger sur un CD-ROM, ou lun
des membres de la paire pourra engendrer un paquet de bits alatoires et les envoyer
lautre participant (en chiffrant le transfert bien sr) ? Une autre possibilit est de
convenir de lutilisation d un gnrateur pseudo-alatoire de nombres et ils peuvent
alors chacun engendrer la mme chane de bits pseudo-alatoires pour le protocole.
Un problme dans ce protocole est le suivant: si un participant malveillant ne peut
lire aucun message, il peut par contre fausser le systme sans tre pris en mentant
ltape 3. Il existe une modification de ce protocole qui permet de dtecter les
perturbations [1580, 1253] ; le problme sappelle le Dner des Cryptographes la
Discothque .

6.4

Argent lectronique

L argent est un problme. C est gnant transporter, cela peut rpandre les maladies,
et on peut vous le voler. L existence des cartes de crdit a largement rduit la quantit
de monnaie qui circule dans notre socit mais llimination complte de la monnaie
est virtuellement impossible. Cela narrivera jamais : les trafiquants de drogue et les
politiciens ne laccepteront jamais. Les cartes de crdit et les chques sont associes
un relev : vous ne pouvez pas cacher qui vous donnez de largent.
D un autre ct, les chques et les cartes de crdit autorisent une intrusion dans votre
vie prive un degr jamais imagin auparavant. Vous pourriez ne jamais avoir faire
la police de toute votre vie, mais la police peut surveiller vos transactions financires.
Ils peuvent voir o vous achetez de lessence, de la nourriture, qui vous appelez au
tlphone, tout cela sans bouger de leur ordinateur. Les gens ont besoin d un moyen
de protger leur anonymat pour protger leur vie prive.
Heureusement, il existe un protocole compliqu qui permet des messages authentiques
mais dont on ne peut retrouver lmetteur. Alice la lobbyiste peut transfrer de largent
lectronique au snateur Bernard de manire que la journaliste Estelle ne connaisse
pas lidentit dAlice. Bernard peut alors dposer cet argent lectronique sur son compte
en banque, mme si la banque na pas la moindre ide de qui est Alice. Mais si Alice
essaie de corrompre deux hommes politiques avec le mme argent lectronique chose
facile tenter avec un programme de copies de bits elle sera repre par la banque. Et
si Bernard essaie de dposer deux fois le mme argent lectronique sur deux comptes dif
frents, il sera repr mais Alice restera anonyme. On nomme aussi cela de largent
lectronique anonyme pour le diffrencier de largent lctronique avec relev comme
les cartes de crdit.
La demande sociale pour ce genre de choses est forte. Avec la monte dInternet dans
les transactions commerciales, il y a un appel grandissant pour la prservation de la vie
prive dans les rseaux et lanonymat dans les affaires3. D un autre ct, les banques et
les gouvernements ne veulent pas abandonner le contrle que leur procure les systmes
actuels de paiement avec relev. Ils y seront contreints pourtant. Tout ce dont il suffit
3.
Les gens ont de bonnes raisons dtre rtissants avant denvoyer leur numro de carte de crdit
via Internet.

6.4

Argent lectronique

151

pour Lancer largent lectronique, c est une institution de confiance qui changera les
nombres numriques contre de largent officiel.
Les protocoles dargent lectronique sont trs compliqus. Nous allons en mettre un
sur pied, tape par tape. Pour plus de dtails lisez [322, 344, 330, 340, 345]. Rendez
vous bien compte quil sagit l dun seul protocole dargent lectronique, il en existe
dautres.

Protocole n 1
Les quelques premiers protocoles sont des analogies matrielles des protocoles cryptographiques. Le protocole suivant est un protocole matriel pour des ordres de paiement
anonymes :
1 Alice prpare 100 ordres de paiement anonymes de 1000 francs.
2 Alice place chacun dentre eux avec une feuille de carbone dans 100 enveloppes
diffrentes. Elle donne le tout la banque.

3 La banque ouvre 99 enveloppes et confirme que chacune dentre elles contient


bien un ordre de paiement dun montant de 1 0 0 0 francs.

4 La banque signe la seule enveloppe non ouverte restante. La signature passe


travers le carbone sur lordre de paiement. La banque rend lenveloppe non
ouverte Alice et retire 1 000 francs de son compte.

5 Alice ouvre lenveloppe et utilise lordre de paiement chez un commerant.


6

Le commerant vrifie la signature de la banque pour s assurer que lordre de


paiement est lgitime.

7 Le commerant porte lordre de paiement la banque.


8

La banque vrifie sa signature et crdite le compte du commerant de


1 0 0 0 francs.

Ce protocole marche. La banque ne voit jamais lordre de paiement lors de la signature,


donc quand le commerant lapporte la banque, celle-ci ne sait pas quil est dAlice.
La banque est toutefois convaincue quil est valide grce sa signature. La banque
est persuade que le montant de lordre de paiement non ouvert est de 1 0 0 0 francs
(et non pas de 1 0 0 0 0 0 francs ou de 1 0 0 0 0 0 0 0 0 francs) grce la technique couperet-choisir (voir 5.1). Elle vrifie les 99 autres enveloppes, Alice na donc que 1 %
de chance de tromper la banque. Bien sr, en cas de tricherie, la banque infligera une
amende dun montant tel que cela dcouragera toute tentative. Si la banque refuse de
signer le dernier chque (si Alice est prise en flagrant dlit de tricherie) sans aucune
punition, Alice pourrait continuer jusqu ce quelle ait de la chance4.

Protocole n 2
Le protocole prcdent empche Alice d indiquer un montant suprieur ce quelle est
en droit de prtendre sur un ordre de paiement, mais rien ne lempche de photocopier
4. Les peines de prison sont de bons moyens de dissuasion.

152

Chapitre 6

Protocoles sotriques

lordre de paiement et de lutiliser deux fois. Pour viter cela nous devons compliquer
le protocole :
1 Alice prpare 100 ordres de paiement anonymes de 1000 francs chacun. Sur
chaque ordre de paiement elle ajoute une chane alatoire diffrente et unique,
suffisamment longue pour que les chances quun autre utilisateur utilise la
mme chane soient ngligeables.

2 Alice place chacun dentre eux avec une feuille de carbone dans 100 enveloppes
diffrentes. Elle donne le tout la banque.

3 La banque ouvre 99 enveloppes et confirme quil s agit bien dordres de paiement


pour un montant de 1 0 0 0 francs, et que les chanes alatoires uniques sont bien
diffrentes.

4 La banque signe la dernire enveloppe non ouverte. La signature passe travers


le carbone sur lordre de paiement. La banque rend lenveloppe non ouverte
Alice et retire 1000 francs de son compte.

5 Alice ouvre lenveloppe et utilise lordre de paiement chez un commerant.


6

Le commerant vrifie la signature de la banque pour s assurer que lordre de


paiement est lgitime.

7 Le commerant porte lordre de paiement la banque.


8

La banque vrifie sa signature et contrle sa base de donnes pour vrifier qu un


ordre de paiement avec la mme chane alatoire unique na pas dj t dpos
auparavant. Si tout est en ordre, la banque crdite le compte du commerant du
montant de 1000 francs. La banque enregistre la chane alatoire unique dans
sa base de donnes.

9 Si cet ordre de paiement a dj t dpos auparavant, la banque nacceptera


pas lordre de paiement.

Ds lors, si Alice essaie d utiliser une photocopie de lordre de paiement, ou si le com


merant essaie d encaisser une photocopie de lordre de paiement, la banque le dtec
tera.

Protocole n 3
Le protocole prcdent protge la banque de la tricherie mais il ne permet pas lidentifi
cation du tricheur. La banque ne sait pas si la personne qui a achet lordre de paiement
(la banque ne peut pas savoir que c est Alice) a essay de rouler le commerant ou si
le commerant a essay de rouler la banque. Le protocole suivant corrige ce dfaut :

1 Alice prpare 100 ordres de paiement anonymes de 1000 francs chacun. Sur
chaque ordre de paiement elle ajoute une chane alatoire diffrente et unique,
suffisamment longue pour que les chances quun autre utilisateur utilise la
mme chane soient ngligeables.

2 Alice place chacun dentre eux avec une feuille de carbone dans 100 enveloppes
diffrentes. Elle donne le tout la banque.

6.4

Argent lectronique

15S

3 La banque ouvre 99 enveloppes et confirme quil s agit bien dordres de paiement


pour un montant de 1 0 0 0 francs, et que les chanes alatoires uniques sont bien
diffrentes.

4 La banque signe la dernire enveloppe non ouverte. La signature passe travers


le carbone sur lordre de paiement. La banque rend lenveloppe non ouverte
Alice et retire 1 000 francs de son compte.

5 Alice ouvre lenveloppe et utilise lordre de paiement chez un commerant.


6

Le commerant vrifie la signature de la banque pour s assurer que lordre de


paiement est lgitime.

7 Le commerant demande Alice dcrire une chane didentification alatoire


sur lordre de paiement.
8

Alice s excute.

9 Le commerant apporte lordre de paiement la banque.


10 La banque vrifie la signature et contrle sa base de donnes pour vrifier quun
ordre de paiement avec la mme chane alatoire unique na pas dj t dpos
auparavant. Si tout est en ordre, la banque crdite le compte du commerant
du montant de 1000 francs. La banque enregistre la chane alatoire unique et
la chane alatoire didentification dans sa base de donnes.
1 1

Si la chane alatoire unique est dans sa base de donnes, la banque refuse


daccepter lordre de paiement. Ensuite, elle compare la chane didentification
avec celle qui est enregistre dans sa base de donnes. Si c est la mme, la
banque sait que c est le commerant qui a fait une photocopie de lordre de
paiement. Si elle est diffrente, la banque sait que c est la personne qui a achet
lordre de paiement qui la photocopi.

Ce protocole fait lhypothse que le commerant ne peut pas modifier la chane diden
tification une fois quAlice la crite sur lordre de paiement. Lordre de paiement peut
avoir une suite de petites cases que le commerant demandera Alice de remplir avec
des X ou des O. Lordre de paiement serait fait de papier qui se dchire si lon tente
deffacer.
Comme linteraction entre le commerant et la banque a lieu aprs quAlice a dpens
largent, le commerant reste avec un mauvais ordre de paiement sur les bras. Des
ralisations pratiques de ce protocole ncessitent quAlice attende prs de la caisse
pendant linteraction entre le commerant et la banque tout comme pour les cartes de
crdit aujourdhui.
Alice peut essayer de rouler le commerant. Elle peut essayer d utiliser une copie de
lordre de paiement une seconde fois en donnant la mme chane d identification
ltape 7. A moins que le commerant nenregistre les ordres de paiement quil reoit
dans une base de donnes, le commerant se fera rouler. Le protocole suivant limine
ce dfaut.

Protocole n 4
Sil savre que la personne qui a achet lordre de paiement a essay de rouler le
commerant, il incombe la banque de dterminer lidentit du tricheur. Pour ce faire
nous devons quitter le monde matriel pour celui de la cryptographie.

Chapitre 6

154

Protocoles sotriques

La technique du morcellement de secret peut tre utilise pour cacher le nom dAlice
dans lordre de paiement numrique.

1 Alice prpare n ordres de paiement anonymes dune somme donne.


Chaque ordre de paiement contient une chane alatoire unique diffrente, X ,
assez longue pour que la chance den avoir deux identiques soit ngligeable.
Sur chaque ordre de paiement, il y a aussi n paires de chanes de bits d identifi
cation, I i ,l 2 , . . . ,In- Cela fait n paires diffrentes sur chaque chque. Chacune
de ces paires est engendre de la faon suivante: Alice cre une chane qui
contient son nom, son adresse et toute autre information que la banque dsire
quant son identit. Ensuite elle coupe cette chane en deux morceaux en utili
sant le protocole de morcellement de secret (voir 3.6). Enfin elle met en gage
chaque morceau en utilisant un protocole de mise en gage de bits.
Par exemple, I37 est constitue de deux parties : Iz7G et IyjD Chaque partie
est un paquet de bits mis en gage dont on peut demander louverture Alice,
et dont louverture correcte peut tre instantanment vrifie. Toute paire I ^ G
et h rD Par exemple, rvle lidentit dAlice (mais pas l 37G et h%D). Chacun
des ordres de paiement ressemble ceci :
Montant :
. . . francs
Chane unique:
X
Chane didentification: I\ = (I\G,lyD)
h = { h a J 2 D)

ln
2

(^nci^np)

Alice camoufle les n ordres de paiement en utilisant le protocole de signature


aveugle. Elle donne le tout la banque.

3 La banque demande Alice de retirer le camouflage de n 1 ordres de paie


ment et confirme quils sont conformes. La banque vrifie le montant, la chane
unique et demande Alice de rvler toutes les chanes didentification.

4 Si la banque constate quAlice na pas fait de tentative de tricherie, elle signe


Tordre de paiement camoufl restant. La banque rend Alice l ordre de paie
ment camoufl et retire le montant de son compte.

5 Alice retire le camouflage de Tordre de paiement et lutilise chez un commer


ant.
6

Le commerant vrifie la signature de la banque pour s assurer de la lgitimit


de Tordre de paiement.

7 Le commerant demande Alice de rvler alatoirement la moiti gauche ou


la moiti droite de chacune des chanes didentit de Tordre de paiement. En
fait, le commerant donne Alice une chane d e slection alatoire de n
bits: bi, b-2 , ..., bn. Alice ouvre soit la partie gauche, soit la partie droite de L
suivant que bi vaut 0 ou 1.
8

Alice s excute.

9 Le commerant porte lordre de paiement la banque.

6.4

Argent lectronique

155

10 La banque vrifie la signature et contrle sa base de donnes pour vrifier quun


ordre de paiement avec la mme chane alatoire unique na pas t dpos
auparavant. Si tout est en ordre, la banque crdite le compte du commerant
du montant de 1000 francs. La banque enregistre la chane alatoire unique et
toutes les informations didentification dans sa base de donnes.

11 Si la chane alatoire unique est dans sa base de donnes, la banque refuse


daccepter lordre de paiement. Ensuite, elle compare la chane didentification
sur lordre de paiement avec celle qui est enregistre dans sa base de donnes.
5* c 'est la mme, la banque sait que c est le commerant qui a fait une photo
copie de l ordre de paiement. Si elle est diffrente, la banque sait que c est la
personne qui a achet lordre de paiement qui la photocopi. Comme le second
commerant qui a accept lordre de paiement dAlice lui a donn une
autre chane de slection que le premier commerant, la banque trouvera une
position de bit o lun des commerants a demand douvrir la moiti gauche
et lautre commerant a demand douvrir la moiti droite. La banque calcule
le ou exclusif des deux moitis pour retrouver lidentit dAlice.

Cest un protocole tonnant, aussi regardons-le sous diffrents angles.


Alice peut-elle tricher? Son ordre de paiement numrique nest rien d autre quune
chane de bits, donc elle peut la copier. Lutiliser une premire fois ne pose pas de
problme : elle excute tout le protocole et tout va trs bien. Le commerant lui donnera
une chane de slection alatoire ltape 7 et Alice ouvrira soit la partie gauche, soit
la partie droite de chaque I, ltape 8 . A ltapelO, la banque enregistrera toutes ces
donnes ainsi que la chane unique de lordre de paiement.
Quand Alice essaie d utiliser le mme ordre de paiement numrique une seconde fois,
le commerant (soit le mme commerant soit un autre) lui donnera une autre chane
de slection alatoire ltape 7. Alice doit sexcuter ltape 8 : ne pas le faire
signalerait immdiatement lanomalie au commerant. Si le commerant apporte lordre
de paiement la banque ltape 1 0 , la banque remarquera immdiatement quun ordre
de paiement avec la mme chane unique a dj t dpos. La banque compare alors
les moitis ouvertes des chanes d identification. Les chances que les deux chanes de
slection soient les mmes sont de 1 pour n ; cela a peu de chance de se produire dici
la prochaine re glaciaire. La banque trouve alors une paire dont la moiti gauche
a t ouverte la premire fois et la moiti droite a t ouverte la deuxime fois. Elle
calcule le ou exclusif des deux moitis et dcouvre le nom dAlice. La banque sait qui
a essay dutiliser cet ordre de paiement deux fois.
Le protocole ne ncessite pas la prsence d Alice tandis que la banque et le commerant
excutent leur part du protocole. Ce nest que si Alice triche que la banque connat
son identit. Alice ne peut pas empcher que son identit soit rvle. Elle ne peut pas
modifier la chane unique ni les chanes didentification car dans ce cas la signature de
la banque ne serait plus valable. Le commerant sen rendrait immdiatement compte
ltape 6 .
Alice peut essayer subrepticement de faire passer un ordre de paiement aux dpens
de la banque, un ordre sur lequel les chanes didentification ne rvleraient pas son
nom ou mieux encore, un ordre dont les chanes didentification donneraient le nom
de quelquun dautre. Les chances de russir cette ruse ltape 3 sont de 1 sur n. Ce
nest pas si improbable que cela mais si la pnalit est assez lourde, Alice nessaiera

156

Chapitre 6

Protocoles sotriques

pas. Ou, vous pouvez augmenter le nombre d ordres de paiement quAlice doit prparer
ltape 2 .
Est-ce que le commerant peut tricher? Ses chances sont encore moins grandes. Il
ne peut pas encaisser lordre de paiement deux fois : la banque dtecterait la double
utilisation de la chane de slection. Il ne peut pas reporter la faute sur Alice, seule
Alice peut ouvrir les chanes d identification.
Mme une collusion entre Alice et le commerant ne peut pas duper la banque. Comme
la banque signe lordre de paiement avec la chane unique, elle est sre de ne payer cet
ordre quune fois.
Quen est-il de la banque? A-t-elle un moyen de dterminer quun ordre de paiement
encaiss a t sign pour Alice? Alice est protge par le protocole de signature en
aveugle des tapes 2 5. La banque ne peut faire le lien, mme si elle garde un enre
gistrement complet de toutes les transactions. Bien mieux, la banque et le commerant
nont aucun moyen de se mettre ensemble pour dterminer qui est Alice. Alice peut
entrer dans le magasin et dans le plus complet anonymat faire ses achats.
Estelle peut tricher. Elle peut espionner la communication entre Alice et le commerant,
et si elle peut aller la banque avant lui, elle peut porter lordre de paiement la banque
en premier. La banque lacceptera, et mme pire, quand le commerant viendra porter
son ordre de paiement, il sera suspect de tricherie. Si Estelle vole et dpense largent
lectronique d Alice avant cell-ci, cest Alice qui sera suspecte de tricherie. Il ny a
aucun moyen d empcher cela; c est la consquence directe de lanonymat procur par
largent lectronique. Alice et le commerant doivent tous les deux protger leurs bits
comme ils le feraient avec des billets.
Ce protocole se situe quelque part entre les protocoles arbitrs et les protocoles autoarbitrs. Alice et le commerant font confiance la banque pour quelle honore les
ordres de paiement, mais Alice na pas confiance dans la banque en ce qui concerne
son identit.

Argent lectronique et crime parfait


Largent lectronique a aussi son mauvais ct. Parfois, les gens ne veulent pas autant
danonymat. Observons Alice en train de commettre le crime parfait [1577] :
1

Alice kidnappe un bb.

Alice prpare 10000 ordres de paiement anonymes de

000 francs chacun (ou

autant qu elle veut pour le montant qu elle veut).

3 Alice camoufle les 10 000 ordres de paiement en utilisant un protocole de signa


ture en aveugle. Elle envoie les rsultats aux autorits en menaant de tuer le
bb si les instructions suivantes ne sont pas suivies la lettre :
( a )

faites signer les 1 0 0 0 0 ordres de paiement par une banque;

(b) publiez les

rsultats dans un quotidien.

4 Les autorits s excutent.


5 Alice achte le journal, retire le camouflage des ordres de paiement, et com
mence les utiliser. Les autorits nont aucun moyen de faire le lien entre les
ordres de paiement et Alice.

6.4

Argent lectronique

157

6 Alice libre le bb.


Cette situation est autrement dramatique que toute autre impliquant des biens ma
triels (de lagent liquide par exemple). Comme il ny a pas de contact physique, la
police a moins de chances dapprhender le ravisseur.
En gnral, cependant, largent lectronique nest pas une bonne affaire pour les crimi
nels. Le problme vient du fait que lanonymat ne marche que dans un sens: lacheteur
est anonyme, mais pas le vendeur. De plus, le vendeur ne peut pas cacher le fait quil a
reu de largent lectronique. Avec largent lectronique, le gouvernement pourra faci
lement dterminer combien d argent vous recevez, mais pas comment vous le dpensez.

Argent lectronique pratique


Une socit nrlandaise, D ig i C a s h , possde la plupart des brevets existants en la
matire, et a ralis des protocoles d argent lectronique dans des produits qui fonc
tionnent. Toute personne intresse doit contacter DigiCash BV, Kruislaan 419,
1098 VA Amsterdam, Pays-Bas.

Autres protocoles dargent lectronique


Il existe dautres protocoles dargent lectronique; voir [708, 6 6 , 736, 1635, 985].
Certains dentre eux mettent en jeu des mathmatiques assez compliques. En gnral,
on peut distinguer diverses catgories de protocoles d argent lectronique.
Dans les systmes en ligne, le commerant doit communiquer la banque chaque
vente, ce qui ressemble aux protocoles actuels de carte de crdit. Sil y a un problme,
la banque reffuse dencaisser et Alice ne peut pas tricher.
Dans les systmes au ton om es, comme le protocole n 4, aucune communication entre
le commerant et la banque nest ncessaire durant la transaction. Ces systmes nem
pchent pas Alice de tricher, mais dtectent toute tricherie ventuelle. Alice sait que
cela arrivera, aussi elle ne triche pas.
Une autre solution est de crer une carte mmoire spciale (voir 24.13) contenat
une puce rsistante linvestigation appele observatrice [336, 346, 391]. La puce
observatrice garde une mini-base de donnes contenant toutes les dpenses dargent
lectronique faites avec cette carte. Si Alice essaye de copier de largent lectronique
et de le dpenser deux fois, la puce observatrice dtectera la tentative et empchera la
transaction. Comme la puce rsiste linvestigation, Alice ne peut effacer la mini-base
de donnes sans endommager la carte. L argent peut passer de main en main, et quand
il est finalement dpos, la banque peut dterminer qui a trich, sil y a lieu.
Les protocoles dargent lectronique peuvent tre classs selon un autre critre. Dans
les systmes de porte monnaie lectronique, on utilise des sommes fixes; on a alors
besoin de diffrentes pices reprsentant diffrents montants. Les chques lectro
niques permettent de rgler nimporte quel montant jusqu une valeur maximale et
la partie non dpense est rendue pour se faire rembourser.
Deux excellents et compltement diffrents protocoles dargent lectronique autonomes
se trouvent dans [227, 228, 229] et [565, 567, 566]. Un systme appel N e t C a s h pr
sente des proprits d anonymat plus restreintes [1057, 1056]. Un autre systme rcent
est [293].

Chapitre 6

158

Protocoles sotriques

Dans [1219], Tat.suaki O k a m o t o et Kazuo O h t a donnent la liste de 6 proprits que


devrait satisfaire un systme dargent, lectronique idal :
1. L indpendance. La scurit de largent lectronique ne doit dpendre d aucune
localisation physique. Largent peut tre transfr par des rseaux informatiques.
2. Scurit. L argent lectronique ne peut pas tre copi et rutilis.
3. Anonymat (absence de possibilit d identifier lmetteur). L anonymat
des utilisateurs est protg : personne ne peut retrouver les liens entre les utilisa
teurs et les achats.
4. Paiement hors-ligne. Quand un utilisateur paie un achat avec de largent lec
tronique, le protocole entre lutilisateur et le commerant est excut hors-ligne.
C est--dire, que le commerce na pas tre reli un ordinateur central pour
traiter le paiement de lutilisateur.
5. Transfrabilit. Largent lectronique peut tre transfr dautres utilisateurs.
6.

Divisibilit. Une pice d argent lectronique d un certain montant peut tre


subdivise en pices d argent plus petites de montants moins levs. (Bien sr,
les totaux doivent tre corrects au bout du parcours.)

Les protocoles prsents ici satisfont les proprits 1, 2, 3 et 4 mais pas 5 et 6 . Il


existe des systmes d argent lectronique en-ligne qui satisfont toutes les proprits
sauf la quatrime [322, 417, 1252]. Le premier systme d argent lectronique hors-ligne
qui satisfait les proprits 1, 2, 3 et 4, similaire ceux dcrits ci-avant, est dcrit
dans [344]. O k a m o t o et O h t a proposent un systme qui satisfait les proprits 1
5 [1217] ; ils proposent galement un systme qui satisfait les proprits 1 6 mais le
volume des donnes traiter pour lachat d un seul article est approximativement de
200 mga-octets. Un autre systme de porte monnaie lectronique est dcrit dans [524].
Le schma d argent lectronique propos dans [1219], des mmes auteurs, satisfait les
proprits 1 6 mais sans la ncessit de cet norme volume de donnes. La taille totale
du transfert de donnes pour un seul achat est d environ 2 0 kilo-octets et le protocole
peut tre effectu en quelques secondes. Les auteurs considrent que c est le premier
systme d argent lectronique idal sans possibilit didentification de lacheteur.

Cartes de crdit anonymes


Ce protocole [998] utilise plusieurs banques diffrentes pour prserver lidentit du
consommateur. Chaque consommateur possde un compte dans deux banques diff
rentes. La premire banque connat lidentit de la personne et lui procure du crdit.
La seconde ne connat le consommateur que sous un pseudonyme (similaire un compte
numrot dans une banque Suisse).
Le consommateur peut retirer des fonds dans la seconde banque en prouvant que le
compte est bien le sien. Cependant la banque ne connat pas la personne et ne veut pas
lui donner de crdit. La premire banque connat le client et transfert les fonds vers
la seconde banque sans savoir le pseudonyme. Le consommateur peut alors dpenser
ces fonds de manire anonyme. A la fin du mois, la seconde banque donne une note
la premire banque, dont la solvabilit lui inspire confiance. La premire banque

6.4

Argent lectronique

159

passe la note au consommateur; elle a confiance en sa solvabilit puisquelle le connat.


Quand le consommateur paye, la premire banque transfert des fonds additionnels vers
la seconde banque. Toutes les transactions se font par un intermdiaire, qui agit comme
une banque dEtat lectronique: il instaure des comptes entre les banques, fait passer
les messages et cr des relevs.
Les changes entre le client, le marchant, et les diverses banques sont abords dans
[998]. A moins que tout le monde ne se ligue contre le client, son anonymat est assur.
Cependant, ce nest pas de largent lectronique, la banque peut facilement tricher. Le
protocole procure aux clients les avantages de la carte de crdit sans dvoiler leur vie
prive.

Deuxime partie
Techniques cryptographiques

Chapitre 7

Longueur des clefs


7.1

Longueur des clefs secrtes

La scurit dun cryptosystme clef secrte dpend de deux choses : la solidit de


lalgorithme et la longueur de la clef. La premire caractristique est plus importante
mais la deuxime est plus facile illustrer.
Faisons lhypothse que la solidit de lalgorithme est parfaite. Cela est trs difficile
raliser en pratique mais nous supposerons que cest faisable dans cet exemple. Par
solidit parfaite, je veux dire quil nexiste pas de meilleur moyen de casser le crypto
systme que dessayer toutes les clefs possibles : on parlera alors d attaque exhaustive.
Pour lancer une telle attaque, un cryptanalyste a besoin d un petit bout de texte chiffr
et du texte en clair correspondant; une attaque exhaustive est une attaque texte en
clair connu. Dans le cas dun chiffrement par blocs, le cryptanalyste aura besoin d un
bloc de texte chiffr et du texte en clair correspondant: en gnral 64 bits. Obtenir cette
paire de texte chiffr et de texte en clair est plus facile que vous ne pourriez limaginer.
Un cryptanalyste peut obtenir une copie dun message en clair par certains moyens
et intercepter le texte chiffr correspondant. U est possible quil connaisse quelque
chose sur le format du texte chiffr; par exemple, cest un fichier crit sous W o r d , il
est prcd de lentte standard des courriers lectroniques, cest un fichier rpertoire
UNIX, une image au format T IF F , ou encore une fiche standard dans une base de
donne. Tous ces formats prsentent des octets prdfinis. Le cryptanalyste na pas
besoin de texte en clair pour lancer cette attaque.
Il est facile de calculer la complexit dune attaque exhaustive. Si la clef a 8 bits, il y a
28 = 256 clefs possibles. Il faudra donc 256 tentatives pour trouver la bonne clef et en
moyenne 128 suffiront. Si la clef a 56 bits, il y a alors 2 56 k 7,2 x 10ie clefs possibles. En
faisant lhypothse quun super-ordinateur peut essayer un million de clefs par seconde,
il faudra 2 000 ans pour trouver la bonne clef. Si la clef a 64 bits, il faudra alors 600 000
ans ce mme super-ordinateur pour trouver la bonne clef parmi les 2 64 1 , 8 x 1 0 19
clefs possibles. Si la clef a 128 bits, il faudra 1025 annes. L univers est g denviron
1010 ans, et donc 1025 ans est probablement suffisant. Avec une clef de 2 048 bits, un
million de super-ordinateurs hypothtiques travaillant en parallle passeraient 1 0 597
annes pour trouver la clf. D ici l, lunivers peut dj avoir implos ou stre rpandu
dans le nant.

164

Chapitre 7

Longueur des clefs

Avant de vous prcipiter pour inventer un cryptosystme avec une clef de 8 kilo-octets,
rappelez-vous quil y a une autre condition satisfaire : lalgorithme doit tre suffisam
ment solide pour quil ny ait pas d autre attaque possible que lattaque exhaustive. Ce
nest pas aussi facile quil y parat. La cryptographie est un art subtil. Les cryptosys
tmes qui semblent parfaits sont souvent mauvais. Des cryptosystmes solides peuvent
tre grandement affaiblis par de toutes petites modifications. Deux cryptosystmes so
lides utiliss ensemble sans prcautions peuvent interagir entre eux et produire des
textes cods faciles dchiffrer. Le meilleur conseil que lon puisse donner au cryp
tographe amateur est de suspecter tout nouvel algorithme et ce, mme avec un petit
brin de paranoa. Il vaut mieux avoir confiance en un algorithme parce que des crypto
graphes professionnels lont examin sous toutes ses coutures pendant de nombreuses
annes sans trouver de failles, plutt que parce que les inventeurs d un algorithme
clament haut et fort que leur algorithme est inviolable.
Rappelez vous une remarque importante faite au paragraphe 1.1 : la scurit dun cryp
tosystme doit rsider dans la clef et non pas dans les dtails de lalgorithme. Faites
toutes les hypothses suivantes : 1 - 1 attaquant a accs tous les dtails de votre algo
rithme. 2 il a accs autant de texte chiffr quil le souhaite et il peut attaquer votre
algorithme grce des textes chiffrs seulement. 3- il peut monter une attaque texte
en clair. 4il peut monter une attaque texte en clair choisi. Si votre cryptosystme
reste sr mme avec toute cette connaissance dans les mains de lattaquant, alors vous
avez atteint le niveau de scurit souhaitable.
Cet avertissement mis part, il y a suffisamment de marge de manuvre dans le
domaine de la cryptographie. Dans la vie de tous les jours, il y a des situations o un
tel niveau de scurit nest pas vraiment ncessaire. La plupart des attaquants nont
pas les connaissances et les ressources de nos Gouvernements, et mme ceux qui ont
de tels moyens ne sont pas forcment intresss casser votre cryptosystme. Si vous
avez lintention de comploter pour renverser un Gouvernement, alors tenez-vous en aux
algorithmes prouvs dcrits la fin de cet ouvrage. Pour les autres : amusez-vous !

Estimation du temps et du cot dune attaque exhaustive


Rappelez vous quune attaque exhaustive est une attaque texte en clair connu; elle
ne requiert quune petite quantit de texte chiffr et de texte en clair correspondant.
Si vous faites lhypothse que lattaque la plus efficace contre un algorithme est une
attaque exhaustive (une hypothse trs forte sil en est !), quelle doit tre la longueur
de la clef pour quune telle attaque soit impraticable?
Deux paramtres dterminent la vitesse dune attaque exhaustive : le nombre de clefs
tester et la vitesse de chaque test. La plupart des algorithmes clef secrte acceptent
comme clef nimporte quel motif de bits de longueur fixe. Lalgorithme DES a une
clef de 56 bits, il y a donc 256 clefs possibles. Certains algorithmes prsents dans cet
ouvrage ont une clef de 64 bits ; il y a donc 264 clefs possibles pour de tels algorithmes.
D autres encore ont une clef de 128 bits.
La vitesse laquelle on peut tester une clef est un facteur dterminant mais, toutefois, il
est moins important. Dans ce qui suit, je ferai lhypothse que le temps mis pour tester
une clef est le mme pour tous les algorithmes. Dans la ralit, pour un algorithme
donn, une clef pourrait tre teste deux, trois voire mme dix fois plus vite que pour
un autre algorithme. Ce petit facteur n est pas important car ce que nous regardons
ci-aprs c est ce qui rend une attaque exhaustive impraticable par un facteur un

7.1

Longueur des clefs secrtes

165

million ou plus !
La communaut cryptographique sest surtout concentre sur l attaque exhaustive de
lalgorithme DES. En 1977, Whitfield D i f f i e et Martin H e l l m a n [495] ont dcrit
une machine hypothtique. Elle serait compose dun million de processeurs et chacun
de ces processeurs serait capable de tester un million de clefs par seconde. Une telle
machine pourrait tester 256 clefs en 20 heures. Si une telle machine tait construite
pour attaquer une clef de 64 bits, elle testerait les 264 clefs en 214 jours.
Lattaque exhaustive est faite pour les processeurs parallles. Chaque processeur peut
tester un sous-ensemble des clefs. Les processeurs nont pas communiquer entre eux :
la seule communication ncessaire est un message indiquant la russite et la clef pour
laquelle elle a t obtenue. U ny a pas de contraintes de mmoire partage. Il est facile
de concevoir une telle machine parallle avec un million de processeurs, chacun d entre
eux calculant indpendamment des autres.
Plus rcemment, Michael Wiener a dcid de concevoir une machine spcialement d
die la recherche exhaustive [1599, 1600] L II a conu des puces et des cartes spciali
ses. Aprs estimation des prix, il sest aperu quon pouvait construire pour 1 million
de dollars une machine capable de casser une clef de 56 bits dans un temps moyen
de trois heures et demi (et sept heures au pire). De plus le rapport prix sur vitesse
est linaire. Le tableau 7.1 donne une gnralisation de ces rsultats pour diffrentes
longueurs de clef. Rappelez vous de la loi de M o o r e : la puissance de calcul des or
dinateurs double tous les 18 mois environ. Cela signifie que le cot est divis par 10
tous les cinq ans; ce qui cote 1 million de dollars en 1995 sera construit pour 100 000
dollars en lan 2000. Les ordinateurs systoliques pourraient mme faire mieux [726].

- Estimation du temps moyen dune attaque exhaustive par une machine


ddie construite en 1995.

Tab. 7.1

Cot
100 K$
IMS
10 M$
100 M$
1 G$
10 G$
100 G$
1 G$
10 G$

40
2 sec.
0 ,2 sec.
0 ,0 2 sec.
2 millisec.
0 , 2 millisec.
0 ,0 2 millisec.
2 microsec.
0 ,2 microsec.
0 ,0 2 microsec.

Longueur de la clef en bits


64
80
56
1 an
35 heures
700 sicles
3,5 heures 37 jours
70 sicles
2 1 min.
4 jours
7 sicles
2 min.
9 heures 70 ans
13 sec.
7 ans
1 heure
1 sec.
5,4 min.
245 jours
0 , 1 sec.
32 sec.
24 jours
3 sec.
2,4 jours
0 , 0 1 sec.
1 millisec.
0,3 sec.
6 heures

112

128

ans
1 0 1 3 ans
1 0 1 2 ans
1 0 1 1 ans
1 0 10 ans
1 0 9 ans
1 0 8 ans
1 0 7 ans
1 0 ans

1 0 19

1 0 14

1 0 18
1 0 17
1 0 16
1 0 15
1 0 14
1 0 13
1 0 12
10 11

ans
ans
ans
ans
ans
ans
ans
ans
ans

Pour les clefe de 56 bits, cest la porte de la plupart des grandes entreprises et
de nombreuses organisations criminelles. Les budgets militaires des nations les plus
industrialises permettraient de construire une machine casser les clefs de 64 bits.
Casser une clef de 80 bits est toujours hors de porte, mais si la tendance actuelle
continue, cela changera dans 30 ans seulement.
U est bien sr ridicule d estimer la puissance des ordinateur venir dans 30 ans.
Une avance dans quelque technologie de science-fiction pourrait faire de ces chiffres
1. II a conu la machine pour DES, mais lanalyse tient pout la plupart des algorithmes.

166

Chapitre 7

Longueur des clefs

une histoire drle. loppos, des limitations physiques encore inconnues pourraient
impliquer quils sont exagrment optimistes. En cryptographie, il vaut mieux tre
pessimiste. Opter pour un algorithme avec des clefs de 80 bits semble une vue trs
court terme. Il faut des clefs d au moins 112 bits.
Si un attaquant veut vraiment trouver une clef, tout ce qui lui reste faire est de d
penser le montant ncessaire. En consquence, il semble prudent destimer la valeur
minimale d une clef: quelle valeur peut tre attribue une clef avant que cela nait
un sens conomique de la trouver ? Pour donner un exemple extrme, si un message en
clair vaut 1,39 $, cela naurait pas grand sens de dpenser 10 million de dollars pour
trouver la clef. D un autre cte, si le message en clair vaut 100 million de dollars, alors
le dchiffrement de ce seul message justifierait la dpense. Notons aussi que la valeur
de certains messages dcrot rapidement avec le temps.

Mthodes logicielles de recherche exhaustive


Sans matriel spcialis et sans machines massivement parallles, une attaque exhaus
tive est significativement plus difficile. Une attaque exhaustive par logiciel est environ
1 0 0 0 fois plus lente quavec une machine ddie.
Lavantage dune attaque exhaustive par logiciel nest pas sa rapidit mais bien le
fait quelle est gratuite . Cela ne cote rien de faire chercher des clefs un micro
ordinateur quand il ne fait rien dautre. Sil trouve une clef, tant mieux. Sil nen trouve
pas, rien nest perdu. Rien nempche de mettre un rseau entier de micro-ordinateurs
la tche. Une exprience rcente avec lalgorithme DES a utilis le temps libre de
40 stations de travail pour tester 234 clefs en un seul jour [605]. A cette vitesse, cela
prendrait 4 millions de jours pour tester toutes les clefs mais si suffisamment de gens
essaient une attaque telle que celle-l, quelquun, quelque part sera peut-tre chanceux,
comme il est dit dans [605] :
Le nud dune attaque par logiciel est la pure malchance. Imaginez un r
seau informatique universitaire avec 512 stations de travail mises en rseau.
Sur certains campus ce serait un rseau de taille moyenne. Elles pourraient
mme tre rpandues de par le monde et elles coordonneraient leur activit
par courrier lectronique. Faisons lhypothse que chaque station de travail
est capable deffectuer 15 000 chiffrements par seconde ... En tenant compte
du surcot pour tester une clef et passer la clef suivante, ce chiffre est
ramen 8 192 tests par seconde par machine. Pour essayer toutes les clefs
possibles [de 56 bits] cela prendrait ainsi 545 ans (en faisant lhypothse
que le rseau est ddi cette tche 24 heures par jour). Notez quavec
ces donnes cela donne nos tudiants casseurs de code une chance sur
200 000 de trouver une clef en un jour. Sur un long week-end, leurs chances
passent 1 sur 66000. Plus le matriel est rapide, ou plus il y a d ordina
teurs disponibles, plus leurs chances augmentent. Ce ne sont pas de bons
rapports pour gagner au tierc mais cela nest cependant pas acceptable.
De tels rapports sont meilleurs que ce que la loterie nationale offre. Une
chance sur un million? Cela ne peut pas se reproduire en mille ans?
Il nest plus possible honntement de dire de telles choses. Est-ce un risque
acceptable de nos jours ?

7.1

Longueur des clefs secrtes

167

Lutilisation dun algorithme avec une clef de 64 bits au lieu de 56 bits rend ce type
dattaque 256 fois plus difficile. Avec une clef de 40 bits, la situation est nettement plus
dramatique. Un rseau de 400 ordinateurs, chacun capable de faire 32 000 chiffrements
par seconde, peut effectuer une attaque exhaustive contre une clef de 40 bits en une
seule journe2.
Lutilisation dune clef de 128 bits rend une telle attaque ridicule envisager.
Lindustrie estime que d ici 1996, il y aura 200 millions d ordinateurs de par le
monde. Cette estimation inclut tout depuis les super-ordinateurs Cray jusquaux nanoordinateurs. Si tous ces ordinateurs coopraient une attaque exhaustive raison de
1 million de chiffrements par seconde, cela prendrait encore 1 million de fois lge de
lunivers pour trouver la clef.

Rseaux neuronaux
Les rseaux neuronaux ne sont pas trs utiles pour la cryptanalyse, premirement
cause de la forme de lespace des solutions. Les rseaux neuronaux sont efficaces dans
les problmes o il y a une continuit des solutions, certains plus que dautres. Ceci
permet un rseau neuronal d apprendre et de proposer des solutions de plus en plus
adaptes au fur et mesure. Les opportunits dapprendre quelque chose quand on
casse un algorithme sont rares: soit on retrouve la clef, soit on ne la retrouve pas3.
Les rseaux neuronaux marchent bien dans les environnements structurs o il y a
quelque chose apprendre mais pas dans le monde de grande entropie et d apparent
chaos quest la cryptographie.

Virus
La difficult majeure dans une attaque de cette ampleur est de convaincre chaque
utilisateur individuel de se prter lexprience. Vous pourriez demander poliment mais
cela prendrait trop de temps. Pire mme, ils pourraient refuser. Vous pourriez essayer
dinvestir leurs machines la nuit mais ce serait encore plus coteux en temps. De plus,
vous risqueriez de finir en prison pour violation de domicile. Les virus informatiques
pourraient rpandre un programme de recherche exhaustive de clef efficacement sur un
nombre maximum dordinateurs.
Cette ide, particulirement insidieuse, a t prsente pour la premire fois dans [1595].
Lattaquant crit un virus informatique et le lche dans la nature. Ce virus-l ne refor
mate pas le disque dur, ou ne dtruit pas des fichiers ; tout ce quil fait cest travailler
une attaque exhaustive quand lordinateur na rien d autre faire. Diffrentes tudes
ont montr que les micro-ordinateurs sont inactifs 70 % 90 % du temps. Ainsi le
virus naurait aucune difficult pour trouver du temps pour accomplir sa tche. Si par
ailleurs il est bnin, il peut mme passer inaperu en continuant sa tche.
ventuellement, une des machines infectes trouvera la bonne clef. A ce point, il y deux
manires de procder. Premirement, le virus peut donner naissance un nouveau virus
diffrent. Celui-ci ne ferait rien d autre que se rpandre et dtruire toute copie de son
anctre, tout en transportant de machine en machine linformation concernant la bonne
2. En 1992, les algorithmes RC2 et RC4 ont t autoriss lexportation hors des Etats-Unis pour
autant que leur clef soit restreinte 40 bits (voir 13.8).
3. Du moins, cest vrai quand lalgorithme est bon.

Chapitre 7

168

Longueur des clefs

clef. Lors de ses prgrinations, il finirait par atterrir sur la machine de celui qui a lanc
lattaque initiale.
Une autre approche plus subtile consisterait afficher le message suivant sur lcran
de lordinateur infect qui a trouv la bonne clef :
Il y a un problme srieux cet ordinateur.
Veuillez appeler le numro de tlphone 1-800-123-4567
et lire le nombre de 64 bits suivant l oprateur:
xxxx xxxx xxxx xxxx
Il y a une prime de 100 $ la premire personne qui
communiquera cette information.
Quelle est lefficacit dune telle attaque? Faisons lhypothse quun ordinateur infect
essaie 1 000 clefs par seconde. C est nettement moins que ce que lon attendrait comme
vitesse, mais noublions pas que cet ordinateur est sens accomplir dautres tches.
Faisons galement lhypothse quun tel virus peut infecter 10 millions d ordinateurs.
Le virus pourrait casser une clef de 56 bits en 83 jours et une clef de 64 bits en 58
ans. Vous devrez peut-tre corrompre les auteurs de vaccins informatiques mais cest
votre problme. Toute augmentation de la vitesse des micro-ordinateurs ou du nombre
dordinateurs rendrait bien videmment cette attaque plus efficace.

La loterie chinoise
La loterie chinoise est une suggestion originale mais ralisable pour une machine
massivement parallle pour attaquer lalgorithme DES [1289]. Imaginez que lon incor
pore une puce de recherche exhaustive de clef, capable de faire un million de tests par
seconde dans chaque radio et dans chaque tlvision nouvellement construits. Chaque
puce est programme pour tester un ensemble diffrent de clefs et ce automatiquement,
ds quelle reoit une paire texte en clair, texte chiffr sur les ondes. Alors chaque
fois que le Gouvernement chinois veut casser une clef, il diffuse les donnes et toutes
les radios et les tlvisions du pays se mettent la tche. Eventuellement, la bonne
clef apparatra sur lcran de tlvision de quelquun, quelque part dans le pays. Le
Gouvernement chinois paie alors un prix cet heureux gagnant dune loterie un peu
particulire. Grce la promesse dune rcompense, le Gouvernement est sr que la
bonne clef sera transmise correctement et en prime, cela favorise la vente de radios et
de tlvisions contenant cette puce spciale.
Si chaque homme, femme et enfant en Chine possde une radio ou une tlvision,
la bonne clef, pour un algorithme qui utilise 56 bits pour la clef, sera trouve en 64
secondes. Si seulement un chinois sur dix possde une radio ou une tlvision (ce qui
est plus proche de la ralit), alors la bonne clef apparatra au bout de 11 minutes. La
bonne clef pour un algorithme 64 bits apparatra au bout de 4 heures et demie (45
heures si seulement un chinois sur dix possde une radio ou une tlvision).
Certaines modifications sont ncessaires pour rendre cette attaque praticable. Premi
rement, il serait plus facile que chaque puce essaie des clefs alatoires au lieu dun
ensemble prdtermin de clefs. Cela ne ralentirait lattaque que de 39 % (pas grand
chose en comparaison des chiffres que nous manipulons). De plus, le parti commu
niste chinois devrait convaincre chaque personne d couter ou de regarder une certaine

7.1

Longueur des clefs secrtes

169

mission un certain moment de la journe pour tre sr que toutes les radios et tl
visions sont oprationnelles au moment de la diffusion de la paire texte en clair, texte
chiffr . Finalement, chacun recevrait comme instruction de contacter le Central-PeuImporte-Son-Nom si jamais une clef apparat lcran et de lire les nombres qui y
figurent. Le Parti pourrait mme transformer cela en loterie : la personne qui trouve la
clef, reoit un prix.
Le tableau 7.2 montre lefficacit de la loterie chinoise pour diffrents pays et pour
diffrentes longueurs de clef. La Chine est clairement en bonne position pour conduire
une telle attaque, mais elle devrait quiper chaque homme, femme et enfant de sa
propre radio ou tlvision. Les Etats-Unis ont moins d habitants mais beaucoup plus
dquipement par tte dhabitant. Ltat du Wyoming pourrait casser une clef de 56
bits rien qu lui seul en moins dun jour.
Tab. 7.2 Estimations pour une attaque exhaustive pour la loterie chinoise (les donnes
concernant la population et le nombre de radios et tlvisions proviennent de 1995
World Almanac and Book o f Facts ) _____________________________________________

Contre
Chine
Etats-Unis
Irak
Isral
Wyoming (USA)
Morehead, NC (U SA)

Population
(approx.)
1190431000
260 714000
19890000
5051000
470 000
6100

Nombre de
tlvisions
et radios
257000000
739000000
4730000
3 640000
1330000
17300

Temps ncessaire
Clef de 56 bits
Clef de 64 bits
280 secondes
20 heures
97 secondes
6,9 heures
4,2 heures
44 jours
5,5 heures
58 jours
160 jours
15 heures
48 jours
34 annes

Biotechnologie
Si les biopuces sont possibles, il serait alors idiot de ne pas sen servir pour construire
un outil dattaque exhaustive rpartie. Considrez un animal hypothtique, malencon
treusement appel DESosaure [1289]. Il est constitu de cellules biologiques capables
de tester les clefs possibles. La paire texte en clair-texte chiffr est diffuse aux
cellules par un canal optique (ces cellules sont transparentes, vous voyez). Les solutions
sont transmises lorgane vocal du DESosaure par lintermdiaire de cellules spciales
qui se propagent dans le systme circulatoire de lanimal.
Un dinosaure typique a 1014 cellules (sans compter les bactries). Si chacune dentre
elles est capable d effectuer un million de chiffrements par seconde (daccord, cela est
un grand si ), retrouver une clef de 56 bits prendrait sept dix millimes de seconde.
Retrouver une clef de 64 bits prendrait moins de deux diximes de seconde. Retrouver
une clef de 128 bits prendrait encore 1 0 1 1 annes, malgr tout.
Une autre approche biologique serait dutiliser des algues modifies gntiquement pour
la cryptographie et qui seraient capables deffectuer des attaques exhaustives contre les
algorithmes cryptographiques [1289]. Ces organismes rendraient possible la ralisation
dune machine distribue avec plus de processeurs, car ils pourraient couvrir une grande
surface. La paire texte en clair-texte chiffr pourrait tre diffuse par satellite. Si un
organisme trouve le rsultat, il pourrait induire un changement de couleur des cellules
voisines pour communiquer le rsultat en retour au satellite.

170

Chapitre 7

Longueur des chefs

Faites lhypothse quune cellule d algue typique a la taille d un cube de 10 fi de ct


(cela est probablement une large estimation), alors 1 0 1 5 dentre elles peuvent remplir
un mtre cube. Dversez-les dans locan pour couvrir une superficie de 518 km2, sur
une paisseur deau d un mtre (vous vous dbrouillez pour savoir comment faire
moi je suis juste celui qui a les ides), et vous aurez 1 0 23 d entre elles flottant sur
locan (ce qui reprsente plus de 380 milliards de litres4). Si chacune d entre elles
peut essayer un million de clefs par seconde, elles retrouveront la clef dun algorithme
avec une clef de 128 bits en juste un peu plus de 100 ans5. Des perces dans la vitesse
de calcul des algues, du diamtre des algues ou mme dans la taille de la flaque sur
locan pourraient rduire ces nombres de faon significative.
Ne me parlez mme pas de la nanotechnologie.

Limitations thermodynamiques
Selon le second principe de la thermodynamique, une certaine quantit d nergie est
ncessaire pour reprsenter de linformation. Enregistrer un simple bit en changeant
ltat dun sytme requiert une quantit d nergie suprieure kT, o T est la temp
rature fondamentale du systme et A; la constante de B o l t z m a n . (Restez avec moi, la
leon de physique est presque termine.)
Etant donn que k = 1,38.10 16 et que la temprature ambiante de lunivers est de 3,2,
un ordinateur idal marchant 3,2 consommerait 4,4.10 ~ 16 chaque modification ou
effacement d un bit. Faire tourner un ordinateur une temprature plus basse que le
rayonnement cosmique environnant demanderait un apport nergtique suplmentaire
pour faire fonctionner une pompe chaleur.
Maintenant, le soleil dgage chaque anne une nergie gale 1 ,2 1 .1041 environ. Cest
assez pour effectuer 2 ,7 .1 0 56 changements de bit dans notre ordinateur idal; et assez
pour quun compteur de 18 7 bits prenne toutes ses valeurs. En construisant une sphre
de D y s o n autour du soleil et en captant toute son nergie pendant 32 ans, notre
ordinateur pourrait compter jusqu 2 192. Bien-sr il ne resterait pas assez d nergie
pour effectuer dautres oprations utiles avec ce compteur.
Mais il sagit juste d une toile, pas trs doue pour cela. Une supemova moyenne
dgage quelque chose comme 1051. (Environ cent fois plus d nergie serait dgage
sous forme de neutrinos, mais laissons les passer pour linstant.) Si toute cette nergie
pouvait tre canalise afin d effectuer un seul calcul gigantesque, un compteur de 219
bits pourrait passer par tous ses tats.
Ces nombres nont rien voir avec la technologie du matriel; ils sont les bornes sup
rieures autorises par la thermodynamique. Et ils impliquent fortement quune attaque
exhaustive contre des clefs de 256 bits restera impossible jusqu ce que les ordinateurs
soient construits avec autre chose que de la matire et fonctionnent ailleurs que dans
lespace.

7.2

Longueur des clefs publiques

Les fonctions sens unique ont t traites dans le paragraphe 2.3. Multiplier deux
grands nombres premiers est une fonction sens unique ; il est facile de multiplier les
4. Par comparaison, la catastrophe de VExxon Valdez a rpandu 38 millions de litres de ptrole.
5. Lexplosion dmographique rsultante des algues est votre problme.

7.2

Longueur des clefs publiques

171

nombres pour obtenir un produit, mais difficile de factoriser ce produit et de retrouver


les deux grands nombres premiers (voir 11.3). La cryptographie clef publique utilise
lide de faire une fonction sens unique brche secrte. En fait, c est un mensonge ;
factoriser est suppos tre un problme dur (voir 11.4). Pour chacun dentre-nous, il
semble ltre. Mais mme sil lest, personne ne peut prouver que les problmes durs
le sont vraiment. La plupart d entre-nous pensons que factoriser est dur, mais cela na
jamais t prouv mathmatiquement, dune faon ou dune autre.
Il est intressant de sy attarder un peu. Il est facile de simaginer dans 50 ans, en train
de se remmorer le bon vieux temps o lon pensait que la factorisation tait dure,
o la cryptographie tait base sur cette factorisation et o des entreprises gagnaient
de largent dans ce domaine. Il est facile d imaginer que les dveloppements futurs en
thorie des nombres rendront la factorisation plus simple ou que les dveloppements
en thorie de la complexit rendront la factorisation triviale. Il ny a aucune raison de
croire que ceci arrivera (et la plupart des personnes qui en savent assez pour se faire
leur propre opinion vous diront que cest peu probable) mais il ny a non plus pas de
raison de croire que cela narrivera pas.
Dans tous les cas, aujourdhui, les algorithmes dominants de chiffrement clef pu
blique sont bass sur la difficult de factoriser des grands nombres qui sont le produit
de deux grands nombres premiers. (D autres algorithmes reposent sur une chose ap
pele problme logarithmique discret mais, pour le moment, supposons que le mme
raisonnement sapplique.) Ces algorithmes sont aussi sensibles aux attaques exaustives,
mais dun type diffrent. Casser ces algorithmes ne veut pas ncessairement dire es
sayer toutes les clefs possibles ; casser ces algorithmes veut dire essayer de factoriser
un grand nombre (ou de prendre des logarithmes discrets dans un trs grand corps
fini un problme similaire). Si le nombre est trop petit, vous n avez aucune scurit.
Si le nombre est assez grand, vous tes protg contre toute la puissance de calcul mon
diale jusqu ce que le soleil devienne une nova (tant donne la connaisance actuelle
des mathmatiques). Le paragraphe 11.3 parle de factorisation avec plus de dtails
mathmatiques ; je me limiterai ici au temps ncessaire pour factoriser des nombres de
longueurs variables.
Factoriser des grands nombres est dur. Hlas pour les concepteurs d algorithmes, cela
devient plus facile. Pis encore, cela devient plus facile plus rapidement que les ma
thmaticiens lavaient prvu. En 1976, Richard G u y crivait : Je serais surpris que
quiconque puisse factoriser rgulirement des nombres dune taille de 1 0 80 sans forme
spciale durant ce sicle. [681]. En 1977, Ron RlVEST disait que factoriser un nombre
125 chiffres prendrait 40 quadrillions dannes [602]. En 1994, un nombre 129 chiffres
a t factoris [71]. Sil y a l une leon retenir, cest bien que faire des prdictions
est stupide.
Le tableau 7.3 montre les records de factorisation des douzes dernires annes.
Lalgorithme de factorisation le plus rapide tait alors le crible quadratique (voir 11.3).
Ces chiffres sont assez effrayants. Il est commun aujourdhui de voir des nombres de
512 bits utiliss dans des systmes oprationnels. Les factoriser, et par consquent
compromettre leur scurit, est tout fait dans le domaine du possible: lutilisation
de toutes les machines relies lInternet durant une paire de jours fris y suffirait.
La puissance de calcul est gnralement mesure en mips-ans : un ordinateur effectuant
un million dinstructions par seconde (mips) pendant une anne, soit peu prs 3 *
1013 instructions. Par convention, une machine d 1 mips est quivalente au DEC VAX

172

Chapitre 7

T a b . 7.3

Anne
1983
1985
1988
1989
1993
1994

Longueur des clefs

- Factorisation utilisant le crible quadratique

Nombre de dcimales
des nombres factoriss
71
80
90
12 0

Combien de fois un nombre de 512 bits


est plus dur factoriser
> 2 0 millions
> 2 millions
250000
30000
500

129

10 0

10 0

11/780. Donc un mips-an est lquivalent d un VAX 11/780 tournant pendant un an.
(Un Pentium 100 MHz est une machine de 50 mips; une machine Paragon d Intel
1800 processeurs est une machine de 50000 mips.)
En 1983, factoriser un nombre 71 chiffres demandait 0,1 mips-an ; la mme opration
en 1994 avec un nombre 129 chiffres demandait 5000 mips-an. Cette augmentation
insense de la puissance de calcul est principalement le rsultat de lintroduction du
calcul distribu, utilisant le temps d inactivit des stations de travail d un rseau. Cette
tendance a t initie par Bob S i l v e r m a n et dveloppe par Arjen L e n s t r a et Mark
M a n a s s e . En 1983, factoriser prenait 95 heures CPU sur un seul Cray X-M P ; en 199A
cela ncessitait 5000 mips-ans et utilisait le temps dinactivit de 1600 ordinateurs
travers le monde pendant environ huit mois. Les mthodes modernes de factorisation
se prtent ce genre de distribution des tches.
La situation sempire encore. Un nouvel algorithme de factorisation a remplac le crible
quadratique : le crible gnral sur corps numrique. En 1989, les mathmaticiens vous
auraient dit que le crible gnral sur corps numrique ne serait jamais pratique. En
1992, ils vous auraient dit que ctait pratique, mais seulement plus rapide que le
crible quadratique dans les cas de nombres plus de 130 150 chiffres. Aujourdhui,
il est reconnu tre plus rapide que le crible quadratique pour des nombres compre
nant bien moins de 116 chiffres [504, 637]. Le crible gnral sur corps numrique peut
factoriser un nombre de 512 bits plus de 10 fois plus rapidement que le crible qua
dratique. Lalgorithme tournerait moins dun an sur un Paragon Intel 1800. Le ta
bleau 7.4 nous donne le nombre de mips-ans ncessaires pour factoriser des nombres de
diffrentes tailles, en considrant les applications actuelles du crible gnral sur corps
numrique [1195].

Tab.

7.4 - Factorisation utilisant le crible gnral sur corps numrique


Nombre de bits
512
768
1024
1280
1536
2048

Mips-ans ncessaires pour factoriser


30000
2 * 10 8
3*10n
1 * 1 0 14
3 * 1016
3 * 102

7.2

Longueur des clefs publiques

113

Le crible gnral sur corps numrique est de plus en plus rapide. Les mathmaticiens
trouvent toujours des nouvelles optimisations, des nouvelles techniques. Il ny a aucune
raison de penser que cette tendance ne continuera pas. Un algorithme voisin, le crible
spcial sur corps numrique, peut dj factoriser des nombres dune forme spcialise (ce
sont des nombres gnralement pas utiliss pour la cryptographie) bien plus rapidement
que le crible gnral sur corps numrique peut factoriser des nombres gnraux de mme
taille. Il nest pas draisonnable de penser que le crible gnral sur corps numrique
peut tre optimis pour aller aussi vite [1195] ; il est d ailleurs fort possible que la NSA
sache dj comment faire. Le tableau 7.5 donne le nombre de mips-ans ncessaires
pour que le crible spcial sur corps numrique factorise des nombres de diffrentes
longueurs [1195].

Tab.

7.5 - Factorisation utilisant le crible spcial sur corps numrique


Nombre de bits
512
768
1024
1280
1536
2048

Mips-ans ncessaires pour factoriser


<200
10 0 0 0 0

3 * 107
3 * 109
2 * 1 0 11
4 * 1014

Lors dun atelier de lInstitut europen pour la scurit des systmes en 1991, les
participants ont convenu quun module de 1024 bits devrait tre suffisant pour des
secrets long terme jusquen 2005 [157]. Nanmoins, ils ajoutrent: Bien que les
participants de cet atelier pensent tre les plus qualifis dans leurs domaines respectifs,
cette dclaration [concernant la durabilit de la scurit] devrait tre considre avec
beaucoup de prudence. C est un bon conseil.
Le cryptographe avis est trs prudent lorsquil choisit la longueur de clefs publiques.
Pour dterminer de quelle longueur de clef vous avez besoin, il faut que vous considriez
la fois le niveau de scurit dsir et la dure de vie de la clef, ainsi que le nec plus
ultra de la factorisation. Aujourdhui, vous avez besoin dun nombre de 1024 bits pour
avoir le niveau de scurit que vous aviez en 1980 avec un nombre de 512 bits. Si
vous voulez que vos clefs restent sres pour les 20 prochaines annes, 1024 bits sont
probablement insuffisants.
Mme si vos secrets ne valent pas leffort investit pour factoriser votre module, vous
tes peut-tre en danger. Imaginez un systme bancaire automatique qui utilise le RSA
pour la scurit. Martin peut aller devant la justice et dclarer : Avez-vous lu dans
les journaux quen 1994 le RSA-129 a t cass et que les nombres de 512 bits peuvent
tre factoriss par toute organisation prte dpenser quelques millions de dollars et
attendre quelques mois? Pour sa scurit, ma banque utilise des nombres 512 bits,
et jen profite pour vous dire que ce nest pas moi qui ait effectu ces septs retraits.
Mme si Martin ment, il est probable que le juge somme la banque de sexpliquer.
Mais alors, pourquoi ne pas utiliser des clefs de 10000 bits? Vous pouvez, mais sachez
que plus votre clef sera longue, plus vous passerez de temps la calculer. Vous voulez
une clef assez longue pour quelle soit sre, mais assez courte pour que le calcul soit
faisable.

Chapitre 7

174

Longueur des clefs

Un peu plus haut dans ce paragraphe, j ai dit que faire des prdictions est stupide. Je
vais maintenant en faire quelques-unes. Le tableau 7.6 regroupe mes recommandations
pour les longueurs de clefs publiques, selon le niveau de scurit de votre clef que
vous dsirez. Il y a trois longueurs de clefs pour chaque anne, une pouvant supporter
les attaques individuelles, une sre pouvant supporter les attaques dune entreprise
majeure, et une pouvant supporter les attaques dun gouvernement.

T a b . 7.6

Anne
1995
2000

2005
2 0 10

2015

- Longueurs recommandes de clefs publiques (en bits)

contre un individu
768
1024
1280
1280
1536

contre une entreprise


1280
1280
1536
1536
2048

contre un gouvernement
1536
1536
2048
2048
2048

Voici quelques hypothses de [71] :


Nous pensons pouvoir acqurir 100 000 machines sans dvelopper d efforts
surhumains et en toute probit. En fait, nous ne lcherions pas un virus sur
Internet pour trouver les ressources pour nous. Beaucoup dorganisations
ont chacune des milliers de machines sur le rseau. Les utiliser demanderait
une grande diplomatie, mais ne devrait pas tre impossible. En considrant
la puissance moyenne de 5 mips et une dure d un an, il ne semble pas trop
draisonnable de sembarquer sur un projet qui exigera un demi-million de
mips-ans.
Le projet de factorisation d un nombre 129 chiffres a mobilis peu prs 0,03 pourcent
de la puissance de calcul globale dInternet [1195], et ils nont vraiment pas forc. Il
est raisonnable de penser quun projet ayant fait lobjet dune bonne campagne de
publicit puisse mobiliser 2 pourcents de la puissance de calcul mondiale pendant une
anne.
Supposons quun cryptanalyste puisse mettre la main sur 10000 mips-ans, une grande
entreprise peut en avoir 107 et un gouvernement 10. Supposons galement que la
puissance de calcul augmente dun facteur 10 tous les cinq ans. Enfin, supposons que
les progrs mathmatiques en matire de factorisation nous permettent de factoriser
des nombres gnraux la vitesse du crible spcial sur corps numrique. (Ce nest pas
encore possible, mais cette avance pourrait survenir tout moment.) Le tableau 7.6
recommande diffrentes longueurs de clefs pour la scurit en diffrentes annes.
Noubliez pas de prendre la valeur de la clef en considration. Les clefs publiques sont
souvent utilises pour scuriser des choses de grande valeur pour une longue dure:
la clef matresse dune banque pour un systme d argent lectronique, la clef quun
gouvernement utilise pour certifier ses passeports ou la clef publique d une signature
lectronique dun notaire. Cela ne vaut probablement pas la peine de passer des mois
de calcul pour casser la clef prive dun individu, mais si vous pouvez imprimer votre
propre argent avec une clef que vous avez cass, lide devient plus attrayante. Une clef
de 1024 bits est assez longue pour signer quelque chose qui sera vrifi dans la semaine,

7.2

Longueur des clefs publiques

175

le mois, ou mme quelques annes. Mais vous ne voulez srement pas vous retrouver
devant la justice dans 2 0 ans avec un document sign lectroniquement et voir la partie
oppose dmontrer comment contrefaire un document avec la mme signature.
Faire des prdictions au-del d un future proche est encore plus insens. Qui connait
les progrs qui vont tre effectu en calcul, en matire de rseau et en mathmatiques
dici lan 2020? Nanmoins, si on considre la situation dun point de vue gnral,
pour chaque dcade, nous pouvons factoriser des nombres deux fois plus longs que la
dcade prcdente. Ceci nous mne au tableau 7.7.
T ab. 7.7 - Prdictions de factorisation long terme
Anne
1995
2005
2015
2025
2035
2045

Longueur de clef (bits)


1024
2048
4096
8192
16384
32 768

Dun autre ct, la technologie de factorisation peut atteindre son apoge bien avant
2045. Dici vingt ans, nous serons peut-tre capable de factoriser nimporte quel
nombre. Je pense nanmoins que ceci est trs peu probable.
Tout le monde ne sera pas d accord avec mes recommandations. La NSA a mandat
des clefs de 512 1024 bits pour leur standard de signature lectronique (voir 20.1),
ce qui est bien moins que ce que je recommande pour une scurit long terme. Pretty
Good Privacy (voir 24.12) a une longueur de clef RSA maximum de 2047 bits. Arjen
LENSTRA, le plus clbre factorisateur mondial, refuse de faire des prdictions audel de 10 ans [960]. Le tableau 7.8 nous livre les recommandations sur la longueur de
clef de Ron R i v e s t , faites en 1990, que je considre bien trop optimistes [1334]. Bien
que son analyse paraisse correcte sur papier, les vnements rcents montrent que des
surprises arrivent rgulirement. Il semble logique de choisir ses clefs afin de se protger
de futures surprises.
T ab . 7.8

- Recommandations optimistes de
Anne
1990
1995
2000

2005
2 0 10

2015
2020

Faible
398
405
422
439
455
472
489

iv e s t

Moyenne
515
542
572
602
631
661
677

sur la longueur de clef (en bits)

Eleve
1289
1399
1512
1628
1754
1884
2017

Les estimations les plus basses parlent dun budget de 25 000 dollars, de lalgorithme
du crible quadratique et d un progrs technologique de 20 pourcents par an. Les es
timations moyennes parlent d un budget de 25 millions de dollars, de lalgorithme du

176

Chapitre 7

Longueur des clefs

crible gnral sur corps numrique et d un progrs technologique de 33 pourcents par


an. Enfin, les estimations les plus optimistes avancent un budget de 25 milliards de
dollars, un algorithme du crible gnral quadratique tournant la vitesse du crible
spcial sur corps numrique et un progrs technologique de 45 pourcents par an.
Il est toujours possible quun progrs en matire de factorisation me surprenne, mais
j ai intgr ceci dans mes calculs. Mais pourquoi me faire confiance? Je viens de prouver
ma stupidit en faisant des prdictions.

Calculs biologiques
Maintenant, cela devient trange. En 1994, Lonard M. A d l e m a n a trouv une m
thode pour rsoudre un problme N P complet (voir 1 1 .2 ) dans un laboratoire de
biochimie, en utilisant des molcules d ADN pour reprsenter les solutions du pro
blme [21]. (Ici, par solutions , on entend rponses et non pas liquide conte
nant des substances .) Le problme qu A d l e m a n a rsolu tait un cas particulier
du problme de trouver un chemin orient Hamiltonien : soit une carte avec des villes
connectes par des routes sens unique, trouvez un chemin de la ville A la ville Z qui
ne passe exactement quune seule fois par chaque ville de la carte. Chaque ville tait
reprsente par des chanes alatoires distinctes de 20 bases d ADN ; avec les techniques
conventionnelles de biologie molculaire, A d l e m a n a synthtis 50 picomoles (30 mil
lions de millions de molcules) de la chane dADN reprsentant chaque ville. Chaque
route tait aussi reprsente par une chane de 20 bases d ADN, mais ces chanes nont
pas t choisies de faon alatoire : elles ont t choisies judicieusement de manire ce
que la fin de la chane dADN reprsentant la route de la ville P la ville K ( route
P K ) ait tendance se rapprocher de la chane dADN reprsentant la ville P , et que
la fin de la route P K ait tendance se rapprocher de la ville K .
A d l e m a n a synthtis 50 picomoles dADN reprsentant chaque route, les a mix tous
ensemble avec lADN reprsentant toutes les villes et a ajout un enzyme ligase qui
noue ensemble les bouts de molcules d ADN. La relation judicieuse entre les chanes
dADN de la route et les chanes dADN de la ville fait que la ligase lie les chanes
dADN de la route entre-elles de manire lgale. C est--dire que lissue de la route
qui va de P A sera toujours relie au dbut d une route qui part de la ville K ,
jamais lissue d une autre route ou au dbut dune route qui part dune ville autre
que K . Aprs un temps de raction minutieusement limit, la ligase a construit un
grand nombre de chanes d ADN reprsentant des chemins multiroutes lgaux bien
qualatoires sur la carte.
De cette soupe de chemins alatoires, A d l e m a n peut retrouver la plus infime trace
(peut-tre mme une seule molcule) d ADN qui reprsente la rponse au problme. En
utilisant les techniques communes de la biologie molculaire, il carte toutes les chanes
d ADN qui reprsentent des chemins trop longs ou trop courts. (Le nombre de routes
dans le chemin cherch doit tre gal au nombre de villes moins un.) Ensuite, il carte
toutes les chanes d ADN qui ne passent pas par la ville A, puis celles qui ne passent
pas par la ville B, etc... Sil reste un ADN lissue de cette srie d liminations, la
squence de routes quil dcrit est la solution au problme de dcouverte d un chemin
orient Hamiltonien.
Par dfinition, toute instance d un problme N P complet peut tre transform, en
temps polynomial, en une instance de tout autre problme N P complet, et par cons
quent en un problme de dcouverte d un chemin orient Hamiltonien. Depuis les an

7.2

Longueur des clefs publiques

177

nes 1970, les cryptologues ont essay d utiliser les problmes N P c o m p l e t s pour la
crypotographie clef publique.
Bien que le cas rsolu par A d l e m a n fut modeste (sept villes sur sa carte, une nigme
qui peut tre rsolue en rflchissant quelques minutes), la technique en est ses
balbutiements et ne rencontrerait aucun obstacle tre tendue des problmes
plus consquents. C est pourquoi, les arguments propos des protocoles cryptographiques bass sur des problmes N P c o m p l e t s , arguments qui jusqualors commen
aient par Supposons quun adversaire possde un million de processeurs, chacun
dentre-eux pouvant effectuer un million de tests par seconde, pourraient bientt de
venir Supposons quun adversaire possde un millier de lieux de fermentation, chacun
ayant une capacit de 2 0 0 0 0 litres.

Ordinateurs quantiques
Attention, cela devient encore plus trange. Le principe sous-jacent de lordinateur
quantique inclut la dualit onde-particule dcouverte par Albert E i n s t e i n . Un photon
peut simultanment exister dans un grand nombre d tats. L exemple classique est celui
du photon qui se comporte comme une onde quand il rencontre un mirroir partiellement
argent ; il est la fois rflchi et transmis. C est tout comme une vague qui vient se jeter
sur une digue qui comporte une petite ouverture, la vague sera refoule mais passera
un peu travers la digue. Nanmoins, quand un photon est mesur, il se comporte
comme une particule et un seul tat peut tre dtect.
Dans [1449], Peter S h o r nous montre une conception d e machine factoriser qui repose
sur les principes de la mcanique quantique. A linverse dun ordinateur classique, qui
en fait est dans un tat unique, fixe, un moment donn, un ordinateur quantique a
une fonction d onde interne, qui est une superposition d une combinaison des tats de
base possibles. Les calculs transforment la fonction d ondulation, modifiant ainsi tout
lensemble des tats en une seule opration. De cette faon, un ordinateur quantique est
une amlioration par rapport lautomate classique tat fini : il utilise les proprits
quantiques afin de factoriser en temps polynomial ; ce qui nous permet thoriquement
de casser les cryptosystmes bass sur la factorisation ou le problme du logarithme
discret.
Le consensus est que les ordinateurs quantiques sont compatibles avec les lois fonda
mentales de la mcanique quantique. Nanmoins, il est peu probable quune machine
de factorisation quantique soit construite dans le futur. Un obstacle majeur est le pro
blme de dcohrence qui fait que des formes ondulatoires superposes perdent leur
distinction et que lordinateur ne marche pas. La dcohrence implique quun ordi
nateur quantique fonctionnant 1 Kelvin ne marche pas plus d une nanoseconde. De
plus, un trs grand nombre de portes serait ncessaire pour construire une machine
de factorisation quantique ; cela peut rendre sa construction impossible. Le concept
de SHOR ncessite un module complet dexponentiation en arithmtique modulaire.
Aucune horloge interne ne peut tre utilise, alors des millions, voire des milliards de
portes seraient ncessaires pour factoriser des nombres cryptographiquement signifi
catifs. Si n portes quantiques ont une probabilit minimum p d chouer, le nombre
moyen dessais par coup russi est de (1/(1 p))n- Le nombre de portes ncessaires
crot polynmialement avec la longueur en bits du nombre, donc le nombre dessais
ncessaires serait superexponentiel en la longueur des nombres utiliss (ce qui est pire
que factoriser par des divisions).

Chapitre 7

178

Longueur des clefs

Ainsi, alors que la factorisation quantique attire de nombreux chercheurs, il est extr
mement peu probable quelle soit jamais mise en pratique. Mais ne dites pas que je ne
vous ai pas prvenu.

7.3

Comparaison de la longueur des clefs


secrtes et des clefs publiques

Un systme sera attaqu au niveau de son point faible. Si vous concevez un systme qui
utilise la fois les cryptographies clef secrte et clef publique, les longueurs de clefs
pour chaque type de cryptographie devront tre choisies de faon ce quil soit aussi
difficile d attaquer le systme via lun ou lautre des mcanismes. Il nest pas logique
d utiliser un algorithme clef secrte de 128 bits avec un algorithme clef publique
de 386 bits, de mme quil nest pas logique d utiliser un algorithme clef secrte de
56 bits avec un algorithme clef publique de 1024 bits.
Le tableau 7.9 donne les longueurs des modules des algorithmes clef publique dont
la difficult de factorisation gale peu prs la difficult dune attaque exaustive pour
les longueurs de clefs secrtes usuelles.

T ab . 7.9 - Longueurs des clefs secrtes et des clefs publiques avec rsistances similaires

aux attaques exhaustives_____________________________________________

Longueur de clef secrte


56 bits
64 bits
80 bits
1 1 2 bits
128 bits

Longueur de clef publique


384 bits
512 bits
768 bits
1792 bits
2304 bits

Ce tableau nous dit que si vous tes assez soucieux pour votre scurit pour choisir
un algorithme clef secrte avec une clef de 1 1 2 bits, alors vous devriez choisir une
longueur de module d au moins 1792 bits pour votre algorithme clef publique. En
gnral, vous devriez choisir une longueur de clef publique plus sre que votre longueur
de clef secrte. Les clefs publiques demeurent gnralement plus longtemps et sont
utilises pour protger plus dinformations.

7.4

Attaques des anniversaires contre une


fonction de hachage sens unique

Il y a deux attaques exhaustives pour une fonction de hachage sens unique. La


premire est la plus vidente: soit H (A i), lempreinte dun message, un adversaire
aimerait tre capable de crer un autre document, A i', tel que II(A i) = II(A i').
La seconde attaque est plus subtile: un adversaire aimerait trouver deux messages
alatoires, A i et A i ', tel que H (A i) H (A i'). Cela sappelle une collision et cest
une attaque bien plus facile que la premire.

Quelle doit tre la longueur de clef?

7.5

179

Le paradoxe de lanniversaire est un problme statistique standard. Combien de per


sonnes doit-il y avoir dans une pice pour quil y ait de bonnes chances quau moins lune
dentre-elles ait la mme date danniversaire que vous? La rponse est 253. Maintenant,
combien de personnes doit-il y avoir pour quil y ait de bonnes chances quau moins
deux dentre-elles aient la mme date d anniversaire? La rponse est surprenante: 23.
Avec seulement 23 personnes dans une pice, il y a tout de mme 253 paires diffrentes
de personnes.
Trouver quelquun avec une date d anniversaire spcifique est analogue la premire at
taque ; trouver deux personnes avec la mme date danniversaire alatoire est analogue
la seconde attaque. Cette seconde attaque est plus connue sous le nom dattaque
des anniversaires.
Supposons quune fonction de hachage sens unique est sre et que la meilleure attaque
est lattaque exaustive. Elle produit un rsultat m bits. Trouver un message dont lem
preinte a une valeur donne exigerait de hacher 2m messages alatoires. Trouver deux
messages qui ont la mme empreinte nexigerait de hacher que 2 m / 2 messages ala
toires. Une machine qui hche un million de messages par seconde mettrait 600 000 ans
pour trouver un second message qui correspondrait une empreinte donne de 64 bits.
Cette mme machine pourrait trouver une paire de messages de mme empreinte en
peu prs une heure.
Comprenez que si les attaques des anniversaires vous inquitent, vous devriez choisir
une valeur de hachage deux fois plus longue que celle que vous pensez tre ncessaire.
Par example, si vous voulez rduire les chances que quelquun casse votre systme
moins de 1 pour'2 80, utilisez une fonction de hachage sens unique 160 bits.

7.5

Quelle doit tre la longueur de clef?

Il ny a pas de rponse unique cette question ; cela dpend de la situation. Pour


dterminer le niveau de scurit dont vous avez besoin, vous devez vous poser quelques
questions. Que valent vos donnes? Combien de temps doivent-elles rester confiden
tielles? Quelles sont les ressources de vos adversaires?
Une liste client peut bien valoir 1 000 dollars. Les donnes financires d un divorce
houleux doivent bien valoir 10000 dollars. Monter une campagne de publicit et de
marketing dun produit dune grande socit vaut srement 1 million de dollars. Les
clefs matresses d un systme dargent lectronique valent des milliards.
Dans le monde commercial, les secrets doivent seulement tre gards pendant quelques
minutes. Dans lindustrie journalistique, les secrets d aujourdhui font les grands titres
de demain. Les informations concernant le dveloppement de produits doivent srement
rester secrtes pendant un an ou deux. Les donnes du recensement amricain sont
lgalement gardes secrtes pendant 1 0 0 ans.
La liste des invits pour la fte danniversaire de votre sur nintresse que vos proches
curieux. Les secrets commerciaux d une compagnie intressent les compagnies rivales.
Les secrets militaires intressent des puissances mitaires rivales.
Vous pouvez mme spcifier vos desiderata de scurit en ces termes. Par exemple :
La longueur de clef doit tre telle quil ny ait pas une probabilit de plus
de 1 pour 2 32 quun attaquant dispos dpenser 1 0 0 millions de dollars
puisse casser le systme en moins d un an, mme en faisant lhypothse

180

Chapitre 7

Longueur des clefs

que la technologie progresse un taux de croissance de 30 % par an sur la


priode.
Le tableau 7.10, emprunt partiellement [157], estime le niveau de scurit requis
pour plusieurs types d informations.

Tab.

7.10 - Niveau de scurit ncessaire pour diffrents types dinformations

Type de trafic

Longvit

Informations militaires tactiques


Annonces de produits, fusions,
taux dintrt
Plans daffaires long terme
Secrets commerciaux
(e.g. la recette du Coca-Cola)
Secrets de la bombe H
Identits d espions
Affaires prives
Embarras diplomatiques
Donnes du recensement amricain

minutes/heures

Longueur de
clef minimum
56-64 bits

j ours/semaines
annes

64 bits
64 bits

dcades
> 40 ans
> 50 ans
> 50 ans
> 65 ans
1 0 0 ans

bits
128 bits
128 bits
128 bits
au moins 128 bits
au moins 128 bits
112

La puissance de calcul future est plus difficile valuer, mais vue de nez : lefficacit
des quipements de calcul divise par le prix double tous les 18 mois et augmente dun
facteur 10 tous les 5 ans [100]. Donc, d ici 50 ans, les ordinateurs les plus rapides seront
10 milliards de fois plus rapides quaujourdhui ! Gardons lesprit que ces chiffres ne
prennent en compte que des ordinateurs gnriques ; qui sait quel type de systme de
recherche cryptographique exhaustive pourra tre dvelopp dici 50 ans?
En faisant lhypothse quun algorithme cryptographique sera utilis pendant 30 ans,
vous pouvez avoir une ide du niveau de scurit quil doit offrir. Un algorithme conu
aujourdhui ne sera probablement pas dun usage gnralis avant lan 2 0 0 0 et sera tou
jours utilis en lan 2025 pour chiffrer des messages qui devront rester secrets jusquen
2075 ou plus tard.

7.6

Avertissement

Ce chapitre entier ne veut absolument rien dire. La notion de prdiction de la puis


sance de calcul dans les 10 annes venir, sans parler des 50 prochaines annes, est
absolument ridicule. Ces calculs ne doivent tre quune indication, rien de plus. Si le
pass est une indication, le futur sera bien diffrent de tout ce quon a pu prvoir.
Soyez prudent. Si vos clefs sont plus longues quil vous semble ncessaire, alors moins
de surprises technologiques vous concerneront.

Chapitre 8

Gestion des clefs


Alice et Bernard ont un systme de communication sr. Ils jouent au poker en aveugle,
ils signent simultanment des contrats et changent mme de largent lectronique.
Leurs protocoles sont srs. Leurs algorithmes sont le nec plus ultra. Malheureusement,
ils achtent leurs clefs la socit C l e f s e t c o n f i a n c e dEstelle dont le slogan est
Vous pouvez nous faire confiance : la scurit est le deuxime nom de lex-belle-mre
de notre voyageur de commerce.
Estelle na pas casser les algorithmes. Elle ne compte pas sur les failles subtiles dans
les protocoles. Elle peut utiliser leurs clefs pour lire tous les messages entre Alice et
Bernard sans lever le moindre petit doigt cryptographique.
Dans le monde rel, la gestion des clefs est la partie de la cryptographie la plus difficile.
Concevoir des algorithmes et des protocoles srs nest pas chose aise mais vous pouvez
compter sur un corps important de recherche acadmique. Garder les clefs secrtes est
encore plus dur.
Les cryptanalystes attaquent souvent les algorithmes clef secrte et les algorithmes
clef publique par leur gestion des clefs. Pourquoi Estelle svertuerait-elle casser un
algorithme cryptographique quand il lui est plus facile de retrouver les clefs cause d un
relchement dans les procdures de gestion des clefs? Pourquoi devrait-elle dpenser
1 0 millions de dollars pour construire une machine de cryptanalyse alors que 1 0 0 0
dollars suffirait corrompre un employ? Dpenser 1 million de dollars pour acheter
un employ des communications occupant un poste stratgique au sein dune ambassade
diplomatique peut se rvler tre une vrai affaire. Les W a l k e r s ont vendu pendant des
annes aux sovitiques les clefs de chiffrement de la marine amricaine. Le directeur du
contre-espionnage de la C IA sest vendu pour moins de 2 millions de dollars, femme
incluse. Cest beaucoup moins onreux que de construire de puissantes machines de
cassage de chiffrement et d employer de brillants cryptanalystes. Estelle peut voler
les clefs. Elle peut arrter ou kidnapper quelquun qui connat les clefs. Elle peut
sduire quelquun et lui soutirer les clefs de cette faon. (Les M a r i n e s qui gardaient
lambassade amricaine Moscou ntaient pas insensibles ce type d attaque.) Il
est beaucoup plus facile de trouver les points faibles chez une personne que dans un
systme cryptographique.
Alice et Bernard doivent protger leurs clefs au mme niveau de scurit que les donnes
quelles chiffrent. Si une clef nest pas change rgulirement, a pourrait tre une

Chapitre 8

182

Gestion des clefs

quantit norme de donnes. Malheureusement, beaucoup de produits commerciaux


dclarent tout simplement Nous utilisons DES et oublient tout le reste. Les rsultats
sont loins dtre concluants.
Par exemple, le programme D i s k l o c k pour M a c i n t o s h (version 2.1), vendu par la
plupart des marchands de logiciels, prtend offrir la scurit du chiffrement DES. Il
chiffre les fichiers en utisant le DES. Sa ralisation de lalgorithme DES est correcte.
Toutefois, D i s k l o c k stocke la clef DES avec le fichier chiffr. Si vous savez o regarder
pour trouver la clef et que vous voulez lire un fichier chiffr avec le DES de D i s k l o c k ,
retrouvez la clef dans le fichier chiffr et ensuite de dchiffrez le fichier laide de la
clef. Cela na pas d importance que le programme utilise le chiffrement DES la
ralisation est dnue de toute scurit. D autres informations concernant la gestion
des clefs peuvent tre trouves dans [463, 105, 1284, 1235, 775, 361]. Les chapitres
suivants soccupent des rsultats et des solutions.

8.1

Gnration de clefs

Le niveau de scurit dun algorithme dpend de la clef. Si vous utilisez un processus


cryptographiquement faible pour engendrer des clefs, alors tout votre systme est faible.
Estelle na pas essayer de cryptanalyser votre algorithme de chiffrement ; elle a juste
cryptanalyser votre algorithme de gnration de clefs.

Espaces de clefs rduits


Le DES a une clef de 56 bits. Dans une ralisation correcte, toute chane de 56 bits
peut tre la clef: il y a 2 56 ( 1016) clefs possibles. N o r t o n D i s c r e e t de M S-D O S
(versions 8.0 et antrieures) nautorisent que des clefs A SC II, forant le bit de poids fort
de chaque octet prendre la valeur zro, le programme convertit aussi les minuscules
en majuscules (ainsi le cinquime bit de chaque octet est toujours loppos du sixime)
et ignore le bit de poids faible de chaque octet, ne permettant finalement que 2 40 clefs
possibles. Ces mauvaises procdures de gnration de clefs rendent son DES dix mille
fois plus facile casser quune ralisation correcte.
Le tableau 8.1 donne le nombre de clefs possibles, suivant certaines contraintes sur
les chanes de caractres lentre. Le tableau 8.2 donne le temps requis pour une
recherche exhaustive travers toutes ces clefs, sur la base dun million de tentatives
par seconde. Notez quil n y a pas de diffrence en temps notable entre une recherche
exhaustive pour des clefs de 8 octets demble, et une recherche progressive o les clefs
de 4 octets sont essayes, puis de 5 octets, ainsi de suite jusqu 8 octets.

T a b . 8.1 - Nombre de clefs possibles pour diffrents espaces de clefs

Lettres minuscules (26)


Lettres minuscules et chiffres (36)
Caractres alphanumriques (62)
Caractres affichables (95)
Caractres ASCII (128)
Caractres ASCII 8 bits (256)

4 octets
460000
1700000
1,5 xlO7
8,1 xlO 7
2,7x10
4,3 x 109

5 octets
1,2 xlO7
6,0 xlO 7
9,2 x 10
7,7 xlO9
3,4 xlO 10
1,1 xlO 12

6 octets
3,1x10
2,2 x 109
5,7 xlO 10
7,4 xlO11
4,4 x 1012
2,8 x 1014

7 octets
8,0x 10
7,8 xlO10
3,5 xlO 12
7,0 xlO13
5,6 xlO 14
7,2 xlO 16

8 octets
2,1 xlO 11
2,8 xlO 12
2,2 xlO 14
6,6 xlO 15
7,2 xlO 16
1,8 xlO 19

8.1

183

Gnration de clefs

Tab. 8.2 - Recherche exhaustive de diffrents espaces de clefs (sur la base dun million
de tentatives par secondes)
Lettres minuscules (26)
Lettres minuscules et chiffres (36)
Caractres alphanumriques (62)
Caractres affichables (95)
Caractres ASCII (128)
Caractres ASCII 8 bits (256)

4 octets
0,5 s
1,7 s
15,0 s
1,4 mn
4,5 mn
1,2 h

5 octets
12 s
1 mn
15 mn
2,1 h
9,5 h
13 j

6 octets
5 mn
36 mn
16 h
8,5 j
51 j
8,9 ans

7 octets
2,2 h
22 h
41 j
2,2 ans
18 ans
2300 ans

8 octets
2,4 j
33 j
6,9 ans
210 ans
2 300 ans
580000 ans

Toute ralisation parallle et matrielle d une attaque exhaustive spcialise conviendra


ici. En testant un million de clefs par seconde (soit avec une machine, soit avec plusieurs
machines en parallle), il est envisageable de retrouver une clef de 8 octets faite de
lettres minuscules ou de lettres minuscules et de chiffres, une clef de 7 octets faite
de caractres alphanumriques, une clef de 6 octets de caractres affichables ou de
caractres ASCII, et une clef de 5 octets de caractres ASCII de 8 bits.
Et rappelez-vous, la puissance de calcul double tous les 18 mois. Si vous esprez voir
vos clefs rsister des attaques exhaustives pendant 1 0 ans, vous devriez revoir votre
copie.

Mauvais choix de clefs


Quand les gens choisissent leur clef par eux-mmes, ils font gnralement un mauvais
choix1. Ils choisiront bien plus probablement Barney que 9(hH/A . Ce n est pas
toujours d a de mauvaises habitudes de scurit ; Barney est plus facile retenir que
9(hH/A . Lalgorithme le plus sr du monde ne sera pas dune grande utilit pour
les utilisateurs qui choisissent le nom de leur pouse comme clef ou qui crivent leurs
clefs sur des petits bouts de papier dans leur portefeuille. Un algorithme de recherche
exhaustive intelligent nessaie pas toutes les clefs dans leur ordre numrique ; il essaie
dabord les clefs les plus videntes.
On appelle cela une attaque par dictionnaire, parce que lattaquant utilise un dic
tionnaire de clefs communes. Daniel K l e i n fut capable de retrouver 40 % des mots de
passe dun ordinateur moyen en utilisant ce systme [848, 849]. Non, il na pas essay
les mots de passe les uns aprs les autres en tentant de se connecter. Il a copi le dossier
chiffr du mot de passe et men son attaque dans son coin. Voici ce quil a essay :
1. Le nom de lutilisateur, les initiales, le nom du compte, et dautres informations
concernant la personne comme mot de passe possible. L un dans lautre, jusqu
130 mots de passe diffrents furent essays sur base de ces informations. Pour
un compte dsign par klone d un utilisateur appel D aniel V. K lein
les mots de passe suivants furent entre autres tents: klone, kloneO, k lo n e l,
k lo n el23, dvk, dvkdvk, d k le in , DKlein, le in a d , n ie lk , d vk lein , danielk,
DvkkvD, DANIEL-KLEIN, (k lo n e ), KleinD, etc.
2.

Des mots de diffrentes bases de donnes. Celles-ci comprennent les listes des
noms dhommes et de femmes (environ 16 0 0 0 au total) ; des noms d endroits (y

1 Note du traducteur : l inform ation reprise dans cette section est typiquem ent anglo-saxonne mais
elle est galement d application, moyennant de lgres m odifications, pou r les utilisateurs d expression
francophone.

184

Chapitre 8

Gestion des clefs

compris les variantes telles que sp a m , spanish , spaniard soient tous


considrs) ; des noms de personnages clbres ; des noms de dessins anims et
de personnages de dessins anims ; des titres, personnages et lieux de films ou
d histoires de science-fiction; des noms de cratures mythiques (collectes dans
la mythologie de B u l f i n c h et dans le dictionnaire des btes mythiques) ; des
sports (y compris les noms dquipes, les surnoms et les termes spcialiss) : des
nombres ( la fois crits en chiffre 2001 et crits en toute lettre tw elve ) ;
des chanes de caractres et de nombres ( a , aa , aaa , aaaa , etc.);
des syllabes chinoises ( partir de la romanisation P i d g i n du chinois, un systme
international standard pour crire du chinois sur un clavier anglais) ; la K m g
James Bible ; les termes de la biologie ; des mots familiers ou vulgaires (tels que
fuckyou , ibmsux , deadhead ) ; des motifs de clefs du clavier (tels que
qwerty , asdf , zxcvbn ) ; des abrviations (telles que roygb iv , les cou
leurs de larc-en-ciel en anglais ou o o t ta f agvah , un mnmonique pour retenir
les noms des 12 nerfs crniens en anglais) ; les noms de machines ( partir du fi
chier /etc/hosts) ; des personnages, pices ou lieux de luvre de SHAKESPEARE;
des mots communs du Yiddish ; des noms d astrodes ; et une collection de mots
de diffrents articles techniques publis par K l e i n lui-mme. Tout compris, plus
de 60000 mots diffrents furent considrs par utilisateur (en ignorant les dou
blons).
3. Des variantes des mots de ltape 2. Cela inclut : mettre la premire lettre en
majuscule, mettre un caractre de contrle comme premire lettre, mettre tout le
mot en majuscule, renverser le mot (avec et sans la mise en majuscule prcdente),
remplacer la lettre o par le chiffre 0 (ainsi le mot sc h o la r sera aussi
test comme schOlar ), remplacer la lettre 1 par le chiffre 1 (ainsi le
mot sch o la r sera aussi test comme sc h o la r ), et faire des remplacements
similaires de la lettre z par le chiffre 2 et la lettre s par le chiffre 5 .
Un autre test consistait mettre le mot au pluriel (peu importe si le mot tait
bien un substantif) avec suffisamment de subtilit de telle manire que d re ss
devenait d r e sse s , house devenait houses , et d a is y devenait
d a i s ie s . Les rgles de mise au pluriel ne furent pas seulement prises au pied
de la lettre par K l e in , ainsi datum devint datums (et non pas data ),
tandis que sphynx devint sphynxs (et non pas sphynges ). De la mme
faon, les suffixes -ed , -e r et -in g furent ajouts pour transformer
des mots tels que phase en phased , phaser et phasing . Ces
tests supplmentaires ajoutrent 1000 000 de mots la liste des mots de passe
possibles tester pour chaque utilisateur.

4. Diffrentes mises en majuscule des mots de ltape 2 qui ne furent pas considres
pour ltape 3. Cela inclut la mise en majuscule dune seule lettre toutes les
positions possibles (ainsi m ichael donne m ichael , miChael , micHael ,
michAel , etc.), la mise en majuscule de deux lettres ( M ichael , MiChael ,
MicHael , .. , mIChael , mlcHael , etc.), la mise en majuscule de trois
lettres, etc. La mise en majuscule dune seule lettre rajouta environ 400000 mots
tester par utilisateur tandis que la mise en majuscule de deux lettres rajouta
1500 000 de mots supplmentaires. La mise en majuscule de trois lettres aurait
rajout au moins 3000000 de mots par utilisateur sil y avait eu suffisamment de

8.1

Gnration de clefs

185

temps pour effectuer les tests. Tester les mises en majuscule de quatre, cinq et
six lettres savrait infaisable sans beaucoup plus de puissance de calcul.
5. Des mots de langues trangres pour des utilisateurs trangers. Le test spcifique
qui fut ralis tait dessayer des mots de passe chinois pour les utilisateurs chi
nois. La romanisation Pidgin des syllabes chinoises a t utilise, en combinant
les syllabes par une, deux ou trois pour former des mots. Comme aucun test ne
fut fait pour dterminer si les mots engendrs avaient un sens, une recherche ex
haustive fut entame. Comme il y a 298 syllabes chinoises dans le systme Pidgin,
il y a 158 404 mots de deux syllabes et un peu plus de 16 000 000 de mots de trois
syllabes. Un mode d attaque similaire peut tre aisment utilis pour la langue
anglaise en utilisant des rgles pour construire des mots prononables mais sans
aucun sens.
6.

Des paires de mots. L ordre de grandeur dun test exhaustif de ce type est stup
fiant. Pour simplifier le test, seuls les mots de trois et quatre caractres de long
de /usr/dic.t/words furent utiliss. Mme ainsi, le nombre de paires est de lordre
de dix millions.

Une attaque par dictionnaire est bien plus efficace quand elle est monte contre un
fichier de clefs plutt que contre une seule clef. Un seul utilisateur peut tre assez
malin pour choisir de bonnes clefs. Si un millier de personnes choisissent leur propre
clef comme mot de passe d accs un systme informatique, les chances sont leves que
le mot de passe d au moins une personne se trouve dans le dictionnaire de lattaquant.

Clefs alatoires
Les bonnes clefs sont des chanes alatoires de bits gnres par des processus automa
tiques. Si une clef a 64 bits de long, toutes les chanes possibles de 64 bits devraient
tre quiprobables. Engendrez les bits de la clef partir dune source alatoire fiable
(voir 17.14) ou d un gnrateur pseudo-alatoire de bits cryptographiquement sr
(voir chapitres 16 et 17). Si ces dispositifs automatiques ne sont pas disponibles, lancez
une pice de monnaie ou un d.
Cest important, mais ne vous laissez pas emporter dans une conversation quant
savoir si les bruits alatoires des sources audios sont plus alatoires que ceux des dchets
radioactifs. Aucun de ces bruits alatoires sera parfait, mais ils seront probablement
assez bons. Il est important d utiliser un bon gnrateur de nombre alatoire pour la
gnration de clef, mais il est encore plus important dutiliser de bons algorithmes de
chiffrement et de bonnes procdures de gestion de clefs. Si le fait que vos clefs soient
alatoires vous ennuie, utilisez la technique du broyage de clef, dcrite plus loin.
Certains algorithmes de chiffrement ont des clefs faibles : des clefs spcifiques qui sont
moins sres que les autres clefs. Je vous conseille de dtecter ces clefs et d en engendrer
une autre si vous en dcouvrez une. Le DES na que 16 ('lefs faibles sur 256, donc les
chances dengendrer Lune d elles sont incroyablement faibles. Il a t argument quun
cryptanalyste naurait pas la moindre ide quune clef faible est utilise et donc ne
tire pas avantage de leur utilisation accidentelle. Toutefois, dtecter les quelques clefs
faibles est tellement facile quil semble imprudent de ne pas le faire.
Engendrer des clefs pour les systmes de cryptographie clef publique est nettement
plus difficile car souvent les clefs doivent avoir certaines proprits mathmatiques

Chapitre 8

186

Gestion des clefs

(elles doivent parfois tre un nombre premier, un rsidu quadratique, etc.). Des tech
niques pour engendrer des grands nombres premiers alatoires sont dcrites dans le
paragraphe 11.5. La chose importante se rappeler du point de vue de la gestion des
clefs est que les germes de ces gnrateurs doivent tre compltement alatoires.
Engendrer une clef alatoire n est pas toujours possible. Parfois, il est ncessaire de
mmoriser votre clef2. Si vous devez engendrer une clef facile mmoriser, rendezla obscure. Lide est d avoir quelque chose de facile mmoriser mais de difficile
deviner. Voici quelques suggestions :
- Des paires de mots spars par un signe de ponctuation,
par exemple: tu rtle*m oose ou z o r c h ls p la t .
- Des chanes de caractres qui sont un acronyme de phrases plus longues, par
exemple Mein Luftkissenfahrzeug ist voiler Aale! donne la clef MLivA ! .

Phrases-mots de passe
Une meilleure solution est d utiliser une phrase entire au lieu dun seul mot et de
convertir cette phrase en une clef. Ces phrases sont appeles phrase clef Une technique
appele broyage de clef, transforme des phrases faciles mmoriser en des clefs
alatoires. Utilisez une fonction de hachage sens unique pour transformer un texte
de longueur quelconque en une chane de bits pseudo-alatoire.
Par exemple, le texte suivant facile mmoriser:
Mon nom est Ozymandias, roi des rois. Contemple mon uvre, O toi le
tout puissant, et dsespre.
pourrait tre broy pour donner la clef de 64 bits suivante (en hexadcimal) :
E6C1 4398 5AE9 0A9B
Bien sr, taper une phrase entire dans un ordinateur peut se rvler difficile. Les
bonnes ides pour rsoudre ce problme sont les bienvenues.
Si la phrase est assez longue, la clef rsultante sera alatoire. Ce que signifie exactement
assez longue est sujet interprtation. La thorie nous dit que langlais standard a
peu prs 1,3 bits d information par caractre (voir 11.1). Pour une clef de 64 bits,
une phrase clef d peu prs 49 caractres, ou de 10 mots normaux anglais, devrait
tre suffisante. A vue de nez, dites-vous que vous avez besoin de 5 mots pour 4 bits de
clef C est une hypothse modre, sachant que cela ne prend en compte ni les lettres
majuscules ou minuscules, ni lespacement, ni la ponctuation.
Cette technique peut mme tre utilise pour engendrer la clef prive des systmes
cryptographiques clef publique : le texte peut tre transform en un germe alatoire
et ce germe peut tre fourni un systme dterministe qui engendre la paire clef
prive, clef publique .
Si vous choisissez une phrase clef, choisissez quelque chose d unique et de facile retenir.
Ne choisissez pas des phrases extraites de la littrature, lexemple de Ozymandias
nest pas bon. Les uvres compltes de S h a k e s p e a r e et les dialogues de La guerre
des toiles (Star Wars) sont disponibles et peuvent tre utiliss pour une attaque
2. Constatez com bien de tem ps il vous faut pou r m m oriser 25e8 5 6 f2 e8ba c820.

8.1

Gnration de clefs

187

par dictionnaire. Choisissez quelque chose d obscur, mais de personnel. Injectez-y de la


ponctuation et des majuscules ; si vous pouvez, ajoutez-y des nombres et des symboles
non alphanumriques. Des mots anglais incorrects, voire des mots trangers, font que
votre phrase clef est moins sensible une attaque par dictionnaire. Une suggestion est
dutiliser une phrase choquante et dnue de sens : quelque chose d assez offensif
que vous saurez retenir mais que vous ncrirez srement pas.
Malgr tout ce qui a t crit ici, lobscurit ne remplacera pas le vrai hasard. Les
meilleurs clefs sont des clefs alatoires, difficiles retenir.

Gnration de clefs suivant le standard ANSI X 9.17


Le standard AN SI X 9.17 dsigne une mthode de gnration de clefs (voir figure
8.1) [57]. Ce processus n engendre pas des clefs faciles mmoriser : il est plus adapt
la gnration de clefs de session ou de nombres pseudo-alatoires au sein dun systme.
Lalgorithme cryptographique utilis pour engendrer les clefs est le DES triple mais ce
pourrait tre aussi bien tout autre algorithme.

F ig.

8 .1

Le standard ANSI X 9 .17 de gnration de clefs

Soit E k ( X ) le chiffrement DES de X avec la clef K . C est une clef spciale rserve
la gnration de clefs. Vo est un germe de 64 bits secret. T est une datation. Pour
engendrer la clef alatoire Ri, calculez :
Ri

Epc(Efi-(7'z)

Vi).

Pour engendrer U f i, calculez:


V%+ 1 E

( E k ( Ti ) R i ) .

Pour transformer Ri en une clef DES, ajustez simplement un bit sur huit pour la
parit. Si vous avez besoin dune clef de 64 bits, utilisez-la telle quelle. Si vous avez
besoin dune clef de 128 bits, engendrez une paire de clefs et joignez-les.

Gnration de clefs du Dpartement de la Dfense amricain


Le Dpartement de la Dfense amricain recommande lutilisation du DES en mode
OFB (voir 9.8) pour gnrer des clefs alatoires [1151]. Gnrez une clef DES partir
de vecteurs dinterruption de systme, de registres dtat de systme et de compteurs
de systme. Gnrez un vecteur dinitialisation partir de lhorloge du systme, de
lidentification du systme, de la date et de lheure. Pour le texte en clair, utilisez une
quantit de 64 bits gnre en externe: huit caractres taps par un administrateur
systme par exemple. Utilisez le rsultat comme votre clef.

Chapitre 8

188

8.2

Gestion des clefs

Espaces des clefs non linaires

Imaginez que vous tes une organisation militaire de cryptographie, fabriquant des
quipements de cryptographie pour vos troupes. Vous voulez utiliser un algorithme sr,
mais vous avez peur que cet quipement tombe entre des mains ennemies. La dernire
chose que vous voulez est que cet ennemi soit capable dutiliser cet quipement pour
protger ses propres secrets.
Si vous pouvez placer votre algorithme dans un module inviolable, voici ce que vous
pouvez faire. Vous pouvez exiger des clefs de forme spciale et secrte ; toutes les autres
clefs feront que le module chiffrera et dchiffrera en utilisant un algorithme svrement
affaibli. Vous pouvez vous arranger pour que les chances de tomber sur une clef correcte
soient de plus en plus faibles quand on ne connat pas cette forme spciale.
On appelle cela un espace de clef non linaire, car toutes les clefs ne sont pas de
force gale, (le contraire est un espace de clef linaire). Une manire facile de le faire est
de crer la clef en deux parties : la clef elle-mme et une chane fixe chiffre avec cette
clef. Le module dchiffre la chane avec la clef; si il obtient la chane fixe il utilise la
clef normallement, sinon, il utilise un algorithme diffrent, plus faible. Si lalgorithme a
une clef de 128 bits et une taille de 64 bits, la clef gnrale est de 192 bits ; ceci donne
lalgorithme une clef efficace de 2 128 et rduit les chances de trouver par hasard une
bonne clef un contre 2 64.
Vous pouvez mme tre encore plus subtil. Vous pouvez crer un algorithme tel que
certaines clefs sont plus fortes que d autres. Un algorithme peut ne prsenter aucune
clef faible qui soit vraiment trs mauvaise tout en ayant un espace de clef non
linaire.
Ceci ne marche que si lalgorithme est secret et si lennemi ne peut pas en analyser le
code machine, ou si la diffrence entre les niveaux de clefs est suffisamment subtile pour
que cela ne se remarque pas. La NSA la utilis avec ses algorithmes secrets dans ses
modules Overtake (voir 25.1). L ont-ils refait avec Skipjack (voir 13.12)? Personne
ne le sait.

8.3

Transfert de clefs

Alice et Bernard vont utiliser un algorithme cryptographique clef secrte pour com
muniquer de manire sre ; ils ont besoin d une clef commune. Alice engendre une clef
en utilisant un gnrateur alatoire de clefs. Maintenant elle doit la faire parvenir
Bernard, en toute scurit. Si Alice peut rencontrer Bernard quelque part (une alle
sombre, une pice sans fentre, ou sur un des satellites de Jupiter), elle peut lui donner
une copie de la clef. Sinon, ils ont un problme. La cryptographie clef publique rsout
ce problme lgamment et avec un minimum de prarrangements, mais ces techniques
ne sont pas toujours disponibles (voir 3.1). Certains systmes peuvent utiliser des ca
naux de communication alternatifs rputs pour tre srs. Alice peut envoyer Bernard
la clef par un messager de confiance. Elle peut lenvoyer par courrier certifi ou via un
service de livraison express. Elle peut crer un nouveau canal de communication avec
Bernard et esprer que personne ncoute celui-l.
Alice peut envoyer Bernard la clef secrte sur le canal de communication, celui quils
vont utiliser. C est idiot : si le canal garantit le chiffrement, envoyer la clef de chiffrement

8.3

Transfert de clefs

189

en clair sur le mme canal garantit que nimporte qui coutant le canal peut dchiffrer
toutes les communications.
Le standard X 9 .17 [57] dtermine deux types de clefs : les clefs de chiffrement de clefs
et les clefs de donnes. Les clefs de chiffrement de clefs chiffrent les autres clefs
pour la distribution. Les clefs de donnes chiffrent le trafic des messages. Ces clefs de
chiffrement de clefs doivent tre distribues manuellement (bien quelles puissent tre
en scurit dans un systme inviolable, tel quune carte puce), mais seulement trs
rarement. Les clefs de donnes sont distribues plus souvent. Vous trouverez plus de
dtails dans [82]. Ce concept de deux niveaux de clefs est trs utilis dans la distribution
de clefs.
Une autre solution au problme de distribution est de diviser la clef en plusieurs mor
ceaux (voir 3.6) et denvoyer chaque morceau par un canal diffrent. Un morceau
pourrait tre envoy par tlphone, un par courrier, un par courrier express, un par
pigeon voyageur, etc. (voir la figure 8.2). Comme un adversaire arrivant collecter
tous les morceaux sauf un ne pourra pas reconstruire la clef, cette mthode marchera
dans tous les cas except les cas extrmes. Le paragraphe 3.6 prsente des schmas
pour diviser une clef en plusieurs morceaux. Alice pourrait mme utiliser un schma
de partage de secret (voir 3.7), permettant Bernard de reconstruire la clef mme si
quelques morceaux se sont gars pendant la transmission.

F ig. 8.2 - Distribution de clef morcele


Alice envoie Bernard la clef de chiffrement de clefs de manire sre, soit en se ren
contrant en chair et en os, soit par la technique de morcellement prsente ci-dessus.
Une fois quAlice et Bernard disposent tous deux de la clef de chiffrement de clefs,
Alice peut envoyer Bernard les clefs de donnes journalires sur le mme canal de
communication. Alice chiffre chaque clef de donnes journalire avec la clef de chiffre
ment de clefs. Comme le volume chiffr avec la clef de chiffrement de clefs est faible,
elle ne doit pas tre change trop souvent. Toutefois, si la clef de chiffrement de clefs
est compromise alors tous les messages chiffrs avec toutes les clefs journalires sont
compromis, la clef de chiffrement des clefs doit tre stocke de manire sre.

190

Chapitre 8

Gestion des clefs

Distribution de clefs dans des grands rseaux


Des clefs de chiffrement de clefs, partages par des paires dutilisateurs, conviennent
bien dans des petits rseaux, mais deviennent rapidement incommodes quand le rseau
sagrandit. Comme chaque paire dutilisateurs doit changer des clefs, le nombre total
dchanges de clefs requis dans un rseau de n personnes est de n(n l ) / 2 .
Dans un rseau de 6 personnes, 15 changes de clefs sont ncessaires. Dans un rseau
de 1000 personnes, prs de 500 000 changes de clefs sont ncessaires. Dans ce cas,
la cration d un serveur central de clefs (ou de plusieurs serveurs) rend 1 opration
beaucoup plus efficace.
Alternativement, tout protocole de cryptographie clef secrte ou de cryptographie
clef publique du paragraphe 3.1 fournit un moyen de distribution de clefs sr.

8.4

Vrification de clefs

Quand Bernard reoit une clef, comment peut-il savoir que celle-ci vient bien dAlice
et non pas de quelquun qui se fait.passer pour Alice? Si Alice lui a donne lors dune
rencontre en chair et en os, cest facile. Si Alice a envoy la clef par un porteur de
confiance, alors Bernard doit avoir confiance dans le porteur. Si la clef est chiffre avec
une clef de chiffrement de clefs, alors Bernard doit avoir confiance dans le fait que seule
Alice a cette clef. Si Alice utilise un protocole de signature numrique pour signer la
clef, Bernard doit avoir confiance dans la base de donnes de clefs publiques quand il
vrifie la signature (il doit aussi croire qu Alice n a pas divulgu sa clef). Si le Centre
de Distribution des Clefs (C D C ) signe la clef publique dAlice, Bernard doit avoir
confiance dans le fait que la clef publique du C D C na pas t falsifie.
En fin de compte, quelquun qui contrle compltement tout le rseau autour de
Bernard peut lui faire croire ce quil veut. Martin peut envoyer un message chiffr
et sign en prtendant tre Alice. Quand Bernard essaie datteindre la base de donnes
de clefs publiques pour vrifier la signature dAlice, Martin peut fournir sa propre clef
publique. Martin peut inventer son propre C D C factice et remplacer les vraies clefs
publiques du C D C pour son propre usage. Bernard ne se rendra compte de rien.
Certaines personnes ont utilis cet argument pour clamer que la cryptographie clef
publique est inutile. Comme le seul moyen pour Alice et Bernard de sassurer que leur
clef nest pas falsifie est de se rencontrer en chair et en os, la cryptographie clef
publique namliore pas du tout la scurit.
Cette vision est nave. C est thoriquement vrai, mais la ralit est bien plus compli
que. La cryptographie clef publique, utilise avec des signatures numriques et des
C D C de confiance, rend bien plus difficile la substitution dune clef par une autre.
Bernard peut ne jamais tre tout fait certain que Martin ne manipule pas son uni
vers, mais Bernard peut tre certain que faire cela ncessite bien plus de ressources que
celles dont disposent la plupart des Martin du monde rel.
Bernard peut aussi vrifier la clef d Alice par tlphone, il entend alors sa voix. La
reconnaissance de la voix est un trs bon moyen d identification. Si c est une clef
publique, il peut la rciter en toute scurit en public. Si c est une clef secrte, il peut
utiliser une fonction de hachage sens unique pour vrifier la clef. P G P (voir 24.12)
et A T & T T SD (voir 24.18) utilisent tous les deux ce genre de vrification de clef.
Parfois, il peut mme tre sans importance de vrifier qui appartient une clef publique.

8.4

Vrification de clefs

191

Il peut tre ncessaire de vrifier quelle appartient bien la mme personne que celle
qui elle appartenait lan dernier. Si quelquun envoie un ordre de retrait une banque, la
banque ne doit pas sinquiter de savoir qui retire largent, elle doit seulement sassurer
que cest la mme personne que celle qui a dpos largent originellement.

Dtection derreurs pendant la transmission de clef


Parfois les clefs sont fausses pendant la transmission. Comme une clef fausse peut
signifier des mgaoctets de texte chiffr indchiffrables, cest un problme. Toutes les
clefs devraient tre transmises avec un certain type de dtection d erreurs et des bits de
correction derreur. De cette faon les erreurs de transmission peuvent tre facilement
dtectes, et si ncessaire la clef peut tre retransmise.
Une des mthodes le plus communment utilise est de chiffrer une valeur constante
avec la clef et denvoyer les 2 4 premiers octets du texte chiffr en mme temps que la
clef. Du ct du rcepteur, on fait la mme chose. Si les constantes chiffres concordent,
alors la clef a t transmise sans erreurs. Les chances pour une erreur de ne pas tre
dtecte vont de 1 pour 2 16 1 pour 2 32.

Dtection derreur de clef pendant le dchiffrement


Parfois, le destinataire veut vrifier si une clef particulire quil possde est la clef
secrte de dchiffrement. Si le texte en clair envoy est du type A SC II, il peut essayer
de dchiffrer et lire le message. Si le texte en clair est alatoire, il y a dautres techniques.
Lapproche nave est d attacher un b l o c d e v r i f i c a t i o n : une en-tte connue pr
cdant le texte en clair avant chiffrement. A la rception, Bernard dchiffre len-tte et
vrifie quelle est correcte. Ca marche, mais cela donne Estelle un texte en clair connu
pour laider cryptanalyser le systme. Cela rend aussi plus faciles les attaques contre
les chiffres clefs courtes comme le DES et les algorithmes exportables. Prcalculez
la somme de contrle une fois pour chaque clef, puis utilisez cette somme de contrle
pour dterminer la clef de chaque message que vous interceptez par la suite. Cest une
caractristique de toute somme de contrle de clef o ne sont pas incluses des donnes
alatoires ou tout du moins diffrentes. C est conceptuellement similaire lutilisation
dun sel pour gnrer des clefs partir de phrases-clefs.
Voici une meilleure faon de le faire [822] :
1 Gnrez un vecteur dinitialisation (diffrent de celui utilis pour le message).
2 Utilisez ce vecteur dinitialisation pour gnrer un grand nombre de bits : par
exemple 512.

3 Hachez le rsultat.
4 Utilisez les mme bits de lempreinte, par exemple 32, pour la somme de
contrle de la clef.

Ceci donne Estelle des informations, mais trs peu. Si elle essaie dutiliser les 32
bits de la valeur finale du hachage pour entreprendre une attaque massive, elle devra
effectuer de multiples chiffrements ainsi quun hachage par clef; une attaque massive
sur la clef elle-mme serait plus rapide.

Chapitre 8

192

Gestion des clefs

De plus, elle naura pas de valeurs de texte en clair connues essayer, et mme si elle
arrive choisir une valeur alatoire notre place, elle ne pourra pas choisir un de nos
textes, puisquils passent au hachage avant quelle puisse les voir.

8.5

Utilisation des clefs

Le chiffrement par logiciel est angoissant. Il est loin le temps o les simples microordinateurs taient sous le contrle de programmes isols. Maintenant, il y a le SYSTEM
7 du M a c i n t o s h , W i n d o w s N T et U NIX. Vous ne pouvez pas prvoir quand le
systme va interrompre lapplication de chiffrement en cours, crire le tout sur disque,
et soccuper dune tche urgente. Quand le systme redonne finalement la main au
chiffrement de ce qui doit tre chiffr, tout a lair normal. Personne ne ralise que
le systme a crit toute lapplication de chiffrement sur disque et quil a crit la clef
en mme temps. La clef est maintenant sur le disque, non chiffre jusqu ce que
lordinateur rcrive cet endroit nouveau. Cela peut prendre des minutes ou des
mois. Cela pourrait mme jamais se produire : la clef pourrait encore tre l quand
un adversaire passe le disque dur au peigne fin. Dans un environnement multitche
premptif, vous pouvez mettre votre application un niveau de priorit suffisamment
lev pour quelle ne soit pas interrompue. Cela diminuerait le risque. Mme ainsi, c est
encore trop hasardeux.
Les ralisations matrielles sont plus sres. De nombreux dispositifs sont conus pour
effacer la clef si lon essaie de les dcortiquer. Par exemple, la carte de chiffrement de
lIBM P S /2 a une unit en poxyde qui contient la puce DES, lalimentation et la
mmoire. Bien sr, vous devez faire confiance au fabricant pour quil ait ralis cela
correctement.
Quelques applications de communication, tels que les chiffreurs de tlphone, peuvent
utiliser des c l e f s d e s e s s i o n . Une clef de session est une clef quon utilise juste pour
une opration de communication une seule conversation tlphonique puis dont
on se dbarasse. Il n y a pas de raison de garder la clef aprs quelle ait t utilise. Et si
vous utilisez un protocole dchange de clef pour la transfrer, elle na pas besoin d tre
stocke avant d tre utilise. De ce fait, la clef est moins susceptible d tre compromise.

Contrler lusage de la clef


Avec certaines applications, il est prfrable de contrler comment une clef de session
est utilise. Certains utilisateurs en auront besoin seulement pour le chiffrement ou
le dchiffrement. Les clefs de session peuvent tre autorises lemploi sur certaines
machines ou certains moments. Pour grer ce genre de restrictions, un procd attache
la clef un V E C T E U R DE C O N TR L E (V C ) ; le vecteur de contrle dfinit les utilisations
et les restrictions de cette clef (voir 24.1) [1035, 1036]. Ce VC est hach puis combin
par ou exclusif avec une clef matresse ; le rsultat est utilis comme clef de chiffrement
pour chiffrer la clef de session. Cette clef de session ainsi chiffre est alors stocke avec
le VC. Pour retrouver la clef de session, hachez puis combinez par ou exclusif le VC
avec la clef matresse et utilisez le rsultat pour dchiffrer la clef de session chiffre.
Les avantages de ce procd sont que le VC peut tre dune longueur tout fait arbi
traire et quil est toujours stock en clair avec la clef chiffre. Ce procd est en partie
responsable de linviolabilit des matriels et de lincapacit des utilisateurs daccder

8.6

Mise jour des clefs

193

directement aux clefs. Ce systme est abord plus fond dans les chapitres 24.1 et
24.8.

8.6 Mise jour des clefs


Imaginez un lien de donnes chiffres o vous voulez changer vos clefs quotidiennement.
Il est souvent fastidieux de distribuer une nouvelle clef chaque jour. Une solution plus
facile est de gnrer une nouvelle clef partir de lancienne; quelquefois, on appelle
cela une m i s e j o u r d e s c l e f s .
Il suffit d une fonction de hachage sens unique. Si Alice et Bernard partagent la mme
clef et lutilisent simultanment avec la mme fonction sens unique, ils obtiendront
le mme rsultat. Puis ils peuvent prendre les bits dont ils ont besoin pour crer la
nouvelle clef.
La mise jour de clef marche, mais souvenez-vous que la nouvelle clef nest pas plus
sre que lancienne. Si Estelle a russi mettre la main sur lancienne clef, elle peut
effectuer lopration de mise jour de clef elle-mme. Nanmoins, si Estelle na pas
l'ancienne clef et lance une attaque seulement texte de chiffr sur le trafic chiffr,
cest une bonne manire pour Alice et Bernard de se protger.

8.7

Stockage des clefs

Le stockage de clefs le moins complexe est pour lutilisateur isol, Alice, qui chiffre
ses fichiers pour une utilisation future. Comme elle est la seule concerne, elle est la
seule responsable de sa clef. Certains systmes prennent une approche facile : la clef
est stocke dans le cerveau d Alice et jamais dans le systme. Alice doit mmoriser la
clef et lentrer chaque fois quelle a besoin quun fichier soit chiffr ou dchiffr.
Un exemple dun tel systme est donn par IPS [881]. Les utilisateurs peuvent soit
entrer directement leur clef de 64 bits, soit entrer la clef sous forme d une longue
chane de caractres. Le systme engendre alors une clef de 64 bits partir de la chane
de caractres, laide dune technique de broyage de clefs.
Une autre solution est de stocker la clef sur une carte piste magntique, une clef en
plastique avec une puce R O M (appele une clef R O M ), ou sur une carte puce [558,
559, 461]. Un utilisateur peut alors entrer sa clef dans le systme, en insrant sa carte
dans un lecteur spcial de la bote de chiffrement ou attach au terminal informatique.
Il peut lutiliser seulement dans les limites prcises par le vecteur de contrle.
La clef RO M est une trs bonne ide. Les personnes comprennent les clefs physiques,
ce quelles reprsentent et comment les protger. Mettre une clef cryptographique sous
cette mme forme rend le stockage et la protection de cette clef plus intuitive.
Cette technique est rendue encore plus sre en morcelant la clef en deux moitis et en
stockant une moiti dans le terminal et lautre moiti dans la clef R O M . Le procd
STU-III du gouvernement amricain de protection du tlphone fonctionne de cette
manire. Perdre la clef R O M ne compromet pas la clef cryptographique, changez-la
et tout rentre dans lordre. Ceci est aussi vrai dans le cas de la perte du terminal. De
cette faon, compromettre soit la clef R O M soit le terminal ne compromet pas la clef
cryptographique un adversaire doit avoir les deux moitis.

Chapitre 8

194

Gestion des clefs

Des clefs difficiles mmoriser peuvent tre stockes sous forme chiffre, en utilisant
quelque chose de similaire une clef de chiffrement de clefs. Par exemple, une clef
prive R SA peut tre chiffre par DES et stocke sur le disque. Pour rcuprer la clef
R SA , l'utilisateur doit donner la clef D ES au programme de dchiffrement.
Si les clefs sont engendres de manire dterministe (avec un gnrateur pseudo
alatoire de nombres cryptographiquement sr) il peut tre plus simple de rengendrer
les clefs partir d un mot de passe facile retenir chaque fois quelles sont ncessaires.
Lidal serait quune clef napparaisse jamais non-chiffre hors du module de chiffre
ment. Ce nest pas toujours possible, mais cest un but que nous devons atteindre.

8.8

Duplicata des clefs

Alice est le responsable financier de la socit Secrets, S.A. , Nous ne dvoilons pas
notre devise . Comme tout employ consciencieux, elle suit les consignes de scurit de
sa socit et chiffre toutes ses donnes. Malheureusement, elle ignore les consignes de
scurit routire pour traverser la rue et est renverse par un camion. Que fait Bernard,
le prsident de la socit?
Bernard est bien embarass, moins quAlice nait laiss une copie de sa clef. Le but
du chiffrement est de rendre les fichiers non rcuprables sans la clef. Ses fichiers seront
perdus jamais, moins quAlice soit une dbile ou quelle utilisait un logiciel de
chiffrement miteux.
Bernard peut viter cela de plusieurs manires. La plus simple est parfois appele
d p t d e c l e f (voir 4.14) : Bernard exige que ses employs mettent leur clef par crit
et la donnent au responsable de la scurit de lentreprise, qui les enfermera en lieu sr
(ou qui les chiffrera toutes avec une clef matresse). Maintenant, si Alice est tue sur
lautoroute, Bernard peut demander la clef dAlice son responsable de la scurit.
Bernard devrait aussi sassurer d avoir personnellement la combinaison du coffre, sinon
si le responsable de la scurit est lui aussi cras par un autre camion, Bernard serait
de nouveau frapp par la malchance.
Le problme avec ce systme de gestion de clefs est que Bernard doit avoir confiance
dans le responsable de la scurit pour que celui-ci ne fasse pas un mauvais usage des
clefs dont il a la garde. Plus important encore, tous les employs doivent avoir confiance
dans le responsable de la scurit pour quil ne fasse pas mauvais usage de leur clef.
Une bien meilleure solution est d utiliser un protocole de partage de secret (voir 3.7).
Quand Alice engendre la clef, elle partage galement celle-ci en un certain nombre de
morceaux. Elle envoie ensuite chaque morceau chiffr bien sr un employ
diffrent de la compagnie suivant en cela les consignes de scurit de la socit. Aucun
des morceaux nest la clef lui seul mais quelquun peut rassembler les morceaux et
peut ainsi reconstruire la clef. Maintenant, Alice est protge contre toute personne
malintentionne et Bernard est protg de la perte de toutes les donnes dAlice en
cas d accident. Ou encore, elle peut stocker tous les morceaux, chacun chiffr avec une
clef publique d un employ diffrent de la socit, sur son propre disque dur . De cette
faon, personne ne soccupe de la gestion des clefs tant que ce nest pas ncessaire.
Un autre schma de duplication de clef [194] utilise les cartes puce (voir 24.13)
pour le dpt temporaire des clefs. Alice peut mettre sa clef d ordinateur sur une carte
puce et la donner Bernard pendant quelle sabsente. Bernard peut utiliser la carte
pour avoir accs son ordinateur, mais comme la clef est inscrite dans la carte, Bernard

8.9

Clefs compromises

195

ne peut pas la connatre. Et le systme marche double sens : Bernard peut vrifier
que la clef permet laccs lordinateur d Alice, et quand Alice reviendra, elle pourra
vrifier si Bernard a utilis la clef et si oui, combien de fois.
Un tel schma nest pas applicable aux transmissions de donnes. Sur un tlphone
protg, la clef ne devrait exister que le temps de lappel. Pour le stockage de donnes,
comme on vient de le dire, le dpt de clef peut tre une bonne ide. Jai perdu environ
une clef tous les cinq ans, et ma mmoire est suprieure la moyenne. Si 200 millions
de personnes utilisaient la cryptographie, ce mme taux quivaudrait 40 millions de
clefs perdues annuellement. Je laisse un double des clefs de ma maison mon voisin,
au cas o je les perde. Si les clefs de la maison taient des clefs cryptographiques, et si
je les perdais, je ne pourrais plus jamais rentrer chez moi. Au mme titre que je garde
part un duplicata de mes donnes, il me semble logique de garder une copie de ses
clefs de chiffrement de donnes.

8.9

Clefs compromises

Tous les protocoles, techniques et algorithmes de ce livre ne sont srs que si la clef (la
clef prive dans un systme cryptographie clef publique) reste secrte. Si la clef
dAlice est perdue, vole, imprime dans un quotidien ou compromise dune faon ou
dune autre, alors toute sa scurit senvole.
Si la clef compromise tait celle d un systme cryptographique clef secrte, Alice doit
changer sa clef et esprer que le dommage caus est minimum. Si ctait une clef prive,
elle a de plus gros problmes ; sa clef publique est probablement sur tous les serveurs
du rseau. Et si Estelle a accs la clef prive dAlice, elle peut alors se faire passer
pour elle sur le rseau : elle peut lire du courrier chiffr, signer de la correspondance,
conclure des contrats, et ainsi de suite. Estelle peut devenir Alice.
Quand une clef prive est compromise il est vital de diffuser linformation le plus vite
possible travers le rseau. Toute base de donnes publique de clefs publiques doit tre
immdiatement avertie quune clef prive est corrompue, sinon quelquun qui nest pas
au courant pourrait chiffrer un message avec cette clef.
Il faut esprer quAlice sait quand sa clef a t compromise. Si un C D C gre les clefs,
Alice doit lavertir que sa clef a t compromise. Sil n y a pas de C D C , elle doit
alors avertir tous ses correspondants. Quelquun doit rendre public le fait que tout
message reu aprs la perte de la clef est suspect et que personne ne doit envoyer
de message Alice avec la clef publique associe. Lapplication devrait utiliser un
systme de datation et les utilisateurs peuvent alors diffrencier les messages suspects
des messages lgitimes.
Si Alice ne sait pas exactement quand sa clef a t compromise, les choses sont plus
difficiles. Alice peut vouloir annuler un contrat sign par la personne qui a vol la clef.
Si le systme le permet, alors tout un chacun a la possibilit d annuler un contrat rien
quen prtendant que sa clef a t compromise avant la signature du contrat. Seul le
juge pourra en dbattre.
Cest un problme trs srieux qui met en lumire les dangers que prend Alice en liant
son identit une seule clef. Alice ferait mieux d avoir diffrentes clefs pour diffrentes
applications tout comme elle a diffrentes clefs dans sa poche qui ouvrent diffrentes
serrures. D autres solutions ce problme sont la biomtrie, des limitations d utilisation
dune clef, linsertion de dlais et la contre-signature.

196

Chapitre 8

Gestion des clefs

Les procdures et les recommandations sont rarement optimales, mais elles sont ce que
lon peut faire de mieux. La morale de cette histoire est quil faut protger les clefs, et
les clefs prives par-dessus tout.

8.10

Longvit des clefs

Aucune clef de chiffrement ne doit tre utilise pour une priode indfinie. Elle devrait
expirer automatiquement tout comme un passeport ou une licence. 1 1 y a plusieurs
raisons cela :
- Plus la clef sera utilise longtemps, plus elle aura de chances dtre compromise.
Les gens mettent par crit les clefs, ils les perdent. Les accidents arrivent. Si
vous utilisez la mme clef pendant un an, il y a bien plus de chances quelle soit
compromise que si vous lutilisez un jour seulement.
Plus la clef est utilise longtemps, plus grande est la perte si la clef est compro
mise. Si la clef est utilise seulement pour chiffrer un seul document de budget
sur un serveur de fichiers, alors la perte de la clef ne compromet que ce document.
Si la mme clef est utilise pour chiffrer tous les budgets sur le serveur de fichiers
alors la perte est nettement plus catastrophique.
- Plus la clef est utilise longtemps, plus grande est la tentation pour quelquun de
fournir leffort ncessaire pour la retrouver mme si cet effort est une attaque
exhaustive. Retrouver une clef partage par deux units militaires pendant un
jour permettrait quelquun de lire et dengendrer des messages entre ces deux
units pendant un jour. Retrouver une clef partage par un tat-major de larme
pendant un an permettrait la mme personne de lire et dengendrer des mes
sages travers le monde entier pendant toute une anne. En ayant conscience
du budget, dans notre monde daprs-guerre froide, quelle clef choisiriez-vous
dattaquer?
- Il est en gnral plus facile d effectuer une cryptanalyse quand on a plus de texte
chiffr avec une mme clef.
Pour toute application cryptographique, il doit y avoir une consigne qui dtermine la
longvit dune clef. Des clefs diffrentes peuvent avoir des longvits diffrentes. Pour
un systme bas sur la connection, tel que le tlphone, il semble logique dutiliser une
clef pour la dure de lappel et d en utiliser une nouvelle chaque appel. Les systmes
ddis aux canaux de communication ne sont pas si vidents Les clefs devraient avoir
une dure de vie relativement courte, selon la valeur et la quantit de donnes chiffres
pendant une priode donne. La clef pour une liaison de communication 1 gigabit
par seconde doit tre change plus souvent que la clef pour une liaison par modem
9600 bauds. En faisant lhypothse quil existe une mthode efficace pour transmettre
des nouvelles clefs laide d une clef de chiffrement de clefs, les clefs de session doivent
tre changes au minimum chaque jour.
Les clefs de chiffrement de clefs ne doivent pas tre changes aussi souvent. Elles sont
utilises occasionnellement (grosso modo une fois par jour) pour lchange de clefs. Cela
gnre peu de texte chiffr au cryptanalyste, et le texte en clair correspondant na pas

8.11

Destruction des clefs

197

de forme particulire. Toutefois, si une clef de chiffrement de clefs est compromise, la


perte potentielle est norme : toutes les communications chiffres avec ces clefs. Dans
certaines applications, les clefs de chiffrement de clefs sont changes seulement une fois
par mois ou une fois par an. Vous devez comparer le danger induit par le maintien
dune clef pour un bon moment celui induit par la distribution d une nouvelle clef.
Les clefs de chiffrement utilises pour chiffrer des fichiers pour archivage ne doivent
pas tre changes souvent. Les fichiers peuvent rester chiffrs sur le disque pendant des
mois ou des annes avant quon en ait besoin nouveau. Les dchiffrer et les rechiffrer
avec une nouvelle clef chaque jour naugmente aucunement la scurit: cela donne
juste plus de matire premire au cryptanalyste. Une solution serait de chiffrer chaque
fichier avec une clef unique par fichier et ensuite de chiffrer toutes ces clefs avec une
clef de chiffrement de clefs. La clef de chiffrement de clefs devrait alors tre mmorise
ou stocke dans un endroit sr. Bien sr la perte de cette clef signifierait la perte de
toutes les autres clefs.
Les clefs prives des applications de cryptographie clef publique ont des dures de
vie variables en fonction de lapplication. Les clefs prives utilises pour les signatures
numriques et les preuves didentit doivent durer des annes (voire mme une vie
entire). Les clefs prives utilises pour jouer pile ou face peuvent tre ignores
directement aprs avoir termin le protocole. Mme si la scurit dune clef est suppose
durer toute une vie, il peut tre prudent de la changer de tant autre. Les clefs prives
de nombreux rseaux ne sont valables que deux ans ; aprs cela lutilisateur doit se
procurer une nouvelle clef prive. Lancienne clef doit toujours rester secrte au cas o
lutilisateur doive vrifier une signature numrique pour cette priode. Mais la nouvelle
clef devrait tre utilise pour signer de nouveaux documents, rduisant ainsi le nombre
de documents dont disposerait un cryptanalyste pour une attaque.

8.11

Destruction des clefs

Etant donn que les clefs doivent tre remplaces rgulirement, les vieilles clefs doivent
tre dtruites. Les vieilles clefs ont de la valeur, mme si elles ne sont plus jamais
utilises. Avec celles-ci, un adversaire peut lire d anciens messages chiffrs [70].
Les clefs doivent tre dtruites de manire sre (voir 10.9). Si la clef est crite sur un
bout de papier, le papier peut tre dchiquet ou brl. Veillez utiliser une machine
dchiqueter de trs bonne qualit : de nombreux mauvais dchiqueteurs sont sur le
march. Les algorithmes de ce livre sont protgs des attaques exhaustives qui cotent
des millions de dollars et qui prennent des millions d annes. Si un adversaire peut
retrouver votre clef en rcuprant la sortie de la machine dchiqueter dans votre
poubelle, et sil peut payer 1 0 0 chmeurs dans un pays pauvre 0 , 1 dollar par heure
pendant un an pour recoller les pages dchiquetes, cela ne reprsenterait que 26 0 0 0 $
bien dpenss.
Si la clef est dans une mmoire E E P R O M , la clef peut tre rcrite plusieurs fois. Si la
clef est dans une E P R O M ou une P R O M , la puce doit tre broye en mille morceaux
et dissmine aux quatre vents. Si la clef est stocke sur un disque d ordinateur, les bits
utiliss pour son stockage doivent tre rcrits plusieurs fois (voir 10.9) ou le disque
devrait lui-mme tre dchiquet.
Un problme potentiel est que, dans un ordinateur, les clefs peuvent tre facilement
copies et stockes en divers endroits. Tout ordinateur qui autogre sa mmoire, en

Chapitre 8

198

Gestion des clefs

crivant et en lisant continuellement la mmoire de travail sur le disque, ne fait quaug


menter le problme. Il ny a aucun moyen de sassurer que la clef a effectivement
t correctement efface, plus particulirement si le systme de conduite de lordina
teur contrle le processus d effacement lui-mme. Les plus paranoaques d entre vous
doivent envisager lcriture dun programme d effacement spcial qui balaie tous les
disques pour rechercher des copies du motif des bits de la clef dans les blocs non utili
ss et alors effacer ces blocs. Noubliez pas non plus deffacer le contenu de tout fichier
temporaire, ou du fichier de pagination ( swap file ) si ncessaire.

8.12

Gestion des clefs


pour la cryptographie clef publique

La cryptographie clef publique rend la gestion des clefs plus facile mais elle a ses
propres problmes. Chaque personne na quune clef publique, peu importe le nombre
dutilisateurs du rseau. Si Alice veut envoyer un message Bernard, elle doit se pro
curer la clef publique de Bernard. Elle peut lobtenir de plusieurs manires :
Elle peut lobtenir auprs de Bernard.
Elle peut lobtenir auprs dune base de donnes centrale.
Elle peut lobtenir partir de sa propre base de donnes prive.
Le paragraphe 2.5 prsente un certain nombre dattaques contre la cryptographie clef
publique, base sur Martin qui remplace la clef de Bernard par la sienne. Le scnario
est quAlice veut envoyer un message Bernard. Elle demande la base de donnes
publique et obtient la clef publique de Bernard. Mais Martin, qui est sournois, remplace
la clef de Bernard par la sienne. (Si Alice demande directement Bernard, Martin doit
intercepter la communication entre Alice et Bernard et remplacer la clef de Bernard par
la sienne.) Alice chiffre son message avec la clef de Martin et lenvoie Bernard. Martin
intercepte le message, le dchiffre, le lit. Il le rechiffre alors avec la vraie clef publique
de Bernard et envoie le rsultat Bernard. Ni Alice, ni Bernard ne remarquent quoi
que ce soit.

Certificat de clef publique


Un CE RTIFIC AT DE c l e f p u b l i q u e est constitu de la clef publique de quelquun si
gne par une personne de confiance. Les certificats sont utiliss pour contrecarrer les
remplacements dune clef par une autre [879]. Le certificat de Bernard dans la base
de donnes des clefs publiques contient bien plus que sa clef publique. Il contient des
informations concernant Bernard son nom, son adresse, etc. et il est sign par
quelquun en qui Alice a confiance : Ivan, habituellement connu sous le nom dautorit
de certification (A C en abrg). En signant la fois la clef et les informations concer
nant Bernard, Ivan certifie que ces informations sont correctes et que la clef publique
appartient bien Bernard. Alice vrifie la signature de Ivan et ensuite utilise la clef
publique en tant sre que cest bien celle de Bernard et de personne d autre. Les cer
tificats jouent un rle important dans nombre de protocoles clef publique tels que le
PE M [827] (voir 24.10) et le X .509 [309] (voir 24.9).

8.12

Gestion des clefs pour la cryptographie clef publique

199

Une caractristique complique non-cryptographique accompagne ce genre de systme.


Quelle est la signification de la certification? Ou, pour sexprimer autrement, qui est
investit du pouvoir de certification, et envers qui? Nimporte qui peut signer le certi
ficat dun autre, mais il faut un moyen de filtrer les certificats suspects : par exemple,
les certificats demploys dune compagnie signs par l A C pour une autre compagnie.
Normalement, une chane de certification transfre la confiance: une seule entit d
signe certifie des agents, ces agents certifient les A C des entreprises, lesquelles A C
certifient leurs employs.
Voici dautres questions qui demandent rflexion :
- Quel niveau de confiance en lidentit de quelquun est induit par son certificat ?
- Quelles sont les relations entre une personne et lA C qui certifie sa clef publique,
et comment ces relations peuvent tre impliques par le certificat?
- Qui peut-on dsigner comme tant la seule entit de confiance au sommet de
la chane de certification?
De quelle longueur devrait tre une chane de certification?
Lidal serait que Bernard suive une sorte de procdure d authentification avant que
lAC ne signe son certificat. De plus, une datation ou une indication de la priode de
validit du certificat est importante pour se protger des clefs compromises [467].
La datation nest pas suffisante. Les clefs peuvent tre invalides avant expiration, soit
pour des raisons de compromission ou administratives. C est pourquoi il est important
que lA C garde une liste des certificats invalids et que les utilisateurs la consulte
rgulirement. Ce problme de rvocation de clef est toujours difficile rsoudre.
Une paire clef publique, clef prive n est pas suffisante. Il est certain quune bonne
application de la cryptographie clef publique requiert des clefs distinctes pour le chif
frement et les signatures digitales. Cette sparation permet d avoir diffrents niveaux
de scurit, temps dexpiration, procdures de duplication, etc... Quelquun pourrait
signer des messages avec une clef de 2048 bits stocke dans une carte puce et va
lable pour 20 ans, alors quils pourraient utiliser une clef de 768 bits stocke dans un
ordinateur et valable pour six mois pour le chiffrement.
Une paire unique de clefs pour le chiffrement et la signature nest pas non plus suf
fisante. Une clef prive authentifie une relation ainsi quune identit, et les personnes
ont plus dune relation. Alice pourrait vouloir signer un document en tant quAlice,
lindividu, un autre en tant quAlice, vice-prsidente de la socit Monolith, S.A. , et
un troisime en tant quAlice, prsidente d une organisation communautaire. Certaines
de ces clefs sont plus importantes que d autres et demandent tre mieux protges.
Alice pourrait avoir stocker un duplicata de sa clef de travail auprs de lofficier de
scurit de lentreprise ; elle ne veut pas que lentreprise ait une copie de la clef avec
laquelle elle a sign un emprunt. Tout comme Alice a plusieurs clefs dans sa poche, elle
aura plusieurs clefs cryptographiques.

Gestion distribue des clefs


Dans certaines situations, ce genre de gestion des clefs centralise ne marchera pas.
Peut-tre quil ny a pas d A C en laquelle Alice et Bernard ont confiance. Peut-tre

200

Chapitre 8

Gestion des clefs

quAlice et Bernard nont confiance quen leurs amis. Peut-tre quAlice et Bernard
nont confiance en personne.
La gestion distribue des clefs, utilise dans le programme Pretty Good Privacy
(P G P ) (voir 24.12) rsout ce problme laide de parrains. Les parrains sont
dautres utilisateurs du systme qui peuvent signer les clefs publiques de leurs amis.
Par exemple, quand Bernard engendre sa clef publique, il en donne une copie ses
amis: Christine et David. Ils connaissent Bernard et donc ils signent chacun la clef
publique de Bernard et lui envoient une copie des clefs signes. Maintenant, Bernard
prsente sa clef publique une trangre, Alice; il la lui prsente avec les signatures
de ses deux parrains. Si Alice connat et a confiance en Christine, elle a des raisons
de croire que la clef de Bernard est valide. Si elle connat un peu et a quelque peu
confiance en Christine et David, elle a des raisons de croire que la clef de Bernard est
valide. Si elle ne connat ni Christine ni David, elle na aucune raison de faire confiance
la clef de Bernard.
Au fil du temps, Bernard rassemblera bien plus de parrains. Si Alice et Bernard gra
vitent dans les mmes cercles, les chances d Alice de connatre un des parrains de
Bernard sont leves. Pour se prmunir contre Martin qui remplace une clef par une
autre, un parrain doit sassurer que la clef de Bernard appartient bien celui-ci avant de
la signer. Le parrain peut demander que la clef soit communique lors d une rencontre
en chair et en os, ou vrifie par tlphone.
L avantage de ce mcanisme est quil ny a pas dA C en qui tout le monde doit avoir
confiance. Le dfaut est que lorsquAlice reoit la clef publique de Bernard, elle na
aucune garantie de connaitre un des parrains, et par consquent aucune garantie de
pouvoir avoir confiance dans la validit de cette clef.

Chapitre 9

Types et modes dalgorithmes


Il existe deux modles de base d algorithmes clef secrte : lalgorithme de chiffrement
par blocs et lalgorithme de chiffrement en continu. Les algorithmes de chiffrement
par blocs manipulent des blocs de texte en clair et de texte chiffr gnralement
de 64 bits mais quelquefois plus longs. Les algorithmes de chiffrement en continu
manipulent des flots de textes en clair et de textes chiffrs bit par bit ou octet par
octet (ou mme mot de 32 bits par mot de 32 bits). Avec un algorithme de chiffrement
par blocs, le mme bloc de texte en clair sera toujours chiffr en un mme bloc de
texte cliiffr, en utilisant la mme clef. Avec un algorithme de chiffrement en continu,
le mme bit ou octet de texte en clair sera chiffr en un bit ou un octet diffrent
chaque chiffrement.
Un mode cryptographique combine en gnral un algorithme cryptographique, une
sorte de rtroaction et des oprations simples. Les oprations sont simples car la scurit
est une fonction du chiffrement sous-jacent, et non du mode. De plus, le mode de
chiffrement ne devrait pas compromettre la scurit de lalgorithme dont il dcoule.
Il y a dautres motifs de scurit : les motifs dans un texte en clair doivent tre dissimu
ls, lentre de lalgorithme cryptographique doit tre rendue alatoire, la manipulation
du texte en clair par insertion derreurs dans le texte chiffr doit tre difficile et le chif
frement de plus dun message avec la mme clef doit tre possible. Nous discuterons
de tout ceci en dtails dans les paragraphes suivants.
Lefficacit est aussi prendre en considration. Le mode ne doit pas tre moins efficace,
de manire significative, que lalgorithme cryptographique sous-jacent. Dans certaines
circonstances, il est important que le texte chiffr ait la mme taille que le texte en
clair.
Une troisime considration concerne la tolrance aux fautes. Certaines applications
ont besoin de chiffrer ou de dchiffrer en parallle, alors que dautres ont besoin de
faire autant de prcalculs que possible. Avec encore d autres, il est important que le
processus de dchiffrement soit capable de surmonter des erreurs de bits dans le flot
de textes chiffrs, des pertes ou des rajouts de bits. Comme nous allons le voir, les
diffrents modes ont diffrents sous-ensembles de ces caractristiques.

202

9.1

Chapitre 9

Types et modes dalgorithmes

Carnet de codage lectronique

Le mode du c a r n e t d e c o d a g e l e c t r o n i q u e (E C B pour Electronic CodeBook )


est la mthode la plus vidente pour utiliser un algorithme de chiffrement par blocs
un bloc de texte en clair se chiffre en un bloc de texte chiffr. Comme un mme bloc de
texte en clair sera toujours chiffr en un mme bloc de texte chiffr, il est thoriquement
possible de crer un carnet de codage de textes en clair et de leurs textes chiffrs
correspondants. Nanmoins, si la taille du bloc est de 64 bits le carnet de codage
aura donc 264 entres ce qui est bien trop grand pour tre prcalcul et stock. Et
rappelez-vous, chaque clef a un carnet diffrent.
C est le mode opratoire le plus simple utiliser. Chaque bloc de texte en clair est
chiffr indpendamment. Vous navez pas chiffrer un fichier linairement : vous pouvez
dabord chiffrer les 1 0 blocs du milieu, ensuite les blocs de la fin puis ceux du dbut.
C est important pour des fichiers chiffrs auxquels on accde alatoirement, comme une
base de donnes. Si une base de donnes est chiffre par le mode ECB, alors nimporte
quel enregistrement peut tre ajout, effac, chiffr ou dchiffr indpendamment de
tous les autres en faisant lhypothse que les enregistrements ont un nombre entier de
blocs de chiffrement. Et le processus est drivable ; si vous avez de multiples processeurs
de chiffrement, ils peuvent chiffrer ou dchiffrer diffrents blocs qui nont aucun rapport
les uns avec les autres.
Le dfaut du mode E CB est que si un cryptanalyste a le texte en clair et le texte
chiffr de plusieurs messages, il peut commencer construire un carnet de codage sans
connatre la clef. Dans la plupart des situations du monde rel, des fragments de mes
sages ont tendance se rpter. Diffrents messages peuvent avoir des squences de bits
en commun Des messages engendrs par ordinateur, tel que le courrier lectronique,
peuvent avoir des structures rgulires. Les messages peuvent tre redondants ou avoir
de longues chanes de zros ou d espaces.
Si un cryptanalyste apprend que le texte en clair 5e081bc5 donne le texte chiffr
7ea593a4 , il est capable de dchiffrer ce bloc de texte chiffr ds quil apparat
dans un autre message. Si les messages chiffrs contenant beaucoup de redondances,
et quelles ont tendance apparatre aux mmes endroits dans diffrents messages,
un cryptanalyste peut obtenir beaucoup dinformations. Il peut mener des attaques
statistiques contre le texte en clair sous-jacent, sans se soucier du niveau de lalgorithme
de chiffrement par blocs.
Cette vulnrabilit est plus grande au dbut et la fin des messages o apparaissent
des en-ttes et des conclusions bien dfinies qui contiennent des informations concer
nant lexpditeur, le destinataire, la date, etc. Ce dfaut est parfois appel dbuts
strotyps et fins strotypes et sera vit par les modes dcrits ci-aprs.
Le ct positif est quil ny a pas de risque, au point de vue scurit, chiffrer de
multiples messages avec la mme clef. En fait, chaque bloc peut tre considr comme
un message part chiffr avec la mme clef. Les erreurs de bits dans le texte chiffr,
quand il est dchiffr, feront que le bloc entier de texte en clair sera incorrectement
dchiffr mais naffecteront pas le reste du texte en clair. Nanmoins, si un bit du texte
chiffr est accidentellement perdu ou rajout, le reste du texte chiffr sera incorrecte
ment dchiffr moins quil y ait une sorte de structure d encadrement pour raligner
les limites du bloc.

9.2

Bloc rejou

203

Remplissage
La plupart des messages ne se divisent pas exactement en un nombre entier de blocs
de 64 bits (ou de toute autre taille) : il y a d habitude un bloc court la fin. LECB
traite des blocs de 64 bits. Le rem plissage permet de rgler ce problme.
Remplissez le bloc avec un schma rgulier
des zros, des uns, des uns et des zros en
alternance pour complter le bloc. Si vous devez tre capable de retirer le remplissage
aprs le dchiffrement, ajoutez le nombre d octets de remplissage comme dernier octet
du dernier bloc. Par exemple, faites lhypothse que la taille des blocs est de 64 bits,
et que le dernier bloc contient 3 octets (24 bits). Cinq octets de remplissage sont
ncessaires pour transformer le dernier bloc en un bloc de 64 bits; ajoutez 4 octets
de 0 et un octet final avec le nombre 5. Aprs dchiffrement, dtruisez les 5 derniers
octets du dernier bloc dchiffr. Pour que cette mthode marche correctement, tous les
message doivent tre remplis. Mme si le texte en clair sachve la limite dun bloc,
vous devez remplir un bloc complet. Sinon, vous pouvez utiliser un caractre marqueur
de fin de fichier pour dlimiter la fin du texte en clair, puis remplir la suite de ce
caractre.
La figure 9.1 propose une alternative appele vol de texte chiffr [405]. E i n- i est le
dernier bloc en clair plein et M .n est le bloc final en clair court. Cn~j est le dernier bloc
chiffr plein et Cn est le bloc final chiffr court. C' est juste un rsultat intermdiaire
et ne fait pas partie du texte chiffr transmis.
Chiffrement

Mn-1

Dchiffrement

Mn

1r

Cnu

C
r

1f

Cn

ir
C

Mn

F ig. 9.1

9.2

1r

1r
C

Vol de texte chiffr en mode ECB

Bloc rejou

Un dfaut plus dangereux avec le mode E C B est que ladversaire pourrait modifier les
messages chiffrs sans connatre la clef, ni mme lalgorithme, de manire duper le
destinataire lgitime. Ce dfaut fut dcrit en premier dans [295],
Pour illustrer le problme, considrons un systme de transfert de fonds inter-bancaire
qui fait circuler de largent entre des comptes dans diffrentes banques. Pour rendre

204

Chapitre 9

Types et modes dalgorithmes

la vie plus facile pour le systme informatique de la banque, les banques se sont mises
daccord sur un format de message standard pour les transferts dargent qui ressemble
ceci :
Banque A : mettrice
Banque B: bnficiaire
Nom du dposant
Numro de compte du dposant
Montant du dpt

15 blocs
15 blocs
6 blocs
2 blocs
1 bloc

Un bloc correspond un chiffrement de bloc de 8 octets. Les messages sont chiffrs


laide dun algorithme de chiffrement par blocs en mode ECB.
Martin, qui coute les communications entre les deux banques, la banque d Alice et
la banque de Bernard, peut utiliser cette information pour senrichir. Premirement,
il programme son ordinateur pour enregistrer tous les messages chiffrs de la banque
dAlice vers la banque de Bernard. Ensuite, il transfre 100 dollars de la banque d Alice
vers son compte la banque de Bernard. Plus tard, il recommence. En utilisant son
ordinateur, il met les messages enregistrs en corrlation en cherchant une paire de
messages identiques. Ces messages sont ceux qui autorisent le transfert de 100 dollars
vers son compte. Sil y a plus dune paire de messages identiques (ce qui est trs
certainement probable), il fait un autre transfert et enregistre le rsultat. Finalement,
il isole le message qui a autoris la transaction.
Maintenant, il peut insrer volont ce message dans la liaison de communication.
Chaque fois quil envoie un message la banque de Bernard, un nouveau montant de
100 dollars est crdit sur son compte. Lorsque les deux banques contrleront la balance
de leurs transferts (probablement en fin de journe), elles dtecteront les autorisations
de transfert fantmes ; mais si Martin est malin, il aura dj retir largent et sera en
route vers une rpublique exotique o il ny a pas de loi d extradition. Et il a srement
commis son forfait avec des montants beaucoup plus levs que 1 0 0 dollars et avec de
nombreuses autres banques.
A premire vue, les banques pourraient aisment viter cela en rajoutant une datation
leurs messages.
Datation
Banque A : mettrice
Banque B : bnficiaire
Nom du dposant
Numro de compte dudposant
Montant du dpt

1 bloc
15 blocs
15 blocs
6 blocs
2 blocs
1 bloc

Deux messages identiques seraient facilement identifis avec ce systme. Mais, en utili
sant une mthode appele blocs rejous, Martin peut encore senrichir. La figure 9.2
montre que Martin peut extraire les huit blocs chiffrs correspondant son nom et
son numro de compte : les blocs 5 12. En analysant cette figure, Martin, dsormais
arm, ricane dans son coin.
Il intercepte alatoirement des messages de la banque d Alice vers la banque de Bernard
et remplace les blocs 5 12 dans le message avec les octets correspondant son nom et
son numro de compte. Ensuite, il les envoie la banque de Bernard.Il na pas savoir
qui est le dposant lgitime ; il n a mme pas connatre lemontantdu transfert (bien

9.3

Mode de chiffrement avec chanage de blocs

205

Numro de bloc
1

Banque
Datation mettrice

Banque
bnficiaire

10

Nom du dposant

11

12

Compte du
dposant

13

Montant

Cham p

FlG. 9 2 - Exemple dun dossier blocs chiffrs

quil puisse corrler les messages des diffrents transferts avec des montants diffrents
quil a effectus vers son compte, et ainsi dterminer les blocs chiffrs correspondant
certains montants). Simplement, il remplace les noms et les numros de compte par les
siens et il contemple le solde de son compte augmenter, (il faut que Martin soit prudent
et ne modifie pas le message de retrait, imaginez rien quune seconde que chacun ait
une longueur diffrente.)
Cela prendra plusieurs jours aux banques pour dtecter cela. Lorsquelles feront la
balance journalire des transferts, tout sera en ordre. Ce ne sera certainement pas
avant que lun des dposants honntes saperoive que largent ne lui a pas t crdit,
ou que quelquun remarque lactivit inhabituelle du compte de Martin, que les banques
dcouvriront lescroquerie. Martin nest pas stupide, et dici l il aura ferm son compte,
chang son nom et achet une villa en Argentine.
Les banques peuvent minimiser le problme en changeant frquemment de clef mais
Martin peut aussi travailler plus vite. Nanmoins, rajouter un C A M peut aussi r
soudre le problme. Pourtant, c est un dfaut fondamental en mode ECB. Martin peut
retirer, rpter ou changer des blocs volont. La solution est une technique appele
chanage.

9.3

Mode de chiffrement avec chanage de


blocs

Le chanage utilise une mthode de rtroaction car les rsultats du chiffrement du


bloc prcdent sont rutiliss comme entres pour le chiffrement du bloc courant. En
dautres termes, chaque bloc est utilis pour modifier le chiffrement du bloc suivant.
Chaque bloc chiffr dpend non seulement du bloc de texte en clair qui la engendr
mais aussi de tous les blocs de texte en clair qui prcdent celui-ci.
En mode de chiffrement avec chanage de blocs (C B C pour cipher block chaining ), le texte en clair est combin par ou exclusif avec le bloc chiffr prcdent
avant dtre chiffr. La figure 9.3a montre le chiffrement CBC en action. Aprs quun
bloc de texte en clair a t chiffr, le texte chiffr correspondant est aussi stock dans
un registre de rtroaction. Avant que le bloc suivant de texte en clair soit chiffr, il
est combin par ou exclusif avec le registre de rtroaction pour devenir la nouvelle
entre de lalgorithme de chiffrement. Le texte chiffr rsultant est nouveau stock
dans le registre de rtroaction pour tre combin par ou exclusif avec le bloc de texte
en clair suivant, et ainsi de suite jusqu la fin du message. Le chiffrement de chaque

Chapitre 9

206

Types et modes dalgorithmes

bloc dpend de tous les blocs prcdents.


M.

i-l

VI

M.

M. ,
1+1

Ci-l

i+J

M i-l

C:i+1

M.

' 'i

M.

'" i + l

(b) Dchiffrement CBC

(a) Chiffrement CBC

F ig. 9.3 - Mode de chiffrement par chanage de blocs


Le dchiffrement est aussi facile(voir la figure 9.3b). Un bloc de texte chiffr est dchiffr
normalement, et aussi sauv dans le registre de rtroaction. Une fois que le bloc suivant
a t dchiffr, il est combin par ou exclusif avec le contenu du registre de rtroaction.
Ensuite, le bloc suivant de texte chiffr est sauv dans le registre de rtroaction, et ainsi
de suite jusqu la fin du message.
Mathmatiquement, on peut crire :
Ct = E fc i- M t C j - i )

Mi = C i-! D n{Ct).

Vecteur dinitialisation
Le mode C B C ne produit des blocs chiffrs diffrents pour des mmes blocs en clair
seulement si un des blocs prcdents est diffrent. Deux messages identiques donneront
toujours le mme texte chiffr. Pis encore, deux messages qui commencent de la mme
faon donneront le mme texte chiffr jusqu la premire diffrence. Certains messages
ont un en-tte commun : un en-tte de lettre, une ligne Frorri dun message lectro
nique, par exemple. Bien quune attaque par blocs rejous soit toujours impossible, ce
dbut identique donne encore dutiles informations au cryptanalyste.
Evitez cela en chiffrant des donnes alatoires comme premier bloc. Ce bloc de donnes
alatoires est appel vecteur dinitialisation (IV pour initialization vector ),
variable d initialisation ou valeur initiale de chanage. LIV na pas de sens : il
est juste l pour rendre chaque message unique. Quand le destinataire dchiffre ce bloc,
il lutilise pour remplir le registre de rtroaction et lignore par ailleurs. Une datation
fait un bon IV. Sinon, utilisez des bits alatoires.

9.3

Mode de chiffrement avec chanage de blocs

201

Avec laddition de lIV , des messages en clair identiques donneront des messages chiffrs
diffrents. Il est donc impossible pour un espion de tenter une attaque par blocs rejous,
et encore plus difficile de constituer un carnet de codage. Bien que lIV devrait tre
unique par message chiffr avec la mme clef, ce nest pas une condition absolue.
LIV na pas besoin dtre tenu secret ; il peut tre transmis en clair avec le texte chiffr.
Si vous ntes pas persuad, considrez le raisonnement suivant. Nous possdons un
message de plusieurs blocs: B\, B 2 , ......., B ,. B\ est chiffr avec lIV. B 2 est chiffr
avec le texte chifr de Bi en tant quIV . B 3 est chiffr avec le texte chifr de B 2 en
tant quIV , etc. Donc, sil y a n blocs, il y a n 1 IV , mme si lIV original est gard
secret. Il ny a donc aucune raison de garder lIV secret ; lIV est juste un simple bloc
de texte chiffr un peu comme Bq qui commence la srie.

Remplissage
Le remplissage marche exactement comme dans le mode E B C , mais dans certaines
applications le texte chiffr doit avoir exactement la mme taille que le texte en clair.
Peut-tre quun texte en clair doit tre chiffr et mis exactement la mme place en
mmoire. Dans ce cas, vous devez chiffrer le dernier bloc court diffremment. Faites
lhypothse que le dernier bloc a j bits. Aprs avoir chiffr le dernier bloc complet,
rechiffrez le texte chiffr, slectionnez les j bits les plus gauche du texte chiffr deux
fois et combinez le rsultat par ou exclusif avec le bloc court pour donner le texte
chiffr. Cela est illustr par la figure 9.4.
M

n-2

Pn (j-bits de long)

-*0

Slectionne
les j-bits

-e

les plus a gauchi


n-2

n 1

C (j-bits de long)

F ig. 9.4 - Mthode de chiffrement pour le dernier bloc


La faiblesse ici est que bien que Martin ne puisse pas retrouver le dernier bloc, il
peut le modifier systmatiquement en changeant des bits du texte chiffr. Si les tout
derniers bits du texte chiffr contiennent de linformation vitale, c est une faiblesse. Si
les derniers bits contiennent simplement des informations de gestion, ce nest pas un
problme.
Le vol de texte chiffr est une meilleure mthode (voir la figure 9.5) [405]. M _ i est le
dernier bloc en clair plein et M n est le bloc final en clair court. Cn^\ est le dernier bloc
chiffr plein et Cn est le bloc final chiffr court. C ' est juste un rsultat intermdiaire

208

Chapitre 9

Types et modes dalgorithmes

et ne fait pas partie du texte chiffr transmis. Lavantage de cette mthode est que
tous les bits d un message en clair passent par lalgorithme de chiffrement.

Propagation derreurs
Le mode C B C peut tre dcrit comme une rtroaction du texte chiffr du ct du
chiffrement et une alimentation en texte chiffr du ct du dchiffrement. Ceci a des
consquences sur les erreurs. Une erreur d un seul bit dans un bloc de texte en clair
va affecter le bloc de texte chiffr correspondant et tous les blocs de textes chiffrs qui
suivent. Ce nest pas de grande porte parce que le dchiffrement va inverser cet effet
et le texte en clair retrouv aura la mme seule erreur.
Les erreurs dans le texte chiffr sont plus frquentes. Elles peuvent tout simplement
provenir d un bruitage de la liaison ou d un disfonctionnement du dispositif de stockage.
En mode C B C , une erreur d un seul bit dans le texte chiffr affecte un bloc, et un bit
du texte en clair reconstruit. Le bloc contenant lerreur est compltement brouill. Le
bloc suivant a une erreur de 1 bit au mme endroit que le bit erron.
Cette transformation dune petite erreur dans le texte chiffr en une grande erreur
dans le texte en clair est appele amplification derreur. Cest un handicap majeur.
Les blocs aprs le deuxime ne sont pas affects par lerreur, donc le mode C B C est
auto-rparateur. Deux blocs sont affects par une erreur mais le systme rcupre
et continue fonctionner correctement pour tous les blocs suivants. Le C B C est un
exemple d algorithme de chiffrement par blocs utilis d une manire auto-synchronise,
mais seulement au niveau du bloc.
Bien que le mode C B C rcupre rapidement les erreurs de bits, il ne rcupre pas du
tout les erreurs de synchronisation. Si un bit est ajout ou perdu dans le flot de texte
chiffr, alors tous les blocs suivants sont dcals d un bit et le dchiffrement va produire
du charabia indfiniment. Tout cryptosystme qui utilise le mode C B C doit sassurer
que la structure des blocs reste intacte, soit par encadrement soit en stockant les
donnes dans des paquets de plusieurs blocs.

9-4

Algorithmes de chiffrement en continu

209

Problmes de scurit
Des problmes potentiels sont causs par la structure mme du C B C . Primo, du fait
quun bloc de texte chiffr affecte les blocs suivants dune manire simple, Martin peut
ajouter des blocs la fin d un message chiffr sans tre dtect. Ce sera coup sr
dchiffr en charabia, mais dans certaines situations, ce nest pas dsirable.
Si vous utilisez le C B C , vous devriez structurer votre texte en clair de faon savoir
o le message sarrte et de pouvoir dtecter les rajouts de blocs supplmentaires.
Secundo, Martin peut altrer un bloc de texte chiffr pour introduire des changements
voulus dans le bloc dchiffr de texte en clair. Par exemple, si Martin change un seul
bit de texte chiffr, le dchiffrement du bloc entier sera incorrect, mais le bloc suivant
comportera une erreur d 1 bit en lieu et place du bit correspondant. Il y a des situations
o ceci est dsirable. Le message en clair entier devrait inclure une sorte de contrle
redondant ou une authentification.
Finalement, bien que les motifs du texte en clair soient dissimuls par le chanage, les
trs longs messages auront encore des motifs. Le paradoxe de lanniversaire prvoit
quil y aura des blocs identiques aprs 2m / 2 blocs, o m est la taille du bloc. Pour un
bloc d une taille de 64 bits, a reprsente peu prs 34 giga-octets. Un message doit
tre incroyablement long avant que ce ne soit un problme.

9.4

Algorithmes de chiffrement en continu

Les algorithmes de chiffrement en continu convertissent le texte en clair en texte chiffr


1 bit la fois. La ralisation la plus simple d un algorithme de chiffrement en continu
est illustre par la figure 9.6. Un gnrateur de codons 1 engendre un flux de bits
(appelons-les codons) : k\, k,2 , k%, ... , fcj. Ce flux est combin par ou exclusif avec le
flux de bits du texte en clair m j, ?7i2 , m 3 , ..., m ,, pour produire le flux de bits du texte
chiffr.
Ci = mi h

F ig. 9.6 - Chiffrement en continu


1. Note du traducteur : le term e c o d o n a t utilis pou r allger la traduction de termes techniques
anglo-saxons qui n ont pas d quivalents simples en franais.

210

Chapitre 9

Types et modes dalgorithmes

Du ct du dchiffrement, les bits du texte chiffr sont combins par ou exclusif avec
un flux identique de codons pour retrouver les bits du texte en clair.
rrii = a kt

Comme :
ml k i @ki = ml

tout va bien.
La scurit du systme dpend entirement des dtails internes du gnrateur de co
dons. Si le gnrateur de codons engendre un flux continu de zros, le texte chiffr sera
identique au texte en clair et toute lopration sera inutile. Si le gnrateur de codons
engendre un motif rptitif de 16 bits, lalgorithme nest rien dautre que le simple
algorithme du ou exclusif qui nest pas du tout sr (voir 1.4). Si le gnrateur de
codons engendre une suite de bits alatoires (pas pseudo-alatoires, vraiment alatoires
voir 2 .8 ), vous avez la technique du masque jetable et une scurit parfaite.
La scurit des algorithmes de chiffrement en continu concrets est entre les deux ex
trmes (ou exclusif et masque jetable) idalement, elle est plus proche du masque
jetable. Le gnrateur de codons engendre un flux de bits qui ont lair alatoires, mais
en fait il est dterministe et il peut tre reproduit de faon infaillible au moment du
dchiffrement. Plus la sortie du gnrateur est alatoire, plus il est difficile pour le
cryptanalyste de le casser.
Si, nanmoins, le gnrateur de codons engendre le mme flot de bits chaque fois quon
lactive, le systme cryptographique rsultant sera facile casser. Un exemple montrera
mieux pourquoi.
Si Estelle a un texte chiffr et le texte en clair correspondant, elle peut combiner par
ou exclusif le texte en clair avec le texte chiffr pour retrouver le flux de codons. Ou, si
elle dispose de deux textes chiffrs avec le mme flux de codons, elle peut les combiner
par ou exclusif pour obtenir le rsultat de la combinaison par ou exclusif des deux
textes en clair. C est facile casser et elle peut alors combiner par ou exclusif un des
textes en clair avec le texte chiffr pour retrouver le flux de codons.
Maintenant, chaque fois quelle intercepte un message chiffr, elle a les codons nces
saires pour dchiffrer le message. De plus, elle peut dchiffrer et lire tout texte chiffr
quelle aurait intercept avant. Quand Estelle obtient une seule paire texte en clair,
texte chiffr , elle peut tout lire.
Cest pourquoi tous les algorithmes de chiffrement en continu utilisent des clefs. La sor
tie du gnrateur de codons est une fonction de la clef.Maintenant, si Estelle a une paire
texte en clair, texte chiffr , elle peut seulement lire les messages chiffrs avec une
seule clef. Changez la clef et ladversaire se retrouve la case dpart. Les algorithmes
de chiffrement en continu sont spcifiquement utiles pour chiffrer des communications
continues : un lien T - l entre deux ordinateurs, par exemple.
Un gnrateur de codons est compos de trois parties de base (voir la figure 9.7). Ltat
interne dcrit ltat courant du gnrateur de codons. Deux gnrateurs de codons, avec
la mme clef et le mme tat interne, produisent le mme flux de codons. La fonction
de sortie prend ltat interne et engendre un codon (un bit). La fonction tat-suivant
prend ltat interne et engendre un nouvel tat interne.

9.5

Chiffrement autosynchrone, en continu

F ig. 9.7

9.5

211

A lintrieur dun gnrateur de codons

Chiffrement autosynchrone en continu

Dans un algorithme de chiffrement autosynchrone en continu, chaque bit du flux


de codons est une fonction d un nombre fixe de bits du texte chiffr qui prcde [1383].
Les militaires appellent cela un chiffrement clef automatique (C T A K pour ciphertext auto key ). L ide de base a t brevete en 1946 [6 6 8 ].
La figure 9.8 illustre un chiffrement autosynchrone en continu. Ltat interne est une
fonction des n bits prcdents du texte chiffr. La complexit cryptographique rside
dans la fonction de sortie qui prend ltat interne et qui engendre un codon.
Comme ltat interne dpend entirement des n bits prcdents du texte chiffr, au
dchiffrement, le gnrateur de codons se synchronisera automatiquement avec le g
nrateur de codons du chiffrement aprs avoir reu n bits de texte chiffr.

FlG. 9.8 - Un gnrateur de codons autosynchrone

Chapitre 9

212

Types et modes dalgorithmes

Dans des ralisations intelligentes de ce mode, chaque message commence avec un


en-tte alatoire long de n bits. Cet en-tte est chiffr, transmis et dchiffr. Le dchif
frement en sera incorrect, mais aprs ces n bits les deux gnrateurs de codons seront
synchroniss.
Linconvnient du chiffrement autosynchrone en continu est quil est sujet la propa
gation derreur. Pour chaque bit de texte chiffr corrompu durant la transmission, le
gnrateur de codons de dchiffrement produira n codons errons. Donc, pour chaque
erreur de texte chiffr, il y aura n erreurs correspondantes dans le texte en clair, jusqu
ce que le bit corrompu sorte de ltat interne.

Problmes de scurit
Les systmes de chiffrement autosynchrone en continu sont aussi vulnrables aux at
taques par blocs rejous. D abord, Martin enregistre quelques bits de texte chiffr. Puis,
un peu plus tard, il place cet enregistrement dans la communication. Aprs quelque
charabia initial pendant que le rcepteur se resynchronise, le vieux texte chiffr sera
dchiffr normalement comme lgitime. Le rcepteur na aucun moyen de dterminer
que ces donnes ne sont pas courantes, mais quil sagit de vieilles donnes rejoues. A
moins quun systme de datation soit utilis, Martin peut convaincre une banque de
crditer son compte plusieurs fois en rptant toujours le mme message (en suppo
sant que la clef nait pas chang, bien sr). D autres faiblesses dans ce type de schma
pourraient tre exploites dans le cas de frquentes resynchronisations [412].

9.6

Chiffrement rtroaction

Un bloc chiffr peut aussi tre utilis en tant que chiffrement autosynchrone en continu ;
cela sappelle le mode de chiffrement rtroaction (C F B pour Cipher Feedback ).
Avec le mode C B C , le chiffrement ne peut pas commencer avant quun bloc complet
de donnes ait t reu. C est un dfaut dans certaines applications rseaux. Dans
lenvironnement d un rseau sr, par exemple, un terminal doit pouvoir transmettre
chaque caractre lordinateur central ds quil est entr. Quand les donnes traiter
se prsentent sous forme de paquets de la taille de loctet, le mode C B C ne fonctionnera
pas.
En mode C F B , les donnes peuvent tre chiffres par units plus petites que la taille
de bloc. L exemple suivant chiffre un caractre ASCII la fois (on parle alors de CFB
8 bits). Mais le chiffre 8 nest pas sacr, vous pouvez chiffrer les donnes un bit
la fois en utilisant un C F B 1 bit, bien quutiliser un chiffrement complet dun bloc
pour un seul bit reprsente beaucoup de travail ; un chiffrement en continu serait une
meilleure ide. (Rduire le nombre de rondes dun chiffrement par blocs pour acclrer
les choses nest pas recommand [1280] ) Vous pouvez aussi utiliser un C FB 64 bits,
ou tout autre C F B n bit o n est infrieur ou gal la taille du bloc.
La figure 9.9 illustre un C FB 8 bits appliqu un algorithme de chiffrement par
blocs de 64 bits. Un algorithme de chiffrement par blocs en mode C F B manipule une
file dattente de la taille dun bloc dentre. Initialement, la file dattente est remplie
avec un IV , comme en mode C B C . La file d attente est chiffre et les huit bits les plus
gauche du rsultat sont combins par ou exclusif avec le premier caractre de 8 bits
du texte en clair pour devenir les 8 premiers bits du texte chiffr. Ce caractre peut

9.6

213

Chiffrement rtroaction

maintenant tre transmis. Les mmes huit bits sont placs dans les huit bits les plus
droite de la file dattente et tous les autres bits sont dcals de huit positions vers la
gauche. Les huit bits les plus gauche sont ignors. Le caractre en clair suivant est
alors chiffr de la mme manire. Le dchiffrement est le processus inverse. Des deux
cts, chiffrement et dchiffrement, lalgorithme de chiffrement par blocs est utilis
dans son mode de chiffrement.

F ig. 9.9 - Mode de chiffrement rtroaciion

bits

Si n est la taille du bloc de lalgorithme, alors un C FB n bit ressemble ceci (voir


la figure 9.10) :
Ci = A4t E k {C%- i)

M.i = Ci EK(Ci~i).

F i g . 9 .1 0

- CFB n bit avec un algorithme n bit

Chapitre 9

Types et modes dalgorithmes

Tout comme le mode C B C , le mode C FB lie les caractres du texte en clair entre eux
de manire que le texte chiffr dpende de tout le texte en clair qui prcde.

Vecteur dinitialisation
Pour initialiser le processus C FB , lentre de lalgorithme de blocs doit tre initie par
un IV. Tout comme lIV du mode C B C , il na pas besoin dtre secret.
Nanmoins, lIV doit tre unique2. Si le lIV du mode C F B nest pas unique, un
cryptanalyste peut retrouver le texte en clair correspondant. LTV doit tre chang
avec chaque message. Ce peut tre un nombre de srie, qui augmente aprs chaque
message et qui ne se rpte pas tout au long de la vie de la clef. Pour des donnes
chiffres stocker, cela peut tre une fonction de lindex utilis pour rechercher les
donnes.

Propagation derreurs
Avec le mode C F B , une erreur dans le texte en clair affecte tous les textes chiffrs
suivants et cette erreur est inverse par le dchiffrement. Une erreur dans le texte
chiffr est plus intressante considrer. Le premier effet d une erreur d un seul bit
dans le texte chiffr est de provoquer une erreur dun seul bit dans le texte en clair.
Aprs cela, cette erreur entre dans le registre dcalage, o elle embrouille tout jusqu
ce quelle ressorte la fin du registre. En mode C FB 8 bits, 9 octets de texte en clair
dchiffr sont embrouills par une erreur dun seul bit dans le texte chiffr. Aprs cela,
le systme rcupre et tous les textes en clair suivants sont dchiffrs correctement.
En gnral, en mode C F B n bit, une seule erreur dun texte chiffr affectera le
dchiffrement du bloc prsent et des m /n 1 blocs suivants, o m est la taille du bloc
Un problme subtil avec ce type de propagation derreur est que si Martin connat le
texte en clair de la transmission, il peut changer 1 tat de certains bits dun bloc donn
et ainsi le faire dchiffrer en ce quil veut. Le bloc suivant peut tre dchiffr comme
du charabia, mais les dgts peuvent dj avoir t accomplis. Et il peut changer les
derniers bits d un message sans tre dtect.
Le mode C F B est aussi autorparateur pour ce qui est des erreurs de synchronisation.
Lerreur entre dans le registre dcalage, embrouille 8 octets de donnes, jusqu ce
quelle ressorte lautre bout. Le C FB est un exemple d algorithme de chiffrement par
blocs utilis comme algorithme de chiffrement autosynchrone en continu.

9.7

Chiffrement synchrone en continu

Dans un algorithme de chiffrement synchrone en continu, le flux de codons


est engendr indpendamment du flux du message. Les militaires appellent cela un
chiffrement clef automatique de clef (K A K pour Key Auto-Key ). Du ct du
dchiffrement, un autre gnrateur de codons produit un flux identique de codons, les
uns aprs les autres. Tout se passe bien tant que les deux gnrateurs sont synchrones.
Si lun des deux saute une tape du cycle ou si un bit du texte chiffr est perdu pendant
la transmission, alors chaque caractre du texte chiffr aprs lerreur ne pourra plus
tre dchiffr correctement.
2. C est diffrent de l IV du m od e C B C , qui devrait tre unique mais n a pas l tre.

9.7

215

Chiffrement synchrone en continu

Si cela arrive, lmetteur et le rcepteur doivent resynchroniser leurs gnrateurs de


codons avant de continuer. Pour compliquer les choses, ils doivent le faire de faon
ce quaucune partie du flux de codons ne soit rutilise, et donc la solution simpliste
qui consiste revenir un tat antrieur ne marchera pas.
Un avantage, toutefois, est que les chiffrements synchrones en continu ne propagent
pas les erreurs de transmission. Si un bit est corrompu durant la transmission (ce qui
est nettement plus probable que de perdre un bit) alors seul le bit erron sera mal
dchiffr. Tous les bits qui prcdent ou qui suivent ne seront pas affects.
Comme un gnrateur de codons doit engendrer le mme flux au chiffrement et au d
chiffrement, il doit tre dterministe. Comme il est ralis par une machine tats finis
(cest--dire, un ordinateur), la suite finira par se rpter. Ces gnrateurs de codons
sont appels priodiques. Except pour les masques jetables, tous les gnrateurs de
codons sont priodiques.
Un gnrateur de codons doit avoir une longue priode, bien plus longue que le nombre
de bits que le gnrateur devra produire entre deux changements de clef. Si la priode
est plus courte que le texte en clair, alors diffrentes parties du texte en clair seront
chiffres de la mme manire un gros dfaut. Si un cryptanalyste connat une partie
du texte en clair, il peut reconstituer une partie du flot de clefs et lutiliser pour en
savoir plus sur le texte en clair. Mme si le cryptanalyste na que le texte chiffr, il peut
combiner par ou exclusif les parties chiffres avec le mme flot de clefs et obtenir les
combinaisons par ou exclusif du texte en clair avec ce dernier. C est juste un algorithme
de combinaison par ou exclusif avec une trs longue clef.
La longueur suffisante d une priode dpend de lapplication. Un gnrateur de codons
qui chiffre un lien T 1 en continu chiffrera 237 bits par jour. La priode du gnrateur
de codons doit tre bien plus grande que cela, mme si la clef est change tous les
jours. Si la priode est assez longue, vous nauriez devoir changer la clef que chaque
semaine ou chaque mois.
Le chiffrement synchrone en continu protge aussi contre les insertions et les omissions
dans le texte chiffr, car elles causeraient un perte de synchronisation et seraient tout
de suite dtectes. En revanche, il ne protge pas tout fait contre la modification
dun bit. Tout comme en mode C F B , Martin peut modifier certains bits du flux. Sil
connat le texte en clair, il peut faire lopration de faon imposer le texte dchiffr.
Les bits suivants seront dchiffrs incorrectement (jusqu ce que le systme rcupre),
mais dans certaines applications, Martin peut occasionner beaucoup de dommages.

Attaque par insertion


Les algorithmes de chiffrement synchrone en continu sont vulnrables une attaque
par insertion [100]. Martin a enregistr un flux de texte chiffr, mais il ne connat pas
le texte en clair o le flux de codons utilis pour chiffrer le texte en clair.
Texte en clair original:
Flux de codons original:
Texte chiffr original:

mi

m2

h
Cl

fe2
Cl

m3
k3
c3

m4
c4

Martin insre un seul bit connu, m ', dans le texte en clair aprs m,\ et sarrange pour
faire chiffrer ce nouveau texte en clair avec le mme flux de codons. Il enregistre le

Chapitre 9

216

Types et modes dalgorithmes

texte chiffr rsultant :


Nouveau texte en clair:
Flux de codons original:
Texte chiffr mis jour :

mi

m'

ki

k2

Cl

C2

m2
k3

m3

c3

C4

7714
k

En faisant lhypothse quil connat la valeur de m ', il peut dterminer tout le texte en
clair aprs ce bit partir du texte chiffr original et du nouveau texte chiffr :
k2 c 2 m 'i et donc rri2 = c2 k2
k3 = c 3 rri2 , et donc m 3 = c 3 A'3

fc3 = C4 m.3 , et donc

7714

= c4

Martin na mme pas connatre la position dans laquelle le bit a t insr ; il doit
juste comparer le texte chiffr avec le texte chiffr mis jour et dterminer partir
de quel endroit ils diffrent. Pour se protger contre cette attaque, il ne faut jamais
utiliser le mme flux de codons pour chiffrer deux messages diffrents.

9.8

Mode de rtroaction de sortie

Le mode de r tr o a c tio n d e so rtie (O F B pour Output-feedback ) est une mthode


qui consiste utiliser un algorithme de chiffrement par blocs comme un algorithme de
chiffrement synchrone en continu. Il est similaire au mode C FB , sauf que n bits du bloc
de sortie prcdent sont mis dans les positions les plus droite de la file d attente (voir
la figure 9.11). Le dchiffrement est linverse de ce processus. Cela sappelle lOFB
n bit. Des deux cts, chiffrement et dchiffrement, lalgorithme de chiffrement par
blocs est utilis dans son mode de chiffrement. Cette mthode est parfois appele
r tro a ctio n interne, parce que le mcanisme de rtroaction est indpendant la fois
des flots de texte en clair et de texte chiffr [295].
Si n est la taille du bloc dun algorithme, alors un O FB n bits ressemble ceci (voir
la figure 9.12) :
Ct A L St

; St = EK(St- i )

M , = Cr St

; Sx Ej((St- i ) .

Si est ltat, qui est indpendant soit du texte en clair soit du texte chiffr.
Une caractristique intressante du mode O F B est qu une grosse partiedu travail peut
tre effectue sparment, avant mmeque
le message en clair
nexiste.Puis,quand
le message arrive, il peut tre combin par ou exclusif avec le produit de lalgorithme
pour produire le texte chiffr.

Vecteur dinitialisation
Le registre dcalage de lO F B doit aussi tre charg initialement avec un IV. Il
devrait tre unique mais na pas besoin d tre secret.

9.8

Mode de rtroaction de sortie

F i g . 9.11

217

- Mode de rtroaction de sortie 8 bits

Propagation derreurs
Le mode O F B na pas d amplification derreur. Une erreur d un seul bit dans le texte
chiffr occasionne une erreur dun seul bit dans le texte en clair rcupr. Cela peut
tre utile dans certaines transmissions analogiques numrises, comme la voix ou la
vido numrise, o une erreur occasionnelle dun bit peut tre tolre mais pas lam
plification derreur.
D autre part, la perte de synchronisation est fatale. Si les contenus des registres dca
lage de chiffrement dune part et de dchiffrement dautre part ne sont pas identiques,
alors le texte en clair rcupr sera du charabia. Tout systme qui utilise le mode OFB
doit avoir un mcanisme de dtection de perte de synchronisation, et un mcanisme

F i g . 9 .1 2

- OFB n bits avec un algorithme n bits

Chapitre 9

218

Types et modes dalgorithmes

pour remplir les deux registres dcalage avec un nouveau (ou le mme) IV pour
resynchroniser.

Problmes de scurit avec le mode OFB


Une analyse du mode O FB [590, 430, 431, 790] dmontre que le mode O F B ne peut
tre utilis que si la taille de la rtroaction est gale la taille des blocs. Par exemple,
vous ne pouvez utiliser quun algorithme 64 bits avec un O FB 64 bits. Bien que le
Gouvernement amricain autorise d autres tailles de rtroaction pour le DES [1156],
vitez-les.
Le mode O F B combine par ou exclusif un flot de clefs avec le texte. Ce flot de clefs
se rptera. Il est important quil ne se rpte pas avec la mme clef, sinon, il ny a
pas de scurit. Quand la taille de la rtroaction gale celle du bloc, lalgorithme de
chiffrement par blocs agit comme une permutation des valeurs de m bit (o m est la
longueur de bloc) et la longueur moyenne de cycle est 2m 1. Pour un bloc de 64 bits,
sa longueur est norme. Quand la taille n de la rtroaction est infrieure celle du
bloc, la longueur moyenne de cycle tombe environ 2 " /2. Pour un bloc de 64 bits, a
ne reprsente que 2 32, ce nest pas assez long.

Algorithmes de chiffrement en continu avec le mode OFB


Un algorithme de chiffrement en continu peut aussi fonctionner en mode OFB. Dans
ce cas, la clef affecte la fonction de ltat suivant (voir la figure 9.13). La fonction
rsultante ne dpend pas de la clef ; trs souvent c est quelque chose de simple, comme
un seul bit de ltat interne ou la combinaison par ou exclusif de multiples bits de ltat
interne. La complexit cryptographique se trouve dans la fonction de ltat suivant ;
cette fonction est dpendante de la clef. Cette mthode est aussi appele rtroaction
interne [295], car le mcanisme de rtroaction est interne lalgorithme de gnration
de clef.

F i g . 9 .1 3

Un gnrateur de codons en mode de rtroaction de sortie

Dans une variante de ce mode, la clef dtermine juste ltat initial du gnrateur de

9.9

Mode compteur

219

codons. Une fois que la clef aura rgl ltat interne du gnrateur, celui-ci marchera
sans problme.

9.9

Mode compteur

Les algorithmes de chiffrements par blocs en mode compteur utilise des suites de
nombres en entre de lalgorithme [826, 496, 718]. Au lieu d utiliser la sortie du chiffre
ment pour remplir le registre dcalage, lentre du registre est un compteur. Aprs
chiffrement d un bloc, le compteur est augment dune certaine valeur, typiquement
un. Les proprits de synchronisation et de propagation d erreurs sont les mmes que
pour le mode O FB . Le mode compteur rsoud le problme de sortie de n bit du mode
OFB o n est plus petit que la longueur de bloc.
Rien propos du compteur nest sacr ; il ne doit pas compter toutes les entres pos
sibles dans lordre. Vous pouvez utiliser tous les gnrateurs de suites alatoires des
chapitres 16 et 17, quils soient cryptographiquement srs ou pas, en entre de lalgo
rithme de blocs.

Algorithmes de chiffrement en continu en mode compteur


Les algorithmes de chiffrement en continu en mode compteur ont des fonctions
dtat-suivant simples et des fonctions de sortie compliques qui dpendent de la clef.
Cette technique, illustre dans la figure 9.14 a t suggre dans [496, 718]. La fonction
dtat-suivant peut tre aussi simple quun compteur qui rajoute une unit ltat
prcdent.

F i g . 9.14

- Un gnrateur de codons en mode compteur

Dans un chiffrement en continu en mode compteur, il est possible dengendrer le ie bit


de la clef k, sans avoir engendrer dabord tous les bits prcdents. Il suffit de mettre
le compteur manuellement la valeur du ie tat et d engendrer le bit. C est utile pour
protger des fichiers de donnes accs alatoire: vous pouvez dchiffrer un bloc de
donnes spcifique sans dchiffrer tout le fichier.

Chapitre 9

220

9.10

Types et modes dalgorithmes

Autres modes

Mode de chanage de blocs


Pour utiliser un algorithme de chiffrement par blocs en mode de chanage de b locs
(B C pour block chaining ), il suffit de combiner par ou exclusif lentre du chiffre
ment par bloc avec le ou exclusif de tous les blocs de texte chiffr prcdents. Tous
comme pour le mode C B C , un IV dmarre le processus.
Mathmatiquement cela ressemble :
Ci = EK (M i Ft)

Fi+i = Fz C%

M Z= FZ D k (Cz)

Fl+1 = Ft Ci.

Tout comme pour le mode C B C , le processus de rtroaction du mode B C amplifie les


erreurs dans le texte en clair. Le dfaut principal du mode B C vient du fait que le
dchiffrement dun bloc chiffr dpend de tous les blocs chiffrs prcdents, une seule
erreur dans le texte chiffr fausse le dchiffrement de tous les blocs chiffrs suivants.

Mode de chiffrement par chanage de blocs avec propagation


Le mode dech iffrem en t par chanage d e b lo c s avec p rop a g a tion (P C B C pour
Propagating cipher block chaining ) [1084] est similaire au mode C B C , except que
le bloc de texte chiffr prcdent et le bloc de texte en clair prcdent sont tous deux
combins par ou exclusif avec le bloc de texte en clair courant avant chiffrement (ou
aprs dchiffrement) (voir la figure 9.15).
C%= E K ( M t ffi Ct- i M ,- i )
Adj =

M t- i D k (Cz)

Le mode P C B C est utilis dans K e r b e r o s v e r s i o n 4 (voir 24.5) pour effectuer la


fois le chiffrement et le contrle d intgrit en une passe. En mode P C B C , une erreur
dans le texte chiffr occasionne un dchiffrement incorrect de tous les blocs qui suivent.
Cela signifie que vrifier un bloc standard la fin du message permet de sassurer de
lintgrit de tout le message.
Malheureusement, il y a un dfaut ce mode [876]. Echanger deux blocs de texte chiffr
occasionne un dchiffrement incorrect des deux blocs de texte en clair correspondants,
mais cause de la nature de lopration de ou exclusif avec le texte en clair et le
texte chiffr, ces erreurs se compensent et sannulent. Donc un systme de vrification
d intgrit qui ne regarde que les quelques derniers blocs de texte dchiffrs, peut tre
amen accepter un message partiellement embrouill. Bien que personne n ait trouv
comment exploiter ce dfaut, K e r b e r o s VERSION 5, est pass au mode C B C une fois
que le dfaut a t dcouvert.

Mode de chiffrement par chanage de blocs avec sommes de


contrle
Le ch iffrem en t par chanage d e b lo c s avec som m es d e co n tr le (C B C C pour
Cipher block chaining with checksum ) est une variante du mode C B C [1620]. Gardez

9.10

Autres modes

221

F ig. 9.15 Mode de chiffrement par chanage de blocs avec propagation

une combinaison par ou exclusif de tous les blocs de texte en clair, et combinez-la par ou
exclusif avec le dernier bloc de texte en clair avant chiffrement. Le mode C B C C sassure
que tout changement effectu un quelconque des blocs chiffrs change le rsultat
dchiffr du dernier bloc. Si le dernier bloc contient un type de contrle d intgrit ou
une constante, alors lintgrit du texte en clair dchiffr peut tre vrifie avec peu de
frais supplmentaires.

Rtroaction de la sortie avec une fonction nonlinaire


La r tr o a c tio n d e la sortie avec un e fo n ctio n n on lin aire (O F B N L F pour
Output feedback mode with a nonlinear function ) [777] est une variante des deux
modes O F B et E C B o la clef change avec chaque bloc:
Ci = EKl{ M t)

K i = EK {Ki- 1)

M i = D Kt(Ci)

K i ~ E K ( K i ^ i)

Une erreur dun seul bit dans le texte chiffr ne se rpercute que dans un seul bloc en
clair. Nanmoins, si un seul bit est perdu ou ajout, alors il y a une propagation infinie
derreurs. Avec un algorithme de chiffrement par blocs qui a un algorithme compliqu
de gestion de clef, comme le DES, ce mode est lent. Je ne connais pas de cryptanalyse
de ce mode.

Encore dautres modes


Dautres modes sont possibles, bien quils ne soient pas couramment utiliss. Le mode
de chanage d e te x te en cla ir (P B C pour plaintext block chaining ) est comme
le mode C B C sauf que le texte en clair prcdent est combin par ou exclusif avec le

222

Chapitre 9

Types et modes dalgorithmes

bloc de texte en clair au lieu du texte chiffr. Le mode de chiffrem ent rtroaction
du te x te en clair (P F B pour plaintext feedback ) est comme le mode C FB , sauf
que c est le texte en clair, et non pas le texte chiffr, qui est utilis pour la rtroaction.
Ces deux modes permettent les attaques texte en clair choisi afin de rsister aux
attaques texte en clair connu. Il y a aussi le mode de chiffrem ent p a r b lo cs avec
chanage des diffren ces en tre b lo c s d e te x te en clair (C B C P D pour cipher
block chaining of plaintext diffrence ). Je suis persuad que c est encore plus trange.
Si un cryptanalyste a une machine de recherche exaustive de clefs, alors il peut re
trouver la clef sil peut deviner un des blocs de texte en clair. Certains de ces modes
tranges reviennent un chiffrement lger avant d appliquer lalgorithme de chiffre
ment : par exemple, combiner le texte par ou exclusif avec une chane de caractres
secrte ou le permuter. A peu prs nimporte quoi dinhabituel permet d viter ce type
de cryptanalyse.

9.11

Choix dun mode opratoire de chif


frement

Si la simplicit et la vitesse sont vos critres principaux, le mode ECB est le plus facile
et le plus rapide utiliser pour un algorithme de chiffrement par blocs. C est aussi le
plus faible. Non seulement un algorithme est vulnrable lattaque des blocs rejous,
mais en mode EC B , il est plus facile cryptanalyser. Je ne recommande donc pas le
mode ECB pour le chiffrement des messages.
Pour le chiffrement de donnes alatoires, telles que d autres clefs, lECB est un bon
mode utiliser. Comme les donnes sont courtes et alatoires, aucun des points faibles
du mode E C B n ont d importance pour cette application.
Pour du texte en clair normal, utilisez plutt les modes C B C , C FB , ou O FB . Celui
que vous choisirez dpendra de vos exigences spcifiques. Les deux tableaux 9.1 et 9.2
rsument la scurit et lefficacit des diffrents modes.
Le mode C B C convient en gnral pour chiffrer des fichiers. L augmentation du niveau
de scurit est significative ; et bien quil puisse y avoir des erreurs de bit dans les don
nes stockes, il n y a presque jamais d erreurs de synchronisation. Si votre application
est une ralisation logicielle, le mode C B C est presque toujours le meilleur choix.
Le mode C FB plus spcifiquement le mode C F B 8 bits est gnralement le mode
de choix pour chiffrer des flots de caractres quand chaque caractre doit tre trait
individuellement, comme c est le cas pour le lien entre un terminal et un ordinateur
central. Le mode O FB est gnralement utilis pour les systmes synchrones grande
vitesse o la propagation derreurs est inacceptable. Le mode O FB est aussi le mode
de choix quand du pr-traitement est requis.
Le mode O F B est le mode de choix dans un environnement o il y a beaucoup d erreurs,
car il ne les propage pas.
Restez lcart des modes tranges. L un des quatre modes de base E C B , CBC,
OFB et C F B
est adquat pour presque nimporte quelle application. Ces modes ne
sont pas exagrment complexes et probablement ne diminuent pas le niveau de scurit
du systme. Bien quil soit possible quun mode compliqu puisse augmenter le niveau
de scurit d un systme, il est plus probable quil naugmente que sa complexit.

9.12

Intercalation

T a b . 9.1 - R s u m

223

d e s m o d e s d e c h if f r e m e n t s p a r b l o c s

ECB
Scurit

C BC
Scurit

Les motifs des textes en clair ne sont


pas dissimuls.
L entre de lalgorithme de chiffrement
par bloc nest pas alatoire ; c est comme
le texte en clair.
+ Plus d un seul message peut tre chiffr
avec la mme clef.
Le texte en clair est facile manipuler ;
des blocs peuvent tre retirs, rpts ou
interchangs.

+ Les motifs des textes en clair sont


dissimuls en combinant par o u e x c l u s i f
avec le bloc chiffr prcdent.
+ Lentre de lalgorithme de chiffrement
par bloc est alatoire en combinant par
o u
e x c l u s i f avec le bloc chiffr prcdent.
+ Plus d un seul message peut tre chiffr
avec la mme clef.
+ / Le texte en clair est quelque peu
difficile manipuler; des blocs peuvent
tre retirs du dbut et de la fin du
message, des bits du premier bloc peuvent
tre changs, et la rptition permet des
changements contrls.

Efficacit
+ La vitesse est la mme que celle de
lalgorithme de chiffrement par blocs.
Le texte chiffr est jusqu un bloc
plus long que le texte en clair, du fait du
remplissage.
Pas de pr-traitement possible.
+ Le traitement est paralllisable.

Tolrance aux fautes


Une erreur dans le texte chiffr affecte
tout un bloc du texte en clair.
Une erreur de synchronisation est
irrcuprable.

Efficacit
+ La vitesse est la mme que celle de
lalgorithme de chiffrement par blocs.
Le texte chiffr est jusqu un bloc plus
long que le texte en clair, sans compter
lIV.
Pas de pr-traitement possible.
+ /
Le traitement nest pas drivable;
le dchiffrement est paralllisable et
supporte laccs alatoire.

Tolrance aux fautes


Une erreur dans le texte chiffr affecte
tout un bloc du texte en clair et le bit
correspondant du bloc suivant.
Une erreur de synchronisation est
irrcuprable.

Aucun des modes tranges na de meilleures proprits pour la propagation derreurs


et pour les mcanismes de rcupration derreurs.

9.12

Intercalation

Dans la plupart des modes, le chiffrement dun bit (ou dun bloc) dpend du chiffre
ment du bit (ou du bloc) prcdent. Cela rend souvent impossible la paralllisation du
chiffrement. Prenez par exemple du matriel qui fait du chiffrement en mode CBC.
Mme si ce matriel contient quatre puces de chiffrement, une seule peut marcher la
fois. La puce suivante a besoin du rsultat de la puce prcdente pour commencer

Chapitre 9

224

T a b . 9.2 - R s u m

Types et modes dalgorithmes

d e s m o d e s d e c h if f r e m e n t s p a r b l o c s

CFB
Scurit

FB/Compteur
Scurit

+ Les motifs des textes en clair sont


dissimuls.
+ Lentre de lalgorithme de chiffrement
par bloc est alatoire.
+ Plus d un seul message peut tre
chiffr avec la mme clef pourvu quun IV
diffrent soit utilis.
+ / Le texte en clair est quelque peu
difficile manipuler; des blocs peuvent
tre retirs du dbut et de la fin du
message, des bits du premier bloc peuvent
tre changs, et la rptition permet des
changements contrls.

+ Les motifs des textes en clair sont


dissimuls.
+ L entre de lalgorithme de chiffrement
par bloc est alatoire.
+ Plus dun seul message peut tre
chiffr avec la mme clef pourvu quun IV
diffrent soit utilis.
Le texte en clair est trs facile
manipuler ; tout changement dans le texte
chiffr affecte directement le texte en clair.

Efficacit
+ La vitesse est la mme que celle de
lalgorithme de chiffrement par blocs.
Le texte chiffr est de la mme taille
que le texte en clair, sans compter lIV.
+ / Le chiffrement n est pas parallli
sable; le dchiffrement est drivable et
supporte laccs alatoire.
Du pr-traitement est possible avant
lapparition d un b loc; le bloc de texte
chiffr prcdent peut tre chiffr.

Tolrance aux fautes


Une erreur dans le texte chiffr affecte
le bit correspondant du texte en clair et
le bloc suivant.
-I- Des erreurs de synchronisation de la
taille d un bloc sont rcuprables. Le
mode C F B 1 bit peut rcuprer aprs
le rajout ou la perte de bits.

Efficacit
+ La vitesse est la mme que celle de
lalgorithme de chiffrement par blocs.
Le texte chiffr est de la mme taille
que le texte en clair, sans compter lIV.
Du pr-traitement est possible avant
lapparition du message.
+ / Le traitement OFB nest pas pa
ralllisable ; le traitement compteur est
paralllisable.

Tolrance aux fautes


Une erreur dans le texte chiffr affecte
seulement le bit correspondant du texte
en clair.
+ Une erreur de synchronisation est
irrcuprable.

travailler.
La solution est d in terca ler les multiples flots de chiffrement. (Ce nest pas un chiffre
ment multiple, ceci sera abord dans les paragraphes 15.1 et 15.2). Au lieu d utiliser
une seule chane en mode C B C , utilisez-en quatre. Les premier, cinquime et un bloc
sur quatre par la suite sont chiffrs en modes C B C avec un IV. Les second, sixime et
un bloc sur quatre par la suite sont chiffrs en modes C B C avec un autre IV , et ainsi
de suite. LTV total est plus long quil laurait t sans intercalaires.
Cest comme si vous chiffriez quatre messages diffrents avec la mme clef et quatre
diffrents IV. Ces messages sont tous intercals.

9.13

Chiffrement par blocs vs chiffrement en continu

225

Cette astuce peut aussi tre utilise pour augmenter la vitesse de matriels de chiffre
ment. Si vous avez trois puces de chiffrement, chacune capable de chiffrer des donnes
33 mgabits/seconde, vous pouvez les intercaler pour chiffrer un seul canal de donnes
100 mgabits/seconde.
La figure 9.16 montre trois flots parallles intercals en mode C FB . L ide peut aussi
marcher en modes C B C et O FB , et avec autant de flots parallles que dsir. Souvenezvous juste que chaque flot a besoin de son propre IV. Il ne doit pas tre partag.

F ig. 9.16

9.13

Mode de chiffrement par chanage de blocs avec propagation

Chiffrement par blocs vs chiffrement


en continu

Bien que les systmes de chiffrement par blocs et les systmes de chiffrement en continu
soient trs diffrents, des systmes de chiffrement par blocs peuvent tre utiliss en
tant que systmes de chiffrement en continu et des systmes de chiffrement en continu
peuvent tre utiliss en tant que systmes de chiffrement par blocs. La meilleure dfi
nition de la diffrence que j ai trouve est celle de Ranier R u e p p e l [1364] :
Les systmes de chiffrement par blocs agissent sur des donnes avec une
transformation fixe des grands blocs de donnes en clair; les systmes de
chiffrement en continu agissent avec une transformation variant avec le
temps des chiffres en clair individuels.
Dans le monde rel, les systmes de chiffrement par blocs sont plus gnraux (ils
peuvent tre utiliss dans nimporte lequel des quatres modes) et les systmes de chif
frement en continu sont plus faciles analyser mathmatiquement. Il y a beaucoup
de travail thorique effectu sur lanalyse et la conception des systmes de. chiffrement
en continu ; la plupart de ces travaux sont effectus en Europe, je ne sais pour quelle
raison. Ils ont t utiliss par les militaires du monde entier depuis linvention de llec
tronique. Cela semble changer dornavant ; rcemment, une grande quantit darticles
thoriques sur les systmes de chiffrement par blocs ont t publis. Il y aura peut-tre
que bientt une thorie sur le modle des systmes de chiffrement par blocs aussi riche
que la thorie sur la conception des systmes de chiffrement en continu.

226

Chapitre 9

Types et modes dalgorithmes

Ceci mis part, les diffrences entre ces deux systmes se trouvent dans les ralisations.
Les systmes de chiffrement en continu qui ne chiffrent et ne dchiffrent quun bit
la fois ne sont pas vraiment adapts des ralisations logicielles. Les systmes de
chiffrement par blocs sont nettement plus faciles raliser en logiciel, car ils vitent
les manipulations de bits qui sont coteuses en temps de calcul et ils oprent sur
des donnes dans des blocs de taille raisonnable. D un autre ct, les systmes de
chiffrement en continu sont mieux adapts des ralisations matrielles car ils peuvent
tre raliss de faon trs efficace dans du silicone.
Ce sont des considrations importantes. Il semble logique pour un appareil de chiffre
ment dun canal digital de communications de chiffrer chaque bit quand il arrive. C est
ce que lappareil voit. D un autre ct, il semble illogique pour un logiciel de chiffre
ment de chiffrer chaque bit sparment. Il y a des exemples prcis o le chiffrement de
chaque bit et de chaque octet est ncessaire dans un systme informatique chiffrer
le lien entre le clavier et le microprocesseur, par exemple mais gnralement le bloc
de chiffrement devrait au moins tre de la largeur du bus de donnes.

Chapitre 10

Utilisation des algorithmes


Considrez la scurit (scurit des donnes, scurit des communications, scurit de
linformation,...) comme une chane. La scurit du systme entier nest pas plus forte
que le plus faible des maillons. Tout doit tre sr: les algorithmes cryptographiques,
les protocoles, la gestion des clefs, et bien plus. Si vos algorithmes sont sophistiqus
mais que votre gnrateur de nombre alatoire est mauvais, un cryptanalyste judicieux
attaquera votre systme par la gnration des nombres alatoires. Si vous comblez
cette lacune mais oubliez de bien effacer la partie de la mmoire qui contient la clef,
un cryptanalyste cassera votre systme par cette voie. Si vous faites tout correctement
mais accidentellement envoyez un courrier lectronique de la copie de vos dossiers srs
au Wall Street Journal, autant que vous ne fassiez rien du tout.
Ce nest pas juste. En tant que concepteur de systme sr, vous devez vous prot
ger contre tous les moyens possibles dattaque, alors quil suffit un cryptanalyste
dexploiter la moindre faille dans votre systme de scurit !
La cryptographie nest quune partie de la scurit, et souvent une trs petite partie.
C est la partie mathmatique pour rendre un systme sr, ce qui est diffrent d effec
tivement rendre un systme sr. La cryptographie a ses grands pontes : des gens
qui passent tant de temps discuter propos de la longueur idale de clef quils en
oublient tout le reste. Si la police secrte veut savoir ce quil y a dans votre ordinateur,
il leur est plus facile de pntrer chez vous et dinstaller une camra qui enregistre tout
ce qui apparat sur votre cran que de cryptanalyser votre disque dur.
De plus, la vue traditionnelle de la cryptographie comme tant une technologie es
pion contre espion devient de moins en moins approprie. Plus de 99 pourcents de la
cryptographie utilise dans le monde ne protge pas de secrets militaires ; cest dans des
applications telles que les cartes bancaires, les cartes de chanes de tlvision payantes,
les pages autoroutiers, les cartes daccs aux immeubles et aux ordinateurs, les termi
naux de loterie et les pr-paiements de compteurs lectriques [44, 45] quelle se trouve.
Dans ces applications, le rle de la cryptographie est de rendre la petite criminalit
un peu plus difficile ; lexemple de ladversaire bien financ avec toute une arme de
cryptanalystes dans une pice remplie d ordinateurs ne sapplique pas ici.
La plupart de ces applications ont utilis de la cryptographie bas de gamme, mais les
attaques victorieuses menes contre elles nont rien voir avec la cryptanalyse. Elles im
pliquaient des employs vreux, des oprations judicieuses de piratage, des ralisations

228

Chapitre 10

Utilisation des algorithmes

stupides, des rats d intgration et des idioties alatoires. (Je recommande fortement
le papier de Ross A n d e r s o n Pourquoi les cryptosystmes ont chou [45] ; il de
vrait tre lu par toute personne voluant dans ce domaine.) Mme si la N SA a admis
que la plupart des checs de scurit dans sa zone d intrt sont dus des checs de
ralisations, et non pas des checs au niveau des algorithmes et des protocoles [1125].
Dans ces exemples, peu importe si la cryptographie tait bonne ou pas ; les attaques
victorieuses lont compltement surpasse.

10.1

Choix dun algorithme

Quand on en arrive jauger et choisir les algorithmes, les gens ont plusieurs choix :
- Ils peuvent utiliser un algorithme publi, croyant que les algorithmes publis ont
t dcortiqus par de nombreux cryptographes ; si personne ne la encore cass,
alors il doit tre trs bon.
- Ils peuvent faire confiance un fabricant, croyant quun fabricant connu a une
rputation dfendre et quil ne risquera pas cette rputation en vendant des
quipements ou des programmes avec des algorithmes de mauvaise qualit.
- Ils peuvent faire confiance un consultant indpendant, croyant quun consul
tant impartial est mieux quip pour faire une valuation fiable des diffrents
algorithmes.
- Ils peuvent faire confiance au Gouvernement, croyant que le Gouvernement est
digne de confiance et quil ne tromperait pas ses citoyens.
- Ils peuvent crire leur propre algorithme, croyant que leurs comptences en cryp
tographie nont pas leur pareil et quils ne doivent avoir confiance en personne
dautre queux-mme.
Chacune de ces croyances est problmatique, mais la premire semble tre la plus
sense. Placer votre confiance dans un seul fabricant, consultant ou gouvernement
revient chercher des ennuis. La plupart des gens qui portent ltiquette consultant
en scurit (mme des firmes clbres) ne connaissent en gnral rien au chiffrement.
La plupart des fabricants en scurit ne sont pas fiables. Les meilleurs cryptographes
au monde travaillent pour la NSA, mais ils ne disent pas tout ce quils savent. Les
intrts quils poursuivent ne sont pas conformes ceux des citoyens. Et mme si vous
tes un gnie, crire votre propre algorithme et ensuite lutiliser sans lavoir soumis
lexamen critique des pairs est de linconscience pure.
Les algorithmes de ce livre sont publiques. La plupart ont t divulgus dans la littra
ture publique et ont t cryptanalyss par des experts dans le domaine. Je mentionne
tous les rsultats publis, positifs et ngatifs. Je nai pas accs aux cryptanalyss en
treprises par la myriade d organisations de scurit militaire de par le monde (qui sont
probablement meilleures que les institutions acadmiques elles le font depuis plus
longtemps et elles sont mieux finances), donc il est possible que ces algorithmes soient
plus faciles casser quils ne le paraissent. Mme ainsi, il est bien plus probable quils
soient plus srs quun algorithme conu et ralis en secret par une socit spcialise
en scurit.

10.1

Choix dun algorithme

229

Le point faible de ce raisonnement est que nous ne connaissons pas les capacits des
nombreuses organisations militaires de cryptanalyse.
Quels algorithmes la NSA peut-elle casser? Pour la majorit dentre nous, il est impos
sible de le dire. Si vous tes arrt en possession dun ordinateur chiffr avec DES, il
est peu probable que le FB I produise le contenu dchiffr comme pice conviction ; le
fait quils peuvent casser lalgorithme est souvent un secret bien plus important que les
informations qui sont alors dchiffres. Pendant la deuxime guerre mondiale, il tait
interdit aux Allis d utiliser une information dchiffre du trafic Ultra des Allemands,
moins quils aient pu plausiblement obtenir linformation autrement. La seule faon de
pousser la NSA reconnatre sa capacit casser un algorithme donn est de chiffrer
une information tellement importante quils ne pourront pas faire autrement que de la
divulguer publiquement. Ou, mieux encore, crez une blague trs drle et envoyez-la
par courrier lectronique chiffr des correspondants ambigus dans des pays suspects.
Les employs de la NSA sont aussi des hommes; je doute quil puisse garder une si
bonne blague secrte.
Une bonne hypothse de travail est que la N SA peut lire chaque message quelle choisit,
mais quelle ne peut pas lire tous les messages quelle choisit. La NSA est limite par
ses ressources et doit faire un choix dans ses cibles. Une autre bonne hypothse est
quelle prfre casser autre chose que des codes ; cette prfrence est si forte quelle se
rsoudra casser les codes seulement quand elle voudra prserver le secret quelle a lu
le message.
Dans tous les cas, la meilleure chose que la plupart d entre-nous peuvent faire est de
choisir parmi des algorithmes publiques qui ont raisonnablement rsist une obser
vation publique et des cryptanalyss.

Algorithmes pour lexportation


Pour exporter un algorithme hors des Etats-Unis, il faut lautorisation du Gouver
nement amricain (plus exactement, de la N SA voir 25.1). Il est gnralement
admis que ces algorithmes autoriss lexportation peuvent tre casss par la NSA.
Bien que personne nait admis cela pour la postrit, voici quelques indices de ce que la
NSA est suspecte, en priv, de suggrer aux socits qui veulent exporter des produits
cryptographiques :
- Laissez passer un bit de la clef de temps autre cach dans le texte chiffr ;
- Ramenez la clef effective quelque chose dans la gamme des 30 bits. Par exemple,
tandis quun algorithme pourrait accepter une clef de 100 bits, la plupart de ces
clefs peuvent tre quivalentes ;
Utilisez un IV fix, ou chiffrez un en-tte fix au dbut de chaque message chiffr.
Cela facilite une attaque texte en clair choisi ;
engendrez quelques octets alatoires, chiffrez-les avec la clef, et placez le texte en
clair et le texte chiffr de ces octets alatoires au dbut du message chiffr. Cela
facilite galement une attaque texte en clair connu.
La NSA reoit une copie du code source, mais les dtails de lalgorithme restent cachs
pour les autres. Il est vident que personne ne fait de publicit quant ces faiblesses,

Chapitre 10

230

Utilisation des algorithmes

mais faites attention si vous achetez un produit de chiffrement amricain qui a t


approuv pour Pexport.

10.2

La cryptographie clef publique vs la


cryptographie clef secrte

Cryptographie clef publique ou cryptographie clef secrte? Quelle est la meilleure?


Cette question na aucun sens mais est lobjet d un dbat depuis que la cryptographie
clef publique a t invente. Ce dbat suppose que les deux types de cryptographie
peuvent tre compars d gal gal. Ils ne le peuvent pas.
N e e d h a m et S c h r o e d e r [1159] remarquent que le nombre de messages et leur lon
gueur sont bien plus grands dans les algorithmes clef publique que dans les algo
rithmes clef secrte. Leur conclusion montre que lalgorithme clef secrte est plus
efficace que lalgorithme clef publique. Bien que cela soit vrai, cette analyse oublie le
gain significatif en scurit de la cryptographie clef publique.
Whitfield D if f ie crit [490, 492] :
En envisageant la cryptographie clef publique comme une nouvelle forme
de cryptosystme plutt quune nouvelle forme de gestion de clefs, je me
prpare aux critiques tant du point de vue de la scurit que de la perfor
mance. Les opposants remarqurent rapidement que le systme R S A tait
1000 fois plus lent que le DES et ncessitait des clefs presque 10 fois plus
grandes. Bien quil ft clair ds le dbut que lutilisation des systmes
clefs publiques pouvait tre limite lchange des clefs pour la cryptogra
phie conventionnelle ( clef secrte), il ntait pas immdiatement clair que
cela ft ncessaire. Dans ce contexte, la proposition de construire des sys
tmes hybrides [879] fut salue comme une invention en soi.

La cryptographie clef publique et la cryptographie clef secrte sont deux choses


diffrentes ; elles rsolvent des problmes de types diffrents. La cryptographie clef
secrte est meilleure pour chiffrer des donnes. Elle est infiniment, plus rapide et nest
pas prdispose des attaques texte chiffr choisi. La cryptographie clef publique
peut faire des choses que la cryptographie clef secrte ne permet pas ; elle est adapte
pour la gestion des clefs et une myriade de protocoles exposs dans la Partie I.
D autres installations ont t exposes dans la Partie I : fonctions de hachage sens
unique, codes dauthentification de message , etc... Le tableau 10.1 numre les diff
rents types d algorithmes et leurs proprits [806].

10.3

Chiffrement des canaux de communi


cation

Cest le problme classique dAlice et de Bernard: Alice veut envoyer Bernard un


message sr. Que fait-elle? Elle chiffre le message.
En thorie, ce chiffrement peut tre effectu dans nimporte quelle couche OSI
(Interface de systmes ouverts, Open Systems Interface en Anglais) du modle

10.3

Chiffrement des canaux de communication

ab

. 1 0 .1 - C

lasses

Confidentialit
Algorithmes
Algorithmes
Algorithmes
Algorithmes

de chiffrement clef secrte


de chiffrement clef publique
de signature digitale
d change de clef

Fonctions de hachage sens unique


Codes d authentification de message

231

d a l g o r it h m e s

Authentification

Intgrit

Clef

Gestion

Oui
Oui
Non

Non
Non
Oui
Optionnel
Non
Oui

Non
Non
Oui
Non

Oui

Oui
Non
Non

Oui
Oui

Oui
Non
Oui
Non
Non

de communication. (Voir le standard darchitecture de scurit OSI pour plus dinfor


mations [310].) En pratique, le chiffrement a lieu soit dans les basses couches (une et
deux), soit dans les hautes couches. Sil seffectue dans les basses couches, il est appel
chiffrement lien par lien; tout ce qui passe par un lien de donnes particulier est
chiffr. Si le chiffrement seffectue dans des couches plus leves, il est appel chif
frement de bout en bout ; les donnes sont chiffres de faon slective et restent
chiffres jusqu ce quelles soient dchiffres par le destinataire final dsign. Chaque
approche a ses avantages et ses inconvnients.

Chiffrement lien par lien


Lendroit le plus simple pour rajouter le chiffrement se trouve dans la couche physique
(voir la figure 10.1). Cela est appel chiffrement lien par lien. Les interfaces avec la
couche physique sont gnralement standardises et il est facile de connecter un dispo
sitif de chiffrement cet endroit. Ces dispositifs chiffrent toutes les donnes qui passent
par eux, incluant les donnes elles-mmes, les informations de routage et les informa
tions du protocole. Ils peuvent tre utiliss sur tous les types de liens de communication
numrique. Par ailleurs, tout dispositif de commutation ou de stockage intelligent sur
le parcours entre lmetteur et le rcepteur doit dchiffrer le flux de donnes avant de
le traiter.
Ce type de chiffrement est trs efficace. Comme tout est chiffr, un cryptanalyste ne
peut obtenir aucune information sur la structure de linformation. Il na pas la moindre
ide de qui parle qui, de la longueur des messages envoys, quel moment de la journe
ils communiquent, etc. On parle alors de scurit du flot de trafic : non seulement
lennemi na pas accs linformation, mais il ignore aussi la destination et le volume
de cette information.
La scurit ne dpend daucune technique de gestion du trafic. La gestion des clefs est

ig

10.1 - Chiffrement au niveau des liens

Chapitre 10

232

Utilisation des algorithmes

aussi simple : seules les deux extrmits d une ligne doivent partager une clef et elles
peuvent changer leur clef indpendamment du reste du rseau.
Imaginez-vous une ligne de communication synchrone, chiffre en mode C FB 1 bit.
Aprs linitialisation, cette ligne peut fonctionner indfiniment, rcuprant automati
quement des erreurs de bit ou de synchronisation. La ligne chiffre ds que des messages
sont envoys partir d une extrmit vers lautre ; sinon, elle chiffre et dchiffre des
donnes alatoires. Estelle na aucune ide de la date des messages envoys ou non;
elle na pas d ide du dbut et de la fin des messages. Tout ce quelle voit est un flux
continu de bits qui ont lair alatoires.
Si la ligne de communication est asynchrone, le mme mode C FB 1 bit peut tre
utilis. La diffrence est que ladversaire peut obtenir de linformation sur le taux de
la transmission. Si cette information doit rester secrte, prenez des prcautions en
envoyant des messages factices entre les communications utiles.
Le plus gros dfaut du chiffrement lien par lien est que chaque lien physique du rseau
doit tre chiffr : laisser un seul lien non chiffr compromet la scurit de tout le rseau.
Si le rseau est grand, le cot peut rapidement devenir prohibitif pour ce type de
chiffrement.
De plus, tous les nuds du rseau doivent tre protgs, car ils vhiculent des donnes
non chiffres. Si tous les utilisateurs du rseau se font confiance mutuellement et si tous
les nuds sont en lieu sr, cela peut tre acceptable. C est toutefois improbable. Mme
dans une socit, linformation doit tre garde secrte au sein dun dpartement. Si
le rseau se trompe de chemin pour acheminer une information, tout le monde peut la
lire. Le tableau 10.2 rsume les avantages et les inconvnients du chiffrement lien par
lien.

Ta

10.2 - Chiffrement au niveau physique: avantages et inconvnients

Avantages
Opration plus simple, puisquelle est transparente pour lutilisateur. Tout est chiffr
avant d tre envoy sur le lien.
Un seul jeu de clefs par lien est ncessaire.
Fournit une scurit du flot de traffic, puisque chaque information de routage est
chiffre.
Le chiffrement est en ligne.
Inconvnients
Les donnes sont vulnrables dans les nuds intermdiaires.

Chiffrement de bout en bout


Un autre approche consiste mettre le dispositif de chiffrement entre la couche rseau
et la couche de transport. Le dispositif de chiffrement doit pouvoir interprter les
donnes d aprs les protocoles jusqu la couche trois et chiffrer seulement les units
de donnes de transport qui sont alors recombines avec les informations de routage
non chiffres et envoyes aux couches infrieures du protocole.

10.3

Chiffrement des canaux de communication

233

Cette approche vite le problme du chiffrement/dchiffrement au niveau de la couche


physique. En utilisant le chiffrement de bout en bout, les donnes restent chiffres
jusqu ce quelles atteignent leur destination finale (voir la figure 10.2). Le dfaut
principal du chiffrement de bout en bout est que les informations de routage pour les
donnes ne sont pas chiffres; un bon cryptanalyste peut pas mal apprendre de qui
parle qui, quel moment et pendant combien de temps, sans mme connatre le
contenu de ces conversations. La gestion des clefs est galement plus difficile car les
utilisateurs doivent sassurer quils ont bien des clefs communes.

F ig . 10.2 - Chiffrement de bout en bout

Construire un dispositif de chiffrement de bout en bout est difficile. Chaque systme


de communication particulier a ses propres protocoles. Parfois, les interfaces entre ces
niveaux ne sont pas bien dfinies, rendant la tche plus difficile encore.
Si le chiffrement a lieu dans une couche haute de larchitecture de communication,
comme les couches application et prsentation, alors cela peut tre indpendant du
type de rseau de communication utilis. C est toujours du chiffrement de bout en
bout, mais la ralisation du chiffrement ne doit pas se proccuper des codes de ligne,
de la synchronisation entre les modems, des interfaces physiques, etc. Dans les temps h
roques de la cryptographie lectromcanique, le chiffrement et le dchiffrement avaient
entirement lieu hors ligne : cela ne fait quune tape de moins.
Le chiffrement dans ces hautes couches interagit avec le logiciel de lutilisateur. Le lo
giciel est diffrent pour des architectures dordinateur diffrentes et donc le chiffrement
doit tre optimis pour diffrents systmes informatiques. Le chiffrement peut tre ra
lis par le logiciel ou par du matriel ddi. Dans ce dernier cas, lordinateur enverra
les donnes au matriel ddi pour les chiffrer, avant de les envoyer vers les couches
infrieures de larchitecture de communication pour tre transmises. Ce processus re
quiert quelque intelligence et nest pas adapt aux terminaux non intelligents. De plus,
il peut y avoir des problmes de compatibilit entre les diffrents types dordinateurs.
Le plus gros inconvnient du chiffrement de bout en bout est quil permet lanalyse
de trafic. C est lanalyse de messages chiffrs: do ils viennent, o ils vont, de quelle
longueur ils sont, quand ils ont t envoys, quelle frquence, sils concident avec
des vnements extrieurs tels que des rendez-vous, et bien plus. Beaucoup de bonnes
informations sont enterres dans ces donnes et un cryptanalyste voudra mettre les
mains dessus. Le tableau 10.3 prsente les aspects positifs et ngatifs du chiffrement
de bout en bout.

Combinaison des deux


Le tableau 10.4, emprunt [1254], compare les chiffrements lien par lien et de bout
en bout. Combiner les deux, bien qutant trs cher, est le moyen le plus efficace de

Chapitre 10

234

Utilisation des algorithmes

T a b . 10.3 - Chiffrement lien par lien : avantages et inconvnients

Avantages
Niveau de secret plus lev.
Inconvnients
Requiert un systme de gestion des clefs plus complexe.
Lanalyse de trafic est possible, puisque linformation de routage nest pas chiffre.
Le chiffrement est hors-ligne.

rendre sr un rseau. Le chiffrement de tout lien physique rend toute analyse des
informations de routage impossible, tandis que le chiffrement de bout en bout rduit
le danger des donnes non chiffres aux diffrents nuds du rseau. Les gestions des
clefs des deux schmas peuvent tre compltement spares : les gestionnaires de rseau
peuvent soccuper du chiffrement au niveau physique, tandis que les individus peuvent
avoir la responsabilit du chiffrement de bout en bout.

Tab. 10.4
C

Comparaison des chiffrements lien par lien et de bout en bout

h if f r e m e n t l ie n

par

l ie n

h if f r e m e n t

de

bo u t en

bout

Scurit dans les machines htes


Message expos chez lhte envoyeur.
Message chiffr chez lhte envoyeur.
Message expos dans les nuds interm- Message chiffr dans les nuds interm
diaires.
diaires.
Rle de lutilisateur
Effectu par lhte envoyeur.
Transparent pour lutilisateur.
L hte maintient le chiffrement.
Un service pour tous les utilisateurs.
Peut tre ralis en matriel.
Tous ou aucun messages chiffrs.

Effectu par le processus denvoi.


Lutilisateur effectue le chiffrement.
Lutilisateur doit trouver lalgorithme.
Lutilisateur slectionne le chiffrement.
Plus facilement effectu dans le logiciel.
Lutilisateur choisit de chiffrer ou pas,
pour chaque message.

Exigences de la ralisation
Ncessite une clef par paire dutilisa
Ncessite une clef par paire dhtes.
Ncessite un matriel ou un logiciel de teurs.
Ncessite un matriel ou un logiciel de
chiffrement chaque hte.
chiffrement chaque nud.
Effectue lauthentification des nuds.
Effectue lauthentification des utilisa
teurs.

10. Jf

10.4

Chiffrement des donnes des fins de stockage

2S5

Chiffrement des donnes des fins de


stockage

Chiffrer des donnes pour les stocker et les rcuprer plus tard peut tre utilis dans
le modle dAlice et de Bernard. Alice envoie toujours un message Bernard, mais
dans ce cas Bernard est Alice dans un temps futur. Nanmoins, le problme est
fondamentalement diffrent.
Dans les canaux de communication, les messages en transit nont pas de valeur intrin
sque. Si Bernard ne reoit pas un message particulier, Alice peut toujours le renvoyer.
Ceci nest pas vrai pour le stockage des donnes chiffres. Si Alice ne peut pas dchiffrer
son propre message, elle ne peut pas remonter le temps et le rechiffrer. Elle la perdu
jamais. Ceci veut dire que les applications de chiffrement pour le stockage des donnes
devraient avoir des mcanismes pour empcher des erreurs irrcuprables de sinfiltrer
dans le texte chiffr.
La clef de chiffrement a la mme valeur que le message, elle est seulement plus pe
tite. En effet, la cryptographie convertit de gros secrets en petits. Etant plus petites,
elles peuvent facilement tre perdues. Les procdures de gestion des clefs devraient
considrer que les mmes clefs seront utilises maintes fois et que les donnes pourront
demeurer sur disque pendant des annes avant d tre dchiffres.
De plus, les clefs seront prsentes pendant une longue priode. Une clef utilise pour
une liaison tlphonique devrait, ce qui serait idal, exister juste le temps de la commu
nication. Une clef utilise pour le stockage des donnes peut servir pendant des annes
et doit par consquent tre stocke de manire sre pendant des annes.
Dautres problmes spcifiques au chiffrement des donnes informatiques en vue de
stockage sont numrs dans [361] :
- Les donnes peuvent aussi exister sous forme de texte en clair, soit sur un autre
disque, dans un autre systme informatique ou sur papier. Il y a plus doccasions
pour des cryptanalystes de monter une attaque texte en clair connu.
- Dans les applications de bases de donnes, des parcelles de donnes peuvent tre
plus petites que la taille de blocs de la plupart des algorithmes. Cela donnera un
texte chiffr qui peut tre largement plus grand que le texte en clair.
- La vitesse des priphriques dentre et sortie ncessite une grande vitesse de
chiffrement et de dchiffrement, et une ralisation matrielle du chiffrement sera
probablement ncessaire. Pour certaines applications, des algorithmes haute
vitesse pourraient tre ncessaires.
- Un stockage sr et de longue dure pour les clefs est ncessaire.
- La gestion des clefs est nettement plus complique, car diffrentes personnes
doivent accder diffrents fichiers, diffrentes portions dun mme fichier, etc.
Si les fichiers chiffrs ne sont pas structurs en enregistrements et champs, comme dans
les fichiers de texte, laccs est facile : tout le fichier est dchiffr avant usage. Si les
fichiers chiffrs sont des fichiers dune base de donnes, la solution est problmatique.
Dchiffrer toute la base de donnes pour accder un seul enregistrement est inefficace,

2S6

Chapitre 10

Utilisation des algorithmes

mais chiffrer les enregistrements indpendamment peut tre sujet une attaque du type
des blocs rejous.
De plus, vous devez tre sr que le fichier non chiffr est effac aprs le chiffrement
(voir 10.9). Pour plus de dtails et un autre aperu, consultez [427, 571].

Drfrencer les clefs


Quand vous chiffrez un disque dur volumineux, vous avez deux options. Vous pouvez
chiffrer toutes les donnes en nutilisant quune seule clef. Cela fournit au cryptana
lyste une grande quantit de texte chiffr analyser et rend impossible de multiples
utilisateurs de voir seulement des parties du disque. Ou, vous pouvez chiffrer chaque
fichier avec une clef diffrente, forant les utilisateurs mmoriser une clef diffrente
pour chaque fichier.
La solution et de chiffrer chaque fichier avec une clef spare et de chiffrer ces clefs avec
une autre clef connue des utilisateurs. Chaque utilisateur ne doit se souvenir que de
cette clef. Des utilisateurs diffrents peuvent avoir diffrents sous-ensembles des clefs
de chiffrement de fichier chiffrs avec leur clef. Il peut mme y avoir une clef matresse
qui chiffre toutes les clefs de chiffrement de fichier. Ceci est mme plus sr car les
clefs de chiffrement de fichier sont alatoires et moins vulnrables une attaque par
dictionnaire.

Chiffrements au niveau du disque vs chiffrements au niveau des


fichiers
Il y a deux manires de chiffrer un disque dur : au niveau des fichiers et au niveau du
disque. Le chiffrement au niveau des fichiers signifie que tous les fichiers sont chiffrs
sparment. Pour utiliser un fichier qui a t chiffr, vous devez d abord le dchiffrer,
puis lutiliser et enfin le rechiffrer.
Le chiffrement au niveau du disque garantit un disque logique dans lordinateur de
lutilisateur o toutes les donnes y sont chiffres. Bien effectu, cela fournit une scurit
qui, au del du choix dun bon mot de passe, ne demande pas grand chose de la part
de lutilisateur. Nanmoins, le disque doit tre beaucoup plus complexe quun simple
programme de chiffrement de fichier, car il doit soccuper d allouer de nouveaux secteurs
des fichiers, de recycler de vieux secteurs, de traiter des requtes de lecture et de mise
jour des accs alatoires pour toute donne sur le disque, etc...
En pratique, le disque demande un mot de passe lutilisateur avant de dmarrer. Ceci
gnre une clef matresse de dchiffrement qui peut alors tre utilise pour dchiffrer
les clefs de dchiffrement ncessaires pour les diffrentes donnes.

Fournir un accs alatoire un disque chiffr


La plupart des systmes devraient tre capable daccder aux secteurs dun disque de
manire alatoire. Ceci implique des complications quant lutilisation de nombreux
algorithmes de chiffrement en continu et dalgorithmes de chiffrement par blocs dans
tout mode de chanage. Plusieurs solutions sont possibles.
Utilisez ladresse secteur pour gnrer un IV unique pour chaque secteur qui est chiffr
ou dchiffr. Le dfaut est que chaque secteur sera toujours chiffr avec le mme IV.
Assurez-vous que cela ne pose pas de problme de scurit.

10.5

Chiffrement matriel vs chiffrement logiciel

231

Pour la clef matresse, gnrez un bloc pseudo-alatoire aussi grand quun secteur.
(Vous pouvez le faire en utilisant un algorithme en mode O F B par exemple.) Pour
chiffrer tout secteur, combinez d abord par ou exclusif avec ce bloc pseudo-alatoire,
puis chiffrez normalement avec un algorithme de chiffrement par blocs en mode ECB.
Cela sappelle E C B + O F B (voir 15.4).
Comme C B C et C FB sont des modes de rcupration d erreurs, vous pouvez utilisez
tous les blocs du secteur sauf les premiers et seconds pour gnrer un IV pour ce
secteur. Par exemple, lIV du secteur 3 001 peut tre le hachage de toutes les donnes du
secteur, mis part les premiers 128 bits. Aprs avoir gnr lIV , chiffrez normalement
en mode C B C . Pour dchiffrer le secteur, vous utilisez les 64 bits du second bloc
du secteur en tant quIV puis dchiffrez le reste du secteur. Ensuite, en utilisant les
donnes dchiffres, vous rgnrez lIV et dchiffrez les premiers 128 bits.
Vous pouvez utiliser un algorithme de chiffrement par blocs avec une taille de bloc
assez grande pour pouvoir chiffrer tout le secteur dun coup. C R A B (voir 14.6) en
est un exemple.

10.5

Chiffrement matriel vs chiffrement


logiciel

Chiffrement matriel
Jusqu il y a peu, tous les quipements de chiffrement taient des ralisations ma
trielles ddies. Ces botes de chiffrement/dchiffrement se branchaient sur les lignes
de communications et chiffraient toutes les donnes passant sur la ligne. Bien que le
chiffrement en logiciel prenne de limportance aujourdhui, le matriel est toujours le
choix qui est fait par les militaires et les applications commerciales srieuses. La NSA,
par exemple, nautorise que le chiffrement par le matriel. Il y a plusieurs raisons
cela.
La premire est la vitesse. Comme nous le verrons dans la troisime Partie, les algo
rithmes de chiffrement consistent en de nombreuses oprations compliques sur des bits
de texte en clair. On ne trouve pas sous le sabot dun cheval des ordinateurs qui com
prennent ce genre d oprations en standard. Les deux algorithmes de chiffrement les
plus courants, le DES et R SA , ne fonctionnent pas bien sur des processeurs gnraux.
Bien que certains cryptographes aient essay de rendre les algorithmes plus facilement
ralisables en logiciel, le matriel ddi gagnera toujours la course de vitesse.
De plus, le chiffrement est souvent une tche de calcul intensif. Mobiliser le processeur
principal de lordinateur pour cela est inefficace. Confier le chiffrement une autre puce,
mme si cette puce nest quun autre processeur, rend tout le systme plus rapide.
La deuxime raison est la scurit. Un algorithme de chiffrement fonctionnant sur
un ordinateur commun na pas de protection physique. Martin peut utiliser diffrents
outils de dbogage et subrepticement modifier lalgorithme sans que qui que ce soit sen
rende compte. Les dispositifs de chiffrement matriels peuvent tre bien encapsuls pour
prvenir cela. Des botes lpreuve de linvestigation peuvent empcher que quelquun
modifie le dispositif de chiffrement matriel. Des puces VLSI ddies peuvent tre
recouvertes d un film protecteur chimique spcial tel que toute tentative daccder
lintrieur provoque la destruction des circuits logiques de l a puce. Les puces C l i p p e r

Chapitre 10

238

Utilisation des algorithmes

T ab. 10.5 - Chiffrements au niveau des fichiers vs au niveau du disque


C

h if f r e m e n t a u

n iv e a u

d e s f ic h ie r s

h if f r e m e n t

au

n iv e a u

du

d is q u e

Bnfices
Facilit de ralisation et dutilisation.
Les fichiers temporaires, de travail, et
Flexibilit.
autres, peuvent tre gards dans le
Baisse de performance trs faible.
disque sr.
Les utilisateurs peuvent transfrer des fiIl est plus difficile d oublier de rechiffrer
chiers entre diffrentes machines sans
quelque chose avec ce genre de systme,
problmes.
Les utilisateurs peuvent sauvegarder des
fichiers sans problmes.
Questions de scurit
Beaucoup de choses peuvent mal se pas
ser avec un disque ou un programme
rsident en mmoire.
De mauvaises conceptions permettront
des attaques texte en clair, voire
texte chiffr, choisi.
Si tout le systme est verrouill avec un
mot de passe, la perte de ce mot de
passe fait que lattaquant peut tout ob
tenir.
Un ensemble plus limit d algorithmes
de chiffrement peut raisonnablement
tre utilis pour ce genre d application.
Par exemple, des algorithmes de chif
frement en continu en mode O F B ne
marcheraient pas.
Problmes d utilisation

Fuite possible par des programmes nonscuris (un programme peut crire un
fichier sur le disque pour un stockage
temporaire, par exemple).
Une mauvaise conception peut toujours
rechiffrer la mme clef pour le mme
mot de passe.

Lutilisateur doit savoir ce quil doit


faire.
II peut y avoir diffrents mots de passe
pour diffrents fichiers.
Le chiffrement manuel de fichiers slectionns
est le seul contrle d accs.

II y aura une baisse de performance.


Le disque peut ragir de manire inattendu
avec W i n d o w s , lmulation OS2 DOS,
des gestionnaires de disque, etc...

et C a p s t o n e du gouvernement amricain (voir 24.16 et 24.17) sont conues pour


rsister toute investigation. Les puces peuvent tre conues pour quil soit impossible
Martin de lire la clef non chiffre.
IBM a dvelopp un systme cryptographique pour chiffrer les donnes et les commu
nications sur les ordinateurs centraux [517, 1032]. Il comprend des modules spciaux
rsistants linvestigation pour contenir les clefs. Ce systme est dcrit dans le para

10.5

Chiffrement matriel vs chiffrement logiciel

239

graphe 24.1.

Le rayonnement lectromagntique peut parfois rvler ce qui se passe dans un quipe


ment lectronique. Des botes ddies au chiffrement peuvent tre blindes de manire
ne pas laisser schapper dinformation. Les ordinateurs multi-usage traditionnels
peuvent tre blinds galement, mais cest nettement plus complexe raliser. Les mi
litaires amricains appellent ceci T E M P E S T ; c est un sujet qui dpasse largement le
cadre de ce livre.
La raison finale pour la prdominance des ralisations matrielles est la facilit dins
tallation. La plupart des applications de chiffrement nimpliquent pas des ordinateurs
classiques. Les gens peuvent vouloir chiffrer leur conversations tlphoniques, leurs en
vois de fax, ou leurs liens de donnes. Il est moins cher de mettre du matriel ddi
au chiffrement dans les tlphones, les fax, et les modems que de mettre le chiffrement
dans un microprocesseur et un logiciel.
Mme quand les donnes chiffres viennent dun ordinateur, il est plus simple dinstaller
un priphrique de chiffrement que de modifier le logiciel systme de lordinateur. Le
chiffrement doit tre invisible et ne doit pas gner lutilisateur. Le seul moyen de raliser
cela en logiciel est de raliser le chiffrement dans les couches profondes du systme de
conduite. Ce nest pas simple. De plus, mme un nophyte de linformatique peut
brancher une bote de chiffrement entre son ordinateur et son modem externe.
Aujourdhui, les trois types principaux de dispositifs matriels de chiffrement sur le
march sont : des modules de chiffrement autonomes (qui effectuent des fonctions telles
que la vrification de mots de passe et la gestion des clefs pour les banques), des botes
ddies au chiffrement pour les liens de communications et les cartes que lon enfiche
dans les ordinateurs personnels.
Certaines botes de chiffrement sont conues pour des types spciaux de liens de com
munication, comme les botes de chiffrement pour liens T -1 qui sont conues pour ne
pas chiffrer les bits de synchronisation. Il existe diffrentes botes pour les lignes de
communications synchrones et asynchrones. De nouvelles botes semblent accepter de
plus grandes vitesses (en bits par seconde) et sont plus versatiles.
Malgr cela, nombre de ces priphriques occasionnent des incompatibilits. Les ache
teurs doivent en tre avertis et doivent bien connatre leurs besoins particuliers, sinon
ils se retrouvent propritaires d un quipement de chiffrement qui narrive pas effec
tuer la tche demande. Faites attention aux restrictions quant au type de matriel,
au systme de conduite, aux programmes d application, au rseau, etc.
Les cartes chiffreuses P C chiffrent en gnral tout ce qui est crit sur le disque dur et
peuvent galement tre configures pour chiffrer tout ce qui est crit sur des disquettes
ou sur les ports sries. Ces cartes ne sont pas blindes contre les rayonnements lectro
magntiques ou les interfrences de signaux, puisque cela na pas de sens de protger
les cartes si lordinateur ne lest pas.
De plus en plus de socits commencent mettre du matriel de chiffrement dans leurs
quipements de communication. Des tlphones srs, des fax srs et des modems srs
sont tous disponibles.
La gestion interne des clefs de ces priphriques est en gnral sre, bien quil existe
autant de schmas que de vendeurs dquipement. Certains schmas sont mieux adapts
une situation qu une autre, et les acheteurs doivent savoir dune part quel type de
gestion des clefs est incorpor dans la bote de chiffrement et dautre part ce quils
doivent fournir par eux-mmes.

Chapitre 10

240

Utilisation des algorithmes

Chiffrement logiciel
Tout algorithme de chiffrement peut tre ralis en logiciel. Les dsavantages sont la
vitesse, le cot et la facilit de modification (ou de manipulation). Les avantages sont
la flexibilit et la portabilit, la facilit d utilisation et la facilit de mise jour. Les
algorithmes crits en C la fin de cet ouvrage peuvent tre raliss, modulo des petites
modifications, sur nimporte quel ordinateur. Ils peuvent tre incorpors dans de plus
grandes applications comme les programmes de communications ou les traitements de
texte.
Les logiciels de chiffrement sont populaires et disponibles pour tous les systmes de
conduites majeurs. Ils sont destins protger des fichiers individuels : lutilisateur
doit gnralement chiffrer et dchiffrer des fichiers spcifiques. Il est important que la
gestion des clefs soit sre : les clefs ne devraient pas tre stockes sur le disque nimporte
o (ou mme crites dans une zone mmoire qui peut tre recopie sur le disque par la
gestion de mmoire virtuelle). Les clefs et les fichiers non chiffrs doivent tre effacs
aprs chiffrement. Nombre de programmes sont ngligents ce propos et lutilisateur
doit choisir prudemment.
Bien sr, Martin peut toujours remplacer le logiciel de chiffrement par autre chose. Mais
pour la plupart des utilisateurs, ce nest pas un problme. Si Martin peut sintroduire
dans nos bureaux et modifier nos programmes de chiffrement, il peut aussi installer une
camra cache dans le mur, mettre le tlphone sur coute, et un dtecteur T E M P E S T
dans la rue. Si Martin est aussi puissant, lutilisateur a alors perdu le jeu avant mme
quil nait commenc.

10.6

Compression, codage et chiffrement

Utiliser un algorithme de compression de donnes avec un algorithme de chiffrement


est logique pour deux raisons :
- La cryptanalyse sappuie sur lexploitation de redondances dans le texte en clair ;
compresser un fichier avant de le chiffrer rduit ces redondances.
- Le chiffrement prend du temps ; compresser un fichier avant de le chiffrer acclre
le processus tout entier.
La chose importante dont il faut se souvenir est de compresser avant de chiffrer. Si
lalgorithme de chiffrement est bon, le texte chiffr ne sera pas compressible ; il ressem
blera des donnes alatoires. (Ceci est un bon test dun algorithme de chiffrement ;
si le texte chiffr peut tre compress, alors lalgorithme nest probablement pas trs
bon.)
Si vous voulez ajouter tout type de codage de transmission ou de dtection derreur et
de rcupration, noubliez pas de lajouter aprs le chiffrement. Sil y a du bruit dans la
voie de communication, les proprits d extension d erreur du dchiffrement ne feront
quamplifier ce bruit. La figure 10.3 rsume ces tapes.

10.7

Dtection du chiffrement

10.7

ig

241

10.3 - Chiffrement avec compression et contrle derreur

Dtection du chiffrement

Comment Estelle peut-elle dtecter un fichier chiffr? Elle est dans lespionnage, alors
cest une question importante. Imaginez quelle espionne un rseau o les messages
fusent de tous les cts des vitesses leves ; elle doit slectionner les plus intressants.
Les fichiers chiffrs sont certainement intressants, mais comment peut-elle savoir quils
sont chiffrs?
En gnral, elle sappuie sur le fait que les programmes de chiffrement les plus popu
laires ont des en-ttes bien dfinies. Les messages de courrier lectronique chiffrs avec
soit PE M soit P G P (voir 24.10 et 24.12) sont faciles identifier pour cette raison.
Dautres chiffreurs de fichier produisent juste un fichier de texte chiffr de bits appa
remment alatoires. Comment peut-elle le distinguer dun autre fichier avec des bits
apparemment alatoires? Il ny a pas de mthode infaillible, mais Estelle peut essayer
un certain nombre de choses :
- Examiner le fichier. Le texte A S C II est facilement dcelable. D autres formats
de dossier, tels que T IF F , TeX , C, P o s t c r i p t , facsimile G3 ou M i c r o s o f t
E x c e l ont des caractristiques standards identifiables. Un code excutable est
aussi dtectable. Les fichiers U N IX ont souvent des nombres magiques qui
peuvent tre dtects.
- Essayer de dcompresser le fichier en utilisant les algorithmes de compression les
plus connus. Si le fichier est compress (et non chiffr), cela devrait donner le
fichier original.
- Essayer de compresser le fichier. Si le fichier est du texte chiffr (et que lalgo
rithme est bon), alors la probabilit que le fichier puisse tre compress un
degr apprciable par une compression d usage gnral est faible. (Par un
degr apprciable , j entends plus de 1 ou 2 pourcents.) Si cest quelque chose
dautre (une image binaire ou un fichier de donnes binaires, par exemple) cela
peut probablement tre compress.
Tout fichier qui ne peut tre compress et qui ne lest pas dj est probablement du
texte chiffr. (Bien entendu, il est toujours possible de faire un texte chiffr spcifique
qui soit compressible.) Identifier lalgorithme est beaucoup plus dur. Si lalgorithme
est bon, vous ne pourrez pas. Sil a quelques petites altrations, il peut tre possible
de reconnatre ces altrations dans le fichier. Nanmoins, les altrations devront tre
assez significatives ou le fichier assez gros afin que cela puisse marcher.

242
10.8

Chapitre 10

Utilisation des algorithmes

Cacher du texte chiffr dans du texte


chiffr

Alice et Bernard se sont envoys des messages chiffrs tout au long de lanne. Estelle les
a tous rcuprs, mais elle ne peut dchiffrer aucun d entre-eux. Finalement, la police
secrte se lasse de tous ces textes chiffrs illisibles et arrte la paire. Donnez-nous vos
clefs de chiffrement , demandent-ils. Alice et Bernard refusent, puis ils aperoivent un
appareil de torture. Que peuvent-ils faire?
Ne serait-il pas agrable de pouvoir chiffrer un fichier de manire ce quil y ait deux
dchiffrements possibles, chacun avec une clef diffrente? Alice pourrait chiffrer un vrai
message vers Bernard avec lune des clefs et un message banal avec lautre. Si Alice se
faisait arrter, elle pourrait livrer la clef du message banal et garder la vrai clef secrte.
La faon la plus simple de faire ceci est avec les masques jetables. Soit Ad le texte en
clair, le texte en clair leurre, C le texte chiffr, K la vrai clef et K ' la clef leurre.
Alice chiffre Ad :
Ad K = C
Alice et Bernard partagent K , Bernard peut donc dchiffrer C :
C@K = M

Si la police secrte les force leur livrer leur clef, ils ne livrent pas K , mais la place :
K' = C

La police obtient alors le texte en clair leurre :


C K =

Comme ce sont des masques jetables et que K est totalement alatoire, il n y a pas de
moyen de prouver que K ' ntait pas la bonne clef. Pour rendre les choses encore plus
convaincantes, Alice et Bernard devraient concocter des messages leurres moyennement
compromettants pour les substituer aux messages rels vraiment compromettants. Une
paire d espions israliens lont fait une fois.
Alice pourrait prendre Ad et le chiffrer avec son algorithme prfr et sa clef K pour
obtenir C. Puis elle prend C et le combine par ou exclusif avec un bout de texte en clair
mondain ( Ici Pans par exemple) pour obtenir K '. Elle stocke C et la combinaison
par ou exclusif sur son disque dur. Maintenant, si la police secrte linterroge, elle
peut expliquer quelle est une cryptographe amateur et que K ' est simplement un
masque jetable pour C. La police pourrait suspecter quelque chose, mais moins quelle
connaisse K , elle ne peut pas prouver que lexplication d Alice est fausse.
Une autre mthode consiste chiffrer Ad avec un algorithme clef secrte K , et avec
K '. Intercalez les bits (ou octets) des textes chiffrs pour faire le texte chiffr final. Si
la police secrte demande la clef, Alice lui donne K ' et dit que les bits (ou octets)
alterns sont des bruits alatoires pour dcourager toute cryptanalyse. Le fait est que
cette explication est si peu plausible que la police secrte ne la croira probablement
pas (surtout maintenant quelle est suggre dans ce livre).

10.9

Destruction dinformation

243

Une meilleure manire est quAlice cre un message leurre, , tel que A4 et mis bout
bout et compresss soient peu prs de la taille de . Appelez cet enchanement A i'.
Alice chiffre alors A i' avec tout algorithme quelle partage avec Bernard pour obtenir
C. Puis elle envoie C Bernard. Bernard dchiffre C pour obtenir A i', puis A i et .
Ensuite, ils calculent tous les deux
C L K'

Ce K ' devient le masque jetable leurre quils utiliseront si la police secrte fait irruption.
Alice doit transmettre afin que son alibi et celui de Bernard concident.
Une autre mthode est quAlice prenne un message banal et le passe par un code
correcteur derreur. Puis elle peut introduire des erreurs qui correspondent au message
secret chiffr. A la rception, Bernard peut extraire les erreurs pour reconstruire le
message secret et le dchiffrer. Il peut aussi utiliser le code correcteur derreur pour
retrouver le message banal. Alice et Bernard auront du mal expliquer la police
secrte pourquoi ils obtiennent constamment un taux d erreur de bits de 30 pourcents
sur un rseau pourtant sans bruit, mais dans certaines circonstances, ceci peut marcher.
Enfin, Alice et Bernard peuvent utiliser des canaux subliminaux dans leurs algorithmes
de signature digitale (voir 4.2 et 23.3). C est indtectable, a marche trs bien mais
a le dfaut de nautoriser quenviron 20 caractres de texte subliminal par lenvoi de
message banal sign. Ce nest bon que pour lenvoi de clefs.

10.9

Destruction dinformation

Quand vous dtruisez un fichier sur la plupart des ordinateur, le fichier nest pas
rellement dtruit. La seule chose qui est dtruite est lentre dans le fichier dindex
du disque, qui indique la machine o se trouve le fichier. Beaucoup de vendeurs de
logiciel ont fait fortune en vendant des logiciels de rcupration de fichiers aprs quils
furent dtruits.
Il y a encore un autre motif d inquitude: la mmoire virtuelle implique que votre
ordinateur peut lire et crire la mmoire vers le disque tout instant. Mme si vous
ne le sauvez pas, vous ne savez jamais quand un document sensible est envoy sur le
disque. Ce qui veut dire que mme si vous ne sauvegardez jamais vos donnes en clair,
votre ordinateur pourrait le faire pour vous. Les programmes de compression au niveau
du disque comme Stacker et DoubleSpace peuvent rendre encore plus difficile la
prvision de la manire avec laquelle, et de lendroit o, linformation est stocke sur
le disque.
Pour effacer un fichier de manire ce que ces logiciels ne puissent pas les reconstituer,
vous devez crire physiquement sur chaque bit du fichier sur le disque. D aprs le
Centre National de Scurit Informatique amricain ( National Computer Security
Center ) [1149] :
La rcriture est le procd par lequel des donnes non secrtes sont
crites dans des zones de stockage qui contenaient auparavant des donnes
sensibles ... Pour purger le ... support de stockage, le D o D (le Dpartement
de la Dfense amricaine) requiert la rcriture avec un motif, puis son
complment et finalement un autre motif ; par exemple rcrivez premire
ment avec 0011 0101, suivi de 1100 1010 et ensuite avec 1001 0111. Le

Chapitre 10

Utilisation des algorithmes

nombre de rcritures dpend du type du support de stockage, parfois de


sa sensibilit, et parfois des requis du D oD sur certains composants. Dans
tous les cas, une purge nest pas complte avant quune rcriture finale
soit faite avec des donnes non secrtes.
Vous aurez peut-tre effacer des fichiers, voire des disques entiers. Vous devrez aussi
effacer tout lespace inutilis de votre disque dur.
La plupart des logiciels qui prtendent raliser le standard du D oD rcrivent trois fois :
une fois avec uniquement des 1, ensuite avec uniquement des 0 et finalement avec un
motif rptitif de 1-0. Etant donn mon niveau gnral de paranoa, je recommande de
rcrire un fichier dtruit sept fois : la premire fois avec uniquement des 1, la seconde
avec uniquement des 0 et les 5 autres fois avec un gnrateur de squence pseudo
alatoires cryptographiquement sr. Des dveloppements rcents au N IST avec des
microscopes effet tunnel suggrent que mme cela pourrait ne pas tre suffisant.
Honntement, si vos donnes ont tant de valeur, considrez quil est impossible de
les effacer compltement d un support magntique. Brlez ou dchiquetez le support ;
il est moins onreux dacheter un nouveau support que de perdre vos secrets.

Troisime partie
Algorithmes cryptographiques

Chapitre 11

Rudiments mathmatiques
11.1

Thorie de linformation

La thorie moderne de linformation fut dfinie pour la premire fois par Claude
Elmwood S h a n n o n [1437, 1438]. Ces articles ont t rdits rcemment par IEEE
Press [1440]. Pour un bon traitement mathmatique du sujet, consultez [595]. Dans
cette section, je naborderai que quelques sujets importants.

Entropie et incertitude
La thorie de linformation dfinit la q u a n t i t d i n f o r m a t i o n d un message comme
le nombre minimal de bits ncessaires pour coder toutes les significations possibles de
ce message. Par exemple, le champ jour de la semaine dans une base de donnes
ne contient pas plus de 3 bits dinformation, parce que linformation peut tre code
avec 3 bits :
000
001
010
011
100
101
110

=
=
=
=
=
=
=

dimanche
lundi
mardi
mercredi
jeudi
vendredi
samedi

Si cette information tait reprsente par les chanes de caractres ASCII correspon
dantes, cela prendrait plus de place mmoire mais cela ne contiendrait pas plus dinfor
mation. De faon similaire, le champs sexe de la base de donnes contient seulement
1 bit dinformation, bien quil donne limpression de devoir tre stock comme lune
des deux chanes de 5 caractres ASCII homme ou femme .
Formellement, la quantit dinformation dans un message M est mesure par
le n t r o p i e dun message, dnote H (M ). L entropie dun message indiquant le sexe est
de 1 bit ; lentropie dun message indiquant le jour de la semaine est un tout petit peu
moins que 3 bits. En gnral, lentropie d un message est log2 n, o n est le nombre de
significations possibles. Cela suppose que toutes les significations sont quiprobables.

Chapitre 11

S48

Rudiments mathmatiques

Lentropie dun message mesure galement son i n c e r t i t u d e . C est le nombre de bits


de texte en clair qui doivent tre retrouvs pour retrouver le texte en clair en entier
partir du texte chiffr. Par exemple, si le bloc de texte chiffr QHP*5 a pour
texte en clair soit homme soit femm e , alors lincertitude du message est de 1. Un
cryptanalyste doit dcouvrir un seul bit bien choisi pour retrouver le message.

Taux du langage
Pour un langage donn, le t a u x d u l a n g a g e est
r = H ( M ) /N

o N est la longueur des messages. Le taux de langlais courant prend plusieurs valeurs
entre 1 bit et 1,5 bit par lettre, pour des grandes valeurs de N . Dans son livre [1439],
S h a n n o n annonce que lentropie dpend de la longueur du texte. Plus prcisment,
il indique un taux de 2,3 bit par lettre pour des bribes de 8 lettres, mais le taux
tombe entre 1,3 et 1,5 bits par lettre pour des bribes de 16 lettres. Thomas C o v e r a
trouv, avec des techniques de thorie des jeux, une entropie de 1,3 bits par lettre1.
Le t a u x a b s o l u dun langage est le nombre maximal de bits qui peuvent tre cods
par chaque caractre, en faisant lhypothse que toutes les squences de caractres sont
quiprobables. Sil y a L caractres dans le langage, le taux absolu est :
R = log2 L

C est lentropie maximale des caractres isols.


Pour langlais, avec 26 lettres, le taux absolu est log2 26 = 4,7 bits par lettre. Il nest
pas surprenant que le taux effectif de langlais soit nettement infrieur au taux absolu :
langlais est une langue fortement redondante.
La r e d o n d a n c e dun langage, note D , est dfinie par :
D R r

tant donn que le taux de langlais est de 1,3, la redondance est de 3,5 bits par lettre2.
Cela veut dire que chaque caractre apporte 3,5 bits d information redondante.
Un message ASCII qui nest rien d autre que de langlais crit na que 1,2 bit d infor
mation par 8 bits du message. Cela veut dire quil y a alors 6,8 bits de redondance, ce
qui donne une redondance globale de 0,85 bit d information par bit de texte ASCII et
une entropie de 0,15 bit d information par bit de texte ASCII. Le mme message cod
par le systme B A U D O T , 5 bits par caractre, a une redondance de 0,76 bit et une
entropie de 0,34 bit par bit de texte B A U D O T . La prise en compte des blancs, de la
ponctuation, des nombres et de la mise en page modifierait ces rsultats.

Scurit dun cryptosystme


S h a n n o n a dfini un modle mathmatique prcis de ce que lon peut entendre par
un cryptosystme sr. Le but des cryptanalystes est de dterminer la clef K , le texte
1. J utiliserai ce tau x d e 1,3 dans ce livre.
2. N ote du traducteu r: d aprs [240], la redondance d e la langue franaise est un petit peu plus
leve.

11.1

Thorie de linformation

249

en clair A4, ou les deux. Toutefois, ils peuvent se contenter de certaines informations
probabilistes concernant A4 si cest du son numris, si c est un texte en allemand, si
ce sont des donnes pour un tableur, ou quelque chose d autre.
Pour la plupart des cryptanalyss du monde rel, les cryptanalystes ont quelques in
formations probabilistes concernant A4 avant de commencer. Ils connaissent probable- .
ment le langage du texte en clair. Ce langage a une certaine redondance associe. Si
cest un message destin Bernard, il commence probablement par C h e r B o b , .
Certainement, C h e r B o b , est plus probable que e 8 T & g [,m . Le but de la cryp
tanalyse est, par analyse, de modifier les probabilits associes avec tous les textes en
clair possibles. Finalement un texte en clair considr comme certain (ou au moins,
trs probable) mergera du paquet des textes en clair possibles.
Il existe quelque chose que lon peut appeler cryptosystme c o n f i d e n t i a l i t p a r
f a i t e . C est un cryptosystme dans lequel le texte chiffr ne fournit pas la moindre
information concernant le texte en clair (except peut-tre sa longueur). S h a n n o n
postula que ce ntait possible que si le nombre de clefs possibles est au moins aussi
grand que le nombre de messages possibles. En d autres termes, la clef doit tre au
moins aussi longue que le message lui-mme et aucune clef ne peut tre rutilise. En
dautres termes encore, le masque jetable (voir 1.5) est le seul cryptosystme qui
assure une confidentialit parfaite.
La confidentialit parfaite mise part, le texte chiffr donne quelques informations sur
le texte en clair correspondant. C est invitable. Un bon algorithme cryptographique
minimisera cette information ; un bon cryptanalyste exploite cette information pour
retrouver le texte en clair.
Les cryptanalystes utilisent la redondance naturelle du langage pour rduire le nombre
possible de textes en clair. Plus le langage est redondant, plus simple il est cryp
tanalyser. C est la raison pour laquelle de nombreuses ralisations cryptographiques
concrtes utilisent avant de chiffrer un programme de compression pour rduire la
taille du texte. La compression rduit la redondance du message et aussi le travail
fournir pour chiffrer et dchiffrer.
Lentropie dun cryptosystme est une mesure de la taille de lensemble des clefs. Elle
est approche par le logarithme en base 2 du nombre de clefs :
H (K ) = log2(nombre de clefs)

Un cryptosystme avec une clef de 64 bits a une entropie de 64 ; un cryptosystme avec


une clef de 56 bits a une entropie de 56. En gnral, plus grande est lentropie, plus
difficile il est de casser le cryptosystme.

Distance dunicit
Pour un message de longueur n, le nombre de clefs diffrentes qui traduiront un message
chiffr en un texte en clair intelligible dans un mme language est donn par la formule
suivante [714, 102] :
2H ( K ) ~ n D _ ^
S h a n n o n [1438] a dfini la d i s t a n c e d u n i c i t , U, appele aussi le point d unicit,
comme une approximation de la quantit de texte chiffr telle que la somme des infor
mations relles (entropie) dans le texte en clair correspondant et de lentropie de la clef
de chiffrement soit gale au nombre de bits de texte chiffr utiliss. Il montra alors que

250

Chapitre 11

Rudiments mathmatiques

des textes chiffrs plus longs que cette valeur sont raisonnablement certains de navoir
quun seul dchiffrement plausible. Des textes chiffrs significativement plus courts
que cela ont des chances davoir plusieurs dchiffrements galement valables et donc
augmentent la scurit, car il est difficile lattaquant de choisir le bon dchiffrement.
Pour la plupart des cryptosystmes clef secrte, la distance dunicit est dfinie comme
lentropie du cryptosystme divise par la redondance du langage :
U = H (K)/D .

La distance dunicit, comme toute mesure d information statistique ou thorique, ne


fait pas de prdictions dterministes mais donne des rsultats probabilistes. La distance
d unicit indique le minimum de texte chiffr pour lequel il est probable quil ny ait
quun seul texte en clair plausible correspondant quand une attaque exhaustive est
monte. En gnral, plus grande est la distance dunicit, meilleur est le cryptosystme.
Pour le DES, avec une clef de 56 bits, et un message en anglais cod en ASCII,
la distance dunicit est d environ 8,2 caractres ASCII, ou 66 bits. Le tableau 11.1
donne les distances d unicit pour diffrentes longueurs de clef. Les distances dunicit
de quelques cryptosystmes classiques sont donns dans [448].

T a b . 11.1

clef.

- Distances dunicit de texte ASC II chiffr avec diffrentes longueurs de


______________________________________________
Distance d unicit
Longueur de la clef
(en nombre de lettres)
(en bits)
40
5,9
8,2
56
64
9,4
11,8
80
128
18,8
256
37,6

La distance dunicit nest pas une mesure de la quantit de texte chiffr quil faut pour
la cryptanalyse mais bien de la quantit de texte chiffr ncessaire pour quil ny ait
quune solution raisonnable la cryptanalyse. Un cryptosystme peut tre inviolable
par calcul mme si thoriquement il est possible de le casser avec une faible quantit de
texte chiffr3. La distance d unicit est inversement proportionnelle la redondance.
Quand la redondance approche de zro, mme un chiffrement trivial peut tre inviolable
par une attaque texte chiffr seulement.
S h a n n o n dfinit un cryptosystme dont la distance d unicit est infinie comme un
systme c o n f i d e n t i a l i t i d a l e . Remarquez quun cryptosystme idal nest pas
forcment un cryptosystme parfait, bien quun cryptosystme parfait soit ncessai
rement un cryptosystme idal. Si un cryptosystme offre une confidentialit idale,
mme une cryptanalyse russie laissera une incertitude quant savoir si le texte d
cod est le bon texte.
3.
La thorie de la c r y p t o g r a p h i e r e la t iv is e , bien qu sotrique et peu pratique, est approprie
ici [233, 234, 235, 236, 237, 238].

11.2

Thorie de la complexit

251

Thorie de linformation en pratique


Bien que ces concepts aient une grande valeur thorique, la cryptanalyse relle se base
rarement l-dessus. Trop petit, la distance dunicit reste aussi peu sre que si elle
est grande. Peu dalgorithmes pratiques sont totalement impermables lanalyse;
toutes sortes de caractristiques peuvent servir de bras de levier pour casser certains
messages chiffrs. Toutefois, des considrations sur la thorie de linformation sont
parfois utiles, par exemple pour dterminer lintervalle de changement de clefs pour
un algorithme dtermin. Les cryptanalystes utilisent une varit de tests statistiques
bass sur la thorie de linformation afin de mener leurs analyses dans les directions les
plus efficaces. Malheureusement, la plupart des publications concernant la thorie de
linformation applique la cryptanalyse demeurent secrtes, comme le compte-rendu
du sminaire de 1940 d Alan T u r i n g .

Confusion et diffusion
Les deux techniques de base pour gommer les redondances dans un texte en clair sont
selon S h a n n o n la confusion et la diffusion [1438].
La c o n f u s i o n gomme les relations entre le texte en clair et le texte chiffr. Elle vite
lanalyse du texte chiffr par recherche de redondances et de motifs statistiques. Le
moyen le plus simple de raliser cela est la substitution. Un chiffre substitution
simple, tel le systme dcalage de Jules Csar, est un systme dans lequel chaque
lettre identique du texte en clair est remplace par une mme autre lettre dans le
texte chiffr. Les chiffres substitution modernes sont plus compliqus : un long bloc
de texte en clair est remplac par un autre bloc de texte chiffr et le mcanisme de
substitution change avec chaque bit du texte en clair. Ce type de substitution nest
pas ncessairement suffisant ; le systme allemand E N IG M A est un algorithme de
substitution complexe qui fut cass durant la Seconde Guerre mondiale.
La d i f f u s i o n disperse la redondance du texte en clair en la rpartissant dans le texte
chiffr. Un cryptanalyste qui recherche ces redondances aura plus de difficults les
trouver. Le moyen le plus simple de provoquer la diffusion est la transposition (ap
pele aussi p e r m u t a t i o n ) . Un chiffre transposition simple, telle la transposition
en colonnes, rarrange simplement les lettres du texte en clair. Les chiffres modernes
ralisent ce type de permutation, mais ils emploient dautres formes de diffusion qui
peuvent diffuser les parties du message travers la totalit du message.
Les chiffres en continu se basent sur la confusion seulement. Les algorithmes par blocs
utilisent la fois la confusion et la diffusion. En rgle gnrale, la diffusion seule est
facile casser (bien que la double transposition rsiste mieux que beaucoup dautres
mthodes faisables avec un papier et un crayon).

11.2

Thorie de la complexit

La thorie de la complexit fournit une mthodologie pour analyser la complexit


de calcul de diffrents algorithmes et techniques cryptographiques. Elle compare les
algorithmes et les techniques cryptographiques pour dterminer leur niveau de scurit.
La thorie de linformation nous apprend que tous les algorithmes cryptographiques
(except les masques jetables) peuvent tre casss. La thorie de la complexit nous

252

Chapitre 11

Rudiments mathmatiques

apprend sils peuvent tre casss avant la fin du monde...

Complexit des algorithmes


La complexit dun algorithme est dtermine par la puissance de calcul ncessaire
pour lexcuter. La complexit calculatoire dun algorithme est mesure par deux pa
ramtres : T (pour la c o m p l e x i t e n t e m p s ) et S (pour la c o m p l e x i t e n e s p a c e ,
ou mmoire ncessaire). En gnral T et 5 sont tous deux exprims en fonction de n,
o n est la taille de lentre4.
En gnral, la complexit calculatoire dun algorithme est exprime laide de ce que
lon appelle la notation grand O : lordre de grandeur de la complexit du calcul
savoir le terme de la fonction de complexit qui crot le plus vite avec n ; toutes les
constantes et les termes d ordre infrieur sont ignors. Par exemple, si la complexit en
temps d un algorithme donn est de 4n2 + 7 n + 12, alors la complexit en calcul sera
de lordre de n2, ce qui sexprime aussi par 0 ( n 2).
De cette faon, la mesure de la complexit en temps est indpendante du systme. Vous
navez pas connatre le timing exact des diffrentes instructions ou le nombre de bits
utiliss pour reprsenter les diffrentes variables ou mme la vitesse du processeur.
Tel ordinateur peut tre une fois et demi plus rapide quun autre ou tel autre peut
avoir un chemin de donne deux fois plus large, lordre de grandeur de la complexit
d un algorithme reste le mme. Ce nest pas de la triche ; quand vous manipulez des
algorithmes aussi complexes que ceux dcrits dans cet ouvrage, les autres informations
sont en gnral ngligeables par rapport lordre de grandeur de la complexit.
Cette notation vous permet de voir la faon dont les besoins en temps et en espace
voluent avec la taille des entres. Par exemple, si T = (D(n), alors doubler la taille de
lentre double le temps de calcul de lalgorithme. Si T = 0 ( 2 n), alors ajouter 1 bit
la taille de lentre double le temps de calcul de lalgorithme ( un facteur constant
prs).
En gnral, les algorithmes sont classs daprs leur complexit en temps ou en espace.
Un algorithme est c o n s t a n t si sa complexit est indpendante de n : 0 (1 ). Un algo
rithme est l i n a i r e , 0(n), si sa complexit crot linairement avec n. Les algorithmes
peuvent tre aussi q u a d r a t i q u e s , c u b i q u e s , etc. Tous ces algorithmes sont p o l y n o
m i a u x : leur complexit est 0 ( n ) o t est une constante. La classe des algorithmes
qui ont une complexit en temps polynomiale sont appels algorithmes p o l y n o m i a u x
e n te m p s.

Les algorithmes dont la complexit est 0 ( t ^ n^), o t est une constante et f(n) est
une certaine fonction polynomiale de n, sont appels e x p o n e n t i e l s . Ceux dont la
complexit est 0 { t ^ n^), o t est une constante et /( n ) est plus que constante mais
moins que linaire, sont appels s u p e r p o l y n o m i a u x .
Idalement, les cryptographes voudraient pouvoir dire que tout algorithme de cassage
pour leurs chiffres doivent tre exponentiels en temps. En pratique, les affirmations
les plus fortes qui peuvent tre faites, tant donn ltat de lart de la thorie de la
complexit, sont de la forme tout algorithme de cassage connu pour ce chiffre a
une complexit superpolynomiale en temps . C est--dire que, pour les chiffres utili
ss en pratique, les algorithmes de cassage que nous connaissons ont une complexit
4.
Il y a d autres mesures de la com plexit : le nom bre de bits alatoires, le dbit de com m unications,
la quantit de donnes, etc.

11.2

Thorie de la complexit

253

superpolynomiale en temps mais quil nest pas encore possible de prouver quon ne
pourra jamais dcouvrir un algorithme de cassage polynomial en temps. Les avances
en thorie de la complexit permettront peut-tre un jour de concevoir des chiffres
pour lesquels lexistence dalgorithmes de cassage polynomiaux en temps pourra tre
carte mathmatiquement avec certitude.
Quand n crot, la complexit en temps dun algorithme peut faire une norme diffrence
quant lapplicabilit de lalgorithme. Le tableau 11.2 montre les temps d excution
de diffrentes classes dalgorithmes pour lesquels n vaut un million. Le tableau passe
sous silence les constantes et montre pourquoi il est raisonnable de les ignorer.

Tab. 11.2 - Temps de calcul pour diffrentes classes dalgorithmes


Classe

Complexit

Constants
Linaires
Quadratiques
Cubiques
Exponentiels

0 (1 )
0 (n )
0 ( n 2)
0 ( n 3)
0 ( 2n)

Nombre doprations
pour n = 106
1
106
1012
1018
JQ301 030

Temps pour 10
oprations par seconde
1 ps
1s
11,6 j
32 000 annes
10301 o6 fois lge
de lunivers

En faisant lhypothse que lunit de temps de votre ordinateur est la microseconde,


(lis), lordinateur peut effectuer un algorithme constant en une microseconde, un al
gorithme naire en une seconde et un algorithme quadratique en 11,6 jours. Cela
prendrait 32000 ans pour excuter lalgorithme cubique; ce qui nest pas trs pra
tique, mais dans ce cas-l lunivers existe encore, il serait possible pour un ordinateur
de fournir finalement une solution. Excuter des algorithmes exponentiels est futile,
peu importe comment vous extrapolez la puissance de calcul, le traitement en parallle
et laide dextra-terrestres super-intelligents.
Prenez le problme de lattaque exhaustive contre un cryptosystme. La complexit
en temps de cette attaque est proportionnelle au nombre de clefs possibles, qui est
une fonction exponentielle de la longueur de clef. Si n est la longueur de clef, alors
la complexit d une attaque exhaustive est 0 ( 2n). Le paragraphe 10.1 prsente la
controverse autour de la clef de 56 bits au lieu de 112 bits pour le DES. La complexit
dune attaque exhaustive contre une clef de 56 bits est 256 ; alors que contre une clef
de 112 bits la complexit est de 2112. Le premier rsultat est la limite du ralisable,
le deuxime est tout fait hors de porte.

Complexit de problmes
La thorie de la complexit classe aussi la complexit inhrente des problmes, et
pas seulement la complexit d algorithmes particuliers utiss pour rsoudre des pro
blmes5. La thorie dtermine les temps et espace minimaux ncessaires pour rsoudre
linstance la plus difficile du problme sur un ordinateur thorique connu sous le nom
de m a c h i n e d e T u r i n g . Il sagit d une machine tats finis avec une mmoire en
5.
Une excellente introduction du sujet est donne dans [603, 214, 1236] ; voyez galement [1102,
31, 741],

Chapitre 11

254

Rudiments mathmatiques

criture et en lecture sous la forme d un ruban infini. Il savre que la machine de


Turing est un modle raliste du calcul.
Les problmes qui peuvent tre rsolus avec des algorithmes polynomiaux en temps
sont appels s o l u b l e s , parce quils peuvent gnralement tre rsolus en un temps
raisonnable pour des entres de taille raisonnable6. Les problmes qui ne peuvent
pas tre rsolus en temps polynomial sont appels n o n s o l u b l e s , parce que calculer
leur solution devient rapidement impossible. Les problmes non solubles sont parfois
appels simplement d i f f i c i l e s . Ils le sont. Les problmes qui peuvent tre rsolus par
des algorithmes exponentiels ou superpolynomiaux sont non solubles par calcul, mme
pour des valeurs relativement petites de n.
Il y a pire. Alan T u r i n g a prouv que certains problmes taient i n d c i d a b l e s . Il
est impossible de concevoir un algorithme pour les rsoudre, et certainement pas un
algorithme polynomial.
Les problmes peuvent tre rangs dans des classes de complexit qui dpendent de
la complexit de leurs solutions. La figure 11.1 montre les classes de complexit les
plus importantes et leurs liens prsums (malheureusement il ny a pas beaucoup de
preuves mathmatiques ce propos).

ig

. 1 1 .1 -

Classes de complexit

Tout en bas, la classe P contient tous les problmes qui peuvent tre rsolus en temps
polynomial. La classe N P contient tous les problmes qui peuvent tre rsolus en
temps polynomial sur une machine de Turing non dterministe. Cest une variante de
la machine de Turing normale qui devine les solutions. La machine devine une solution
d un problme soit en faisant par chance une bonne hypothse, soit en essayant toutes
les possibilits en parallle et vrifie son hypothse en temps polynomial.
6. La dfinition exacte de ra iso n n a b le dpend des circonstances.

11.2

Thorie de la complexit

255

Lintrt cryptographique de la classe N P rside en ceci: de nombreuses classes de


chiffres conventionnels peuvent tre casss en un temps non dterministe polynomial.
Etant donn un texte chiffr C, le cryptanalyste devine simplement un texte en clair X
et une clef k, et en un temps polynomial il excute lalgorithme de chiffrement sur les
entres X et k, et enfin vrifie si le rsultat est gal C. C est important thoriquement,
car cela donne une borne suprieure de la complexit pour la cryptanalyse des chiffres de
ces classes. Bien sr, en pratique, cest un algorithme en temps polynomial dterministe
que le cryptanalyste recherche. De plus, cet argument nest pas applicable toutes les
classes de chiffres et en particulier aux masques jetables pour tout C, il y a de
nombreuses paires X , k qui donnent C quand on utilise lalgorithme de chiffrement
mais la plupart de ces X sont des textes en clair non lgitimes sans aucun sens.
La classe N P contient la classe P parce que tout problme soluble en temps polynomial
sur une machine de Turing dterministe est aussi soluble en temps polynomial sur une
machine de Turing non dterministe, car ltape de devinette peut tout simplement
tre supprime.
Si tous les problmes N P sont solubles en temps polynomial sur une machine dtermi
niste, alors P N P . Bien quil semble vident que certains problmes N P se montrent
nettement plus difficiles que d autres (une attaque exhaustive contre un chiffre vs
le chiffrement dun bloc quelconque de texte en clair), il na jamais t prouv que
P ^ N P (ou P = N P ). Toutefois, tous ceux qui travaillent en thorie de la complexit
souponnent quelles ne sont pas gales.
Plus trange encore, il y a des problmes spcifiques dans N P qui se rvlent aussi
difficiles que tout autre problme de mme catgorie- C O O K [369] a prouv que le
problme SA T ( tant donn une formule boolenne propositionnelle, y a-t-il un moyen
dassigner des valeurs de vrit aux variables de telle manire que la formule soit
vraie ? ) est N P co m p le t. Cela veut dire que, si SA T peut tre rsolu en temps
polynomial, alors P N P . Inversement, si lon peut prouver que tout problme dans
N P n a pas un algorithme dterministe polynomial en temps, cela dmontrerait que

SAT nadmet pas non plus dalgorithme dterministe polynomial en temps. Il ny a


donc pas de problme plus difficile que SA T dans N P .
Depuis que larticle de C O O K a t publi, un grand nombre de problmes ont t
montrs quivalents SA T ; des centaines d entre eux sont cits dans [370] et des
exemples sont donns ci-dessous. Par extension, j appelerai ces problmes galement
N P co m p le ts : cest--dire, ils sont aussi difficiles que tout autre problme dans N P .
Si leur solvabilit en temps polynomial dterministe tait dtermine, alors la question
P vs N P serait tranche. Est-ce que P est gale N P ? est la question centrale non
rsolue de la thorie de la complexit et personne ne sattend avoir une rponse de si
tt. Si quelquun dmontrait que P N P , alors la plus grande partie de cet ouvrage
serait inutile : comme je lai expliqu ci-dessus, de nombreuses classes de chiffres sont
trivialement cassables en temps polynomial non dterministe et si P = N P , ils sont
cassables par des algorithmes dterministes utilisables.
Plus haut dans la hirarchie de la complexit on trouve P S P A C E . Les problmes dans
P S P A C E peuvent tre rsolus dans un espace polynomial mais pas ncessairement en
temps polynomial. P S P A C E comprend N P mais il y a dans P S P A C E des problmes
dont on pense quils sont plus difficiles que N P . Bien sr, ce n est pas non plus prouv.
Il y a une classe de problmes, appels P S P A C E com p lets, qui ont la proprit
suivante : si nimporte lequel d entre eux est dans N P alors P S P A C E = N P et si lun

Chapitre 11

256

Rudiments mathmatiques

dentre eux est dans P alors P S P A C E = P.


Et enfin, il y a une classe de problmes appels E X P T I M E . Ces problmes sont
solubles en temps exponentiel. Les problmes E X P T I M E complets sont ceux qui
ne peuvent pas tre rsolus en temps dterministe polynomial. Il a t dmontr que
P nest pas gale E X P T I M E .

Problmes N P complets
Michael G a r e y et David J o h n s o n ont rassembl une liste de plus de 300 problmes
N P complets [603]. En voici seulement quelques-uns:
Le Problme du Commis Voyageur. Un commis voyageur doit visiter n villes
diffrentes et il na quun plein d essence (il ne peut donc parcourir quune
distance maximale). Existe-t-il un itinraire qui lui permettrait de visiter
chaque ville une fois et une seule avec ce plein d essence?7
Le Problme du Groupement par trois. Soit n hommes et n femmes dans une
pice ainsi que n membres du clerg (prtres, rabbins, etc.) ; soit une liste
des groupements acceptables, qui consistent en un homme, une femme, et
un membre du clerg dispos officier. Etant donn cette liste des triplets
possibles, est-il possible d arranger n groupements de telle manire que
chacun soit pouse quelquun, soit officie pour un mariage?
Le Problme 3-SAT. Soit une liste de n propositions logiques, chacune
comportant trois littraux : (x A y) => z, (x A w) V ( ~ i z ) , ((-> A ->x) V (z A
(u V - ) ) ) => ( ( - i z A u ) V x), etc. Existe-t-il une assignation de valeurs de
vrit pour tous les littraux qui satisfasse toutes les propositions?8

11.3

Thorie des nombres

Ce livre nest pas un ouvrage sur la thorie des nombres, aussi je me contenterai
d baucher ici les quelques thmes ncessaires la bonne comprhension des chapitres
suivants. Si vous voulez approfondir votre connaissance de la thorie des nombres,
vous consulterez avantageusement les ouvrages suivants: [1436, 79, 1177, 16, 970, 682,
744, 422]. Pour la thorie des corps finis, mes deux livres prfrs sont: [981, 1050].
Consultez galement [95, 1157, 1158, 1067].

Congruences
Vous avez tous appris larithmtique modulo n 9 lcole ; cela sappelait Y arithm
tique de lhorloge. Rappelez-vous les problmes tels que:
si Marc dit quil sera la maison pour 10 heures et quil rentre 13
heures plus tard, quelle heure rentre-t-il la maison et quel est lge du
capitaine?
7. C est une gnralisation du problm e d u Circuit H am iltonien voir 5.1.
8. C est un cas particulier d u problm e S A T m entionn ci-dessus.
9. Les termes arithm tique des congruences, congruences et arithm tique m od u lo n, dsignent tous
la mm e chose.

11.3

257

Thorie des nombres

Cest de larithmtique modulo 12. 23 modulo 12 est gal 11.


(1 0 + 1 3 ) mod 12 = 11.
Ce qui sexprime aussi par 23 et 11 sont quivalents modulo 12 .
(10 + 13) = 11

(mod 12).

La notation a = b (mod n) indique que a = fe + kn pour un certain entier k. Si a et b


sont positifs et si b est plus petit que n, vous pouvez considrer que b est le reste de la
division de a par n. On a aussi la proprit que a et 6 donnent le mme reste quand
ils sont diviss par n. Parfois, b est appel le rsidu de a modulo n. On dit aussi que
a est congru b modulo n (le symbole s dnote une congruence). Ce ne sont que
diffrentes manires de dire la mme chose.
Lensemble des entiers de 0 n 1 forme ce que lon appelle lensemble de tous
les rsidus modulo n. Ce qui signifie que, pour tout entier quelconque a, son rsidu
modulo n est un nombre compris entre 0 et n 1 bornes comprises.
Lopration a mod n dnote le rsidu de a. Ce rsidu est un nombre entier compris
entre 0 et n 1. Cette opration est parfois appele la rduction modulo n. Par
exemple, 5 mod 3 = 2.
Attention, cette dfinition de mod peut tre diffrente de celle qui est utilise
dans certains langages de programmation. Par exemple, loprateur modulo du langage
Pascal fournit parfois un rsultat ngatif. Dans ce cas, le rsultat est compris entre
n~ 1 et n- 1. Dans le langage C, loprateur % fournit le reste de la division du premier
oprande par le deuxime ; ce rsultat peut tre ngatif si lun des oprandes est ngatif.
Lorsque vous ralisez un algorithme de ce livre dans un langage de programmation pour
lequel lopration modulo peut donner un rsultat ngatif, noubliez pas dajouter n
au rsultat d une opration modulo si celui-ci est ngatif.
Tout comme larithmtique classique, larithmtique modulo n jouit des proprits de
commutativit, d associativit et de distributivit. De plus, lors d un calcul, la valeur
finale obtenue sera la mme que vous appliquiez la rduction modulo n chaque tape
intermdiaire ou que vous appliquiez celle-ci au rsultat final seulement. Les formules
suivantes expriment formellement certaines de ces proprits :
(a + b) mod n

= ((a mod n) + (b mod n )) mod n

(a b) mod n

= ((a mod n) (b mod n)) mod n

(a x b) mod n

= ((a mod n) x (b mod n )) mod n

(a x (b + c)) mod n

= (((a x 6) mod n) + ((a x c) mod n)) mod n.

En cryptographie, on fait un usage intensif de larithmtique modulo n. Celle-ci per


met de restreindre la taille de tous les rsultats intermdiaires et de la valeur finale.
Cest indispensable, par exemple, pour le calcul de logarithmes discrets ou de racines
carres qui sont des oprations trs coteuses en ressources de calcul (temps et es
pace mmoire). Pour un module n qui peut tre reprsent par k bits, le rsultat de
toute addition, soustraction ou multiplication peut tre reprsent par au plus 2k bits.
Comme on peut appliquer la rduction modulo n pour toutes les tapes intermdiaires
dun calcul, on ne devra jamais manipuler des nombres reprsents par plus de 2k bits.

Chapitre 11

258

Rudiments mathmatiques

On peut ainsi, par exemple, calculer des exponentielles en arithmtique modulo n sans
engendrer des rsultats intermdiaires dmesurs.
Elever un nombre une puissance entire modulo n,
ax mod n

se fait par une srie de multiplications et de divisions, mais il existe des techniques pour
effectuer cela efficacement. Une de ces techniques consiste minimiser le nombre de
multiplications modulo n ; une autre consiste optimiser le calcul de la multiplication
modulo n. Comme larithmtique modulo n est distributive, il est plus efficace d entre
lacer les multiplications avec des rductions modulo n chaque tape intermdiaire.
Pour les exemples qui suivent, cela peut ne pas sembler d une grande utilit, mais pour
des nombres de 200 bits c est essentiel.
Par exemple, si vous voulez calculer a8 mod n, nutilisez pas lapproche simpliste qui
consiste effectuer 7 multiplications suivies d une coteuse rduction modulo n finale :
( a x a x a x a x a x a x a x a ) mod n.

Il est plus avantageux d effectuer 3 multiplications plus petites ainsi que 3 rductions
modulo n galement plus petites :
((a2 mod n)2 mod n )2 mod n.
La mme technique applique une puissance 16e donne :
a16 mod n ({(a2 mod n )2 mod n )2 mod n)2 mod n.
Calculer ax mod n quand x n est pas une puissance de 2 nest quun tout petit peu
plus difficile. Illustrons cela pour x 25. La premire tape consiste reprsenter x en
notation binaire (cest--dire, comme une somme de puissances de 2). La reprsentation
binaire de 25 est 11001 et donc 25 = 24 + 23 + 2. Ensuite, quelques transformations
lmentaires donnent :
a25 mod n

(g

(a x ((a2)2)2 x (((a 2)2)2)2) mod n

x a8 x a 16) mod n

((((a 2 x a)2)2)2 x a) mod n

Par un arrangement judicieux de la mmorisation des rsultats intermdiaires, il y a


moyen de n effectuer que 6 multiplications :
(((((((a 2 mod n ) x a) mod n )2 mod n)2 mod n )2 mod n) x a) mod n.
Cette technique de calcul sappelle la so m m a tion en chane [864]. Elle utilise une
suite dadditions simple et vidente qui est base sur la reprsentation binaire. Cela
peut tre code en C par la fonction suivante :
unsigned long modexp (unsigned long a, unsigned long x, unsigned long n)

ll.S

Thorie des nombres

259

unsigned long s;
s = 1;
while(u) -[
if(x&l) /* x est-il impair ? */
s = (s*a)%n;
x=l;
a = (a*a)%n;
}
return(s);
}
Une autre fonction, rcursive, est la suivante :
unsigned long exp_rapide(unsigned long a, unsigned long x,
unsigned long n) {
unsigned long tmp;
if(x==l) return(a/n) ;
if(l~(a&l)) {
tmp = exp_rapide(a,xl,n) ;
return((tmp*tmp)%n);
>
else {
tmp = exp_rapide(a, (x-l)l,n) ;
tmp = (tmp*tmp)%n;
tmp = (tmp*a)%n;
return(tmp);
>
}
Si k est le nombre de bits de lexposant x, la technique prcdente ncessite, en
moyenne, 1,5 x k oprations. Trouver la suite d oprations la plus courte possible est un
problme difficile (il a t prouv quune telle suite contient au moins fc 1 oprations),
mais il nest pas trop difficile de ramener le nombre doprations 1,1 x k ou mieux
encore quand k est grand.
Il est possible de calculer efficacement des rductions modulo n utilisant toujours
le mme n avec la mthode de Montgomery [1117]. Une autre mthode est
lalgorithme de Barrett [94]. Les performances de ces deux algorithmes et de celui
donn plus haut sont donnes dans [2] : lalgorithme que j ai prsent plus haut consti
tue le meilleur choix pour une seule rduction modulo n, lalgorithme de B a r r e t t est
le meilleur pour des petits arguments, et la mthode de M o n t g o m e r y est la meilleure
pour le calcul de puissances modulo n en gnral10.
Linverse du problme de llvation de puissance est le calcul du logarithme discret.
Nous en reparlerons bientt (voir 9.6).
10. La m thode de M o n t g o m e r y peut aussi tirer avantage des petites puissances en utilisant ce qui
sappelle de l arithm tique m ixte.

Chapitre 11

260

Rudiments mathmatiques

Nombres premiers
Un nombre premier est un nombre entier, strictement plus grand que 1, dont les seuls
facteurs sont 1 et lui-mme : aucun autre nombre ne le divise exactement. Le nombre
2 est un nombre premier, de mme que: 73, 2 521, 2 365 3 4 7 7 3 4 3 3 9 , et 2 756839 1. Un
nombre qui nest pas premier est dit compos. Il y a une infinit de nombres premiers.
En cryptographie, on utilise souvent de trs grands nombres premiers (de 512 bits ou
plus).
Evengelos K r a n a k i s est lauteur d un excellent livre sur la thorie des nombres, les
nombres premiers, et leur application en cryptographie [896]. Paulo R lB E N B O lM a crit
deux excellents ouvrages de rfrence sur les nombres premiers en gnral [1318, 1319].

Plus grand commun diviseur


Deux nombres sont premiers entre eux quand il nont dautre facteur en commun
que 1. En dautres termes, si le plus grand commun diviseur (P G C D en abrg)
de a et n est 1, alors a et n sont dits premiers entre eux, ce qui scrit :
pgcd(a,n) = 1.

Les nombres 15 et 28 sont premiers entres eux ainsi que 13 et 500, tandis que 15 et
27 ne le sont pas (3 est un facteur commun plus grand que 1). Un nombre premier est
premier par rapport tous les autres nombres except ses propres multiples.
La mthode la plus simple pour calculer le plus grand commun diviseur de deux
nombres est donne par lalgorithme d Euclide. Cet algorithme est dcrit dans les
Elments dEuclide crits 300 ans avant J.-C. E u c l i d e ne la pas invent. Les his
toriens pensent que lalgorithme en question pourrait tre plus vieux de 200 ans. C est
un des plus vieux algorithmes non triviaux connus et nous nous en servons encore de
nos jours. K n u t h dcrit cet algorithme et quelques variantes modernes [864].
En C :
/* calcule le plus grand commun diviseur de x et y */
int pgcdfint x, int y)
f
int g;
if (x < 0)
x = -x;
if (y < 0)
y = -y ;
if (x + y == 0)
ERR0R j
g = y;
whilefx > 0) {
g = x;
x = y 7. x;
y = g;
>
return(g);
>

ll.S

Thorie des nombres

261

Cet algorithme peut tre gnralis pour calculer le PGCD dun tableau de m nombres :
/ * c a lc u le l e plu s grand commun d iv is e u r de x l , x2,

xm * /

in t m u ltip le _ p g cd (in t m, in t *x)


{
s iz e _ t i ;
in t g;
if(m < 1)
re tu r n (O );
g = x [0] ;
f o r ( i = l ; i<m; + + i) {
g = p g cd (g , x [ i ] ) ;
/ * o p tim isa tio n car pour des x [ i ] a l a t o ir e s , g==l 60% du temps * /
i f (g == 1)
re tu rn (l);
>
r e t u r n (g );
>

Inverses modulo n
Vous vous rappelez les inverses? L inverse de 4 est 1/4 car 4 x 1 / 4 = 1. Dans le monde
de larithmtique modulo n, c est plus compliqu:
4 x i s l

(mod 7).

Cette quation revient chercher un x et un k tels que :

4x = 7k + 1

et o x et k sont des entiers.


Le problme gnral consiste trouver un x tel que :
1 = (a x x) mod n
ce qui scrit aussi :
a-1 = x

(mod n).

Le calcul de linverse d un nombre modulo n est un problme difficile rsoudre.


Parfois, il y a une solution ; parfois, il ny en a pas. Par exemple, linverse de 5 modulo
14 est 3 car 5 x 3 = 15 = 1 (mod 14). D autre par, 2 na pas dinverse modulo 14.
En gnral, a *1 = x (mod n) a une solution x unique si a et n sont premiers entre eux.
Si a et n ne sont pas premiers entre eux, alors cTx = x (mod n) na pas de solution.
Si n est un nombre premier, alors chaque nombre compris entre 1 et n 1 est premier
par rapport n et chacun a exactement un inverse modulo n dans cet intervalle.
Mais comment calcule-t-on linverse de a modulo n ? Il y a plusieurs mthodes.
Lalgorithme d Euclide permet aussi calculer linverse d un nombre modulo n. Cet
algorithme est parfois appel a l g o r i t h m e d E u c l i d e t e n d u .

Chapitre 11

262

Rudiments mathmatiques

Voici lalgorithme crit en C + + :


#define estPair(x) ((x & 0x01) == 0)
#define estlmpair(x) (x & 0x01)
#define intervertir(x.y) (x = y, y ~= x, x "= y)
void Euclidetendu(int *u, int *v, int *ul, int *u2, int *u3) {
// Attention : u et v seront intervertis si u < v
int k, tl, t2, t3;
if(*u < *v) intervertir(*u,*v);
for(k=0; estPair(*u) && estPair(*v); ++k) {
*u = 1; *v = 1;
>
*ul = 1; *u2 = 0; *u3 = *u; tl = *v; t2 = *u-l; t3 = *v;
do {
do {
if(estPair(*u3)) {
if (estPairOul) II estPair(*u2) ) {
*ul += *v; *u2 += *u;
>
*ul = 1; *u2 = 1; *u3 = 1;
>
if(estPair(t3) II *u3 < t3) {
intervertir(*ul,tl);
intervertir(*u2,t2);
intervertir(*u3,t3);
>
> while(estPair(*u3) );
while(*ul < tl II *u2 < t2) {
*ul += *v; *u2 += *u;
>
*ul -= tl; *u2 -= t2; *u3 -= t3;
} while(t3 > 0);
while(*ul >= *v && *u2 >= *u) {
*ul -= *v; *u2 -= *u;
>
*u = k; *u2 = k; *u3 <<= k;
}
main(int argc, char **argv) {
int a,b,pgcd;
if(argc < 3) {
cerr << "Utilisation : euclide u v" << endl;
return(-l);
>
int u = atoi(argv[l]);

11.3

263

Thorie des nombres


int v = atoi(argv[2]);
if(u <= 0 II v <= 0) {
cerr "Les arguments doivent tre strictement positifs!"
endl;
return(-2);

>
// Attention, u et v seront changs si u < v
Euclidetendu(&u,& v ,& a ,& b ,fepgcd);
cout a " * " u " + (
b ") * " v " = " pgcd endl;
if(pgcd == 1)
cout "Linverse de " v " mod " u
u - b endl;
return(O);

" est : "

>
Je ne vais pas prouver que cela marche, ni donner la thorie sous-jacente. Les dtails
se trouvent dans [864], ou dans tout autre texte sur la thorie des nombres cit plus
haut.
Lalgorithme est itratif et peut tre lent pour des grands nombres. K n u t h a montr
que le nombre moyen de divisions pour cet algorithme est donn par :
0,843 x log2(rt) + 1,47.

Calcul de coefficients
Lalgorithme dEucilDE peut aussi tre utilis pour rsoudre la classe de problmes
suivante. Etant donn un tableau de m variables xi,X 2 ,,xm, trouver un tableau de m
coefficients Wi,U2 ,...,um, tel que:
m x

x xm 1.

Petit thorme de Fermt


Si m est premier, et a nest pas un multiple de m, alors le p e t i t t h o r m e d e
indique que:
c/m- 1 _ j (mod m).

F e r m t 11

Fonction dEuler
Il y a une autre mthode pour calculer linverse d un nombre modulo n mais il nest
pas toujours possible de lappliquer. L e n s e m b l e r e s t r e i n t d e s r s i d u s modulo n est
lensemble des rsidus premiers par rapport n (cet ensemble est un sous-ensemble de
11. Pierre de Fermt, m athm aticien franais, a vcu de 1601 1665 C e thorm e n a rien voir
avec son dernier thorme.

264

Chapitre 11

Rudiments mathmatiques

lensemble de tous les rsidus modulo n dfini prcdemment). Par exemple, lensemble
restreint des rsidus modulo 12 est {1,5,7,11}. Si n est premier, alors lensemble res
treint des rsidus est lensemble de tous les nombres entre 1 et n 1. Le nombre 0 ne
fait jamais partie de lensemble restreint des rsidus.
La fonction dEuler12 de n (parfois appele indicateur dEuler de n) est le nombre
dlments ( le cardinal ) de lensemble restreint des rsidus modulo n. Cette fonction
est note : <p(n). En d autres termes, <fi(n) est le nombre d entiers positifs plus petits
que n et premiers par rapport n.
Si n est premier, alors <p(n) n 1. Si n = p x q et p et q sont premiers, alors
<p(n) = (p l ) ( 1). Ces nombres apparatront souvent lors de la prsentation des
algorithmes clef publique.
D aprs le petit thorme de Fermt gnralis par Euler, si pgcd(a,n) = 1,
alors:
av ^ mod n = 1.
Maintenant, il est facile de calculer a ' 1 mod n :
x = av^ ~ x mod n.

Par exemple, quel est linverse de 5 modulo 7? Comme 7 est premier, <p(7) = 7 1 = 6.
Ainsi, linverse de 5 modulo 7 est :
56-1 mod 7 = 55 mod 7 = 3.
Les deux mthodes de calcul d inverses peuvent tre tendues pour calculer x dans
lquation (si pgcd(a,n) = 1) :
(a x x) mod n = b.
Par la gnralisation d EULER, on a :
x = (b x av^ ~ x) mod n.

Par lalgorithme d E C LlD E , on a :


x = (b x (a-1 mod n)) mod n.

En gnral, lalgorithme d EucLiDE est une mthode plus rapide pour calculer les
inverses modulo n, plus particulirement pour des nombres d environ 500 bits. Si
pgcd(a,n) / 1, tout nest pas perdu. Dans le cas gnral, (a x x) mod n = b peut
avoir des solutions multiples ou pas de solution du tout.

Thorme du reste chinois


Si vous connaissez la dcomposition en facteurs premiers de n, alors vous pouvez utiliser
le thorme du reste chinois pour rsoudre un systme dquations particulier. La
version de base du thorme a t dcouverte au premier sicle de notre re par le
mathmaticien chinois S u n T s e .
12. Leonhard E uler est un m athm aticien suisse qui vcu t de 1707 1783.

11.3

265

Thorie des nombres

En gnral, si la dcomposition en facteurs premiers de n est n = pi x 'P'2. x ... x r ,


alors le systme d quations :
( x mod p,) = ai, pour i = l,2,...,t
admet une solution unique x, telle que x soit infrieur n. Certains nombres premiers
peuvent apparatre plusieurs fois dans le produit. Par exemple, pi peut tre gal p 2 .
Ainsi, pour a et 6 quelconques tels que a < p et b < q (p et q premiers), il existe un
seul x tel que x soit infrieur p x q et tel que :
x = a (mod p), et x = b (mod q).

Pour calculer ce x, on utilise lalgorithme dEucLlDE pour calculer u tel que:


u x q= 1

(mod p)

et ensuite on calcule :
x = (((a b) x u) mod p) x q + b.

Voici le thorme du reste chinois cod en C :


/*

r
e s t l e nombre d lm ents dans l e s tableau x m e t u;
me s t l e tab lea u des p a ir e s de modules prem iers en tre eux;
u e s t l e tab leau des c o e f f i c i e n t s
l e r s u lt a t e s t n t e l que
n == u[k] /. m[k] ( k = 0 . . r - l )
e t n < m [0 ]* m [l]* .. .* m [r -l]

*/
/* l a fo n c t io n d Euler e u le r ( ) e s t la is s e
comme e x e r c ic e au le c t e u r . * /
in t r e s t e _ c h in o is (s iz e _ t r , in t *m, in t *u)
s iz e _ t i ;
in t module;
in t n;
module = 1;
f o r ( i= 0 ; i< r ; ++i)
module *= m [ i ] ;
n = 0;
f o r ( i= 0 ; i< r ; + + i) {
n += u [ i ] * m odexp(m odule/m ti], e u l e r ( m [i ] ) , m [ i ] ) ;
n '/.= module;
}
r e t u r n (n );
}

266

Chapitre 11

Rudiments mathmatiques

Un corollaire du thorme du reste chinois peut tre utilis pour rsoudre un problme
similaire : si p et q sont premiers et p est infrieur q, alors il existe un x unique
infrieur p x q tel que :
a = x (mod p), et b = x (mod q).

Si a > b mod p, alors :


x (((a ( b mod p)) x u) mod p) x q + b.

Si a < b mod p, alors :


x (((a + p (b mod p)) x u) mod p) x q + b.

Rsidus quadratiques
Si p est premier et a est infrieur p, alors a est un r s i d u q u a d r a t i q u e modulo p
si :
x 2 = a (mod p), pour un certain x.
Une valeur quelconque de a ne satisfait pas forcment cette proprit. Par exemple, si
p 7, les rsidus quadratiques sont 1, 2 et 4 :
12 = 1

22 = 4

ee

(mod 7)
(mod 7)

32 = 9

(mod 7)

42 = 16

EE

(mod 7)

52 = 2 5

(mod 7)

62 = 36

(mod 7).

Remarquez que chaque rsidu quadratique apparat deux fois dans la liste.
Il nexiste pas de valeur de x qui satisfasse une des quations :
x2

(mod 7)

x2

(mod 7)

x2

(mod 7)

Les nombres 3, 5 et 6 ne sont donc pas des rsidus quadratiques modulo 7.


Bien que je ne le fasse pas ici, il est ais de dmontrer quil y a exactement (p
l ) /2 rsidus quadratiques modulo p et (p - l) /2 nombres qui ne sont pas des rsidus
quadratiques modulo p. De mme, si a est un rsidu quadratique modulo p, alors a a
exactement deux racines carres: lune comprise entre 0 et (p l ) /2 et lautre entre
(p l ) /2 et (p 1). L une de ces racines carres est aussi un rsidu quadratique modulo
p ; celle-ci est appele racine carre prin cip ale.
Si n est le produit de deux nombres premiers, p et q, il y a exactement (p l)(q l) /4
rsidus quadratiques modulo n. Un rsidu quadratique modulo n est un carr parfait
modulo n. Par exemple, il y a 6 rsidus quadratiques modulo 35: 1, 4, 9, 11, 16, 29.
Chacun d entre eux a exactement 4 racines carres.

11.3

Thorie des nombres

2t

Symbole de Legendre
Le sy m b o le d e L egen dre, not13 L(a,p), est dfini quand a est un entier quelconqi
et p est un nombre premier plus grand que 2. Il vaut 0, 1 ou 1 :
L(a,p) =

si a est divisible par p.

L(a,p) =

si a est un rsidu quadratique modulo p.

L(a,p)

si a nest pas un rsidu quadratique modulo p.

Un moyen simple de calculer L(a,p) est donn par :


L(a,p) = o ( 2

mod p.

Un autre moyen de le calculer est donn par les formules rcursives suivantes :

1. si a = 1, alors L(a,p) = 1 ;
2. si a est pair, alors L(a,p) L(a/2,p) x ( 1)(p2-1)/8 ;
3. si a est impair, alors L(a,p) = L(p mod a,a) x (i ) !0- 1)*!?*-1)/4.
Remarquez que c est aussi un moyen efficace de dterminer si a est un rsidu quadr
tique modulo p (seulement quand p est premier, videmment).

Symbole de Jacobi
Le s y m b o l e d e J a c o b i , not J(a,n) est une gnralisation du symbole de L e g e n d r
il est dfini pour toute paire dentiers a et n. Cette fonction est utilise dans les tes
de primalit. Le symbole de JACOBI est une fonction de lensemble restreint des rsid
des facteurs de n. Il peut tre calcul grce diffrentes formules [1418]. En voici u
qui repose sur les dfinitions suivantes :
1. J(a,n) nest dfini que pour n impair.
2. J(0,n) = 0.
3. Si n est premier, alors J(a,n) = 0 si n divise a.
4. Si n est premier, alors J(a,n) = 1 si a est un rsidu quadratique modulo n.
5. Si n est premier, alors J(a,n) 1 si a nest pas un rsidu quadratique modi
n.

6. Si n est un nombre compos, alors J(a,n) = J(a,p i) x ... x J(a,pm), o pi,...,}


est la dcomposition en facteurs premiers de n.
Les rgles suivantes permettent de calculer rcursivement le symbole de
1. J(l,n) = 1
2. J(a x b,n) = J(a,n) x J(b,n)
13. N ote du traducteur : il est aussi parfois not

Jacobi :

Chapitre 11

268

3.

Rudiments mathmatiques

J(2,n) 1 si (n2 l)/8 est pair, 1 sinon

4 J(a,n) = J((a mod n),n)


5. J{a,pi x p2) = J(a,pi) x J{a,pv)
6. Si pgcd(a,b) = 1 et a et b sont tous deux impairs (la loi de rciprocit nest pas
valable pour les entiers pairs) :
6a. J(a,b) = +J(b,a) si (a 1)(6 l)/4 est pair
6b. J(a,b) = J(b,a) si (a l)(i> l)/4 est impair.
Voici lalgorithme en C :
/* Cet algorithme calcule le symbole de Jacobi rcursivement. */
#define estPair(x) (x & 1 == 0)
#define estlmpair(x) (x & 1)
int Jacobi(int a, int b) {
int d;
assert(estImpair(b));
if (a >= b) a V.= b;
/* Rgle 4 */
if (a == 0) retum(O); /* Dfinition 1 */
if(a == 1) return(l); /* Rgle 1 */
if (a < 0)
if(estPair((b-1)/2))
re t u m Jacobi(-a,b) ;
else
return -Jacobi(-a,b);
if(estPair(a))
if(estPair((b*b - l)/8>)
return +Jacobi(a/2,b);
else
return -Jacobi(a/2,b);

/* Rgles 3 et 2 */

d = pgcd(a,b);
assert(estlmpair(a));
/* Ceci est garanti par le test estPair(a) plus haut */
if(d == a)
/* a divise b */
return 0;
/* Rgle 5 */
else if(d != 1)
return Jacobi(d.b) * Jacobi(a/d,b); /* Rgle 2 */

11.3

269

Thorie des nombres


else if(estPair((a-l)*(b-l)/4))
return +Jacobi(b,a); /* Rgle 6a */
else
return -Jacobi(b,a); /* Rgle 6b */

>
Si on sait que n est premier, il suffit de calculer a^n~ 1^ 2 mod n au lieu dexcuter
lalgorithme prcdent; dans ce cas, J(a,n) est quivalent au symbole de Legendre.
Le symbole de Jacobi ne permet pas de dterminer si a est un rsidu Si J{a,n) = 1 et
n est un nombre compos, a nest pas forcment un rsidu quadratique modulo n. Par
exemple :
7(7,143) = J ( 7 ,ll) x 7(7,13) = (1)(1) = 1.
Toutefois, il nexiste pas de nombre entier tel que x2 = 7 (mod 143).

Entiers de Blum
Si p et sont deux nombres premiers et quils sont tous les deux congrus 3 modulo
4, alors n = pq est appel e n t i e r d e B l u m . Si n est un entier de B l u m , chaque rsidu
quadratique modulo n a exactement 4 racines carres. L une de ces racines carres
est aussi un carr; c est la racine carre p r i n c i p a l e . Par exemple, la racine carre
principale de 139 modulo 437 est 24. Les trois autres racines carres sont 185, 252 et
413

Gnrateurs
Si p est premier, et g est plus petit que p, alors g est un g n r a t e u r modulo p si :
pour chaque b de 1 p 1, il existe un certain a tel que ga = 6 (mod p).
On dit aussi de faon quivalente, que g est p r i m i t i f par rapport n.
Par exemple, si p = 11, 2 est gnrateur modulo 11 :
210 = 1 024

--

21 = 2

(mod 11)

(mod 11)

28 = 256

(mod 11)

22 = 4

(mod 11)

24 = 16

s
=

(mod 11)

29 = 512

(mod 11)

27 = 128

(mod 11)
(mod 11)

26 = 64

= 8
9

25 = 32

::

23 = 8

10

(mod 11)
(mod 11)

Tout nombre de 1 10 peut tre exprim comme 2 (mod p).


Pour p = 11, les gnrateurs sont 2, 6, 7 et 8. Les autres nombres ne sont pas gn
rateurs. Par exemple, 3 nest pas un gnrateur parce quil ny a pas de solution
lquation :
3a = 2 (mod 11).

Chapitre 11

270

Rudiments mathmatiques

En gnral, trouver un gnrateur nest pas un problme facile, sauf si lon connat la
dcomposition en facteurs premiers de p 1. Soit i, 2 vi n les facteurs premiers de
p 1. Pour dterminer si un nombre, g, est un gnrateur modulo p, on calcule:
g{p- i)/e

(mod p)

pour toutes les valeurs de q = i,<72,,9nSi cette expression vaut 1 pour un certain
alors g nest pas un gnrateur. Sil
nexiste pas de qi tel que cette expression vaille 1, alors g est un gnrateur modulo p.
Par exemple, pour p 11, les facteurs premiers de p 1 = 10 sont 2 et 5. Pour tester
si 2 est un gnrateur on calcule :
2 ( n - i ) / 5 m od n

2( n - i)/2 mod n

1Q

Aucun des rsultats nest gal 1, donc 2 est un gnrateur.


Pour tester si 3 est un gnrateur on calcule :
3 ( n - i ) / 5 m od n

3 ( n - i )/2 m o d n

Comme le dernier rsultat est gal 1, 3 nest pas un gnrateur.


Si vous avez besoin d un gnrateur modulo p, choisissez tout simplement un nombre
au hasard entre 1 et p 1 et testez si c est un gnrateur. Il y en a un bon nombre,
aussi vous en trouverez probablement un rapidement.

Corps de Galois
Pas de panique ! Ce titre ne cache rien de terrible. En fait, depuis plusieurs paragraphes,
nous effectuons dj des calculs dans un corps de G a l o i s . Dans le cadre de larithm
tique modulo n, si n est premier ou une puissance entire dun nombre premier, alors
nous avons ce que les mathmaticiens appellent un co r p s fini. Dans le cas particulier
de n premier, nous utiliserons plutt la lettre p. Ce type de corps fini est tellement
important que les mathmaticiens lui ont donn le nom de son promoteur : on parlera
dun co rp s d e G a lois et on lcrira Zjp. Evariste G a l o i s , mathmaticien franais
qui a vcu au dbut du XIXe sicle, a beaucoup produit dans le domaine de la thorie
des nombres avant de mourir lge de 20 ans dans un duel.
Dans u n corps de G a l o i s , laddition, la soustraction, la multiplication et la division
sont bien dfinies. Il existe un lment neutre pour laddition : 0 et un lment neutre
pour la multiplication: 1. Chaque nombre non nul a un inverse unique (cela ne serait
pas vrai si p ntait pas premier). Les lois de commutativit, d associativit et de
distributivit sappliquent.
E n cryptographie, on se sert beaucoup de larithmtique dans un corps de G a l o i s .
Toute la thorie des nombres sapplique, les nombres gardent une taille finie et il ny a
pas derreur darrondi pour la division. Nombre de cryptosystmes sont bass sur Z /p ,
o p est un nombre premier trs grand.
Pour compliquer un peu plus les choses, les spcialistes de cryptographie utilisent aussi
larithmtique modulo des polynmes irrductibles de degr u et coefficients entiers

11-4

Factorisation

271

modulo q (avec q premier). Ces corps sont nots Z jqn. Tous les calculs sont fait modulo
un certain polynme irrductible de degr n, p(x).
La thorie de ces corps est hors du propos de cet ouvrage: malgr cela, je dcrirai
certains cryptosystmes qui en font usage. Si vous voulez jouer un peu avec ces corps,
Z / 23 a pour lments : 0 , 1 , x, x + 1 , x2, x 2 +
1 , x2+ x , x 2 + X + 1 . I
existe un algorithme
pour calculer des inverses dans Z /2 n dont on peut faire mie ralisation sur machine
parallle [423].
Quand on parle de polynmes, le terme premier est souvent replac par le terme
irrductible . Un polynme est dit irrductible sil ne peut pas tre exprim comme le
produit de deux autres polynmes (diffrents de 1 et de lui-mme). Le polynme x 2 + 1
est irrductible sur les entiers. Par contre, le polynme x z + 2x2 -f x est rductible : il
est quivalent au produit x(x + l)(a: + 1).
On appelle primitif un polynme qui est gnrateur dans un corps donn; tous ses co
efficients sont premiers entre eux. Nous reparlerons de polynmes primitifs loccasion
des gnrateurs de nombres pseudo-alatoires (voir 16.2).
Les calculs dans 2 /2 peuvent tre rapidement raliss matriellement grce des
registres dcalage linaire rtroaction. Pour cette raison, les calculs dans Z j2 n sont
souvent plus rapides que dans 2 /p . Tout comme lexponentiation peut tre ralise de
manire trs efficace dans Z j 2 , il en est de mme du logarithme discret [187, 188, 372,
383]. Si vous voulez en apprendre plus consultez [147].
Pour le corps de G a lo is 2 /2 , les spcialistes de cryptographie aiment utiliser le
trinme p(x) = x n + x + 1 comme module car la longue srie de coefficients nuls entre
xn et x rendent la ralisation de la multiplication trs efficace [190], Le trinme doit
tre primitif, sinon cela ne fonctionne pas. Pour n infrieur 1000, le trinme x n + x + 1
est primitif [1651, 1650] si n vaut :
1,3,4,6,9,15,22,28,30,46,60,63,127,153,172,303,471,532,865,900.
Il existe une ralisation matrielle de Z /2 127 avec p(x) x 27 + x + 1 [1633,1634,1136].
Larticle [154] dcrit des architectures matrielles efficaces pour raliser lexponentia
tion dans 2 /2 .

11.4

Factorisation

Factoriser un nombre signifie trouver ses facteurs premiers :


10 = 2 x 5
60 = 2 x 2 x 3 x 5
252 601 = 41 x 61 x 101
2113 - 1 = 3 391 x 23 279 x 65 993 x 1868 569 x 1066 818132 868 207
Le problme de la factorisation est lun des plus vieux de la thorie des nombres. Il
est facile de factoriser un nombre mais c est coteux en temps. Toutefois, il y a eu des
avances dans ltat de lart.
Actuellement, le meilleur algorithme de factorisation est :
Le c r i b l e s u r c o r p s n u m r i q u e (NFS pour Number Field Sieve ) [962]
(voir aussi [964, 20, 283]). Le c r i b l e g n r a l s u r c o r p s n u m r i q u e est

272

Chapitre tl

Rudiments mathmatiques

la mthode de factorisation la plus rapide connue pour des nombres de plus


de 110 chiffres environ [504, 637). Elle ntait pas efficace au moment o
elle a t propose pour la premire fois, mais cela a chang depuis grce
une srie d amliorations survenues ces dernires annes. Le crible sur
corps numrique est encore trop nouveau pour avoir permis d tablir des
records de factorisation, mais cela viendra bientt. Le NFS a t utilis
pour factoriser le neuvime nombre de F E R M A T : 2512 + 1 [966, 965].
Il existe d autres algorithmes de factorisation, mais ils ont t supplants par le crible
sur corps numrique :
Le crib le q u a d ra tiqu e [1267, 1619,1269]. C est lalgorithme le plus rapide
connu pour des nombres de moins de 110 chiffres et il a t trs utilis [442].
Une version plus rapide de cet algorithme est appele crible quadratique
multipolynomial [1459, 304]. La version la plus rapide de cet algorithme
est appele variante deux grands facteurs premiers du crible quadratique
multipolynomial.
M th o d e des co u r b e s ellip tiq u es (E C M pour Elliptic Curve
Method ) [968, 1118, 1119]. Cette mthode a t utilise pour trouver
des facteurs de 43 chiffres dcimaux mais rien de plus grand.
A lg o rith m e M o n te -C a r lo d e P o lla rd [1264, 252]. Cet algorithme ap
parat galement dans le volume 2, page 370 de louvrage de K n u th [864],
A lg o rith m e des fra ction s continues. Voyez [1129, 1262, 864]. Cet algo
rithme nest mme pas dans la course.
T en tativ e d e division . C est le plus vieil algorithme de factorisation:
il consiste tester tous les nombres premiers jusqu la racine carre du
nombre factoriser.
Voyez [255] pour une bonne introduction ces diffrents algorithmes de factorisation,
except pour le crible sur corps numrique. La meilleur prsentation du crible sur corps
numrique se trouve dans [962]. Des rfrences plus anciennes sont [502, 1604, 1268].
Des informations sur la factorisation parallle peuvent tre trouves dans [253].
Si n est le nombre factoriser, la variante la plus rapide du crible quadratique ncessite
un nombre doprations quivalent :
e (l+ 0 (l))(ln )*(ln (ln n ))i

Le crible sur corps numrique est plus rapide avec un temps heuristique asymptotique
estim de :
(l,9 2 3 + 0 (l))(ln n )4 (ln (ln n ))

En 1970, la factorisation d un nombre difficile de 41 chiffres tait la une des jour


naux [1129] 14. Dix ans aprs, factoriser des nombres difficiles de taille double prenait
quelques heures de calcul sur un ordinateur CRAY [442].
En 1988, Cari P o M E R A N C E a conu une machine factoriser modulaire en utilisant des
puces VLSI sur mesure [1269]. La taille du nombre que vous pouvez factoriser dpend
14. Un nom bre difficile est un nom bre qui n a pas de petits facteurs et qui n a pas une forme
spciale qui perm et de le factoriser plus facilement.

11.4

Factorisation

273

de la taille de la machine que vous pouvez vous permettre de construire. Il ne la jamais


construite.
En 1993, un nombre difficile de 120 chiffres a t factori grce au crible quadratique;
le calcul a demand lquivalent de 825 millions d instructions par seconde pendant un
an (mips-an en abrg) et fut men en trois mois de temps rel [469] D autres rsultats
se trouvent dans [501].
Aujourdhui, la factorisation tend utiliser les rseaux d ordinateurs [304, 966]. En
factorisant un nombre de 116 chiffres, Arjen L E N S T R A et Mark M A N A S S E utilisrent
400 mips-an, le temps d inaction d une batterie d ordinateurs tout autour du monde
pendant quelques mois.
En mars 1994, une quipe de mathmaticiens mene par L e n s t r a a factoris un
nombre de 129 chiffres (428 bits) grce la variante du crible quadratique multi
polynomial [71]. Des volontaires sur Internet ont men bien le calcul: 600 personnes
et 1600 machines durant huit mois, probablement le plus grand multi-processeur ad
hoc jamais assembl. Le calcul a demand lquivalent de 4000 6000 mips-an. Les ma
chines communiquaient par courrier lectronique, envoyant leurs rsultats individuels
un central qui sest occup de ltape finale de lanalyse. Ce calcul tait bas sur le
crible quadratique et des thories vieilles de cinq sms; un dixime du temps de calcul
aurait suffit avec le crible sur corps numrique [960]. Selon [71] : Nous en concluons
que les nombres de 512 bits courament utiliss pour R SA sont vulnrables face nim
porte quelle organisation prte dpenser quelques millions de dollars et attendre
quelques mois. Ils estiment que factoriser un nombre de 512 bits demande 100 fois
plus de travail avec les mmes moyens et 10 fois plus en utilisant le crible sur corps
numrique et la technologie actuelle [960].
Pour rester au courant de lart de factoriser, R SA D a t a S e c u r i t y a instaur en mars
1991 un concours de factorisation ( le RSA Factoring Challenge * ) [534]. Il sagit
dune liste de nombres difficiles, chacun tant le produit de deux nombres premiers
de tailles comparables. Chaque nombre premier est congru 2 modulo 3. Il y a 42
nombres dans le concours; leur taille va croissante de 100 chiffres 500 chiffres de
10 en 10 (plus un nombre de 129 chiffres). Au moment d crire ces lignes, RSA-100,
RSA-110, RSA-120 et RSA-129 ont ts factoriss, tous grce au crible quadratique.
RSA-130 pourrait tre le prochain (en utilisant le crible sur corps numrique), ou les
champions de factorisation pourraient bien sauter directement RSA-140
Cest un domaine qui volue vite. Il est difficile d extrapoler les progrs de la technologie
de la factorisation car personne ne peut prdire les avances mathmatiques. Avant que
le crible sur corps numrique ne soit dcouvert, de nombreuses personnes ont conjectur
que le crible quadratique tait asymptotiquement aussi rapide que toute autre mthode
de factorisation pourrait ltre. Ils avaient tort.
Des progrs court terme dans le crible sur corps numrique pourraient aller dans le
sens dabaisser la constante : 1.923. Pour certains nombres de forme spciale, comme
les nombres de F e r m t, la constante avoisine plutt 1.5 [966, 965]. Si c tait le cas
pour les nombres difficiles utiliss en cryptographie clef publique, les nombres de 1024
bits pourraient tre factoriss aujourdhui. Une facon d abaisser la constante consiste
trouver de meilleurs moyens de reprsenter les nombres par des polynmes petits
coefficients. Le problme na pas encore t tudi en profondeur, mais des avances
vont probablement arriver [960].

Chapitre 11

Rudiments mathmatiques

Pour obtenir les rsultats les plus rcents du concours de factorisation, envoyez un
courrier lectronique ch a lle n g e -in fo @ rsa .com .

Racines carres modulo n


Si n est le produit de deux nombres premiers, alors la possibilit de calculer des racines
modulo n demande une puissance de calcul quivalente celle ncessaire pour factoriser
n [1294, 36, 37, 200]. En dautres termes, celui qui connat les facteurs premiers de n
peut facilement calculer les racines carres d un nombre modulo n, mais pour tous les
autres le calcul est prouv tre aussi difficile que pour calculer les facteurs premiers de
n.

11.5

Gnration de nombres premiers

La cryptographie clef publique a besoin de nombres premiers. Tout rseau de taille


raisonnable en demande un grand nombre. Avant de prsenter les mathmatiques sousjacentes la gnration de nombre premiers, je vais rpondre quelques questions
videntes :
1. Si tous le monde a besoin dun nombre premier diffrent, ne va-t-on pas tomber
court? Non, le pre Nol ne tombera jamais court de nombres premiers
pour tous les petits garons et toutes les petites filles sages. En fait, il y a plus
de 10151 nombres premiers de 512 bits de long ou m oins15. Il y a 1084 d atomes
dans lunivers. Si chaque atome de lunivers avait besoin d un milliard de nombres
premiers chaque microseconde depuis lorigine des temps jusqu maintenant, il
faudrait 10116 nombres premiers; il en resterait encore approximativement 10151.
2. Que se passe-t-il si deux personnes choisissent par accident le mme nombre
premier? Avec un choix de plus de 10151 nombres premiers, les chances que cela
arrive sont infrieures aux chances que lordinateur se consume spontanment
au moment prcis o vous gagnez la loterie. Cela ne vaut pas la peine de sen
proccuper.
3. Si quelquun cr une base de donne contenant tous les nombres premiers,
pourra-t-il sen servir pour casser les algorithmes clef publique? Oui, mais
il ne peut pas la crer. Si vous disposiez de disques de un gigaoctets pesant un
gramme, alors la liste des nombres premiers de 512 bits serait si lourde quelle
dpasserait la limite de Chandrasar et imploserait pour se transformer en trou
noir... ainsi, vous ne pourriez pas en retirer de donnes de toute manire.
Si la factorisation d un nombre est si difficile, comment peut-il tre facile de gnrer un
nombre premier? Lastuce vient de ce que rpondre par oui ou par non la question
Est-ce que n est premier? est bien plus facile que de rpondre la question plus
complique Quels sont les facteurs premiers de n ?
Gnrer des nombres alatoires, puis essayer de les factoriser est une mauvaise mthode
de gnration de nombres premiers. La mthode approprie consiste gnrer des
15. Pour des nom bres de taille N , la probabilit q u un nom bre alatoire soit premier est approxim a
tivement de 1 pou r ln 2 .IV-

11.5

Gnration de nombres premiers

275

nombres alatoires et tester sils sont premiers. Il existe plusieurs tests probabilistes
de primalit, ce sont des tests qui permettent de dterminer si un nombre est premier
avec un certain niveau de confiance. En supposant que ce niveau de confiance est
suffisant, ce type de tests est assez bon. Jai entendu appeler les nombres ainsi produits
nombres premiers de type industriel : ce sont des nombres probablement premiers
avec une faible chance derreur contrlable.
Supposons quun test soit mis au point pour chouer une fois sur 250. Cela veut dire
quil y a une chance sur 1015 pour que le test affirme tort quun nombre compos
est premier16. Si pour certaines raisons vous avez besoin de plus de certitude dans
la primalit du nombre, vous pouvez faire descendre le taux d erreur plus bas encore.
Par contre, si vous considrez que les chances d obtenir un nombre compos sont 300
millions de fois plus faibles que celles de gagner la loterie nationale, peut-tre que
vous ne vous inquiterez pas trop.
Une prsentation gnrale des dveloppements dans le sujet se trouve dans [1266, 210].
Dautres articles importants sont [1497, 388, 15, 23, 628, 654, 912].

SolovayStrassen
S o l o v a y et S t r a s s e n ont dvelopp un algorithme probabiliste de test de prima
lit [1497]. Cet algorithme utilise le symbole de JACOBI pour tester si p est premier:

1. Choisissez un nombre alatoire a infrieur p.


2. Si le pgcd(a,p) ^ 1; alors p choue au test et il est compos.
3. Calculez j a^p~ 1^ 2 mod p.
4. Ca lcu lez le sym bole de JACO BI J(a,p).

5. Si j ^ J(a,p), alors p nest certainement pas premier.


6. Si j J(a,p), alors la probabilit que p ne soit pas premier est au plus de 50 %.
Un nombre a qui permet d affirmer que p nest certainement pas premier sappelle un
tm oin. Si p est compos, il y a au moins 50 % de chances pour quun nombre a
alatoire soit un tmoin. Rptez ce test t fois avec t valeurs diffrentes alatoires pour
a. Un nombre compos une chance sur 2* de passer les t tests.

Lehmann
Un autre test, plus simple, a t dvelopp indpendamment par L e h m a n n [956]. Voici
lalgorithme pour tester si t est premier :
1. Choisissez un nombre alatoire a infrieur p.
2. Calculez a^p_1^ 2 mod p.
3. Si a^p 'U /2

lou 1 (mod p) pour tous les i, alors p nest pas premier.

4. Si a(p-1) / 2 = 1 ou 1 (mod p) alors la probabilit que p soit compos est de 50 %


au plus.
16. Le test n indiquera jam ais tort qu un n om bre est com pos.

Chapitre 11

276

Rudiments mathmatiques

nouveau, un nombre alatoire a a au moins 50 % de chances d tre un tmoin. Rptez


le test t fois. Si le calcul vaut 1 ou 1, mais pas toujours 1, alors p est probablement
premier avec un taux d erreur de 1 sur 2e.

RabinMiller
Lalgorithme que tout le monde utilise il est facile a t dvelopp par R a b i n , en
partie partir des ides de M i l l e r [1099, 1295]. En fait, c est une version simplifie
de lalgorithme recommand par la proposition pour le DSS du N IST [1176, 1174].
Choisissez d abord un nombre alatoire p tester. Calculez b, o b est le nombre de
fois que 2 divise p 1 (cest--dire que 2b est la plus grande puissance de 2 qui divise
p 1). Ensuite calculez m tel que p = 1 + 2bm.
1. Choisissez un nombre alatoire a infrieur p.
2. Posez j = 0 et z = am mod p.
3. Si z = 1 ou si z = p 1, alors p passe le test et peut tre premier.
4. Si

> 0 et z = 1, alors p nest pas premier.

5. Posez j ~ j + 1. Si j < b et z ^ p 1, posez z = z2 mod p


et retournez ltape (4). Si z = p 1, alors p passe le test et peut tre premier.
6. Si j = b et z ^ p 1, alors p nest pas premier.
Les chances d un nombre compos de passer ce test dcroissent plus vite quavec les
algorithmes prcdents. Trois quarts des valeurs possibles de a sont coup sr des
tmoins. Cela veut dire quun nombre compos passera le test moins d une fois sur 4f,
o t est le nombre ditrations. En ralits, ces estimations sont trs pessimistes. Pour
la plupart des nombres alatoires, environ 99,9 % des valeurs possibles de a sont des
tmoins [103].
Il existe mme de meilleures estimations [420]. Pour des candidats de n bits (o n est
suprieur 100), les chances d erreur sur un test sont de 1 sur A n 2 ' ^ 2. Et pour un
candidat de 256 bits, les chances d erreurs aprs six tests sont infrieures une sur 251.
Vous trouverez plus de thorie dans [421],

Considrations pratiques
Dans les ralisations du monde courant, la gnration de nombres premiers est rapide.
1. Gnrez un nombre alatoire p de n bits.
2. Mettez le bit de poids fort et le bit de poids faible 1 17.
3. Vrifiez par prudence que p nest pas divisible par les petits nombres premiers :
3, 5, 7, 11, etc. De nombreuses ralisations testent la divisibilit de p par tous les
nombres premiers infrieurs 256. Le plus efficace est de tester la divisibilit par
tous les nombres premiers infrieurs 2000. Vous pouvez faire cela efficacement
avec une roue [864].
17. Le bit de poids fort assure que p a la longueur requise et le bit d e poids faible assure que p est
impair.

11.5

Gnration de nombres premiers

4. Effectuez le test
gnrez un autre
petite de a pour
choue lun des

277

de

R a b i n M i l l e r pour un a alatoire. Si p russit le test,


a alatoire et faites le test nouveau. Choisissez une valeur
rendre les calculs plus rapides. Faites cinq tests [654]18. Si p
tests, gnrez un autre p et essayez encore.

Une autre option consiste ne pas gnrer p au hasard mais essayer les uns aprs
les autres tous les nombres partir d un point alatoire jusqu trouver un nombre
premier.
Ltape 3 est optionnelle, mais c est une bonne ide. Tester si un nombre p impair
alatoire est divisible par 3, 5 et 7 permet dliminer 54 % des nombres impairs avant
darriver ltape 4. Tester avec tous les nombres premiers infrieurs 100 permet
dliminer 76 % des nombres impairs; tester avec tous les nombres premiers infrieurs
256 permet dliminer 80 % des nombres impairs. En gnral, la part de nombre
impairs qui ne sont multiples daucun nombre premier infrieur n est de 1.12/ km .
Plus vous prenez n grand, plus cela requiert de pr-calcul avant d arriver au test de
R

a b in

-M

il l e r

Une ralisation de cette mthode sur une Sparc II tait capable de trouver des nombres
premiers de 256 bits en un temps moyen de 2,8 secondes, des nombres premiers de 512
bits en un temps moyen de 24,0 secondes, des nombres premiers de 768 bits en un
temps moyen de 2 minutes, des nombres premiers de 1024 bits en un temps moyen de
5,1 minutes [929].

Nombres premiers forts


Si n est le produit de deux nombres premiers p et q, il peut tre dsirable dutiliser
des n om b res p rem iers forts pour p et q. Ce sont des nombres qui ont certaines
proprits qui rendent leur produit n difficile factoriser par des mthodes spcifiques.
Voici quelques proprits parmi celles qui ont t suggres [1339, 654] :
Le plus grand commun diviseur de p 1 et q 1 doit tre petit.
p 1 et q 1 doivent tous deux avoir des grands facteurs premiers, respec
tivement p' et q1.
p' 1 et 4 1 doivent tous deux avoir des grands facteurs premiers.
(p l ) /2 et (q l ) /2 doivent tous deux tre premiers [189]. (Notez que si
cette condition est vrifie, alors les deux premires le sont aussi.)

La question de savoir si des nombres premiers forts sont ncessaires est sujette dbat.
Ces proprits ont t dveloppes pour empcher certains algorithmes de factorisation.
Toutefois, les algorithmes de factorisation les plus rapides ont autant de chances de
factoriser des nombres qui satisfont ces critres que ceux qui ne les satisfont pas [832].
Je recommande de ne pas gnrer spcifiquement des nombres premiers forts. La taille
des nombres premiers est bien plus importante que leur structure. De plus les exigences
de structure peuvent tre nfastes car elles vont lencontre du caractre alatoire.
Cela peut changer. De nouveaux algorithmes de factorisation peuvent tre dcouverts
qui marchent mieux avec des nombres ayant certaines proprits quavec ceux qui nen
jouissent pas. Sil en est ainsi, des nombres premiers forts seront peut-tre nouveau
18. Un suffit peut-tre mais faites en cinq.

Chapitre 11

278

Rudiments mathmatiques

ncessaires. Vrifiez votre journal de mathmatiques thoriques local pour les dernires
nouvelles.

11.6

Logarithmes discrets dans un corps


fini

L exponentiation modulaire est une autre fonction sens unique frquemment utilise
en cryptographie. Evaluer lexpression suivante est facile :
ax mod n.

Le problme inverse de lexponentiation modulaire est celui de la recherche du loga


rithme discret d un nombre. C est un problme difficile.
Trouver un x tel que ax = b (mod n).
Par exemple :
Si 3X mod 17 = 15, alors x = 6.
Les logarithmes discrets nont pas tous des solutions (rappelez-vous que les seules
solutions valides sont entires). Il est facile de voir quil ny a pas de solution x pour
lquation :
3X mod 13 = 7.
Il est encore plus difficile de rsoudre ces problmes pour des nombres de 1024 bits.

Calcul de logarithmes discrets dans un groupe fini


Il y a trois groupes principaux dont les logarithmes discrets sont intressants pour les
cryptographes :
- le

groupe multiplicatif des corps premiers: Z /p ;

- le

groupe multiplicatif des corps finis de caractristique 2: Z / 2" ;

- le

groupe des courbes elliptiques sur des corps finis F : E C (F ).

La scurit de nombreux algorithmes clef publique est base sur le problme de la


dtermination des logarithmes discrets, et donc le problme est tudi intensivement.
Un bon aperu condens du problme et des meilleures solutions lpoque peut tre
trouv dans [1194, 1047]. Le meilleur article jour sur le sujet est [945].
Si p, lemodule, est premier, alors la complexit du calcul des logarithmes discrets
dans Z /p est essentiellement la mme que celle de la factorisation d unnombre n
d peu prs la mme taille o n est le produit de deux nombres premiers de tailles
comparables [1383, 945]. C est--dire :
e ( l +

0(l))(ln

n ) i (ln(ln

n) ) i

11.6

Logarithmes discrets dans un corps fini

279

Le crible sur corps numrique est plus rapide avec son estimation asymptotique heu
ristique du temps de calcul :
e (l,9 2 3 + 0 (l))(ln n)3 (ln(ln n ))

Stephen POHLtG et Martin H e llm a n ont trouv un moyen rapide de calculer des
logarithmes discrets dans Z j p si p - 1 na que des petits facteurs premiers [1263]. Pour
cette raison, seuls les corps tels que p 1 a au moins un grand facteur premier sont
utiliss en cryptographie. Un autre algorithme [18] calcule les logarithmes discrets une
vitesse comparable la factorisation ; il a t ensuite tendu aux corps de la formes
Z / p n [716]. Cet algorithme a t critiqu [729] car il a certains dfauts thoriques.
Dautres articles [1590] montrent combien le problme est effectivement difficile.
Le calcul de logarithme discret est intimement li la factorisation. Si vous savez
calculer le logarithme discret, alors vous savez factoriser19. Actuellement, il y a trois
mthodes de calcul de logarithmes discrets dans un corps premier [374, 945, 650] : le
crible linaire, le schma d entiers de Gauss et le crible sur corps numrique.
Le plus gros des calculs prliminaires ne doit tre effectu quune fois pour chaque corps.
Aprs cela, des logarithmes donns peuvent tre rapidement calculs. Cest un dfaut de
scurit pour les systmes bass sur ces corps. Il est important que diffrents utilisateurs
utilisent des corps premiers diffrents. Des utilisateurs de la mme application peuvent
cependant utiliser le mme corps premier.
Le monde des corps polynomiaux, Z j 2", na pas t ignor par les chercheurs. Un
algorithme heuristique a t propos dans [729]. Lalgorithme de C O P P E R S M IT H rend
raisonnable la recherche des logarithmes discrets dans des corps tels que Z j 2127 et
possible la recherche dans Z j 2400 [372], Cela est bas sur les travaux de [187]. Ltape
de prcalcul est norme, mais sinon cest lgant et efficace. Une ralisation pratique
avec une version nettement moins efficace du mme algorithme, aprs une priode de
prcalcul de 7 heures, trouve des logarithmes discrets dans Z j 2127 en quelques secondes
chacun [1137, 794]20.
Plus rcemment, les prcalculs pour Z j 2227, Z / 2 313 et Z j 2401 ont t termins et
des progrs significatifs ont t faits pour Z j 2503. Ces calculs sont excuts sur un
ordinateur massivement parallle n C u b e -2 avec 1024 processeurs [651, 652], Calculer
des logarithmes discrets dans Z j 2593 est encore hors de porte.
Tout comme pour les logarithmes discrets dans un corps premier, les prcalculs nces
saires pour calculer des logarithmes discrets dans un corps polynomial ne doivent tre
faits quune fois. E l G a m a l [522] donne un algorithme pour calculer des logarithmes
discrets dans le corps Z j p 2 .

19. Linverse n a jam ais t prouv.


20. C e corps particulier fut utilis dans quelques cryptosystm es [146, 1633, 1634], il n est pas sr.

Chapitre 12

Le DES
12.1

Historique

Le DES (pour Data Encryption Standard ), aussi connu sous le nom D E A pour la
norme ANSI (pour Data Encryption Algorithm ) et D E A -1 pour la norme ISO, est
un standard mondial depuis plus de 20 ans. Bien quil montre des signes de vieillesse,
il a remarquablement bien rsist des annes de cryptanalyse et il est toujours sur
contre tous les adversaires, except peut-tre contre les plus puissants.

Dveloppement du standard
Au dbut des annes 70, la recherche cryptographique non militaire tait faite au
petit bonheur. Il ny avait quasiment aucune publication dans le domaine. Beaucoup
de gens savaient que les militaires utilisaient des quipements de codages spciaux
pour communiquer, mais peu dentre eux comprenaient la science de la cryptographie.
LAgence nationale de scurit amricaine (N SA pour National Security Agency )
avait une exprience considrable mais son existence ntait mme pas publiquement
admise.
Les acheteurs ignoraient ce quils achetaient. Quelques petites compagnies concevaient
et vendaient des quipements cryptographiques, principalement pour les gouverne
ments hors Etats-Unis. Ils taient tous diffrents ; aucun de ces dispositifs ne pouvait
communiquer avec un autre. Et personne ne savait sils taient vraiment srs ou pas ;
il nexistait pas dinstance indpendante pour certifier leur niveau de scurit, et ceux
qui achetaient des quipements cryptographiques ne savaient pas vraiment ce quils
achetaient. Un rapport gouvernemental rapporta [443] :
Les implications profondes du lien entre les diffrentes variantes de mca
nismes de clefs, ainsi que les principes de fonctionnement et la force relle
des quipements de chiffrement et dchiffrement taient, et sont encore,
virtuellement inconnus de presque tous les acheteurs, et il est trs difficile
de faire des choix bien informs quant au type dquipement en-ligne,
hors-ligne, gnration de clef, etc. - qui satisfassent les besoins en scurit
des acheteurs.

282

Chapitre 12

Le D E S

En 1972, le Bureau national des standards amricain (NBS pour National Bureau of
Standards ), maintenant dnomm lInstitut national des standards et de la technologie
(N IST pour National Insttute of Standards and Technology ), a lanc un programme
pour protger les ordinateurs et les communications de donnes. Un des objectifs ce
programme consistait dvelopper un algorithme standard de cryptographie unique
qui puisse protger les donnes numriques durant leur transmission et leur stockage.
Cet algorithme unique serait test et certifi, et il permettrait diffrents quipements
cryptographiques dinteragir. Il serait moins cher raliser et aisment disponible
Dans le numro du 15 mai 1973 du Fdral Register , le NBS faisait un appel doffres
public pour un algorithme standard de cryptographie, qui spcifiait un ensemble de
critres de conception de lalgorithme :
- il devait fournir un niveau de scurit lev ;
- il devait tre compltement spcifi et facilement comprhensible ;
- sa scurit devait tre lie la clef ; et ne devait pas dpendre de la confidentialit
de lalgorithme ;
- il devait tre disponible tous les utilisateurs ;
- il devait tre adaptable diverses applications ;
- il devait pouvoir tre ralis de faon conomiquement rentable dans des dispo
sitifs lectroniques ;
- il devait tre efficace ;
- il devait pouvoir tre valid ;
- il devait tre exportable.
La rponse du public indiqua quil existait une demande trs forte pour un standard
de cryptographie, mais quil y avait trs peu dexpertise dans ce domaine. Certains
mathmaticiens ont envoy des squelettes d algorithmes assez sommaires. Aucune des
soumissions ne satisfaisait les critres numrs ci-dessus.
Le NBS mit un deuxime appel d offres dans le numro du 27 aot 1974 du Fdral
Register . Finalement, ils obtinrent un candidat prometteur bas sur un algorithme
dvelopp par IBM au dbut des annes 70, appel L u c i f e r (voir 13.1). Une quipe
dIBM travaillait sur la cryptographie la fois Kinston et Yorktown Heights; elle
tait constitue entre autres de Roy A d l e r , Don C o p p e r s m i t h , Horst F E IS T E L , Edna
G r o s s m a n , Alan K o n h e i m , Cari M e y e r , Bill N o t z , Lynn S m i t h , Walt T u c h m a n
et Bryant T u c k e r m a n .
Lalgorithme, bien que complexe, tait sans dtours. Il nutilisait que des oprations
logiques simples sur des petits groupes de bits et pouvait tre ralis de manire rela
tivement efficace en matriel et en logiciel.
Le NBS demanda le concours de la NSA pour valuer le niveau de scurit de cet al
gorithme et pour dterminer son adquation comme standard fdral. IBM avait dj
dpos un brevet pour cet algorithme [516], mais tait prt cder la proprit intellec
tuelle en vue de sa fabrication, de sa ralisation et de son utilisation. Le NBS travailla

12.1

Historique

283

sur les termes de cet accord avec IBM et obtint finalement une licence non exclusive
et gratuite de fabriquer, utiliser et vendre des dispositifs appliquant cet algorithme.
Finalement, dans le numro du 17 mars 1975 du Fdral Register , le NBS publiait
la fois les dtails de lalgorithme et la dclaration dIB M doctroi d une licence non
exclusive et gratuite [538]. Un autre avis publi dans le numro du 1er aot 1975 du
Fdral Register faisait appel aux commentaires des agences nationales et du public
en gnral.
Et il y eut de nombreux commentaires [722, 495, 1126]. De nombreux cryptographes
voyaient dun mauvais il la main invisible de la N SA dans le dveloppement de cet
algorithme. Ils craignaient que la N SA ait pu modifier lalgorithme pour y introduire
une brche secrte. Ils protestrent contre le fait que la NSA avait rduit 56 bits
la longueur de clef qui tait de 128 bits originellement (voir 13.1). Le raisonnement
sous-jacent aux choix faits dans la conception du DES devint clair au dbut des annes
90, mais dans les annes 70 cela semblait mystrieux et inquitant.
En 1976, le NBS organisa deux ateliers pour valuer la proposition de standard. Le
premier atelier sintressa aux mathmatiques de lalgorithme et lexistence possible
dune brche secrte [1199]. Le second atelier sintressa la possibilit d augmenter la
longueur de clef [232]. Les concepteurs, les valuateurs, les ralisateurs, les vendeurs,
les utilisateurs et les critiques furent invits. A tout point de vue, les ateliers furent
anims [1124].
En dpit des critiques, le DES fut adopt au niveau fdral le 23 novembre 1976 [232]
et son utilisation autorise pour les communications gouvernementales non classes
secrtes. La description officielle du standard, FIPS PU B 46, Data Encryption
Standard [1153] fut publie le 15 janvier 1977 et entra en vigueur un mois plus
tard. Le FIPS PU B 81, DES Modes of opration [1156] en 1980, et le FIPS PU B
74, Guidelines for Implementing and Using the NBS Data Encryption Standard
[1155] parut en 1981. Le NBS publia galement le document FIPS PU B 112 qui
spcifie lutilisation du DES pour le chiffrement de mots de passe [1151] et le FIPS
PUB 113, qui spcifie lutilisation du DES pour lauthentification de donnes informa
tiques [1152]. (FIPS vient de Fdral Information Processing Standard , standard
fdral pour le maniement dinformations.)

Adoption du standard
LInstitut national amricain de standardisation (AN SI pour American National
Standards Institute ) homologua le DES comme standard pour le secteur priv
sous la rfrence ANSI X 3.92 [56]. Us lappelrent D E A (pour Data Encryption
Algorithm ). AN SI publia un standard pour les modes d opration du D E A sous la
rfrence AN SI X 3.106 [55], qui correspondait au document NBS, et un standard
pour le chiffrement avec le DES en rseau AN SI X 3.105 [54].
Deux autres groupes au sein de lAN SI, reprsentant respectivement le monde ban
caire des oprations aux particuliers et le monde bancaire des grands comptes, ont
dvelopp des standards bass sur le DES. Les oprations bancaires aux particuliers
concernent les transactions entre les institutions financires et les particuliers, tan
dis que les oprations bancaires des grands comptes concernent les transactions entre
institutions bancaires.
Le groupe de travail Financial Institution Wholesale Retail Working Group de
lANSI a dvelopp un standard pour la gestion et la scurit des PIN (ANSI

Chapitre 12

Le D ES

X 9.8) [64], ainsi quun autre standard bas sur le DES pour lauthentification de
messages dans le commerce de dtail (A N SI X 9.19) [58]. Le groupe a une bauche de
standard pour la distribution sre de clefs (AN SI X 9.24) [60].
Le groupe de travail Financial Institution Wholesale Security Working Group de
lAN SI a dvelopp ses propres standards pour lauthentification de messages (ANSI
X 9 .9) [65], pour la gestion des clefs (A N SI X 9.17) [57, 1171], pour le chiffrement
(ANSI X 9.23) [59], et pour lauthentification sre de personne ou de nud (ANSI
X 9.26) [61].
L American Bankers Association dveloppe des standards optionnels pour le monde
financier. Ils ont publi un standard recommandant lutilisation du D ES chaque fois que
le chiffrement est ncessaire [5] et un autre pour la gestion des clefs cryptographiques [6].
Avant le Computer Security Act de 1987, les services gnraux de ladministration
amricaine (G S A pour General Services of Administration ) avaient la responsabi
lit de la dfinition des standards de communication fdraux. Depuis le Computer
Security Act , cette responsabilit a t transfre au NIST. Les G SA publirent
trois standards qui utilisaient le DES : deux concernant les exigences en matire de
scurit en gnral et de linterfonctionnement des quipements (F E D E R A L STAN D ARD
1026 [663] et F d r a l S t a n d a r d 1027 [664]), et un pour les quipements de tlcopie
suivant la norme Groupe 3 ( F d r a l S t a n d a r d 1028 [665]).
Le Dpartement du Trsor ( Department of Treasury) a mit une directive afin
que tous les messages de transferts de fonds lectroniques soient authentifis par le
DES [474, 476] ; il dcrivit galement les critres que devaient satisfaire tous les qui
pements dauthentification [475].
LOrganisation internationale de normalisation (ISO pour International Organizationfor Standardization ) dcida dans un premier temps de soutenir le DES (rebaptis
pour loccasion D E A -1) comme norme internationale; mais lISO dcida ensuite de
ne pas se mler de la cryptographie. Toutefois, le groupe de travail International
Wholesale Financial Standards de lISO utilisa le DES dans une norme d authen
tification internationale [762] et pour la gestion des clefs [765]. DES est aussi spcifi
dans un standard financier australien [1197].

Validation et rception dquipement DES


Dans le cadre du DES, le N IST valide les ralisations du DES. Cette validation
confirme que la ralisation est conforme au standard. Jusquen 1994, le N IST na valid
que les ralisations en matriel ou en microprogrammation; jusqualors, les ralisations
logicielles ont t exclues du standard. En mars 95, 73 ralisations diffrentes avaient
t valides.
Le N IST a aussi dvelopp un programme certifiant les quipements conformes
aux AN SI X 9.9 et FIPS 113. En mars 1995, 33 produits avaient t valids. Le
Dpartement du Trsor a une procdure supplmentaire de validation. Le N IST a
aussi un programme certifiant quun quipement est conforme AN SI X 9.17 pour la
gestion des clefs dans les grands comptes [1171]; en mars 1995, quatre produits avaient
t valids.

12.1

Historique

285

1987
Les termes du standard prvoient quil peut tre revu tous les cinq ans. Dans le numro
du 6 mars 1987 du Fdral Register , le NBS faisait un appel aux commentaires
concernant lvaluation de la deuxime tranche de cinq ans. Le NBS soumettait trois
choix lexamen [1487, 1488] : reconduire le standard pour trois ans, le supprimer ou
revoir son domaine d application.
Le NBS et la NSA valurent le standard. La NSA tait plus implique cette fois-ci.
Grce une directive de lexcutif signe par Ronald R e a g a n , appele N SDD-145, la
NSA avait un droit de veto sur le NBS en matire de cryptographie. Tout d abord, la
NSA annona quelle ne reconduirait pas le standard. Le problme ntait pas que le
DES ait t cass ou mme quil pt tre suspect d avoir t cass. Il tait simplement
de plus en plus probable quil serait bientt cass.
A sa place, la NSA proposait le programme Commercial COMSEC Endorsement (C C E P ), qui aurait finalement offert une srie d algorithmes pour remplacer
le DES [92]. Ces algorithmes conus par la N SA ne seraient pas divulgus; une couche
protectrice dans les puces VLSI aurait empch la reconstruction de lalgorithme (voir
25.1).
Cette annonce ne fut pas trs bien accueillie. De nombreuses personnes indiqurent que
le DES tait trs rpandu dans le monde des affaires (plus particulirement le monde
financier) et quaucune alternative valable ntait disponible. Le retrait du standard
aurait laiss de nombreuses organisations sans protection pour leurs donnes. Aprs pas
mal de dbats, le DES fut reconduit comme standard gouvernemental amricain jus
quen 1992 [1154]. D aprs le NBS, le DES ne serait plus reconduit par la suite [1487].

1993
Ne dites jamais jamais plus . En 1992, il ny avait toujours pas d alternative au
DES. Le NBS, maintenant appel N IST, sollicita une fois de plus les commentaires
dans le Fdral Register [543] :
Le but de cet avis est dannoncer lvaluation du bien-fond de la pour
suite de lutilisation du standard pour protger des donnes informatiques.
Les commentaires de lindustrie et du public sont souhaits sur les alterna
tives suivantes pour le FIPS 461. Les cots (impacts) et les bnfices de
ces alternatives doivent tre inclus dans les commentaires :
Reconduire le standard pour une nouvelle priode de cinq (5) ans.
L Institut national des standards et de la technologie continuerait
valider les quipements qui ralisent le standard. FIPS 4 6 -1 conti
nuerait tre la seule mthode approuve pour protger des donnes
informatiques non secrtes.
- Retrait du standard. LInstitut national des standards et de la tech
nologie ne continuerait pas valider les quipements qui supportent
le standard. Les organisations pourraient continuer utiliser les qui
pements existants qui ralisent le standard. Dautres standards pour
raient tre mis par le N IST en remplacement du DES.

286

Chapitre 12

Le D E S

- Revoir les clauses dapplication et/ou de ralisation du standard. Cette


rvision impliquerait toute modification du standard permettant luti
lisation de ralisations logicielles du DES aussi bien que matrielles ;
permettant lutilisation rpte (itrative) du DES dans certaines ap
plications ; permettant lutilisation d autres algorithmes approuvs et
enregistrs par le NIST.
La priode de commentaire se cltura le 10 dcembre 1992. D aprs une dclaration de
Raymond K a m m e r , directeur par intrim du N IST lpoque [802] :
L anne dernire, le N IST sollicita formellement les commentaires sur la
reconduite du DES. Aprs analyse de ces commentaires, et d autres infor
mations techniques que j ai reues, j envisage de recommander au Secrtaire
du Commerce quil reconduise le DES pour une nouvelle priode de cinq
ans. Jenvisage galement de suggrer au Secrtaire que, lors de lannonce
de la reconduction, nous affirmions notre intention de lui trouver des alter
natives durant les cinq annes qui viennent. En mettant cette dclaration
sur la table, nous esprons donner aux individus la chance de donner leur
opinion sur une transition technique mthodique. En attendant, nous de
vons prendre en compte le trs grand nombre de systmes qui utilisent ce
standard prouv.
Bien que lOffice d valuation technologique amricain ( Office of Technology
Assesment ) citt les dires de Dennis B r a n s t a d affirmant que la priode utile d ex
ploitation du DES devrait se terminer la fin des annes 90 [1200], lalgorithme fut
reconduit pour cinq annes supplmentaires [1175]. Les ralisations logicielles de DES
furent finalement admises pour tre valides.
Quelquun veut-il essayer de deviner ce qui arrivera en 1998?

12.2

Description du DES

Le DES est un systme de chiffrement par blocs; il chiffre les donnes par blocs de
64 bits. Un bloc de 64 bits du texte en clair entre par un ct de lalgorithme et un
bloc de 64 bits du texte chiffr sort de lautre ct. Le chiffrement et le dchiffrement
utilisent tous deux le mme algorithme (avec des diffrences uniquement dans le plan
de gnration des clefs).
La longueur de la clef est de 56 bits. Gnralement, la clef est exprime comme un
nombre de 64 bits mais un bit sur huit utilis comme bit de contrle de parit est
ignor1. La clef peut tre nimporte quel nombre de 56 bits et peut tre change tout
moment. Une poigne de nombres sont des clefs fragiles mais ils peuvent aisment tre
vits. Toute la scurit rside dans la clef.
Au niveau le plus simple, lalgorithme n est rien d autre que la combinaison de deux
techniques de base du chiffrement : confusion et diffusion. L lment constitutif du DES
est une seule combinaison de ces techniques (une substitution suivie d une permutation)
applique au texte, base sur la clef. On parlera alors de ron d e. Le DES a 16 rondes,
c est--dire quil applique 16 fois la mme combinaison de techniques au bloc de texte
en clair (voir la figure 12.1).
1. Ces bits de parit sont les bits de poids faible des octets de la clef.

12.2

Description du DES

287

Texte en clair

jp

k2

ig

12.1 - DES

Lalgorithme nutilisant que des oprations arithmtiques et logiques standard sur des
nombres dau maximum 64 bits, il tait facile de le raliser avec la technologie de la
fin des annes 70. La nature rptitive de lalgorithme le rend idal pour lutilisation
de puces spcialises. Les premires ralisations logicielles taient inlgantes mais les
ralisations actuelles sont nettement meilleures.

Plan gnral de lalgorithme


Le DES manipule le texte en clair par blocs de 64 bits. Aprs une permutation initiale,
le bloc est coup en une partie droite et une partie gauche, chacune dune longueur
de 32 bits. Aprs cela, il y a 16 rondes d oprations identiques, appeles fonction
/ , lors desquelles les donnes sont combines avec la clef. Aprs la 16e ronde, les
parties droite et gauche sont rassembles et une permutation finale (linverse de la
permutation initiale) termine lalgorithme.
chaque ronde (voir figure 12.2), les bits de la clef sont dcals et 48 bits sont alors
slectionns parmi les 56 bits de la clef. La partie droite des donnes est tendue 48
bits par une permutation expansive, combine avec 48 bits de la clef dcale et permute
par ou exclusif, remplace par 32 nouveaux bits par un algorithme de substitution et

288

Chapitre 12

Le D E S

permute une fois de plus. La fonction / est constitue de ces quatre oprations. La
sortie de la fonction / est alors combine avec la moiti gauche par un ou exclusif.
Le rsultat de ces oprations devient la nouvelle moiti gauche ; lancienne moiti de
gauche devient la nouvelle moiti droite. Ces oprations sont rptes 16 fois, donnant
le DES 16 rondes.

ig .

12.2 - Une ronde du DES

Si B %est le rsultat de la ie itration, Li et Ri sont respectivement les moitis gauche


et droite de ?,,
est la clef de 48 bits pour la ie ronde, et / est la fonction qui fait
toute les substitutions, permutations et ou exclusif avec la clef, alors une ronde est
dcrite par :
l' R %i
R%

i f ( R i - i , K t ).

La permutation initiale
Le tableau 12.1 dcrit la permutation initiale qui transpose le bloc dentre avant la
premire ronde. Ce tableau, ainsi que les autres tableaux de ce chapitre, doit tre lu
de gauche droite et de haut en bas. Par exemple, la permutation initiale dplace le
bit 58 jusqu la position 1, le bit 50 jusqu la position 2, le bit 42 jusqu la position
3, etc.

Tab.

~ 58
62
57
61

50 42
54 46
49 41
53 45

34
38
33
37

26
30
25
29

12.1 - Permutation initiale

18
22
17
21

2
14 6
9 1
13 5

60
64
59
63

52
56
51
55

44
48
43
47

36
40
35
39

28
32
27
31

20

12 T

24
19
23

16 8
11 3
15 7

12.2

Description du DES

289

La permutation initiale et la permutation finale correspondante naffectent pas la scu


rit du DES. (Tout ce quon peut dire est que son but premier est de rendre plus facile
le chargement du texte en clair ou du texte chiffr dans une puce DES en morceaux de
taille un octet. Rappelez vous que le DES est arriv avant les microprocesseurs 16 ou
32 bits.) Comme cette permutation bit bit est difficile raliser en logiciel (bien que
ce soit banal en matriel), de nombreuses ralisations logicielles du DES nincluent pas
les permutations initiale et finale. Bien que ce nouvel algorithme ne soit pas moins sr
que le DES, il nest pas conforme au standard DES et ne doit pas tre appel DES.

Le plan de gnration des clefs


Initialement, les 64 bits de la clef DES sont rduits 56 bits en ignorant un bit sur
huit. Ceci est dcrit par le tableau 12.2. Ces bits peuvent tre utiliss comme bits de
contrle de parit pour vrifier quil ny a pas eu derreur lors de la saisie de la clef.

~ 57
10
63
14

49
2
55
6

41
59
47
61

ab

33 25
51 43
39 31
53 45

12.2 - Permutation de clef


7
35
23
37

9
27
15
29

19
7
21

58
11
62
13

50 42
3 60
54 46
5 28

34 26
52 44
38 30
20 12

8~
36
22
4

Aprs que la clef de 56 bits a t extraite, une clef de 48 bits diffrente est engendre
pour chaque ronde du DES. Ces clefs K i, sont dtermines de la manire suivante :
Tout d abord, la clef de 56 bits est divise en deux moitis de 28 bits. Ensuite les
moitis sont dcales vers la gauche dune ou deux positions, en fonction de la ronde.
Le nombre de bits de dcalage est donn par le tableau 12.3.

Ronde
Nombre de
dcalages

ab

2 3~4

12.3 - Dcalage de clef par ronde


5
2

6
2

8
2

12
2

13
2

4
2

5
2

lfT
1

Aprs avoir t dcals, 48 bits parmi les 56 sont slectionns. Comme cette opration
combine une permutation des bits avec une slection d un sous-ensemble des bits, elle
est appele permutation compressive, ou encore choix permut. Cette opration
fournit un sous-ensemble de bits qui a la mme taille que la sortie de la permutation
expansive. Le tableau 12.4 dfinit la permutation compressive. Par exemple, le bit en
position 33 de la clef dcale va en position 35 de la sortie, et le bit en position 18 de
la clef dcale est ignor.
Les dcalages ont pour effet de rendre diffrents les sous-ensembles de bits utiliss dans
chaque sous-clef. Chaque bit est utilis dans approximativement 14 des 16 sous-clefs,
bien que tous les bits ne soient pas utiliss exactement le mme nombre de fois.

290

Chapitre 12

ab

14

Vf

II

23
41
44

19
52
49

12
31
39

Le D E S

12.4 - Permutation compressive


24
4
37
56

26
47
34

5
8

55
53

3
16
30
46

28
7
40
42

5
27
51
50

20
45
36

21
13
33
29

10
2
48
32

La permutation expansive
Par cette opration, la moiti droite des donnes, Rl, est tendue de 32 48 bits.
Comme cette opration change lordre des bits et quelle rpte certains bits, elle est
appele permutation expansive. Cette opration a deux buts : le rsultat a la mme
taille que la clef pour lopration ou exclusif, et elle fournit un rsultat plus long qui
pourra tre comprim pendant lopration de substitution. Toutefois, aucun de ces
deux buts nest sa raison d tre cryptographique. En permettant un bit daffecter
deux substitutions, la dpendance entre les bits dentre et les bits de sortie se dilue
plus vite. On parlera deffet d avalanche. Le DES est conu afin de parvenir le plus
vite possible ce que chaque bit du texte chiffr dpende de chaque bit du texte en
clair et de chaque bit de la clef.
La figure 12.3 illustre la permutation expansive. On lappelle parfois ta b le T . Pour
chaque bloc de 4 bits d entre, le premier et le quatrime bit, reprsentent chacun 2
bits du bloc de sortie, tandis que les deuxime et troisime bits, reprsentent chacun
un bit du bloc de sortie. Le tableau 12.5 indique la correspondance entre les positions
de sortie et les positions d entre. Par exemple, le bit en position 3 du bloc d entre va
en position 4 du bloc de sortie, et le bit en position 21 du bloc d entre va en positions
30 et 32 du bloc de sortie.
Bien que le bloc de sortie soit plus grand que le bloc d entre, il nexiste quun bloc
dentre possible pour un bloc de sortie donn.

F ig . 12.3 - Permutation expansive

12.2

291

Description du DES

T ab . 12.5 - Permutation expansive

32

9
17
25

10

11

12

18
26

19
27

20

21

20

21

22

28

29

28

29

30

16
24

5
13

4
12

5
13

14

7
15
23
31

16
24
32

9
17
25
1

La substitution par tablesS


Aprs que la clef comprime a t combine par ou exclusif avec le bloc expans, le
rsultat de 48 bits est soumis une opration de substitution. Ces substitutions sont
ralises laide de huit tables de substitution, ou tables-S. Chaque table-S 1 a
six bits d entre et quatre de sortie, et il y a huit tables-S 1 diffrentes2. Les 48 bits
sont diviss en blocs de 6 bits. Chaque bloc est manipul sparment par une tableS diffrente: le bloc 1 est manipul par la table -S 1, le bloc 2 est manipul par la
table- S 2, etc. Voir la figure 12.4.
Chaque table-S a 4 rangs et 16 colonnes. Chaque cellule dans la table est un nombre
de 4 bits. Les 6 bits du bloc d entre spcifient le rang et la colonne exploiter pour
obtenir la sortie. Le tableau 12.6 montre les 8 tables -S.
Les bits dentre spcifient une cellule de la table-S dune manire trs particulire :
considrez 6 bits dentre tiquets fq, 6 2 , 6 3 , 6 4 , fis, fie ; les bits fi] et fie sont combins
pour former un nombre de 2 bits, entre 0 et 3, qui correspond un rang dans la table ;
les 4 bits du milieu, 62 fis, sont combins pour former un nombre de 4 bits, entre 0
et 15, qui correspond une colonne dans la table.
Par exemple, faites lhypothse que lentre de la sixime table-S (cest--dire les bits
31 36 en sortie de la fonction ou exclusif ) soit 1100102. Le premier et le dernier bits,
combins pour former 102, indiquent quil faut prendre le 2 e rang de la table. Les 4 bits
du milieu combin pour former 10012 indiquent quil faut prendre la 9e colonne de la
table. La cellule au 2e rang, 9e colonne de la table-S 6 est 0. Rappelez-vous que lon
numrote les rangs et les colonnes partir de 0 et non de 1. La valeur 00002 remplace
110010 2 .

Bien sr, dans une ralisation logicielle, il est bien plus facile d utiliser des tableaux de
64 entres pour les tables S. Cela demande de rarranger un peu les entres, mais ce
nest pas difficile3. Toutefois, dcrire ainsi les tables-S aide visualiser la faon dont
2. L espace m m oire total occu p par les ta b le s -S du D E S est de 256 octets.
3. Il ne faut pas changer uniquement les indices sans rarranger les entres. Les ta b le s -S sont
conues trs prcisment.

F ig . 12.4 - Table-S de substitution

Chapitre 12

292

Table-5
14
4
0 15
4
1
15 12
Table-S
15
1
3 13
0 14
13
8
Table-S
10
0
13
7
13
6
1 10
Table-S
7 13
13
8
10
6
3 15
Table S
2 12
14 11
4
2
11

12.6 - Tables-S

15

11

10

12

13

10

12

11

11

15
5

12

9
3

4
14

12

14
7

11

15

11

10

4
15

13
4

14
9
9

15
6

3
4
15
9

3
5

15

7
13

11

5
9
3

7
14

10

7
8

10

3
5

13

10

9
5

12
6

14
13
4

4
7
10
3:
9
0
4
13
4:
14
11
9
0
5:
4
2
1

Table-S
12

1:
13
7
14

ab

Le D E S

3
8

13

12

10

12

11

12

9
3
5

13

12

10

7
14

11

12

15

14

10

3
13

12

3
5

4
15
9

11

12

3
15

15

13
3

12

5
9

1
2

9
5

12

11

10

7
4

10

11

7
13
14

13
7

5
15

13

9
15

13

12

5
3

1
0

3
13
4

14
12

12
11

10

15

9
7

11

12

11

10

11

11

12

10

14

10

6
10

14

5
15
9

15
14

11
2

12

4
14
2

15
9
4
14

14

9
3
4

14
3

:
10

10 15
4
9 14 15
4
3
2
Table S 7 :
4 11
2
13
0 11
1
4 11
6
11 13
Table-S 8 :
13
2
8
1 15 13
7 11
4
2
1 14

5
12

14
7
13
8

15

10

11

15
4

13

3
14

12
1

9
3
4

10

14
7

10

11

10

12

13

10

10

15
3

9
4

12

7
14

10

12

3
15
5

4
14

14
0

11

10

13

11

13

9
5

10

12

15
5

15

14

9
3

12

12

9
5

14

11

10

13

15

12

15
3

14
3
5

5
3

11
8

9
5

11

12.2

Description du DES

293

elles fonctionnent. On peut voir chaque table-S 1 comme une permutation de quatre de
ses entres: les bits de >2 65 sont pris en entre et il en sort un rsultat de quatre
bits. Les bits bi et be proviennent des emplacements contigus; ils sont utiliss pour
slectionner une des quatres permutations possibles de la table-S en question.
Cette tape de substitution par tables-S est cruciale dans le DES. Toutes les autres
oprations sont linaires et faciles analyser. Les tables-S sont non linaires et, par
dessus tout, elles confrent au DES son niveau de scurit.
Cette phase de substitution donne 8 blocs de 4 bits qui sont recombins pour former
un seul bloc de 32 bits. Ce bloc passe alors ltape suivante : la permutation-P.

La permutationP
Les 32 bits de sortie des substitutions par tables .S sont permuts laide d une tableP. Cette table met en correspondance chaque bit de lentre avec un bit de sortie;

aucun bit nest utilis deux fois et aucun bit nest ignor. O 11 parlera de permutation
pure, ou tout simplementde permutation. Le tableau12.7montre quelle position
migre chaque bit. Par exemple, le bit 21 va en position 4, tandis que le bit 4 va en
position 31.

6
2

7
8

20
24

21
14

ab

29
32

12.7 Permutation-P

12 28
27 3

7
9

1 15
19 13

23
30

26

5 8 31
22 11 4

10
25

Finalement, le rsultat de la permutation-P est combin par ou exclusif avec la moiti


gauche du bloc initial de 64 bits. Ensuite, les parties gauche et droite sont changes
et une nouvelle ronde commence.

La permutation finale
La permutation finale, qui est linverse de la permutation initiale, est dcrite par le
tableau 12.8. Notez que les parties gauche et droite ne sont pas changes aprs la
dernire ronde du DES ; c est le bloc RieLie qui est utilis comme entre pour la
permutation finale. Il ny a rien de bien particulier ici ; changer les moitis et dcaler
la permutation donnerait exactement le mme rsultat ; il en est ainsi pour que le mme
algorithme puisse tre utilis pour le chiffrement et le dchiffrement.

~4
38
36
34

8
6

4
2

48
46
44
42

16
14
12
10

56
54
52
50

ab

24
22
20
18

12.8 - Permutation finale


64
62
60
58

32
30
28
26

39
37
35
33

7
5
3
1

47
45
43
41

15
13
11
9

55
53
51
49

23
21
19
17

63
61
59
57

3F
29
27
25

294

Chapitre 12

Le D ES

Dchiffrement du DES
Aprs toutes ces substitutions, permutations, ou exclusif et dcalages, vous pourriez
penser que lalgorithme de dchiffrement est totalement diffrent et aussi droutant que
lalgorithme de chiffrement. Tout au contraire, les diffrentes oprations ont t choisies
pour offrir une proprit trs utile : le mme algorithme est utilis pour le chiffrement
et le dchiffrement.
Avec le DES il est possible dutiliser la mme fonction pour chiffrer un bloc et pour le
dchiffrer. La seule diffrence est que les clefs doivent tre utilises dans lordre inverse.
Si les clefs de chiffrement de chaque ronde sont A i , A 2 , A 3 , ... , A i 6 , alors les clefs de
dchiffrement sont respectivement A 16, A 1 5 , A 1 4 , ... , K\. Lalgorithme qui engendre
les clefs pour chaque ronde est galement circulaire, et le nombre de dcalages (vers la
droite) effectuer devient 0 ,1 ,2 ,2 ,2 ,2 ,2 ,2 , 1 ,2 ,2 ,2 ,2 ,2 ,2 , 1 .

Modes opratoires du DES


Le document FIPS PU B 81 spcifie quatre modes opratoires: E CB, C B C , OFB,
et C FB (voir le chapitre 9) [1156]. Le standard bancaire de lAN SI spcifie les modes
E C B et C B C pour le chiffrement, et les modes C B C et CFB n bits pour lauthentification [55].
Dans le monde du logiciel, la certification nexiste pas. A cause de sa simplicit le
mode E C B est le plus souvent utilis dans les logiciels commerciaux classiques, bien
quil soit le plus vulnrable aux attaques. Le mode de chiffrement avec chanage de blocs
est utilis occasionnellement, bien quil ne soit gure plus compliqu que le carnet de
codage lectronique et quil procure un niveau de scurit nettement plus lev.

Ralisations matrielles et logicielles du DES


De nombreuses publications dcrivent des ralisations efficaces matrielles et logicielles
de lalgorithme [1007, 8 8 , 535, 536, 437, 740, 1575, 183, 275, 1574].
Le dtenteur du record de rapidit de la puce DES est un prototype dvelopp par
D i g i t a l E q u ip m e n t C o r p o r a t i o n [513]. Elle offre les modes ECB et C B C et elle
est ralise avec une matrice de 50000 transistors G a A s . Les donnes peuvent tre
chiffres et dchiffres la vitesse de 1 gigabit par seconde (15,6 millions de blocs DES
par seconde). C est impressionnant. La table 12.9 donne les spcificits de certaines des
puces DES du commerce. Les apparentes disparits entre les vitesses d horloges et les
taux de dones sont dues au paralllisme incorpor dans certaines puces.
La puce la plus impressionnante est la 6 8 6 8 de VLSI (appele ses dbuts la garde
barrire ). Non seulement elle peut appliquer le DES en 8 cycles dhorloge (des pro
totypes peuvent le faire en quatre), mais elle peut aussi appliquer le le triple DES en
25 cycles d horloge en mode E C B , et en 35 cycles d horloge en mode O FB ou CBC.
Cela me parat impossible mais je vous assure que a marche.
Une ralisation logicielle du DES sur un ordinateur central IBM 3090 peut effec
tuer 32 000 chiffrements DES par seconde. La plupart des microprocesseurs sont plus
lents, mais impressionnants malgr tout. Le tableau 12.10 [605, 793] donne des chiffres
concrets et des estimations pour divers microprocesseurs I n t e l et M O T O R O L A .

12.2

295

Description du DES

ab

12.9 - Les puces ddies au DES dans le commerce.


Puce

Marque

AMD
AMD
AM D

Anne

Am9518
Am9568
AmZ8068
T7000A
SuperCrypt
CE99C003
SuperCrypt
CE99C003
Cryl2C102
CA20C03A

AT& T
C E -I n fo sys

IscCE-Infosys
C ryptech
N e w b r id g e

CA20C03W
C A 9 5 C 6 8 /18/09
PCC100
Roadrunner284

N e w b r id g e
N e w b r id g e
P ij n e n b u r g
SEM APHORE

Communications
VLSI T e c c h n o l o g y
VLSI T e c c h n o l o g y
VLSI T e c c h n o l o g y
W e s t e r n D ig it a l

ab

VM007
VM009
6868
W D2001/2002

Vitesse

Taux de

d horloge
(en MHz)

donnes chiffres
(en megaoctets
par seconde)

Commercialis

20

1,7
1,9
12,5

non
non
non
non
oui

1994

30

20,0

oui

1989
1991
1992
1993
?
?

20
25
8
33
?

2,8
3,85
0,64
14,67
2,5
35,5

oui
oui
oui
oui
oui
oui

20,0
14,0
64,0
0,23

oui
oui
oui
non

1981
?
1982
1985
1992

3
4
4
?

40
32

1993
1993
1995
1984

33
32
3

1,3
1,5

12.10 - Vitesse du DES pour diffrents processeurs

Processeur
8088
68000
80286
68020
68030
80386
68030
68040
68040
80486
Sun ELC
HyperSparc
RS6000-350
Sparc 10/52
DEC Alpha 4000/610
HP 9000/887

Vitesse
(en MHz)
4,7
7,6
6
16
16
25
50
25
40
33

125

Blocs DES
(par seconde)
370
900
1100
3 500
3900
5000
9600
16000
23 200
40600
26000
32000
53000
84000
154000
196000

Chapitre 12

296

12.3

Le D E S

Niveau de scurit du DES

Les gens ont longtemps mis en doute le niveau de scurit du DES [464]. Il y a eu bon
nombre de spculations sur la longueur de la clef, le nombre ditrations et le schma de
conception des tables-S. Les tables S semblaient tout particulirement mystrieuses
toutes ces constantes, sans aucune raison apparente leur valeurs particulires.
Certaines personnes craignaient que la NSA ait cach une brche secrte dans
lalgorithme, de faon pouvoir facilement dchiffrer les messages.
Une commission snatoriale, le Senate Select Committee on Intelligence , tudia la
question en 1978, avec les autorisations top-secrtes du plus haut niveau. Les rsultats
de cette enqute sont rests secrets mais un rsum en a t publi disculpant la NSA
de toute malveillance dans la conception de lalgorithme [1226]. Il est tabli [que la
NSA] a convaincu IBM du bien-fond du choix dune clef plus courte, [que la NSA] a
indirectement particip au dveloppement de la structure des tables- S et [que la NSA]
a certifi que lalgorithme final DES tait, pour autant que lon sache, exempt de
toute faiblesse statistique ou mathmatique [435]. Toutefois, comme le gouvernement
ne rendit jamais publics les rsultats complets de lenqute, de nombreuses personnes
restrent sceptiques.
T U C H M A N et M e y e r , deux des cryptographes d IBM qui ont conu le DES, dcla
rrent que la NSA navait, pas altr le schma de conception [842] :
Leur approche de base consistait chercher des fonctions solides de substi
tution, de permutation et de gnration de clefs ... IBM a class les notes
concernant les critres de conception la demande de la N SA ... La
NSA nous a dit que nous avions par inadvertance rinvent certains des se
crets fondamentaux quelle utilise pour ses propres algorithmes , expliqua
T

uchm an

Plus loin dans larticle, T u c h m a n dclara: Nous avons dvelopp lalgorithme DES
entirement lintrieur dIBM avec des IBMistes. La NSA na pas dict une seule
ligne! T U C H M A N confirma ceci lorsquil prsenta lhistoire du DES la National
Computer Security Confrence en 1992.
D un autre ct, C o p p e r s m i t h a crit [376, 379]: La NSA a aussi apport des
conseils techniques IB M . Et les propos suivant de K o n h e i m ont t rapports:
Nous avons envoy nos tables S Washington. Elles nous ont t renvoyes toutes
diffrentes. Nous leur avons fait subir nos tests et elles ont russi. Certaines personnes
ont pris cela comme une preuve que la NSA avait cach une brche secrte .
Quand la NSA fut interroge quant toute faiblesse introduite intentionnellement dans
le DES, elle rpondit [367] :
Pour ce qui est du standard de chiffrement de donnes (D ES), nous
pensons que le compte-rendu public de lenqute mene par le Senate
Committee for Intelligence en 1978 quant au rle de la NSA dans le d
veloppement du DES rpond votre question. Le rapport de la commission
indique que la N SA na pas fauss la conception du DES en quelque faon
que ce soit, et que le niveau de scurit offert par le DES tait plus que
suffisant pour rsister au moins cinq dix ans sur les donnes non classes
pour lesquelles il tait conu. En bref, la NSA na pas impos ou tent
dimposer la moindre faiblesse au DES.

12.3

Niveau de scurit du D E S

297

Pourquoi ont-ils alors modifi les tables-S? Peut-tre pour sassurer quIBM navait
pas cach une brche secrte dans le DES. La NSA navait aucune raison de faire
confiance aux chercheurs d IBM , et aurait manqu son devoir en n vitant pas toute
possiblit d une brche secrte dans le DES. Donner les tables-S tait un moyen
de sen assurer.
Trs rcemment, de nouveaux rsultats de cryptanalyse ont clair cette question sous
un autre jour, mais pendant de nombreuses annes elle fut lobjet de multiples spcu
lations.

Clefs faibles
La mthode pour obtenir les sous-clefs pour chaque ronde de lalgorithme partir
de la clef initiale implique lexistence de certaines clefs faibles [722, 428]. Rappelezvous que la valeur initiale est divise en deux moitis, chaque moiti tant dcale
indpendamment de lautre. Si tous les bits de chaque moiti sont soit des 0, soit
des 1, alors la clef utilise pour nimporte quel cycle de lalgorithme est la mme que
pour tous les cycles de lalgorithme. Tel est le cas si la clef est constitue entirement
de 1 ou entirement de 0, ou si une moiti est entirement constitue de 1 et lautre
entirement de 0. De plus, deux des clefs faibles ont d autres proprits qui les rendent
moins sres [428].
Les quatre clefs faibles sont donnes en notation hexadcimale par le tableau 12.11.
Rappelez-vous quun bit sur huit est un bit de contrle de parit et que la permutation
initiale change lgrement lordre des bits de la clef.

Ta

12.11 - Clefs DES faibles

Valeur de clef faible


(avec bits de parit)
0101
1F1F
EOEO
FEFE

0101 0101 0101


1F1F 0E0E 0E0E
EOEO F1F1 F1F1
FEFE FEFE FEFE

Clef
0000000
0000000
FFFFFFF
FFFFFFF

0000000
FFFFFFF
0000000
FFFFFFF

De plus, il existe des paires de clefs qui chiffrent un texte en clair en un mme texte
chiffr. En d autres termes, une clef de la paire peut tre utilise pour dchiffrer des
messages chiffrs avec lautre clef de la paire. Ceci est d la mthode utilise pour
engendrer les sous-clefs dans le DES ; au lieu dengendrer 16 sous-clefs diffrentes, ces
paires de clefs nengendrent que 2 sous-clefs diffrentes. Chacune de ces sous-clefs est
utilise 8 fois dans lalgorithme. Ces clefs sont appeles clefs sem i-faibles. Elles sont
dcrites dans le tableau 12.12.
Il y a aussi des clefs qui ne produisent que 4 sous-clefs diffrentes, chacune tant utilise
4 fois dans lalgorithme. Ces clefs sont dcrites dans le tableau 12.13.
Avant de condamner le DES parce quil a des clefs faibles, notez que cette liste de 64
clefs est minuscule en comparaison du nombre total de clefs possibles, savoir :
72057594037927936.
Si vous choisissez les clefs alatoirement, les chances d en choisir une parmi ces clefs

Chapitre 12

298

Le D E S

T a b . 12.12 - Clefs DES semi-faibles

01FE
1FE0
01E0
1FFE
011F
EOFE

01FE
1FE0
01E0
1FFE
011F
EOFE

ab

01FE
0EF1
01F1
OEFE
010E
F1FE

01FE
0EF1
01F1
OEFE
010E
F1FE

et
et
et
et
et
et

FE01
E01F
E001
FE1F
1F01
FEEO

FE01
E01F
E001
FE1F
1F01
FEEO

FE01
F10E
F101
FEOE
0E01
FEF1

FE01
F10E
F101
FEOE
0E01
FEF1

12.13 - Clefs DES potentiellement faibles

1F
01
1F
01

1F
1F
01
01

01
1F
01
1F

01
01
1F
1F

OE
01
OE
01

OE
OE
01
01

01
OE
01
OE

01
01
OE
OE

EO
FE
FE
EO
FE
EO
EO
FE

EO
FE
EO
FE
EO
FE
EO
FE

01
01
1F
1F
01
01
1F
1F

01
01
01
01
1F
1F
1F
1F

FI
FE
FE
FI
FE
FI
FI
FE

FI
FE
FI
FE
FI
FE
FI
FE

01
01
OE
OE
01
01
OE
OE

01
01
01
01
OE
OE
OE
OE

FE
EO
FE
EO

1F
1F
01
01

EO
FE
EO
FE

01
01
1F
1F

FE
FI
FE
FI

OE
OE
01
01

FI
FE
FI
FE

01
01
OE
OE

01
1F
1F
01
1F
01
01
1F

EO
FE
EO
FE
EO
FE
EO
FE

EO
EO
FE
FE
EO
EO
FE
FE

01
01
01
01
1F
1F
1F
1F

01
OE
OE
01
OE
01
01
OE

FI
FE
FI
FE
FI
FE
FI
FE

FI
FO
FE
FE
FI
FI
FE
FE

01
01
01
01
OE
OE
OE
OE

EO
FE
FE
EO
FE
EO
EO
FE

01
1F
01
1F
01
1F
01
1F

01
01
1F
1F
01
01
1F
1F

EO
EO
EO
EO
FE
FE
FE
FE

FI
FE
FE
FI
FE
FI
FI
FE

01
OE
01
OE
01
OE
01
OE

01
01
OE
OE
01
01
OE
OE

FI
FI
FI
FI
FE
FE
FE
FE

1F
01
1F
01

FE
FE
EO
EO

01
1F
01
1F

EO
EO
FE
FE

OE
01
OE
01

FE
FE
FI
FI

01
OE
01
OE

FI
FI
FE
FE

01
1F
1F
01
1F
01
01
1F

01
1F
01
1F
01
1F
01
1F

EO
EO
FE
FE
EO
EO
FE
FE

EO
EO
EO
EO
FE
FE
FE
FE

01
OE
OE
01
OE
01
01
OE

01
OE
01
OE
01
OE
01
OE

FI
FI
FE
FE
FI
FI
FE
FE

FI
FI
FI
FI
FE
FE
FE
FE

FE
EO
FE
EO

FE
FE
EO
EO

EO
FE
EO
FE

EO
EO
FE
FE

FE
FI
FE
FI

FE
FE
FI
FI

FI
FE
FI
FE

FI
FI
FE
FE

faibles sont ngligeables. Si vous tre vraiment paranoaque, vous pouvez dtecter les
ciels faibles lors de la gnration de clefs. Certains ne pensent pas que cela en vaille la
peine. D autres pensent que c est tellement facile quil vaut mieux le faire.
Vous trouverez plus de dtails concernant les clefs faibles et semi-faibles dans [1122].
D autres types de clefs faibles ont t recherchs mais aucun na t trouv.

12.3

299

Niveau de scurit du D E S

Clefs complmentaires
Prenez le complment bit bit dune clef ; autrement dit, remplacez tous les 0 par des
I et tous les 1 par des 0. Aprs cela, si la clef originale est utilise pour chiffrer un bloc
de texte en clair, alors le chiffrement du complment du bloc de texte en clair par la
clef complmentaire donnera le complment du texte chiffr.
Si x' est le complment de x, alors lidentit est donne comme suit :
E k {M ) = C
E K'( M ') = C'.

Cela na rien de mystrieux. Les sous-clefs sont combines avec la moitie de droite
aprs la permutation expansive. Cette proprit de complmentarit provient de
ce fait.
Cela veut dire quune attaque textes en clair choisis contre le DES ne devra tester
que la moiti des clefs possibles : 2 55 clefs au lieu de 2 51 [1084]. B i h a m et S h a m i r
montrent [178] quil existe une attaque textes en clair connus de la mme complexit
avec au moins 2 3 3 textes en clair connus.
II est douteux que cela constitue une faiblesse, car la plupart des messages nont pas
de blocs complmentaires de texte en clair (dans un texte en clair alatoire, les chances
sont infimes) et lon peut conseiller aux utilisateurs de ne pas utiliser de clefs compl
mentaires.

Structure algbrique
Il y a 264! manires de mettre en correspondance tous les textes en clair possibles
de 64 bits avec tous les textes chiffrs possibles. Avec sa clef de 56 bits, lalgorithme
DES donne donc 256 (~ 1016) de ces relations. En utilisant le surchiffrement, il semble
possible d obtenir un plus grand nombre de ces relations. Toutefois, ceci nest vrai que
si le DES na pas une certaine structure algbrique.
Si lopration de chiffrement par le DES tait interne, pour tous K\ et K 2, il existerait
A 3 tel que :
E K2 ( EK l(P )) - E K3(P)
En dautres termes, cette opration formerait un groupe, et chiffrer un bloc de texte
en clair avec K\ puis A 2 serait identique au chiffrement du bloc avec A 3 . Pire encore,
le DES serait vulnrable une attaque par collisions qui ne ncessite que 228 tapes,
nettement moins que les 256 tapes ncessaires pour une recherche exhaustive [803].
Si lopration de chiffrement par le DES tait pure, pour tous A i , AT2 et Kg, il exis
terait A 4 tel que :

E K3(EK2(EKi (P))) = E k 4(P)


Le DES triple serait alors inutile4.
Don C O P P E R S M IT H a crit trs tt un article thorique donnant des indices sur la
question, mais cela ntait pas suffisant [381]. Plusieurs mathmaticiens se sont attaqus
cette question [590, 428, 431, 529, 725, 790]. Ces expriences rassemblrent un grand
nombre dindices indiquant que le DES nest pas un groupe [803, 375, 804,1122, 805],
4.
Rem arquez q u un algorithm e de chiffrement interne est ncessairement pur, mais un algorithm e
de chiffrement pur n est pas forcm ent interne.

300

Chapitre 12

Le D ES

mais il fallut attendre 1992 pour que les cryptographes russissent prouver que le DES
nest pas un groupe [297], C o p p e r s m i t h a affirm que lquipe dIBM le savait depuis
longtemps.

Longueur de clef
La premire proposition d IBM la NBS avait une clef de 112 bits. Quand le DES
devint un standard, cette longueur avait t ramene 56 bits. De nombreux cryp
tographes prconisaient une clef longue. Leurs arguments tournaient principalement
autour de la possibilit d une attaque exhaustive (voir 7.1).
En 1976 et 1977, D i f f i e et H e l l m a n dmontrrent quun ordinateur parallle ddi
lattaque du DES pouvait retrouver la clef en un jour et coterait 20 millions de
dollars. En 1981, D i f f i e et H e l l m a n rvisrent leurs chiffres la hausse : deux jours
de recherche par clef et 50 millions de dollars [489]. Ils admettaient que c tait hors de
porte de quiconque except les organisations telles que la NSA, mais considraient
que d ici 1990, le DES ne serait plus sr du tout [717].
H e l l m a n [716] prsenta un autre argument contre une petite taille de clef : en jouant
sur le compromis mmoire - temps de calcul dans le sens de la mmoire, il serait
possible d acclrer le processus de recherche. II suggrait la possibilit de calculer et
de stocker 256 rsultats possibles du chiffrement d un mme bloc de texte en clair avec
toutes les clefs possibles. Alors, pour retrouver une clef, tout ce qui restait faire au
cryptanalyste tait d insrer le bloc de texte en clair dans le processus de chiffrement,
de rcuprer le texte chiffr et de rechercher la clef par comparaison. H e l l m a n estima
le cot d une telle machine 5 millions de dollars.

Les argumentations pour ou contre lexistence dun systme permettant de casser le


DES quelque part dans les caves du Gouvernement ont continu. Plusieurs personnes
firent remarquer que le temps moyen entre deux pannes des puces DES ne serait jamais
assez grand pour garantir quune telle machine puisse marcher. Cette objection est
superflue comme le montre [1289]. D autres ont suggr d acclrer encore le processus
et de rduire leffet de pannes des puces.
Entre-temps, les ralisations matrielles du DES ont lentement approch le million de
chiffrements par seconde ncessaire pour la machine spcialise de D i f f i e et H e l l m a n .
En 1984, des puces capables dexcuter 256000 chiffrements par seconde ont t fabri
ques [535, 536]. En 1987, des puces qui effectuaient 512000 chiffrements par seconde
ont t dveloppes, et une version capable de tester plus d un million de clefs par
seconde tait faisable [740, 1575]. Et en 1993, Michael W i e n e r a conu une machine
cotant un million de dollars pouvant accomplir une attaque exhaustive contre le DES
en un temps moyen de 3,5 heures (voir 7.1).
Jusquici, personne na admis publiquement avoir construit une telle machine, bien
quil soit raisonnable de penser que quelquun en a dj construit une. Un million de
dollars ne constitue pas une somme importante pour un pays dvelopp.
Ce nest quen 1990 que deux mathmaticiens israliens, B i h a m et S h a m i r , ont d
couvert la cry p ta n a lyse diffrentielle, une technique qui carta la question de la
longueur de clef. Avant que nous ne dcrivions cette technique, numrons quelques
autres critiques lencontre de la conception du DES.

12.3

Niveau de scurit du D E S

301

Nombre de rondes
Pourquoi 16 rondes? Pourquoi pas 32? Aprs 5 rondes, chaque bit du texte chiffr
est une fonction de chaque bit du texte en clair et de chaque bit de la clef; et aprs
8 rondes, le texte chiffr est essentiellement une fonction alatoire de chaque bit du
texte en clair et de chaque bit de la clef [1088, 1084]5. Alors pourquoi lalgorithme ne
sarrte-t-il pas alors aprs 8 rondes?
Au fil des ans, il y a eu des attaques russies contre des variantes du DES avec un
nombre de rondes rduit. Le DES avec 3 ou 4 rondes fut facilement cass en 1982 [50].
Le DES avec 6 rondes est tomb quelques annes plus tard [341]. C est la cryptanalyse
diffrentielle de B i h a m et S h a m i r qui explique galement cela; avec nimporte quel
nombre de rondes infrieur 16 le DES peut tre cass par une attaque texte en
clair connu plus efficacement que par recherche exhaustive. Lattaque exhaustive est
certainement plus pratique, mais il est intressant de constater que lalgorithme a
exactement 16 rondes.

Conception des tablesS


En plus d avoir t accuse d avoir rduit la longueur de la clef, la NSA fut aussi accuse
davoir modifi le contenu des tables-S. Somme de justifier la conception des tables-S,
la NSA indiqua que les dtails de conception de lalgorithme taient sensibles et quils
ne seraient pas rendus publics. Plusieurs cryptographes sinquitaient de la possibilit
que la NSA ait introduit une brche secrte dans les tables-S, lui permettant ainsi de
cryptanalyser lalgorithme.
Depuis, pas mal d effort a t investi dans ltude de la conception et du fonctionne
ment des tables-S. Au milieu des annes 70, L e x a r C o r p o r a t i o n [972, 722] et B e l l
L a b o r a t o r i e s [1126] examinrent le fonctionnement des tables-S. Leurs analyses ne
rvlrent aucune faiblesse, bien quils trouvrent tous les deux des caractristiques
inexplicables. Les tables-S avaient plus de caractristiques en commun avec des trans
formations linaires que nen auraient eu des tables choisies alatoirement. Lquipe de
B e l l L a b o r a t o r i e s indiqua que les tables-S pouvaient avoir une brche secrte et
le rapport L E X A R concluait ainsi :
Certaines structures dcouvertes dans le DES ont sans doute t in
sres pour renforcer le systme contre certains types dattaques. Dautres
structures tendent affaiblir le systme.
Dun autre ct, ce rapport contenait aussi la mise en garde suivante:
...le problme [de la recherche de structures dans les tables-,S] est
rendu plus complexe par la capacit qua lesprit humain de trouver une
structure apparente dans des donnes alatoires, mais qui ne constitue pas
vraiment une structure.
Au second atelier du DES, l Agence nationale de scurit amricaine rvla certains
des critres de conception des tables- .S [232]. Cela nattnua pas le moins du monde la
suspicion des gens et le dbat continua [231, 424, 717, 1510, 1559].
5. Cela sappelle leffet de cascade.

Chapitre 12

Le D ES

Plusieurs excentricits concernant les tables - S ont vu le jour dans la littrature. Les
trois derniers bits de sortie de la quatrime table S 4 peuvent tre obtenus de la
mme manire que les premiers en prenant le complment de certains bits d entre
[436, 438]. Deux entres diffrentes, mais soigneusement choisies, peuvent produire la
mme sortie [436]. Il est possible d obtenir la mme sortie d une seule ronde DES en
changeant les bits de trois tables S contiges seulement [485]. S h a m i r a remarqu que
les tables-S1paraissaient dsquilibres en quelque sorte, mais il tait loin de pouvoir
utiliser cela dans une attaque [1430]6. D autres chercheurs ont montr que des principes
publiques de conception permettaient de gnrer des tables-S ayant les caractristiques
observes [270].

Rsultats supplmentaires
Il y a eu d autres tentatives de cryptanalyse du DES. Un cryptographe a recherch
labsence de caractre non alatoire sur la base de tests spectraux [561]. D autres cryp
tographes ont recherch des squences de facteurs linaires dans le DES, mais leur
attaque chouait aprs huit rondes [1308, 341, 533]. En 1987, une attaque non publie
de Donald D a v ie S exploitait la faon dont la permutation expansive rpte les bits
dans des tables S adjacentes ; cette attaque est elle aussi inutilisable partir de huit
rondes [178, 441].

12.4

Cryptanalyse diffrentielle et linaire

Cryptanalyse diffrentielle
En 1990, Eli B ih a m et Adi S h a m ir ont introduit la notion de cryptanalyse diffren
tielle [174, 175, 179, 178]. C tait une nouvelle mthode de cryptanalyse, inconnue
ce moment-l du public. En utilisant cette mthode, B ih a m et S h a m ir trouvrent une
attaque texte en clair choisi contre le DES plus efficace que la recherche exhaustive.
La cryptanalyse diffrentielle traite spcifiquement les paires de textes chiffrs :
des paires de textes chiffrs dont les textes en clair prsentent certaines diffrences
particulires. Elle analyse lvolution de ces diffrences de textes en clairs travers les
diffrentes rondes du DES quand ils sont chifrs avec la mme clef.
Choisissez simplement des textes en clair avec une diffrence fixe. Les deux textes en
clair peuvent tre choisis alatoirement tant quils vrifient des conditions particulires
de sur leur diffrence ; le cryptanalyste na pas mme besoin de connatre leurs valeurs7.
En utilisant alors les diffrences dans les textes chiffrs rsultants, assignez diffrentes
probabilits aux clefs possibles. force d analyser des paires de textes chiffrs, vous
finirez par trouver la clef la plus probable. C est la bonne clef.
Les dtails sont plus compliqus. La figure 12.5 reprsente la fonction rsultant dune
ronde de DES. Imaginez quelle prenne en entre la paire X et X de diffrence
A X . Les sorties Y et Y ' sont connues et par consquent leur diffrence A Y aussi. La
permutation expansive et la table-P sont toutes les deux connues, A A et A C le sont
6. Il m entionna aussi une caractristique de la cinquim e ta b le -S , mais c est seulement aprs huit
ans que la cryptanalyse pu t exploiter cette caractristique.
7. Pour le D E S, le term e diffrence est dfini par lopration de o u e x c lu s if . Il peut en tre
autrement pou r d autres algorithm es.

12. J)

Cryptanalyse diffrentielle et linaire

303

donc aussi. B et B ' ne sont pas connus mais leur diffrence A B est gale A / l 8. Voici
lastuce : pour tous les A A possibles, toutes les valeurs de C ne sont pas quiprobables.
La combinaison de A A et A C donne des indications sur les bits de A K i et A' KiComme A et A! sont connus, cela nous donne de linformation sur Ki.

ig

12.5 - La fonction rsultant dune ronde de DES

Examinons la dernire ronde du DES. (La cryptanalyse diffrentielle ignore les per
mutations initiales et finales. Elles nont aucun effet sur lattaque mis part celui de
la rendre plus difficile expliquer.) Si nous pouvons dterminer K ie, alors nous avons
48 bits de la clef9. Les 8 autres bits peuvent tre obtenus par recherche exhaustive. La
cryptanalyse diffrentielle nous donnera /C eCertaines diffrences dans les paires de textes en clair ont de fortes chances de rap
paratre dans les paires de textes chiffrs correspondantes. On les appelle caractris
tiques. Les caractristiques stendent sur plusieurs rondes et dfinissent essentielle
ment un chemin travers ces rondes. Il y a une diffrence en entre de chaque ronde
et une diffrence en sortie avec une certaine probabilit.
Vous pouvez trouver ces caractristiques en gnrant un tableau o les lignes corres
pondent aux entres possibles (les combinaisons par ou exclusif de deux ensembles
8. Q uand on regarde la diffrence, les deux oprations de o u e x c lu s if de K z sur A et A ! s annulent.
9. R appelez-vous que la sous-clef de chaque ronde est constitue de 48 des 56 b its de la clef.

304

Chapitre 12

Le D E S

diffrents de bits dentre), les colonnes correspondent aux diffrences en sorties pos
sibles, et chaque case contient le nombre de fois o une sortie particulire est obtenue
pour une entre donne. Vous pouvez gnrer un tel tableau pour chacune des huit
tables-S 1 du DES.
Par exemple la figure 12.6a donne une caractristique dune ronde. La diffrence en
entre du ct gauche est L ; cela peut-tre nimporte quoi. La diffrence en entre du
ct droit est O10. Comme il ny a pas de diffrence lentre de la fonction rsultant
de la ronde, il ny en a pas la sortie. Ainsi, la diffrence du ct gauche est L 0 = L,
et la diffrence du ct droit est 0. C est une caractristiques triviale, qui est vrai avec
probabilit 1 .
La figure 12.6b donne une caractristique moins vidente. La diffrence du ct gauche
est nouveau arbitraire: L. La diffrence du ct droit est 0x60000000; les deux
entres ne diffrent que par le premier et le troisime bits. Il y a une probabilit de
14/64 pour que la diffrence en sortie de ronde soit L 0x00808200. Cela signifie que
la diffrence en sortie est L 0x00808200 du ct gauche et 0x60000000 du ct droit
avec probabilit 14/64.

F ig. 12.6 - Des caractristiques du DES


Des caractristiques diffrentes peuvent tre combines. Et en supposant que les rondes
sont indpendantes, on peut multiplier les probabilits. La figure 12.7 combine les
deux caractristiques dcrites ci-dessus. La diffrence en entre est 0x00808200 du
ct gauche et 0x60000000 du ct droit. A la fin de la premire ronde, la diffrence
en entre et la sortie de la fonction rsultant de la ronde sannulent, laissant une
diffrence en sortie de 0. Cela entre dans la deuxime ronde; la diffrence finale en
sortie est 0x60000000 du ct gauche et 0 du ct droit. Cette caractristique sur deux
rondes a probabilit 16/64.
Une paire de textes en clair qui satisfait la caractristique est une paire juste. Une
paire de textes en clair qui ne la satisfait pas est une paire fausse. Une paire juste
suggrera la bonne clef de ronde (pour la dernire ronde de la caractristique) ; une
10. Les deux entres ont mm e partie droite, ce qui donne une diffrence gale 0.

12-4

305

Cryptanalyse diffrentielle et linaire

A=Y

A=X

A=X

T
A =Y
X = 0x60000000
Y = 0x00808200
A vec probabilit
64

F ig. 12.7 - Une caractristique du DES deux rondes

paire fausse suggrera une clef alatoire. Pour trouver la bonne clef, il suffit rassembler
assez dessais pour quune clef soit suggre plus souvent que les autres. En effet, la
bonne clef se dmarquera des autres alternatives qui sont alatoires.
Ainsi lattaque diffrentielle brute sur le DES n rondes produira la sous-clef de 48
bits utilise la ronde n, et les huit bits restants sont obtenus par recherche exhaustive.
Il reste des problmes importants. Tout dabord les chances de russite sont faibles
avant davoir atteind un certain seuil. Avant davoir obtenu assez de donnes, vous ne
pouvez pas distinguer la bonne clef au milieu de tout le bruit. Ensuite, lattaque est
trop lourde en pratique : il faut utiliser des compteurs pour assigner des probabilit
2 48 sous-clefs diffrentes, la somme de donnes requise est trop importante pour que
cela puisse marcher.
B i i i a m et S h a m i r ont modifi leur attaque. Au lieu d utiliser une caractristique 15
rondes sur le DES 16 rondes, ils ont utilis une caractristique 13 rondes et quelques
astuces pour les rondes restantes. Une caractristique plus courte avec une probabilit
plus grande fonctionnait mieux. Us utilisrent de plus des mathmatiques astucieuses
pour obtenir des clefs candidates de 56 bits qui pouvaient tre testes immdiatement,
ce qui permet de se passer des compteurs. Cette attaque russi ds que la bonne paire
est trouve ; cela vite le seuil et donne une probabilit linaire de succs. Si vous avez
1000 fois moins de paires, vous avez mille fois moins de chances de succs. Cela parat

Chapitre 12

306

Le D ES

terrible, mais c est beaucoup mieux que le seuil. Il reste toujours une petite chance de
succs immdiat.
Les rsultats sont trs intressants. Le tableau 12.14 est un rsum de lattaque contre
le DES avec diffrents nombres de rondes [178].
T ab. 12.14 - Attaques par cryptanalyse diffrentielle contre le DES
Complexit de
lanalyse

2 38

Textes en
clair analyss
4

2 44

2 32*

2 24

2 43

2 14

2 15

11

2 31

2 47

2 32*

12

2 31

2 47

2 21

2 21

13
14
15
16

2 39

2 52

2 32*

2 39

2 5

2 29

2 29

2 47

2 56

27

2 37

2 47

2 55

Nombre de
rondes

Textes en
clair choisis

Textes en
clair connus

2 14

2 24

10

2 36

29

2 37

La complexit de lanalyse peut tre fortement rduite pour ces variantes en


utilisant quatre fois plus de textes en clair avec la mthode de la clique.

La meilleure attaque contre le DES complet 16 rondes ncessite 247 textes en clair
choisis. Ceci peut tre converti en une attaque texte en clair connu, mais qui nces
site 255 textes en clairs connus. De plus cela requiert 237 oprations du DES durant
lanalyse.
La cryptanalyse diffrentielle marche contre le DES et d autres algorithmes similaires
avec des tables-5 constantes. Lattaque dpend fortement de la structures des tablesS ; il se trouve que celles du DES sont optimises contre la cryptanalyse diffrentielle.
Lattaque marche contre le DES sous tous ses modes opratoires - E C B , C B C , CFB
et O F B - avec la mme complexit [178].
La rsistance du DES peut tre amliore en augmentant le nombre de rondes. La
cryptanalyse diffrentielle ( texte en clair choisi) contre le DES avec 17 ou 18 rondes
prend peu prs le mme temps que la recherche exhaustive [167]. Avec 19 rondes
ou plus, la cryptanalyse diffrentielle devient impossible car elle ncessite plus de 2 64
textes en clair choisis : rappelez-vous que le DES utilise des blocs de 64 bits, de sorte
quil ny a que 2 64 textes en clair possibles11.
Voici quelques points importants. Premirement, lattaque est largement thorique. Le
temps norme et les donnes requises pour monter une attaque cryptanalytique diff
rentielle mettent celle-ci hors de porte de presque tout le monde: pour collecter les
donnes ncessaires cette attaque, il faut chiffrer, au taux de 1,5 mgabit par seconde,
un flot de textes en clair choisis pendant presque trois ans. Deuximement, ce doit tre
une attaque texte en clair choisi. La cryptanalyse diffrentielle marche aussi pour une
attaque texte en clair connu, mais vous devez parcourir toutes les paires texte en
clair-texte chiffr pour trouver celles qui conviennent. Pour un DES complet 16
11. En gnral, on prouve q u un algorithm e rsiste la cryptanalyse diffrentielle en prouvant que
le nom bre de textes en clair ncessaires pou r l'attaque est plus grand que le nom bre de textes en clair
possibles.

12. J,

Cryptanalyse diffrentielle et linaire

307

rondes, cela rend lattaque lgrement moins efficace que lattaque exhaustive (lat
taque cryptanalytique diffrentielle ncessite 2 5 5 ,1 oprations et lattaque exhaustive
255 oprations). Tout le monde admet que le DES correctement ralis est encore sr
par rapport la cryptanalyse diffrentielle.
Pourquoi le DES est-il si rsistant la cryptanalyse diffrentielle? Pourquoi les tablesS sont-elles optimises pour rendre cette attaque aussi difficile que possible? Pourquoi
comporte-t-il le nombre de rondes ncessaires mais ni plus ni moins? Parce que les
concepteurs taient au courant. Don C o p p e r s m i t h dIB M a rcemment crit [376,
379] :
La conception tirait avantage de certaines techniques cryptanalytiques,
plus prcisment la technique de cryptanalyse diffrentielle qui nap
paraissait pas dans la littrature publie. Aprs des pourparlers avec la
NSA, il fut dcid que la divulgation des considrations utilise pour la
conception rvlerait la technique de cryptanalyse diffrentielle, une tech
nique puissante qui pouvait tre utilise contre de nombreux algorithmes
de chiffrement. Cela aurait altr lavantage comptitif sur dautres pays
dont les Etats-Unis jouissaient dans le domaine de la cryptographie.
Adi S h a m i r rpondit cela en mettant C o p p e r s m i t h au dfi de dire quil navait pas
trouv dattaque plus puissante depuis lors. COPPERSMITH a choisi de rester silencieux
ce propos [1431].

Cryptanalyse par clefs corrles


Le tableau 12.3 donne le nombre de bits de dcalage de la clef aprs chaque ronde : 2
bits aprs chaque ronde, except 1 bit aprs les rondes 1, 2, 9 et 16. Pourquoi?
La c r y p t a n a l y s e p a r c l e f s c o r r l e s examine les diffrences entre des clefs diff
rentes, comme la cryptanalyse diffrentielle. Cette attaque est diffrente de toutes les
attaques dj prsentes : le cryptanalyste choisit une relation entre une paire de clefs,
mais ne choisit pas les clefs elles-mmes. Les donnes sont chiffres avec les deux clefs.
Dans la version texte en clair connu, le cryptanalyste connat le texte en clair et le
texte chiffr de donnes quelconques chiffres avec la clef. Dans la version texte en
clair choisi, le cryptanalyste a la possibilit de choisir les textes en clair chiffrs avec
les deux clefs.
Un DES modifi, o la clef est dcale de 2 bits aprs chaque ronde, est moins sr.
Eli B i h a m a dvelopp une attaque par clefs corrles qui casse cette variante en
utilisant 2 1 7 clefs choisies - textes en clair choisis, ou 2 3 3 clefs choisies - textes en clair
connus [165, 169].
Cette attaque nest pas ralisable, mais elle est intressante pour trois raisons. Tout
dabord, c est la premire attaque contre le systme de gnration de sous-clefs de
lalgorithme. Deuximement, cette attaque est indpendante du nombre de rondes de
lalgorithme ; elle est tout aussi efficace sur le DES 16, 32 ou 1000 rondes. Et troisi
mement, le DES rsiste cette attaque. Les variations dans les rotations contrecarrent
la cryptanalyse par clefs corrles.

Chapitre 12

308

Le D E S

Cryptanalyse linaire
La c r y p t a n a l y s e l i n a i r e est un autre type d attaque cryptanalytique invente par
Mitsuru M a t s u i [1024, 1026, 1025]. Cette attaque utilise des approximations linaires
pour dcrire laction dun algorithme de chiffrement par blocs (en loccurrence, le DES).
Cela veut dire que si vous combinez par ou exclusif une partie des bits du texte en clair,
une partie des bits du texte chiffr, puis les deux rsultats ensembles, vous obtenez un
simple bit qui est la combinaison par ou exclusif de certains bits de la clef. Ceci est une
approximation linaire qui est valide avec une probabilit p. Si p ^ 1/ 2 , il est possible
dexploiter ce biais. En rassemblant des textes en clair et leurs textes chiffrs associs,
vous pouvez devinez la valeur des bits de la clef. Plus vous rassemblez de donnes, plus
votre clef suppose est fiable. Plus le biais est important, plus les chances de succs
sont grandes, pour la mme quantit de donnes.
Comment trouver de bonnes approximations linaires pour le D E S? Trouvez de bonnes
approximations linaires sur une ronde, puis et joignez les ensembles12. Regardons les
tables- S. Il y a 6 bits en entre et 4 en sortie. Les bits en entre peuvent tre combins
de 63 manire utiles (2 6 1), et ceux en sortie peuvent tre combins de 15 manire
utiles. Maintenant, pour chaque table-5, vous pouvez estimez pour une entre choisie
alatoirement la probabilt quune combinaison par ou exclusif en entre soit gale
une combinaison par ou exclusif en sortie. Sil y a une combinaison prsentant un biais
assez important, alors la cryptanalyse linaire peut marcher.
Si les approximations linaires ne sont pas biaises, alors elles sont valides pour 32
des 64 entre possibles. Je vous pargne les pages de tables, mais sachez que la tableS la plus biaise est la cinquime. Plus prcisment, le deuxime bit est gal la
combinaison par ou exclusif des 4 bits d entre pour seulement 12 entres. Ceci se
traduit par une probabilit de 3/16, ou un biais de 5/16, et constitue le biais le plus
extrme de toutes les tables-S1. ( S h a m i r avait remarqu cela [1430], sans trouver de
moyen de lexploiter.)
La figure 12.8 montre comment faire de cela une attaque contre la fonction rsultant
dune ronde de DES. Le bit en entre de la cinquime table-S est f>26 13- Les 4 bits
de sortie de la cinquime table-S sont Cn, c 1 g, C19 et c2o Nous pouvons suivre le bit
f>26 de lentre la table-S. Le bit a 26 est combin par ou exclusif au bit K z^6 de
la sous-clef pour obtenir f>26. Et le bit X n devient a 2 6 via la permutation expansive.
Aprs la table-S, les 4 bits de sortie deviennent via la table-P 4 des bits de sortie de la
fonction rsultant de la ronde: I 3 , lg , E14 et Y25. Cela signifie que lquation suivante
est vrifie avec probabilit 1/2 5/16 :
X n L3 L3 5^8 E14 Y25 R i ,26

Les approximations linaires de diffrentes rondes peuvent tre combines dune ma


nire similaire celle prsente pour la cryptanalyse diffrentielle. La figure 12.9 est
une approximation sur 3 rondes avec une probabilit de 1/2 0,0061. Chaque approxi
mation est de qualit variable : la dernire est trs bonne, la premire est assez bonne,
et celle du milieu est mauvaise. Mais les trois approximations sur une ronde ensembles
donnent une trs bonne approximation sur trois rondes.
12. Vous pouvez nouveau ignorer les perm utations initiale et finale qui n affectent pas l attaque.
13. Je num rote les bits de gauche droite et de 1 64. M a t s l 'I n a pas tenu com pte de cette
convention avec le D E S, et il num rote ses bits de droite gauche et de 0 63. C ela suffirait vous
rendre fou.

12.J,

Cryptanalyse diffrentielle et linaire

F ig .

309

12.8 - Une approximation linaire sur une ronde du DES.

Lattaque de base consiste utiliser la meilleure approximation linaire du DES 16


rondes. Cela requiert 247 blocs de textes en clair connus, et donnera un bit de la clef.
Ce n est pas trs utile. Si vous changez le rle du texte en clair et du texte chiffr, et
si vous utilisez le dchiffrement au lieu du chiffrement, vous pouvez obtenir deux bits
de la clef. Ce n est toujours pas trs utile.
Il est posible daffiner la technique. Utilisez une approximation linaire sur 14 rondes
pour les rondes 2 15. Devinez les 6 bits de la sous-clef correspondant la cinquime
table-S pour la premire ronde et la dernire (cela fait 12 bits de la clef en tout). En
fait, vous effectuez 2 12 cryptanalyss linaires en parallle et vous slectionnez la bonne
vis vis des probabilits. Cela donne les 12 bits et 626 en plus, et en inversant texte en
clair et texte chiffr, on obtient 13 autres bits. Pour trouver les 30 bits restant, utilisez
une recherche exhaustive. Il y a dautres astuces, mais le principe de base est l.
Utilise contre le DES 16 rondes, cette attaque permet de trouver la clef avec 243
textes en clair connus en moyenne. Une ralisation logicielle de cette attaque a dcou
vert une clef de DES en 50 jours avec 1 2 stations de travail HP9735. C est lattaque
la plus efficace contre le DES au moment dcrire ces lignes.
La cryptanalyse linaire dpend fortement de la structure des tables-S 1 et celles du
DES ne sont pas optimises contre ce type dattaques. En fait lordre des tables-S
choisi pour le DES figure parmi les 9 16 % de ceux qui offrent le moins de protection

310

Chapitre 12

17

A =[3,8,14,25]

B = [8 ,14,25]

Le D ES

________ avec probabilit 1/2+6,1_________

F i g . 12.9 - Une approximation linaire sur trois rondes du DES.

contre la cryptanalyse linaire [1027]. Selon Don COPPERSMITH [376, 379], la rsistence
la cryptanalyse linaire ne faisait pas parti des critres de conception du DES .
Soit ils navaient pas connaissance de la cryptanalyse linaire, soit ils connaissaient une
autre technique encore plus puissante dont le critre de rsistence prenait le dessus.
La cryptanalyse linaire est plus rcente que la cryptanalyse diffrentielle, et elle peut
connatre plus d amliorations de performances durant les prochaines annes. Quelques
ides sont proposes dans [1281, 801], mais il nest pas clair quelles puissent tre
utilises contre le DES complet. Cependant, elles fonctionnent trs bien contre les
variantes avec moins de rondes.

12.5

Les critres rels de conception

311

Directions futures
Certains travaux ont vis tendre le concept de cryptanalyse diffrentielle un niveau
plus haut de diffrentielles [703, 168, 938, 858, 861]. Lars K n u d s e n utilise ce quil
appelle les diffrentielles partielles pour attaquer le DES 6 rondes ; cela ncessite 32
textes en clair choisis et 20000 chiffrement [861]. C est encore trop rcent pour savoir
si ces extensions faciliteront lattaque du DES 16 rondes.
Une autre voie d attaque est la c r y p t a n a l y s e d i f f r e n t i e l l e - l i n a i r e qui consite
combiner la cryptanalyse diffrentielle et la cryptanalyse linaire. Susan L a n G F O R D
et H e l l m a n ont une attaque contre le DES 8 rondes qui trouve 10 bits de la clef
avec une probabilit de succs de 80 avec 512 textes en clair choisis et une probabilit
de succs de 95 avec 768 textes en clair choisis [949]. Aprs lattaque, une recherche
exhaustive de lespace des clefs restantes (246 clefs possibles) est ncessaire. Si cette
attaque est comparable en temps aux attaques prcdentes, elle ncessite beaucoup
moins de textes en clair. Cependant, elle ne semble pas stendre facilement plus de
rondes.
Mais cette attaque est encore rcente et le travail continue. Il est possible quil y ait
une perce dans les annes venir. Il est possible que la combinaison de cette attaque
avec la cryptanalyse diffrentielle de haut niveau puisse porter ses fruits. Qui sait?

12.5

Les critres rels de conception

Une fois la cryptanalyse diffrentielle devenue publique, IB M publia les critres de


conception des tables-S' et des tables-P [376, 379]. Les critres pour les tables-S' sont:
Chaque table-S 1 prend

bits en entre et 4 en sortie14.

Aucun bit de sortie dune table-S' ne devrait sapprocher dune fonction linaire
des bits d entre.
- Si lon fixe les bits les plus gauche et les bits les plus droite dune table-S1,
et si lon fait varier les 4 bits du milieu, toutes les sorties possibles de 4 bits sont
obtenues exactement une fois.
- Si deux vecteurs d entre une table-S ne diffrent que d un bit, les vecteurs de
sortie doivent diffrer dau moins deux bits.
- Si deux vecteurs dentre une table S ne diffrent que par les deux bits du
milieu, les vecteurs de sortie doivent diffrer dau moins deux bits.
Si deux vecteurs dentre une table-S 1 diffrent par les deux premiers bits et
sont identiques sur les deux derniers, les vecteurs de sortie ne doivent pas tre
les mmes.
- Pour toute diffrence non nulle entre deux vecteurs dentre, parmi les 32 paires
possibles de vecteurs prsentant cette diffrence, au plus 8 doivent donner la
mme diffrence en sortie.
Un critre similaire au prcdent, mais dans le cas de trois tables-S 1 actives.
14. C tait la taille m axim ale intgrable dans une pu ce avec la technologie de 1974.

312

Chapitre 12

Le DES

Les critres pour les tables-P sont r


Les quatre bits de sortie de la table .S' de la ronde i sont distribus de manire
que deux dentre eux affectent les deux bits du milieu de la table-S^ de la ronde
i + 1 et que les deux autres en affectent les deux derniers bits.
- Les quatre bits de sortie de chaque table-S' affectent six autres tables S ; deux
dentre eux naffectent jamais la mme table-S.
- Si le bit de sortie dune table-S affecte lun des deux bits du milieu dune autre
table-S, alors aucun bit de sortie de cette autre table S ne peut affecter lun des
bits du milieu de la premire table-S.
Larticle continue sur lexplication des critres. Il est assez facile de gnrer des tablesS de nos jours, mais cela constituait une tche hardue au dbut des annes 1970. Une
citation de T u c h m a n rvle quils ont fait des tourner des ordinateurs durant des mois
pour mitonner les tables S.

12.6

Variantes du DES

Surchiffrement DES
Certaines ralisations utilisent le DES triple (voir figure 12.10). Comme le DES nest
pas un groupe, le texte chiffr rsultant est plus difficile retrouver par recherche
exhaustive : 2 1 1 1 tentatives au lieu de 256. Voir le paragraphe 8.2 pour plus de dtails.

FiG. 12.10

DES triple

Le DES avec des sous-clefs indpendantes


Une autre variante utilise une sous-clef diffrente pour chaque ronde, au lieu de les
engendrer partir d une seule clef de 56 bits [902]. Comme il faut 48 bits de clef

12.6

Variantes du D E S

SIS

chacune des 16 rondes, cela signifie que la longueur de clef de cette variante est de 768
bits. Cette variante augmenterait radicalement la difficult dune attaque exhaustive
contre lalgorithme; cette attaque aurait une complexit de 2 768.
Cependant, une attaque par collisions (voir 15.1) est possible. Cela rduit la com
plexit de lattaque 2 384 ; ce qui est encore assez grand pour toute exigence de scurit
concevable.
Bien que lutilisation de sous-clefs indpendantes contrecarre la cryptanalyse linaire,
la cryptanalyse diffrentielle sapplique encore cette variante qui peut tre casse avec
261 textes en clair choisis (voir le tableau 12.15) [174, 178]. Il semble quil nexisterait
aucune modification du plan de gnration de clefs qui puisse rendre le DES beaucoup
plus fort.

DESX
DESX est une variante du DES de la R S A D a t a S e c u r i t y , I n c . qui a t incluse
dans le programme de courrier lectronique sr M a i l S a f e en 1986 et la bote
outils B SA FE en 1987. Le D E S X utilise une technique appele le blanchiment (voir
15.6) pour embrouiller les entres et les sorties du DES. En plus de la clef de DES de
56 bits, le D E SX a une clef de blanchiment de 64 bits. Ces 64 bits sont combins par
ou exclusif au texte en clair avant la premire ronde du DES. 64 bits supplmentaires,
calculs laide d une fonction sens unique partir de la clef totale de 1 2 0 bits, sont
combins par ou exclusif au texte chiffr aprs la dernire ronde [162]. Le blanchiment
rend le D E S X nettement plus fort que le DES contre une attaque exhaustive ; lattaque
fera 2120/n oprations avec n textes en clair connus. Il augmente aussi la scurit face
la cryptanalyse diffrentielle et la cryptanalyse linaire ; ces attaques ncessitent
261 textes en clair choisis et 260 textes en clair connus respectivement [1350].

crypt(3)
CRYPrr(3 ) est une variante du DES que lon trouve dans les systmes U NIX. Elle est

principalement utilise comme fonction sens unique pour les mots de passe, mais elle
est aussi parfois utilise pour le chiffrement. A la diffrence du DES, CRYPT(3) a une
permutation expansive qui dpend de la clef avec 2 1 2 permutations possibles. Le but
initial tait d empcher lutilisation des puces DES disponibles dans le commerce pour
construire un casseur de mots de passe.

Le DES gnralis
Le DES gnralis (G D E S pour Generaltzed DES >) a t invent la fois pour ac
clrer le DES et pour renforcer lalgorithme [1386, 1387]. La taille des blocs augmente
tandis que la quantit de calcul reste constante.
La figure 12.11 donne le diagramme du G DES. Le G D E S opre sur des blocs de taille
variable de texte en clair. Les blocs chiffrer sont diviss en q sous-blocs de 32 bits
dont le nombre exact dpend de la taille globale (il est libre, mais doit tre fix pour
chaque ralisation). En gnral, q est gal la taille de bloc divis par 32.
La fonction f est calcule une fois par ronde sur le bloc le plus droite. Le rsultat
est combin par ou exclusif avec toutes les autres parties, qui sont alors dcales
circulairement vers la droite. Le G D E S utilise un nombre variable de rondes, n. Il y a

Chapitre 12

314

Le DES

Texte en clair

i
*o(I)

V 2)

*o(3)

- V

'

^X

i
x

,r

B,(q-o

b,<3>

*!>

i
B 0(V

k2
B2l 0

2<2>

[ g 2(q-nj

b 7(q)

\ _


tld)

(2)

B, (3)

~ ~ r~

Texte chiffr

F i g . 12.11

- Aperu du G D ES

une lgre modification pour la dernire ronde, de manire ce que le chiffrement et


le dchiffrement ne diffrent que par lordre des sous-clefs (tout comme le DES). En
fait, si q = 2 et n 16, c'est le DES.
B i h a m et S h a m i r [174, 175] ont montr quen utilisant la cryptanalyse diffrentielle,
le G DES avec q = 8 et n = 16 peut tre cass avec seulement 6 textes en clair
choisis. Si des sous-clefs indpendantes sont aussi utilises, 16 textes en clair choisis
sont ncessaires. Le G D E S avec q = 8 et n = 22 peut tre cass avec 48 textes en clair
choisis, et casser le G D ES avec q = 8 et n = 31 ne ncessite que 500000 textes en clair
choisis. Mme le G D E S avec q 8 et n = 64 est plus faible que le DES ; il faut 249
textes en clair choisis pour le casser. En fait, tout schma G D E S qui est plus rapide
que le DES est aussi moins sr (voir le tableau 12.15).

Une variante de ce concept a rcemment vu le jour [1593]. Il est probable quelle ne


soit pas plus sre que le GDES original. En gnral, toute variante du DES largeur
de bloc plus grande qui est plus rapide que le DES a de grandes chances d tre aussi
moins sre que le DES.

12.6

Variantes du D E S

315

DES avec d autres tablesS


Dautres modifications du DES sont centres sur les tables-S. Certaines conceptions
rendent lordre des tables-S variable. D autres concepteurs ont rendu le contenu des
tables-S lui-mme variable. B i h a m et S h a m i r montrrent [177, 178] que la concep
tion des tables-S, ainsi que leur ordre lui-mme taient optimiss pour rsister la
cryptanalyse diffrentielle :
Le changement de lordre des huit tables-S du DES (sans changer leur
valeur) rend aussi le DES nettement plus faible: le DES avec 16 rondes
d un autre ordre particulier peut tre cass en 238 tapes environ... On
peut montrer que le D ES avec des tables-S alatoires est trs facile
casser. Mme des changements minimes dune entre dune table-S du DES
peuvent rendre le DES plus facile casser.
Les tables-S du D ES nont pas t optimises contre la cryptanalyse linaire. Il existe
de meilleures tables-S que celles qui vont avec le DES, mais choisir en aveugle de
nouvelles tables-S est une mauvaise ide.
Le tableau 12.15 [174, 176] donne la liste de quelques modifications du DES et le
nombre de textes en clair choisis ncessaires pour en faire la cryptanalyse diffrentielle.
Une modification non voque dans la liste qui consiste combiner les moitis de droite
et de gauche en utilisant laddition modulo 24 au lieu du ou exclusif est 2 17 fois plus
difficile casser que le DES [690].

Tab.

12.15

Attaques par cryptanalyse diffrentielle contre des variantes du DES

Opration modifie
DES complet (aucune modification)
Permutation-P
Permutation identit
Ordre des tables-S
Ou exclusif par addition
Tables S :
Alatoires
Permutations alatoires
Une entre
Tables uniformes
Suppression de lexpansion E
Ordre de E et ou exclusif de sous-clef
G D E S (largeur q = 8) :
16 rondes
64 rondes
^i n
t
r
t

Nombre de textes en clair choisis1


247 (clef dpendante)
Ne peut pas tre restreint
2I9
2ss
239, 231
218 --- 220
2S3 _ 241
233
226
226
244
6, 16
249 (clef indpendante)

le o u e x c l u s i f est remplac par laddition ; des entres spares par un trait d union
indiquent lintervalle du nombre de textes en clair choisis ncessaires en fonction
des nombres alatoires.

316

Chapitre 12

Le DES

RDES
RDES est une variante du DES o lchange des moitis gauche et droite nest pas
toujours fait, cela dpend de la clef [893]. Les changes sont fixs en fonction de la clef
uniquement. Cela veut dire quil y a 215 possiblits pour les 15 changes dpendants de
la clef, et que la variante ne rsiste pas la cryptanalyse diffrentielle [817, 894, 119].
Le R D E S possde de nombreuses clefs faibles. En fait, presque toutes les clefs sont
plus faibles quune clef typique du DES. Cette variante ne devrait pas tre utilise.
Une meilleure ide consiste n changer qu lintrieur de la moiti de droite au dbut
de chaque ronde. Une autre ide prfrable consiste faire dpendre les changes des
donnes en entre au lieu dune fonction statique de la clef. 11 y a nombre de variantes
possibles [814, 815]. Dans le R D E S-1, les changes dpendent des donnes de par le
mot de 16 bits au dbut de chaque ronde. Dans le R D ES-2, il y a change des octets
dpendant des donnes au dbut de chaque ronde aprs les changes sur 16 bits comme
dans le R D E S-1. Et ainsi de suite jusquau R D ES-4. R D ES-1 est sr la fois contre
la cryptanalyse diffrentielle [815] et la cryptanalyse linaire [1145]. On peut prsumer
que le R D E S-2 et les versions suivantes le sont aussi.

snDES
Un groupe de chercheur korens, men par Kwangjo K i m , a essay de trouver un jeu
de tables-S sres de manire optimale la fois contre la cryptanalyse diffrentielle et
la cryptanalyse linaire. Leur premire proposition, connue sous le nom de s2DES, fut
prsente dans [835] et on prouva quelle tait pire que le DES en ce qui concerne la
cryptanalyse diffrentielle [857, 858], Leur proposition suivante, s3DES fut prsente
dans [838] et on prouva quelle tait pire que le DES en ce qui concerne la cryptanalyse
linaire [854, 1498, 1535, 858, 839]. B i h a m suggra un changement mineur rendant le
.s3DES sr la fois contre la cryptanalyse linaire et la cryptanalyse diffrentielle [172].
Le groupe est retourn ses ordinateurs et a dvelopp de meilleures techniques pour
la conception de tables-S [837, 840]. Ils ont propos par la suite le s4DES [836] et le
s5DES [839, 955].
Le tableau 12.16 donne les tables-S du .s3DES avec les tables-S 1 et 2 inverses, qui
sont sres la fois face la cryptanalyse diffrentielle et la cryptanalyse linaire. Insrer
cette variante dans un DES triple irritera coup sr les cryptanalystes.

Le DES avec des tablesS dpendantes de la clef


Les cryptanalyss diffrentielle et linaire ne marchent que si le cryptanalyste connat
la composition des tables S . Si les tables-S sont dpendantes de la clef et choisie par
une mthode cryptographiquement sre, alors les cryptanalyss diffrentielle et linaire
sont bien plus difficiles. Noubliez pas cependant que des tables-S alatoires ont des
caractristiques diffrentielle et linaire assez pauvres ; mme si elles sont secrtes.
Voici une mthode pour utiliser une clef additionnelle de 48 bits afin de gnrer des
tables-S rsistantes la fois aux cryptanalyss diffrentielle et linaire [172].
1. Rordonner les tables S : 2, 4, 6, 7, 3, 1, 5, 8.
2. Slectionner 16 des bits restants de la clef. Si le premier bit est 1, intervertir
les deux premires lignes de la table-S 1 avec les deux dernires lignes de la

12.6

317

Variantes du D E S

Tab.

Table-S
13 14
8
2
14
9
1
4
Table-S
15
8
6 15
9 14
10
5
Table-S
3
13
4 13
5
6
1 11
Table-S
9
0
5 10
10
7
3
9
Table-S
5 15
6
9
15
0
12
5
Table-S
4
3
14 13
13
0
1 7
Table-S
4 10
10 15
2 12
12
6
Table-S
13 10
2
7
4 13
8 11

12.16 - Tables-S du s3DES o les tables-S 1 et 2 sont renverses


1:
0
11
3
14
2:
3
9
5
3
3:
11
1
8
7
4:
7
12
9
15
5:
9
3
10
0
6:
7
11
10
4
7:
15
6
9
3
8:
0
13
14
7

3
13
10
7

10
4
0
11

4
1
7
13

7
14
13
8

9
7
4
2

11
5
8
6

8
15
5
3

12
0
6
5

6
3
15
10

1
10
11
12

15
6
12
0

2
9
1
15

5
12
2
9

14
5
8
15

4
3
2
12

2
12
4
9

9
10
15
0

5
0
3
6

0
13
10
1

11
8
7
2

10
4
6
8

1
11
13
4

13
14
1
11

7
2
11
14

6
1
12
7

12
7
0
13

5
8
11
2

14
7
13
8

8
2
14
13

0
14
3
4

6
11
0
14

4
15
9
6

15
10
2
12

1
12
4
10

12
3
1
15

7
9
10
3

2
5
7
0

10
0
15
9

9
6
12
5

11
6
12
0

12
0
5
6

5
15
0
10

10
3
6
5

6
9
11
12

15
8
3
14

3
13
14
2

1
11
4
1

14
1
2
7

2
7
8
13

8
2
13
4

4
14
15
8

13
4
1
11

10
15
9
6

0
5
3
15

3
12
5
10

14
0
4
9

4
10
14
3

2
8
8
7

12
7
11
2

7
13
1
14

1
4
7
11

13
2
6
8

6
11
12
1

8
14
13
4

U
1
2
13

10
4
9
14

9
2
4
11

0
7
3
8

14
1
7
13

13
8
14
2

15
9
1
10

5
10
15
12

12
5
6
3

6
3
12
5

2
15
8
6

11
0
5
15

1
12
11
0

8
6
2
9

12
0
6
9

2
5
15
0

9
3
10
5

1
12
4
10

6
9
1
15

11
1
5
2

5
8
11
13

0
11
3
4

3
13
0
14

7
14
8
7

14
4
7
11

13
7
14
1

8
2
13
8

7
1
0
14

3
4
9
2

9
14
3
4

14
11
7
13

4
8
10
1

2
15
1
6

15
12
8
5

12
6
2
9

1
10
11
0

5
9
15
12

6
5
5
15

11
0
12
3

8
3
6
10

Chapitre 12

318

Le DES

table- S 1. Si le deuxime bit est 1, intervertir les huits premires colonnes de


la tables-S 1 avec les huits dernires. Faire de mme pour la table S 2 avec les
troisime et quatrime bits. Et ainsi de suite pour les tables-S 3 8.
3. Prendre les 32 bits restants. Combiner les quatre premiers par ou exclusif avec
chaque entre de la table-S 1, les quatre suivants avec chaque entre de la tableS 2, et ainsi de suite.
La complexit d une cryptanalyse diffrentielle contre ce systme est 251, la complexit
dune cryptanalyse linaire est 253, la complexit d une recherche exhaustive est 2102.
Ce qui est apprciable avec cette variante est quelle peut tre ralise avec du matriel
existant. Plusieurs vendeurs de puces DES proposent des puces avec des tables-S1
chargeables. On peut appliquer cette mthode de gnration des tables-S1en dehors de
la puce et les charger ensuite. Les cryptanalyss diffrentielle et linaire sont infaisables
vu le nombre de textes en clairs connus ou choisis quelles mettent en jeu, et une
recherche exhaustive est inconcevable tout cela sans pnaliser la rapidit.

12.7

A quel point le DES est-il sr de nos


jours ?

La rponse est la fois facile et difficile. Dans la rponse facile, on ne regarde que
la longueur de la clef (voir 7.1). Une attaque exhaustive mene par une machine
spcialement ddie cela ne prend que 3,5 heures en moyenne et la machine ne cote
que un million de dollars en 1993 [1599, 1600]. Le DES est si rpendu quil est naf de
croire que la NSA et ses homologues nont pas construit une telle machine. Et rappelez
vous que le cot sera divis par 5 tous les dix ans. Le DES deviendra de moins en moins
sr avec le temps qui passe.
Dans la rponses difficile, on essaye d estimer les techniques cryptanalytiques. La cryp
tanalyse diffrentielle tait connue de la NSA longtemps avant le milieu des annes
1970, quand le DES devint un standard pour la premire fois. Il est naf de croire que
les thoriciens de la NSA sont rest inactifs depuis lors ; ils ont certainement dve
lopp des techniques cryptographiques nouvelles qui sappliquent au DES. Mais il ny
a aucun fait, seulement des rumeurs.
Winn SCHWARTAU a crit que la NSA avait construit une machine casser le DES
massivement parallle ds le milieu des annes 1980 [1409]. Au moins une telle ma
chine a t construite par Harris C o r p avec un C r a y Y -M P comme superviseur. U
existe probablement une srie d algorithmes permettant de rduire la complexit dune
attaque exhaustive de plusieurs ordres de grandeur. Des algorithmes contextuels, ba
ss sur le fonctionnement interne du DES, peuvent liminer des ensembles de clef
possibles sur la base de solutions partielles. Des algorithmes statistiques rduisent la
taille effective de la clef davantage encore. Et dautres algorithmes essayent des clefs
probables mots, code A SC II imprimable, etc. (voir 8.1). La rumeur dit que la NSA
peut casser le DES en 3 15 minutes, selon la puissance de calcul dont ils disposent.
Et ces machines ne coteraient que 50000 $ chacune en grosse quantit.
Une rumeur diffrente insinue que la N SA possde une large bibliothque de textes en
clair et de textes chiffrs, ces experts peuvent effectuer une sorte de calcul statistique
et se diriger ensuite vers une batterie de disques optiques pour rcuprer la clef.

12.7

A quel point le D E S est-il sr de nos jours?

319

Ce ne sont que des rumeurs, mais elles ne me rassurent pas propos du DES. Il a
juste t une cible trop importante pendant trop longtemps. Presque nimporte quelle
modification du DES sera plus ennuyeuse ; il se peut que lalgorithme rsultant soit
plus facile casser, mais la N SA naura peut-tre pas les ressources pour se consacrer
au problme.
Ma recommandation est d utiliser la construction de B i h a m pour des tables -S d
pendantes de la clef. Elle est facile raliser en logiciel et dans les puces qui ont des
tables- S chargeables, et elle prsente les mmes performances que le DES. Elle acrot
la rsistance de lalgorithme contre une attaque exhaustive, rend les cryptanalyss dif
frentielle et linaire plus difficiles, et donne la N SA quelque chose daussi solide que
le DES mais diffrente pour soccuper.

Chapitre 13

Autres algorithmes
de chiffrement pair blocs
13.1

Lucifer

la fin des annes 1960, IB M lana un programme de recherche en cryptographie,


du nom de L u c i f e r , men p a r Horst F e i s t e l puis p a r Walt T u c h m a n . L u c i f e r est
aussi un algorithme de chiffrement par blocs n de ce projet au dbut des annes 1970
[1489, 1491], En fait, il existe au moins deux algorithmes diffrents portant ce nom
[554, 1499]. Et [554] laissait quelques lacunes dans les spcifications. Tout cela a cr
pas mal de confusion.
LU CIFER est un rseau de substitution-permutation constitu de briques de base simi
laires au DES. Dans le DES, la sortie de la fonction / est combine par ou exclusif
avec lentre de la ronde prcdente, ce qui donne lentre de la ronde suivante. Les
tables- S de L u c i f e r prennent quatre bits en entre et quatre bits en sortie ; lentre
des tables-S est une permutation au niveau des bits de la sortie des tables-S de la
ronde prcdente ; lentre des tables-S de la premire ronde est le texte en clair. Un bit
de la clef est utilis pour choisir la table-S utiliser parmi deux tables-S possibles1.
Contrairement au D ES, il ny a pas de moyens dchange entre les rondes, et les blocs
ne sont pas coups en deux. L u c i f e r est dot de 16 rondes, des blocs de 128 bits, et
dune gestion de clef plus simple que celle du DES.
En utilisant la cryptanalyse diffrentielle contre la premire version de L u c i f e r , B i h a m
et S i i a m i r ont montr que L u c i f e r avec des blocs de 32 bits et 8 rondes pouvait
tre cass par 40 textes en clair choisis et 229 tapes; la mme attaque peut casser
L u c i f e r avec des blocs de 128 bits et 8 rondes par 60 textes en clair choisis et 253
tapes. Une autre attaque cryptanalytique diffrentielle cassa L u c i f e r 128 bits et
18 rondes par 24 textes en clair choisis et 221 tapes. Toutes ces attaques utilisent les
tables-S1solides du DES. En utilisant la cryptanalyse diffrentielle contre la deuxime
mouture, ils trouvrent que les tables-S1 taient nettement plus faibles que celles du
DES. Des analyses plus pousses ont montr que plus de la moiti des clefs possibles
ntaient pas sres [119]. Lattaque clefs corrles peut casser L u c i f e r 128 bits,
1. Dans L u c ife r , cela est reprsent par une seule t a b le -T avec 9 bits en entre et 8 bits en sortie.

Chapitre 13

322

Autres algorithmes de chiffrement par blocs

avec nimporte quel nombre de rondes, par 233 clefs choisies-textes en clair choisis ou
par 265 clefs choisies-textes en clair connus [165]. La deuxime version de L u c ife r est
encore moins fiable [177, 178, 119].

Certaines personnes croient que L u c i f e r est plus sr que le DES cause de la longueur
de la clef et du manque de rsultats publis. Ce nest clairement pas le cas.
Aux Etats-Unis, L u c i f e r est couvert par plusieurs brevets : [555, 557, 556, 1490]. Tous
ont expir.

13.2
W.E. M

Madryga
adryga

pro po sa cet algorithm e de chiffrem ent p a r blocs en 1984 [1008].

Il

est efficace p o u r des ralisations logicielles : il n y a pas de perm utations gnantes, et


toutes les oprations sont effectues sur des octets.

Ses objectifs de conception mritent d tre cits :


1. Le texte en clair ne peut pas tre obtenu partir du texte chiffr sans lusage de
la clef. (Cela veut seulement dire que lalgorithme est sr.)
2. Le nombre doprations ncessaires pour dterminer la clef partir d un chan

tillon de textes en clair et textes chiffrs doit tre gal (statistiquement) au pro
duit du nombre doprations pour un chiffrement par le nombre de clefs possibles.
(Cela veut dire quil ne peut pas y avoir d attaque texte en clair plus efficace
que tattaque exhaustive.)
3. La connaissance de lalgorithme ne doit pas diminuer son niveau de scurit.
(Toute la scurit rside dans la clef.)
4. Un changement dun bit de la clef doit produire des changements radicaux dans
le texte chiffr d un mme texte en clair, et un changement dun bit du texte en
clair doit produire des changements radicaux dans le texte chiffr avec une mme
clef. (On appelle cela leffet davalanche.)
5. Lalgorithme doit contenir une combinaison non commutative de substitutions et
permutations.
6. Lalgorithme doit contenir des substitutions et des permutations contrles la
fois par les donnes d entre et par la clef.
7. Des groupes de bits redondants dans le texte en clair doivent tre compltement

masqus dans le texte chiffr.


8. La longueur du texte chiffr doit tre la mme que celle du texte en clair.
9. Il ne doit pas y avoir la moindre relation simple entre les clefs possibles et leurs
effets sur le texte chiffr.
10. Toutes les clefs possibles doivent donner un systme de chiffrement sr. (Il ne
doit pas y avoir de clefs faibles.)
11. La longueur de la clef et celle du texte doivent tre ajustables pour satisfaire les
exigences des applications et les niveaux de scurit requis.

13.2

M adryga

323

12. L algorithme doit tre ralisable efficacement sur les gros ordinateurs centraux,
les mini-ordinateurs, les micro-ordinateurs et sur les dispositifs logiques2.
Le DES satisfaisait dj les objectifs 1 9, mais les trois derniers taient neufs. En
faisant lhypothse que le meilleur moyen d attaquer lalgorithme est lattaque exhaus
tive, la longueur de clef variable devait certainement faire taire les objections de ceux
qui pensaient quune clef de 56 bits tait trop courte. Ils pouvaient raliser lalgorithme
avec la longueur de clefs quils dsiraient. Et, pour tout ceux qui avaient dj essay
une ralisation logicielle du DES, un algorithme qui tenait compte des ralisations
logicielles tait le bienvenu.

Description de Madryga
M a d r y g a a deux cycles imbriqus. Le cycle externe est rpt 8 fois (bien que ce
nombre puisse tre augment si la scurit le justifie) et consiste en une application du
cycle interne au texte en clair. Le cycle interne est celui qui transforme le texte en clair
en texte chiffr et il est rpt une fois pour chaque bloc de 8 bits (octet) du texte en
clair. Donc, cet algorithme passe 8 fois successivement sur tout le texte en clair.
Une itration du cycle interne opre sur une fentre de 3 octets de donnes, appele le
cadre courant (voir la ligure 13.1). Cette fentre avance d un octet chaque itra
tion3. Les 2 premiers octets du cadre courant sont dcals circulairement ensemble dun
nombre de positions variable, tandis que le dernier octet est combin par ou exclusif
avec certains bits de la clef. A mesure que le cadre courant avance, tous les octets sont
successivement dcals circulairement et combins par ou exclusif avec les lments de
la clef. Les rotations successives se superposent avec les rsultats des ou exclusif et
des rotations prcdentes, et les rsultats du ou exclusif sont utiliss pour influencer
la rotation. Cela rend tout le processus rversible.
Comme chaque octet influence les 2 octets sa gauche et un octet sa droite, aprs
8 passes chaque octet du texte chiffr dpend des 16 octets sa gauche et des 8 octets
sa droite.
Lors du chiffrement, chaque itration du cycle interne dmarre le cadre courant
lavant-dernier octet du texte en clair et avance circulairement jusquau troisime oc
tet avant la fin. Tout d abord, la clef entire est combine par ou exclusif avec une
constante alatoire, puis dcale circulairement gauche de 3 bits. Les 3 bits de poids
faible de loctet de poids faible du cadre courant sont mmoriss ; ils contrleront la
rotation des 2 autres octets. Aprs cela, loctet de poids faible du cadre courant est
combin par ou exclusif avec loctet de poids faible de la clef. Ensuite, les 2 octets de
poids fort sont dcals ensemble circulairement vers la gauche dun nombre variable de
bits (de 0 7). Enfin, le cadre courant est dcal vers la droite d un octet et tout le
processus est rpt.
Le rle de la constante alatoire est de transformer la clef, quelle quelle soit, en une
suite pseudo-alatoire. La longueur de cette constante doit tre gale la longueur de
la clef, et doit tre la mme pour tous ceux qui veulent communiquer entre eux. Pour
une clef de 64 bits, M a d r y g a recommande la constante : 0x0FlE2D3C4B5A6978.
Le dchiffrement est le processus inverse. Chaque itration du cycle interne dmarre le
cadre courant au troisime octet avant la fin du texte chiffr, et avance circulairement
2. En fait, les fonctions utilises dans lalgorithm e se limitent au o u e x c lu s if et aux dcalages.
3. Les donnes sont considres com m e circulaires quand on traite les 2 derniers octets.

Chapitre 13

324

Texte

Dplacement
du cadre
courant

WF(1)

Autres algorithmes de chiffrement par blocs

TL-2

WF(2)

WF(3)

8 bits

8 bits

8 bits

RQT

TL

Amplitude

Mot dcaler

Transposition

TL-1

-du dcalage
3 bits

16 bits
Translation
'

8 bits

\
Clef

KL

Empreinte
de clef

KL

ig

13.1 - Une itration de

adryga

dans la direction inverse jusquau deuxime octet avant la fin du texte chiffr. La clef
et les 2 octets de texte chiffr sont dcals vers la droite. Et le ou exclusif est effectu
avec les rotations.

Cryptanalyse de Madryga
Les chercheurs de la Queensland. University of Technology [676] ont examin
M a d r y g a ainsi que dautres algorithmes de chiffrement par blocs. Ils observrent que
lalgorithme ne montrait pas de signes d effet d avalanche texte en clair-texte chiffr.
De plus, il y avait un plus haut pourcentage de 1 que de 0 dans leurs textes chiffrs de
test.
Bien que je ne connaisse pas danalyse formelle de lalgorithme, une valuation rapide
faite par Eli B i i i a m concluait ainsi [167] :
Lalgorithme ne contient que des oprations linaires (rotations et ou ex
clusif), qui sont lgrement modifies en fonction des donnes.
Il ny a rien qui vaille les solides tables-S du DES.
De plus, la parit de tous les bits du texte en clair et du texte chiffr est
une constante qui ne dpend que de la clef. Donc, si vous avez un texte en
clair et son texte chiffr correspondant, vous pouvez prdire la parit du
texte chiffr de nimporte quel texte en clair.
Rien de bien accablant en soi, mais cela ne me laisse pas une bonne impression de cet
algorithme. Jviterais d utiliser M a d r y g a .

13.3

13.3

New DES

325

NewDES

Le N ew D E S a t conu en 1985 par Robert S c o t t comme une alternative possible


au DES [1410, 368]. Lalgorithme nest pas une variante du DES comme son nom
pourrait le laisser entendre. Il manipule des blocs de 64 bits de texte en clair mais
il a une clef de 120 bits. Il est plus simple que le DES : il ny a pas de permutations
initiale ni finale, et toutes les oprations sont sur des octets entiers - aucun moment,
lalgorithme ne lit, ncrit ou ne permute le moindre bit individuellement. (En ralit,
NewDES na rien voir avec une nouvelle version du DES, le nom est malheureux.)
Le bloc de texte en clair est divis en sous-blocs de 8 octets: Bo, B\, ... , Be, B7.
Ensuite les blocs sont soumis 17 rondes. Chaque ronde a 8 tapes. A chaque tape,
un des sous-blocs est combin par ou exclusif avec une partie de la clef (il y a une
exception), remplac par un autre octet calcul par une fonction / et ensuite combin
par ou exclusif avec un autre sous-bloc pour devenir ce sous-bloc. La clef de 120 bits
de long est divise en 15 sous-blocs: K 0, K i, ... , A i 3 , K\4. Le processus est plus facile
comprendre visuellement qu dcrire. La figure 13.2 dcrit lalgorithme N ewDES.
La fonction f est obtenue partir de la Dclaration dindpendance amricaine.
Voir [1410] pour une description plus dtaille.
S c o t t a montr que chaque bit du texte en clair affecte chaque bit du texte chiffr
aprs seulement 7 rondes. Il a aussi analys la fonction f et na pas trouv de dfauts
vidents. Charles C o N N E L L [222] a remarqu que le N ew D E S a la mme proprit
de complmentarit de clef que le DES : si E k { A4) = C alors E K>(A4') C'. Cela
rduit le nombre dtapes ncessaires pour une attaque exhaustive de 2 120 2 119.
B i h a m a remarqu que tout changement d un octet entier, appliqu tous les octets
de la clef et, tous les octets de donnes except B 5, jouit dune autre proprit de
complmentarit [167]. Ce qui rduit le nombre dtapes ncessaires pour une attaque
exhaustive 2 112.
Ce nest pas bien inquitant, mais lattaque clefs corrles de B i h a m peut casser
NewDES avec 233 clefs choisies textes en clair choisis en 24s tapes [114]. Bien que
cette attaque soit coteuse en temps de calcul et largement thorique, elle rend le
NewDES nettement plus faible que le DES.

13.4

FEAL

FEAL a t conu par Akihiro S h i m i z u et Shoji M i y a g u c h i , de N T T J a p o n [1442].


Il utilise une taille de blocs de 64 bits et une clef de 64 bits. L ide tait de concevoir
un algorithme similaire au D ES mais o chaque ronde serait plus sre que le DES.
Avec moins de rondes, lalgorithme irait plus vite. Malheureusement, la ralit est bien
en de des buts de conception.

Description de FEAL
La figure 13.3 donne le schma d une ronde de lalgorithme. Le processus dmarre avec
un bloc de 64 bits de donnes (soit du texte en clair, soit du texte chiffr). Au dpart,
le bloc de donnes est combin par ou exclusif avec les 64 bits de la clef. Ensuite le bloc
de donnes est coup en deux moitis (gauche et droite). La moiti gauche est combine
par ou exclusif avec la moiti droite pour donner une nouvelle moiti droite, et les deux

326
Ronde 1

Chapitre 13
BO

fiO

fil

fil

fi2

B2

Autres algorithmes de chiffrement par blocs

fi3

B3

fi4

fi4

B5

fi5

B6

fi6

B1

B1

F ig. 13.2 - Algorithme N ew D E S

moitis passent travers n rondes (4 lorigine). chaque ronde la moiti droite est
combine avec 16 bits drivs de la clef (en utilisant la fonction / ) et combine par ou
exclusif avec la moiti gauche pour former la nouvelle moiti droite. La moiti droite
originale (avant la ronde) forme la nouvelle moiti gauche. Aprs n rondes (rappelezvous de ne pas changer les moitis gauche et droite aprs la ne ronde) la moiti gauche
est nouveau combine par ou exclusif avec la moiti droite pour former une nouvelle
moiti droite et ensuite les moitis gauche et droite sont assembles pour former un

134

327

FEAL

tout de 64 bits. Le bloc de donnes est combin par ou exclusif avec 64 bits drivs de
la clef, et lalgorithme se termine.
( V e x te en clair {Texte chiffr})

(K 8, K 9, K 10, K 11)
{(K 12, K 1 3 , K 14, K+5)}

64 bits
64 bits
32 bits

32 bits

L 0 { f l8 }
L 0 {/? 8 )

R 0 {L&]

KQ[ K7)

/? 0 {L 8 }

L 1 {/? 7}

L7{ Rl )

K\{ K6]
Rl { L7]

K7[ K0}
R 7 { L 1}

R8{ L0}
64 bits

L 8 {/? 0 }

(K 12, K 13, K 14, K 15)


- { ( K 8 ,

9,

10, K 1 1 )}

{}: Dchiffrement
(^Texte chiffr {Texte en clair}^)

F ig. 13.3 - Une ronde de F E A L


La fonction / prend 32 bits des donnes et 16 bits drivs de la clef et mlange le
tout. Le bloc de donnes est divis en morceaux de 8 bits, ensuite les morceaux sont
combins par ou exclusif et se remplacent les uns les autres jusqu ce que cela sorte
par lautre bout. La figure 13.4 dcrit la fonction / . Les deux fonctions ,S'o et Si sont
dfinies par :
So{a,b) = dcalage circulaire gauche de 2 bits((a + b) mod 256)
Si(a,b) = dcalage circulaire gauche de 2 bits((o + 6 + 1 ) mod 256).

Le mme algorithme est utilis pour le chiffrement et le dchiffrement. La seule diff


rence est que, lors du dchiffrement, les clefs drives doivent tre utilises dans lordre
inverse.
La figure 13.5 dcrit la fonction permettant dobtenir les clefs drives. Dabord, la clef
de 64 bits est divise en deux. Les moitis sont combines par ou exclusif et soumises
la fonction fk comme indiqu sur le diagramme. La figure 13.6 dcrit la fonction fk- Les
deux entres de 32 bits sont divises en blocs de 8 bits puis combines et substitues

Chapitre 13

328

Autres algorithmes de chiffrement par blocs

So

f (a, b)

ai

TlX

a
32 bits

e *

a2
Cl\, b j . 8 bits

Remarquez que a est partag en 4 sous - chanes de 8 bits a,, a2, a3, a4.

F i g . 13.4 - Fonction f

comme indiqu. So et Si sont dfinies comme ci-dessus. Les blocs de 16 bits de clef
sont alors utiliss dans lalgorithme de chiffrement/dchiffrement.
Sur un processeur 80286 cadenc 10 MHz, une ralisation en assembleur de F E A L 32 peut chiffrer les donnes la vitesse de 220 kilo-bits par seconde. F E A L - 64 peut
chiffrer la vitesse de 120 kilo-bits par seconde [1110].

F i g . 13.5 - Plan de gnration de clef de FE A L

1S-4

329

FEAL

32 bits

f K (b>
50 (X, ,X2 ) = rot2((X, + X2 ) mod 256)
5 i (X ,,X 2) = rot2((X, + X2 + 1 ) mod 256)
Xj et X2 : entres de 8 bits
SQet Si : rsultats de 8 bits
r o t2 (r ) : dcalage circulaire gauche de 2 bits de T

ig

13.6 - Fonction fk

Cryptanalyse de FEAL
FEAL avec 4 rondes, appel F E A L -4 , a t cryptanalys avec succs au moyen dune
attaque texte en clair choisi [458] et a t dmoli par la suite [1139]. Cette dernire
attaque, lance par Sean M u r p h y , a t la premire attaque par cryptanalyse dif
frentielle publie et navait recours qu 20 textes en clair choisis. Les concepteurs
revinrent la charge avec un F E A L 8 rondes [1443, 1444, 1114] dont cryptanalyse
fut annonce la confrence SECURICOM89 par B i h a m et S h a m i r [1419]. Une autre
attaque texte en clair choisi utilisant 10000 chiffrements [612] obligea les concepteurs
abandonner F E A L 8 et concevoir F E A L -N [1109, 1110] avec un nombre variable
de rondes (plus grand que 8, bien sr).
B i h a m et S h a m i r appliqurent leurs techniques de cryptanalyse diffrentielle contre

FE A L -N et trouvrent q u ils pouvaient casser F E A L -N plus rapidem ent que par


recherche exhaustive (avec m oins de 264 chiffrements de textes en clair choisis) pour

32 rondes [176]. Il fallait 228 textes en clair


246,5 textes en cla ir connus p o u r casser F E A L -16. Il fallait 2000 textes en
clair choisis ou 237,5 textes en cla ir connus p o u r casser F E A L - 8. F E A L -4 peut tre

les versions de l algorithm e avec m oins de


choisis ou

cass avec seulement 8 textes en cla ir choisis, slectionns soigneusement.

Les concepteurs de F E A L ont aussi dfini F E A L N X, une variante de FE A L, pour


accepter des clefs de 128 bits (voir la figure 13.7) [1107, 1110]. B i h a m et S h a m i r ont
montr que F E A L -N X avec une clef de 128 bits est aussi facile casser que F E A L -N
avec une clef de 64 bits, quelle que soit la valeur de N [176]. Rcemment, F E A L -N (X )S

330

Chapitre 13

Autres algorithmes de chiffrement par blocs

a fait son apparition, il renforce F E A L grce une fonction dynamique dinterversion.

F ig. 13.7 - Plan de gnration de clefs de F E A L N X


Il y a plus. Une autre attaque contre F E A L -4 ne ncessitant que 1000 textes en clair
connus et ne ncessitant que 20 000 textes en clair connus contre F E A L -8 fut publies
dans [1524]. D autres attaques se trouvent dans [1557, 1558]. L a meilleure attaque, est
celle de Mitsuru M a t s u i et Atsuhiro Y a m a g i s h i [1028]. C est la premire utilisation
de la cryptanalyse linaire et elle peut casser F E A L -4 avec 5 textes en clair connus,

13.5

REDOC

331

FEAL -6 avec 100 textes en clair connus, et F E A L 8 avec 215 textes en clair connus.
Chaque fois que quelquun trouve une nouvelle attaque cryptanalytique, il semble quil
assaye toujours sur F E A L en premier.

Brevets
FEAL est brevet aux Etats-Unis [1445] et des brevets sont en attente en Angleterre,
en France et en Allemagne. Toute personne dsirant une licence pour cet algorithme
doit contacter: Intellectual Property Department, NTT, 1-6 Uchisaiwai-cho,
1-chome, Chiyada-ku, 100 Japan.

13.5

REDOC

REDOC II est un autre algorithme de chiffrement par blocs, conu par Michael W O O D
pour C r y p t e c h , I n c . [887, 234]. Il a une clef de 20 octets (160 bits) et manipule des
blocs de 80 bits.
REDOC II effectue toutes ses manipulations permutations, substitutions, ou ex
clusif avec la clef au niveau des octets, ce qui rend lalgorithme trs efficace en
logiciel. R E D O C II utilise des tables de fonctions variables. Contrairement au DES,
qui a un ensemble fixe de tables de permutation et substitution (bien quoptimises
pour la scurit), R E D O C II utilise un ensemble de tables dpendantes de la clef et
du texte en clair (des tables-S1en ralit). R E D O C II se droule en 10 rondes ; chaque
ronde est une srie complique de manipulations sur les blocs.
Une autre caractristique unique de sa conception est lutilisation de masques. Ce
sont des nombres drivs de la table de clefs, qui sont utiliss dans le choix des tables
pour une fonction donne d une ronde donne. La valeur des donnes et la valeur des
masques sont toutes deux utilises pour slectionner les tables de fonction.
En faisant lhypothse que lattaque exhaustive est la plus efficace, R E D O C II est trs
sr: 2160 oprations sont ncessaires pour retrouver la clef. Thomas C u s iC K a cryptanalys une ronde de R E D O C II, mais na pas t capable dtendre cette attaque
plusieurs rondes [404]. En utilisant la cryptanalyse diffrentielle, B i h a m et S h a m i r
ont russi, cryptanalyser une ronde de R E D O C II avec 2300 textes en clair choi
sis [177], mais cette attaque ne peut pas tre tendue plusieurs rondes. Ils parvinrent
galement obtenir la valeur de 3 masques aprs 4 rondes mais cette attaque ne peut
pas tre tendue non plus.

REDOC III
RED O C III est une version rationalise de R E D O C II, galement conue par Michael
W o o d [1617]. Elle manipule des blocs de 80 bits. La longueur de clef est variable et peut
atteindre 2 560 octets (20480 bits). Cet algorithme ne comporte que des ou exclusif des
octets de la clef avec des octets du message ; il ny a ni permutations ni substitutions.
1. Crez une table de clef de 256 clefs de 10 octets en utilisant la clef secrte.
2. Crez deux masques de 10 octets, M\ et M 2 - M\ est le rsultat du ou exclusif
des 128 premires clefs de 10 octets; M 2 est le rsultat du ou exclusif des 128
autres clefs de 10 octets.

332

Chapitre 13

Autres algorithmes de chiffrement par blocs

3. Pour chiffrer un bloc de 10 octets :


(a) Calculez le ou exclusif du premier octet du bloc de donnes avec le premier
octet de M i. Slectionnez la clef dans la table de clefs (celle qui a t calcule
ltape 1) en utilisant cette valeur comme index (compris entre 0 et 255).
Calculez le ou exclusif de chaque octet du bloc de donnes avec loctet
correspondant de la clef ainsi slectionne (sauf pour le premier octet).
(b) Calculez le ou exclusif du second octet du bloc de donnes avec le second
octet de M\. Slectionnez la clef dans la table de clefs (celle qui a t calcule
ltape 1) en utilisant cette valeur comme index (compris entre 0 et 255).
Calculez le ou exclusif de chaque octet du bloc de donnes avec loctet
correspondant de la clef ainsi slectionne (sauf pour le deuxime octet).
(c) Continuez ainsi pour tout le bloc de donnes (octets 3 10) jusqu ce que
chaque octet ait t utilis pour slectionner une clef aprs avoir t combin
par ou exclusif avec M \ , et en combinant chaque octet du bloc de donnes
avec la clef, sauf pour loctet utilis pour slectionner la clef.
(d) Rptez les tapes (a) (c) avec M iCet algorithme est simple et rapide. Avec un processeur 80386 cadenc 33 MHz,
lalgorithme chiffre les donnes 2,75 mgabits par seconde. W o o d a estim quune
conception VLSI avec pipelines, avec un chemin de donnes de 64 bits devrait tre
capable de chiffrer les donnes plus de 1,28 gigabit par seconde avec une horloge
cadence 20 MHz.
R E D O C III na pas un bon niveau de scurit [1446], Il est vulnrable la cryptanalyse
diffrentielle. Il suffit seulement de 223 textes en clair choisi environ pour reconstruire
les deux masques.

Brevets et licences
Les deux versions de R E D O C sont brevetes aux tats-Unis [1616). Des brevets
ltranger sont en attente. Toute personne dsireuse d obtenir une licence pour
R E D O C II ou R E D O C III doit contacter: Michael C. Wood, Delta Computec,
Inc., 6647 Old Thompson Rd., Syracuse, NY 13211.

13.6

LOKI

L O K I est australien et fut prsent en 1990 comme une alternative potentielle au


DES [278]. Il utilise des blocs de 64 bits et une clef de 64 bits. La structure gnrale
de lalgorithme et la gestion des clefs taient bass sur [277, 279], et la conception des
tables-S1taient bases sur [1257].
En utilisant la cryptanalyse diffrentielle, B i h a m et S h a m i r sont parvenus casser
L O K I avec 11 rondes ou moins, plus vite que par attaque exhaustive [177]. De plus,
il existe une proprit de complmentarit par 8 bits qui rduit la complexit dune
attaque exhaustive par un facteur 256 [177, 917, 918].
Lars K n u d se n a montr que LO K I, avec 14 rondes ou moins, est vulnrable la cryp
tanalyse diffrentielle [853, 855]. De plus, si L O K I est ralis avec dautres tables-S', il

13.6

333

LO KI

est probable que lalgorithme de chiffrement rsultant sera vulnrable la cryptanalyse


diffrentielle.

LOKI91
En rponse ces attaques, les concepteurs de LO K I retournrent la planche dessin
et rvisrent leur algorithme. Le rsultat est LOKI91 [276]4.
Pour rendre lalgorithme plus rsistant la cryptanalyse diffrentielle et pour supprimer
la proprit de complmentarit de la clef, les modifications suivantes ont t apportes :
1. Lalgorithme de gnration des sous-clefs a t chang de telle manire que les
moitis sont changes une ronde sur deux au heu de toutes les rondes.
2. Lalgorithme de gnration des sous-clefs a t chang de telle faon que le dca
lage circulaire de la sous-clef de gauche soit alternativement de 12 et 13 bits vers
la gauche.
3. Les ou exclusif initial et final du bloc avec la clef ont t supprims.
4. Les tables-S1ont t modifies pour mettre en ordre leurs proprits vis vis du
ou exclusif (pour augmenter leur rsistence la cryptanalyse diffrentielle), et
pour liminer toute valeur x telle que f(x ) = 0 o f est la fonction rsultant de
la combinaison des tables- E, des tables-s et des tables -P.

Description de LOKI
Le mcanisme de L O K I est similaire celui du DES (voir la figure 13.8). Le bloc de
donnes est divis en une moiti gauche et une moiti droite, puis soumis 16 rondes,
tout comme dans le DES. A chaque ronde, la moiti droite est dabord combine par ou
exclusif avec un morceau de la clef, puis envoy travers une permutation expansive
(voir tableau 13.1).
T a b . 13.1 - Permutation expansive
3
28 27
20 19
12 11

2
26
18
10

1
25
17
9

32
24
16
8

31 20
23 22
15 14
7
6

29
28
27 26 25~
21
20
19 18 17
13
12
11 10
9
5
4
3
2
1

Les 48 bits de sortie sont diviss en quatre blocs de 12 bits et chaque bloc passe
travers une table-S1de substitution. La table-S fonctionne ainsi : prenez chaque entre
de 12 bits ; utilisez les deux bits de gauche et les deux bits de droite pour former le
nombre r, et les huits bits du centre pour former le nombre c. La sortie O de la table-S
est la suivante :
0(r,c) = (c + ((r * 17) Oxf f)&0xf f) 31 modulo Pr
Pr est donn par le tableau 13.2.
4. La version prcdente fut rebaptise L O K I89.

334

Chapitre 13

F ig .

Autres algorithmes de chiffrement par bloa

13.8 - Aperu de LOKI91

Ensuite, les quatres sorties de huit bits sont assembles pour former un nombre d{
32 bits qui est envoy travers la permutation dcrite dans le tableau 13.3. Enfin, Ie
moiti droite est combine par ou exclusif avec la moiti gauche pour devenir la moiti
gauche, et la moiti gauche devient la nouvelle moiti droite. Aprs 16 rondes, le bloc
est nouveau combin par ou exclusif avec la clef pour produire le texte chiffr.
Les sous-clefs sont engendres partir d e la clef de manire simple. Tout dabord, le
clef de 64 bits est divise en une moiti gauche et une moiti droite. A chaque ronde, le
sous-clef est la moiti gauche. Cette moiti gauche est dcale circulairement de 12 or

T a b . 13 .2 - Pr

r:
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16
Pr : 375 379 391 395 397 415 419 425 433 445 451 463 471 477 487 488

13.7

K hufu

et K h a f r e

335

T a b . 13.3 -

Table- P de permutation
7

10

11

12

13

14

15

16

Pr : 375 279 391 395 397 415 419 425 433 445 451 463 471 477 487 488

13 bits vers la gauche, et ensuite les moitis gauche et droite sont changes toutes les
deux rondes. Tout comme pour le DES, le mme algorithme peut tre la fois utilis
pour le chiffrement et le dchiffrement, avec quelques modifications quant lutilisation
des sous-clefs.

Cryptanalyse de LOKI91
Lars K n u d se n a essay de cryptanalyser LO K I91 [856, 858]. Il ne parvint pas
utiliser la cryptanalyse diffrentielle contre lalgorithme rvis. Toutefois, il a trouv
une attaque texte en clair choisi qui rduit la complexit d une attaque exhaustive
par m facteur de presque 4. Cette attaque exploite une faiblesse du plan de gnration
de clefs, qui est galement une faiblesse si lalgorithme est utilis comme fonction de
hachage sens unique.
Une autre attaque clef corrle de peut casser LOKI91 avec 232 clefs choisies-textes
en clair choisis ou 248 clefs choisies-textes en clair connus [165]. Cette attaque est
indpendante du nombre de rondes de lalgorithme. (Dans le mme article, B ih a m
casse LO K I89 avec 217 textes en clair choisis ou 233 textes en clair connus.) U est facile
de rendre LO K I91 rsistant cette attaque ; il suffit d viter le plan de gnration de
clefs simple.

Brevets et licences
LOKI nest pas brevet. Tout le monde peut le raliser et lutiliser. Le code source de
la ralisation donne dans ce livre est protge par le copyright de l University of
New South Wales . Toute personne intresse par lutilisation commerciale de cette
ralisation (ou une autre ralisation plus rapide de plusieurs ordres de grandeur) doit
contacter:
Director CITRAD, Department of Computer Science, University
Collge, UNSW, Australian Defense Force Academy, Canberra ACT 2600,
Australia, Fax : +61-6-268-8581.

13.7

Khufu et Khafre

En 1990, Ralph M e r k l e proposa deux algorithmes. Les principes de base du schma


de conception de ces cryptosystmes sont [1077] :
1. La taille de 56 bits de la clef DES est trop petite. Compte tenu du cot ngligeable
de laugmentation de la taille de la clef (la mmoire est bon march et disponible
volont), celle-ci doit tre augmente.
2. Bien que lutilisation intensive de permutations dans le DES convienne bien aux
ralisations matrielles, elles sont trs difficiles pour les ralisations logicielles.
Les ralisations logicielles les plus rapides du DES utilisent des techniques de

Chapitre 13

336

Autres algorithmes de chiffrement par blocs

recherche dans des tables pour raliser les permutations. De telles techniques
peuvent donner les mmes caractristiques de diffusion que les permutations
et tout en tant plus flexibles.
3. Les tables-S du DES sont petites, avec seulement 64 entres de 4 bits par table.
Maintenant que les mmoires sont plus grandes, les tables- S' doivent grandir.
De plus, les 8 tables - S sont utilises simultanment. Bien que cela convienne
pour une ralisation matrielle, cela semble une restriction draisonnable en logi
ciel. Une taille de table-S plus grande et une utilisation squentielle (plutt que
parallle) des tables S doivent tre employes.
4. Les permutations initiale et finale du DES sont considres comme inutiles du
point de vue de la cryptographie et doivent tre supprimes.
5. Toutes les ralisations rapides du DES prcalculent les clefs de chaque ronde.
Donc, il ny a pas de raison de ne pas rendre ce calcul plus compliqu.
6. Contrairement au DES, le schma de conception des tables-S' doit tre public.
Aujourdhui, M e r k l e ajouterait probablement sa liste : rsistant aux cryptanalyss
diffrentielle et linaire , mais ces attaques taient inconnues au dbut des annes 90.

Khufu
K h u f u est un chiffrement p a r blocs de 64 bits. Les 64 bits de texte en clair sont
dabord diviss en deux moitis de 32 bits, G et D , qui sont combines par ou exclusif
avec des clefs drives. Ensuite, elles sont lobjet dune suite de rondes similaires au
DES. A chaque ronde, loctet de poids le plus faible de G est utilis comme entre
dune table S de 256 entres. Chaque cellule de table -S a une longueur de 32 bits. La
cellule de 32 bits slectionne dans la table-S est combine par ou exclusif avec R. L
est ensuite dcal circulairement d un multiple de 8 bits, L et R sont changs et la
ronde se termine. La table-S elle-mme nest pas statique, mais change toutes les 8
rondes. Finalement, aprs la dernire ronde, L et R sont combins par ou exclusif avec
des clefs drives et recombins pour former le texte chiffr.
Bien que des parties de la clef soient combines par ou exclusif avec le bloc chiffr au
dbut et la fin, le but principal de la clef est dengendrer les tables-S. Ces tables-S
sont secrtes et, par essence, font partie de la clef. Lalgorithme de M e r k l e a besoin
dune clef de longueur totale de 512 bits (64 octets) et il fournit un algorithme pour
engendrer les tables-S' partir de la clef. Le nombre de rondes de lalgorithme est libre
M e r k l e fit remarquer que le K h u f u 8 rondes est sensible une attaque textes
en clair choisis et recommandait 16, 24 ou 32 rondes [1077]. (Il a limit le choix du
nombre de rondes un multiple de 8).
Comme K h u f u a des tables S dpendantes de la clef et secrtes, il est immune
la cryptanalyse diffrentielle. Il existe une attaque diffrentielle contre le K h u f u
16 rondes qui trouve la clef laide de 231 textes en clair choisis [613], mais elle ne
sapplique pas avec plus de rondes. Si une attaque exhaustive est le meilleur moyen
d attaquer K h u f u , il est incroyablement difficile casser. Une clef de 512 bits donne
une complexit de 2512
inconcevable dans toutes les circonstances

13.8

RC2

337

Khafre
est le second des cryptosystmes proposs par M e r k l e [1077]5. Le schma
de conception est similaire celui de K h u f u , except quil a t conu pour des appli
cations o il ny a pas de temps de prcalcul. Les tables-> ne dpendent pas de la clef.
K h a f r e utilise des tables S fixes. De plus, la clef est combine par ou exclusif avec
le bloc chiffr non seulement avant la premire ronde et aprs la dernire, mais aussi
toutes les 8 rondes de chiffrement.
M e r k l e postula que des clefs de 64 ou 128 bits seraient utilises pour K h a f r e et
que plus de rondes seraient ncessaires pour K h a f r e que pour K H U F U . Ceci, combin
avec le fait que chaque ronde de K h a f r e est plus complique que pour K h u f u , rend
K h a f r e plus lent. En compensation, K h a f r e ne ncessite pas de prcalcul et chiffre
des petites quantits de donnes plus rapidement.
En 1990, B i i i a m et S h a m i r utilisrent leurs techniques de cryptanalyse diffrentielle
contre K h a f r e [177]. Ils russirent casser K h a f r e 16 rondes avec une attaque
texte en clair choisi qui utilise environ 1500 chiffrements diffrents. Cela leur prit
environ une heure, en utilisant un ordinateur personnel. Convertir cette attaque en
une attaque texte en clair connu ncessiterait environ 238 chiffrements. KHAFRE 24
rondes peut tre cass par une attaque texte en clair choisi laide de 253 chiffrements
et, par une attaque texte en clair connu laide de 259 chiffrements.
Khafre

Brevets
K h u f u et K h a f r e sont tous deux brevets [1078]. Le code source des algorithmes se
trouve dans les brevets. Toute personne dsirant acqurir une licence pour lun des al
gorithmes doit contacter : D ire c to r o f L ic e n s in g , Xerox C orp oration , P.O. Box
1600, Stam ford, CT, 0 6 9 0 4-1 60 0 .

13.8

RC2

R.C2 est un algorithme de chiffrement clef de taille variable conu par Ron R i v e s t
pour la socit R S A D a t a S e c u r i t y , I n c . (R S A D S I). Apparemment, R C est
labrviation de Rons Code ( le code de Ron ) bien quofficiellement il sagisse
de celle de Rivests Code ( le code de Rivest ) 6. Il sagit dun algorithme priv
et sa description na pas t publie. Ne pensez pas un seul instant que cela accroisse
la scurit. R C2 a dj t utilis dans des produits commerciaux; je suis sr que
quelquun la dj dsassembl. Pour autant que je sache, R C 2 nest pas brevet.
RC2 est un algorithme de chiffrement par bloc clef de taille variable conu comme
un remplaant du DES. D aprs la socit, les ralisations logicielles de R C2 sont trois
fois plus rapides que le DES. Il chiffre les donnes par blocs de 64 bits. R C2 est un
algorithme de chiffrement par blocs mlange-et- broie . Il n y a pas de tables-S
[813] ; les deux oprations sont mlange-et broie et lune dentre elles est chosie
chaque ronde. Selon leur propre littrature [1345] :
...RC2 n est pas un algorithme de chiffrement par blocs itratif. Cela
5. K hufu et K hafre ont t baptiss d aprs les nom s de deu x pharaons gyptiens.
6. R C 3 fut cass dans les murs de R S A D S I durant son dveloppem ent ; R C 1 n est jam ais sorti des
notes de R iv e s t .

Chapitre 13

338

Autres algorithmes de chiffrement par blocs

suggre que R C2 offre plus de protection contre les cryptanalyss diffren


tielle et linaire que les autres algorithmes de chiffrement par blocs qui font
reposer leur scurit sur une conception similaire celle du DES.
La volont de R SA D SI de ne pas divulguer leur algorithme au public jette un doute sur
leurs affirmations. Ils sont prts fournir les dtails de lalgorithme des scientifiques
disposs les cryptanalyser. Je ne connais personne qui les ait pris au mot car cela
reviendrait faire le travail danalyse pour eux.
Malgr tout, Ron R i v e s t nest pas un charlatan. C est un cryptographe talentueux
et respect. Jai assez confiance dans son algorithme, bien que je naie pas inspect
personnellement le code. R C 4 qui fut la proprit intelectuelle de R SA D SI a t
divulgu sur I n t e r n e t (voir 17.1), et RC2 ne devrait pas tarder ltre aussi.
Un accord rcent entre lAssociation des diteurs de logiciels amricaine (SPA pour
Software Publishers Association ) et le Gouvernement amricain a accord un statut
dexportation spcial (voir 25.14) R C2 et R C 4 (voir 17.1). Les produits qui
utilisent lun des deux algorithmes ont droit une procdure d exportation simplifie,
pour autant que les clefs naient pas plus de 40 bits de longueur.
Une longueur de clef de 40 bits est-elle suffisante? Il y a un total de 240 (~ 1012) clefs
possibles. En faisant lhypothse que la recherche exhaustive est la mthode la plus
efficace de cryptanalyse (une hypothse forte sil en est, tant donn que lalgorithme
na pas t publi) et en faisant lhypothse que le cryptanalyste peut tester un million
de clefs par seconde, il faudra 12,7 jours pour trouver la bonne clef. Un millier de
machines en parallle trouveront la clef en vingt minutes.
Selon R S A D a t a S e c u r i t y , I n c ., bien que le chiffrement et le dchiffrement soient
rapides, la recherche exhaustive de clefs ne lest pas. Un temps significatif est pass
mettre en place le plan de gnration de clefs. Bien que ce temps soit ngligeable par
rapport au temps de chiffrement et de dchiffrement des messages, il ne lest pas quand
on essaie toutes les clefs.
Le gouvernement amricain n autoriserait jamais lexportation un algorithme quils
ne puissent pas eux-mmes casser, du moins en thorie. Une autre possibilit dattaque
serait de crer une bande magntique ou un disque compact (C D ) avec un bloc de texte
en clair chiffr selon toutes les clefs possibles. Pour casser un message donn, vous avez
juste lire la bande magntique et comparer les blocs de texte chiffr avec les blocs
de textes chiffrs sur la bande. Sil y a une concordance, essayez la clef candidate et
voyez si le message a un sens. Si vous choisissez un bloc de texte en clair assez usuel
(que des zros, le caractre ASCII de lespace, etc.), cette mthode devrait marcher.
La capacit de stockage ncessaire pour un bloc de texte en clair de 64 bits chiffr avec
toutes les 1012 clefs possibles est de 8 tra-octets ce qui est faisable.
Pour obtenir des informations concernants les licences pour RC2, contacter RSADSI
(voir 25.4).

13.9

IDEA

La premire version du systme de chiffrement ID E A , conu par Xuejia L a i et James


a s s e y , a fait surface en 1990 [940]. Il sappelait PES ( Proposed Encryption
Standard ). L anne suivante, aprs que B i h a m et S h a m i r eurent prsent la cryp
tanalyse diffrentielle, les auteurs ont renforc leur systme pour rsister cette
M

13.9

339

ID E A

attaque [942, 936]. Ils lappelrent alors IPES ( Improved Proposed Encryption
Standard ). IPES fut rebaptis ID E A en 1992 ( International Data Encryption
Algorithm ).
IDEA est bas sur des fondations thoriques impressionnantes et bien que la cryp
tanalyse ait fait des progrs contre des variantes avec un nombre de ronde rduit,
lalgorithme a lair solide. De mon point de vue, c est le meilleur et le plus sr des
algorithmes disponibles publiquement ce jour.
Le futur d ID E A nest pas encore clair. Rien ne presse pour ladopter en remplacement
du DES, en partie parce quil est brevet et ncessite une license pour tre utilis dans
les applications commerciales, et en partie parce que les gens attendent encore de voir
avec quel brio lalgorithme traversera les prochaines annes de cryptanalyse.

Survol dIDEA
IDEA est un algorithme de chiffrement par blocs ; il manipule des blocs de texte en
clair de 64 bits. La clef est longue de 128 bits. Le mme algorithme est utilis pour le
chiffrement et le dchiffrement.
Comme tous les algorithmes de chiffrement par blocs que nous avons dj vus, ID E A
utilise la fois la confusion et la diffusion. La philosophie de la conception de lalgo
rithme est base sur le mlange doprations de diffrents groupes algbriques . Il y
a trois groupes algbriques dont les oprations sont mlanges, et toutes ces oprations
sont facilement ralisables la fois en logiciel et en matriel :
- ou exclusif,
- addition modulo 2 16,
- multiplication modulo
ID E A ).

2 16

+ 1 (cette opration est un peu la table-S' de

Toutes ces oprations (et ce sont les seules oprations de lalgorithme car il ny a pas de
permutations) manipulent des sous-blocs de 16 bits. Cet algorithme est efficace mme
sur des processeurs 16 bits.

Description dIDEA
La figure 13.9 donne un aperu dID E A . Le bloc de donnes de 64 bits est divis en 4
sous-blocs de 16 bits : X L, X 2 , A 3 et A 4 . Ces 4 sous-blocs deviennent les entres de la
premire ronde de lalgorithme. Il y a 8 rondes au total. chaque ronde, les 4 sous-blocs
sont combins par ou exclusif, additionns, multiplis entre eux et avec 6 sous-blocs de
16 bits drivs de la clef. Entre chaque ronde, le deuxime et le troisime sous-bloc sont
changs. Enfin, les quatre sous-blocs sont combins avec les quatre sous-clefs dans une
transformation finale.
A chaque ronde, la squence dvnements est la suivante :
1

. multipliez X i et la premire sous-clef ;

2.

additionnez X 2 et la deuxime sous-clef ;

3. additionnez A 3 et la troisime sous-clef ;

Chapitre 13

340

^1

^2

Autres algorithmes de chiffrement par blocs

Xj : sous-bloc de 16 bits de texte en clair


Yj : sous-bloc de 16 bits de texte chiffr
z[r^ :sous-bloc de clef de 16 bits
: ou exclusif bit bit de sous-blocs de 16 bits
H - adoition modulo 2 16 dentiers de 16 bits
Q : multication modulo 2 16+1 dentiers de 16 bits
avec le sous-bloc nul correspondant 216

ig .

13.9 - Squelette d l D E A

4. multipliez X i et la quatrime sous-clef ;


5. combinez par ou exclusif les rsultats des tapes (1) et (3) ;
6. combinez par ou exclusif les rsultats des tapes (2) et (4) ;
7. multipliez le rsultat de ltape (5) avec la cinquime sous-clef ;
8. additionnez les rsultats des tapes (6) et (7) ;
9. multipliez le rsultat de ltape (8) par la sixime sous-clef ;

^3

^4

13.9

341

ID E A

10. additionnez les rsultats des tapes (7) et (9) ;


11.

combinez par ou exclusif les

rsultats destapes (1)

et

(9) ;

12.

combinez par ou exclusif les

rsultats destapes (3)

et

(9) ;

13.

combinez par ou exclusif les

rsultats destapes (2)

et

(10);

14.

combinez par ou exclusif les

rsultats destapes (4)

et

(10).

La sortie de la ronde est constitue des 4 sous-blocs produits par les tapes (11), (13),
(12) et (14). Echangez les deux blocs intrieurs (sauf lors de la dernire ronde) et cela
donne lentre de la ronde suivante.
Aprs la huitime ronde, il y a une transformation finale :
1. multipliez X i et la premire sous-clef ;
2. additionnez X% et la deuxime sous-clef ;
3. additionnez X 3 et la troisime sous-clef;
4. multipliez X 4 et la quatrime sous-clef.
Enfin, les 4 sous-blocs sont rassembls pour former le texte chiffr.
La cration des sous-clefs est aussi facile. Lalgorithme en utilise 52 (6 pour chacune
des 8 rondes et 4 pour la transformation finale). D abord, la clef de 128 bits est divise
en 8 sous-clefs de 16 bits. Ce sont les 8 premiressous-clefs pour lalgorithme(les 6 de
la premire ronde et les 2 premires de la deuxime ronde).Ensuite la clef est dcale
circulairement de 25 bits vers la gauche et nouveau divise en 8 sous-clefs. Les 4
premires sont utilises lors de la deuxime ronde et les 4 autres lors de la troisime
ronde. La clef est nouveau dcale circulairement de 25 bits vers la gauche pour les
8 sous-clefs suivantes, et ainsi de suite jusqu la fin de lalgorithme.
Le dchiffrement est exactement le mme, except que les sous-clefs sont inverses
et lgrement diffrentes. Les sous-clefs de dchiffrement sont inverses par rapport
laddition ou par rapport la multiplication des sous-clefs de chiffrement. (Pour
les besoins dID E A , tous les sous-blocs constitus uniquement de zros reprsentent
216 = 1 modulo 216 + 1 pour la multiplication; et linverse de la multiplication de 0
est donc 0.) Calculer ces inverses prend du temps mais vous ne devez le faire quune
fois par clef de dchiffrement. Le tableau 13.4 indique les sous-clefs de chiffrement et
les sous-clefs de dchiffrement correspondantes.

Vitesse dIDEA
Les ralisations logicielles actuelles d ID E A sont presque aussi rapides que le DES.
Sur un 80386 cadenc 33 MHz, ID E A chiffre la vitesse de 880 kilo-bits par seconde
et 2400 kilo-bits par seconde sur un 80486 cadenc 66 MHz. Vous auriez pu croire
IDEA plus rapide, mais les multiplications cotent cher. Multiplier deux nombres de
32 bits prend 40 cycles dhorloges sur un 80486 (et 10 sur un Pentium).
Une ralisation V LSI de P E S chiffre les donnes 55 mgabits par seconde
25 MHz [212, 402]. Une autre puce VLSI, dveloppe lETH de Zrich, conte
nant 251000 transistors sur une puce de 107,8 mm2 , chiffre les donnes laide
dID EA la vitesse de 177 mgabits par seconde avec une frquence dhorloge de
25 MHz [935, 211, 401],

342

Chapitre 13

Ronde
1

Sous-clefs de chiffrement et dchiffrement pour I D E A

Sous-clefs de chiffrement
p

2:

Z<2)

3:

z [ 3)

4:

Z [ 4)

5:

6:

z [ 6)

Sous-clefs de dchiffrement
z<9)- J

Z6

7 (4 )
6

N
1.-V
00

T a b . 13.4 -

Autres algorithmes de chiffrement par blocs

zp

7:

-zp

8:

z [ 8)

finale:

z [ 9)

zp

Cryptanalyse dIDEA
La longueur de clef dID E A est de 128 bits plus du double de celle du DES. En
faisant lhypothse que lattaque exhaustive est la plus efficace, il faudrait 2128 (ss 1038)
chiffrements pour retrouver la clef. Concevez une puce qui peut tester un milliard de
clefs par seconde et mettez-en un milliard la tche, cela prendra 1013 annes c est
plus que lge de lUnivers. Une matrice de 1024 puces pourrait trouver la clef en un
jour mais il ny a pas assez d atomes de silicium dans lunivers pour construire une
telle machine. L, nous tenons du solide, mais je vais garder un il sur le dbat sur la
matire sombre, on ne sait jamais.
Peut-tre, toutefois, que lattaque exhaustive nest pas la meilleure attaque contre
ID E A . Lalgorithme est encore trop rcent pour donner des rsultats cryptanalytiques
dfinitifs. Les concepteurs ont fait de leur mieux pour rendre lalgorithme immune la
cryptanalyse diffrentielle ; ils ont dfini le concept de chiffre de Markov et ont montr
quil est possible de modliser et de quantifier la rsistence la cryptanalyse diffren
tielle [942, 937]. (La figure 13.10 montre lalgorithme PES original, comparer avec
lalgorithme ID E A de la figure 13.9 qui a t renforc pour rsister la cryptanalyse
diffrentielle. Il est tonnant de constater comment quelques changements subtils font
une grande diffrence.) L a i prtend (il donne des indices probants, pas une preuve)
quID E A est immune la cryptanalyse diffrentielle aprs seulement 4 de ses 8 rondes.
D aprs Eli B i h a m , son attaque clefs corrles ne marche pas contre ID EA [114].
Willi M e i e r a examin les trois oprations algbriques de ID EA, et a fait remar
quer que bien qutant incompatibles, il arrive quon puisse les simplifier de manire
faciliter la cryptanalyse de temps en temps [1058]. Son attaque est plus efficace que
lattaque exhaustive pour lID E A deux rondes (242 oprations), mais moins efficace
pour lID E A trois rondes ou plus. ID E A avec ses huits rondes est sr.
Joan D a e m e n a dcouvert une classe de clefs faibles pour ID E A [408, 413]. Ce ne
sont pas des clefs faibles dans le sens o certaines clefs du DES sont faibles, o la
fonction de chiffrement est sa propre inverse. Elles sont faibles dans le sens o si elles
sont utilises, un attaquant peut facilement les identifier avec une attaque texte en
clair choisi. Voici, par exemple, une classe de clefs faibles (en hexadcimal) :
0000 0000 0X00 0000 0000 000X XXXX X000

13.9

343

ID E A

F ig . 13.10

Squelette de PES

o X peut tre nimporte chiffre hexadcimal. Si cette clef est utilise, la combinaison
par ou exclusif de deux textes en clair donne la combinaison par ou exclusif des deux
textes chiffrs rsultants.
Dans tous les cas, la chance dengendrer une telle clef alatoirement est extrmement
faible: une sur 296. Il ny a pas de danger si vous choisissez les clefs alatoirement et
il est facile de modifier ID E A pour quil ny ait plus de clefs faibles : combiner par ou
exclusif chaque clef avec OxODAE [413]
Je nai pas eu connaissance dautres rsultats.

344

Chapitre 13

Autres algorithmes de chiffrement par blocs

Modes opratoires dIDEA et de ses variantes


ID E A peut tre utilis avec nimporte lequel des modes opratoires de chiffrement par
blocs dcrits dans le chapitre 9. Toute ralisation dID E A double serait vulnrable
la mme attaque par collisions que pour le DES (voir 15.1). Toutefois, comme la
longueur de clef dID E A est plus du double de celle du DES, lattaque est impossible.
Cela ncessiterait de stocker 64 x 2128 bits, ou 1039 octets. Peut-tre y a-t-il suffisam
ment de matire dans lunivers pour crer un dispositif de mmoire aussi grand mais
j en doute.
Si vous tes galement tracass par les univers parallles, vous pouvez utiliser une
ralisation de lID E A triple (voir 15.2) :
C = E K l ( D K2( E K l ( M ) ) ) .

Elle est immune lattaque par collisions.


Il ny pas de raisons de ne pas raliser ID E A avec des sous-clefs indpendantes.
Lalgorithme ncessite au total 52 clefs de 16 bits ou une clef de longueur totale de 832
bits. Cette variante est certainement plus sre, mais personne ne sait quel point.
Une variante nave pourrait consister doubler la taille des blocs. Lalgorithme mar
cherait aussi bien avec des sous-blocs de 32 bits au lieu de 16 bits, et avec une clef de
256 bits. Le chiffrement serait plus rapide et la niveau de scurit augmenterait dun
facteur 232. En est-il ainsi? La thorie sous-jacente lalgorithme dpend de la prima
lit de 216 + 1 alors que 232 + l n est pas premier. L algorithme peut tre ventuellement
tre modifi pour marcher mais il aurait des proprits de scurit trs diffrentes. L ai
dit quil serait difficile de le faire fonctionner [935].
Mme si ID E A parat nettement plus sr que le DES, il nest pas toujours facile de
remplacer lun par lautre dans une application existante. Si votre base de donnes et
vos crans dinterrogation sont conus pour accepter une clef de 64 bits, il pourrait
tre impossible de mettre la clef de 128 bits d ID E A la place.
Pour ces applications, engendrez la clef de 128 bits en accolant la clef de 64 bits
elle-mme. Mais sachez que cette modification affaiblit considrablement IDEA.
Si vous tes plus concern par la vitesse que par la scurit, vous pourriez adopter une
variante de ID E A avec moins de rondes. Jusqu prsent, la meilleure attaque contre
ID E A va plus vite que la recherche exhaustive pour seulement 2,5 rondes ou moins
[1058] ; ID E A serait deux fois plus rapide avec 4 rondes et aussi sr d aprs ce que je
sais.

Avertissement
ID E A est un nouvel algorithme. Il ny a encore aucun article publi quant sa cryp
tanalyse. Est-ce quID E A est un groupe? ( L a i pense que non [935].) Existe-t-il des
moyens non encore dcouverts de casser lalgorithme? ID E A a une base thorique
ferme. Toutefois, jour aprs jour des algorithmes qui paraissaient srs sont tombs
devant de nouvelles formes de cryptanalyse. Il y a pour le moment plusieurs groupes
acadmiques et militaires qui tentent de cryptanalyser ID E A . Aucun dentre eux na
russi jusquici (et aucun nest dispos lannoncer publiquement), mais qui sait, un
jour...

13.10

345

MMB

Brevets et licences
Lalgorithme de chiffrement par blocs ID E A est brevet en Europe et
aux tats-Unis [1018, 1019]. Le brevet est dtenu par ASCOM-T e c h AG.
Il ny a pas de droits d exploitation payer pour un usage non com
mercial. Les utilisateurs commerciaux dsireux d obtenir une licence doivent
contacter: Ascom Systech AG, Dept. CMVV, Gewerbepark, CH-5506, Mgenwil,
S u isse, T e l: +41 64 565-983, Fax: +41 64 565-990, e -m a il: ideaascom .ch.

13.10

MMB

On reproche ID E A d utiliser des blocs de chiffrement de 64 bits. Ce reproche a t


mis par Joan D a e m e n avec lalgorithme appel M M B (pour Modular Multiplicationbased Block cipher ) [390, 407, 408]. M M B est fond sur la mme thorie de base
quID E A : mlanger des oprations de diffrents groupes algbriques. M M B est un
algorithme itratif qui consiste principalement en des tapes linaires ( ou exclusif et
application de la clef) et lutilisation en parallle de quatre substitutions non inversibles
linairement. Ces applications sont dtermines par une multiplication modulo 232 1
avec des facteurs constants. Le rsultat est un algorithme comportant la fois des blocs
de 128 bits et une clef de 128 bits.
M M B manipule des sous-blocs de 32 bits de texte ( xq,xi,x 2 ,X3) et des sous-blocs de
clef de 32 bits {ko,ki,k2 ,ks}- Cela rend lalgorithme bien adapt la ralisation sur des
processeurs modernes de 32 bits. Une fonction non linaire / est applique 6 fois en
alternance avec des o u e x c l u s i f . Voici lalgorithme (toutes les oprations sur les indices
sont effectues modulo 4) :
Xi = X i ki pour i = 0 3
f ( x 0 , X i , X 2 , X3 )

Xi = X i ki+ 1 pour i = 0 3
f ( x 0 , X i, X 2 ,X3 )

Xi = X i ki + 2 pour i = 0 3
f ( x o , X l , X 2 , X3 )

Xi = x , k i pour i = 0 3
f(x o ,X i,x 2,xs )

Xi = X i kl+ 1 pour i = 0 3
f ( x 0 , x 1 , X 2 ,X3 )
Xi

X i ki+ 2 pour i 0 3

f{Xc,X]_,X2,X?).

La fonction / a trois tapes :


1.

Xi

Ci- x

pour i

0 3.

2. Si loctet le moins significatif de xo est 1, alors


significatif de x% = 0, alors X 3 X 3 C.

3. Xi = Xi~ 1 xt xt+i pour i = 0 3.

xq

= Xq G ; si loctet le moins

Chapitre 13

346

Autres algorithmes de chiffrement par blocs

Lopration de multiplication de ltape 1 se fait modulo 232 1. Pour les besoins de


lalgorithme, si le second oprande est 232 1, alors le rsultat est 232 1. Les constantes
sont (en hexadcimal) :
C = 2AAAAAAA
c0 = 025F1CDB

Ci = 2c0
c2 23c0
c3 = 27c0.
La constante C est la constante la plus simple avec un poids ternaire lev, le bit
le moins significatif gal 0 et sans symtrie circulaire. La constante Co a t choisie
d aprs certaines caractristiques. Les constantes Ci, c2 et c3 sont des versions dcales
de co pour viter des attaques bases sur la symtrie. Voir [407] pour plus de dtails.
Le dchiffrement est le processus inverse. Les tapes 2 et 3 sont leurs propres inverses.
L tape 1 utilise c~ 1 au lieu de c*. La valeur de c0 1 est 0DAD4694.

Scurit de M M B
La conception de lalgorithme assure que chaque ronde a une diffusion considrable,
indpendamment de la clef. Avec ID E A , la diffusion dpend dans une certaine mesure
des sous-clefs en question. M M B a aussi t conu pour ne pas avoir de clef faible la
diffrence de ID E A .
M M B est mort [405]. Bien quaucune cryptanalyse nait t publie, ceci est vrai pour
plusieurs raisons. Premirement, il na pas t conu pour rsister la cryptanalyse
linaire. Les auteurs ont choisi ces facteurs multiplicatifs pour leur rsistence la
cryptanalyse diffrentielle mais ils ignoraient la cryptanalyse linaire.
Deuximement, Eli B ih a m dtient une attaque effective clefs choisies [167] qui ex
ploite le fait que toutes les rondes sont identiques et que les clefs sont simplement
dcales cycliquement de 32 bits. Troisimement, bien que M M B puisse tre trs effi
cace en logiciel, une ralisation matrielle de lalgorithme serait bien plus lente que le
DES.
D a e m e n conseille toute personne intresse dans lamlioration de M M B de faire
une analyse de la multiplication modulaire par rapport la cryptanalyse, de choisir des
nouveaux facteurs et de rendre la constante C diffrente chaque ronde [405]. Enfin, il
conseille damliorer la gestion des clefs en ajoutant des constantes aux clefs de ronde
pour liminer le biais. Il ne le fera pas lui-mme, il a conu 3 -W a y la place (voir
14.5).

13.11

C A 1.1

C A est un chiffrement par blocs construit partir d un automate cellulaire, conu par
Howard G u t o w i t z [678, 680, 679]. Il chiffre le texte en clair par blocs de 384 bits et
a une clef de 1088 bits (il sagit en fait de deux clefs, une clef de 1024 bits et une de
64 bits). De par la nature de lautomate cellulaire, cet algorithme est le plus efficace
quand il est ralis avec des circuits intgrs massivement parallles.
C A 1.1 utilise des rgles dautomate cellulaire la fois rversibles et irrversibles. Par
une rgle rversible, chaque tat du rseau dcoule d un unique tat prdcesseur, tandis

13.12

S k ip j a c k

347

que par une rgle irrversible, un tat peut avoir de nombreux tats prdcesseurs.
Pendant le chiffrement, les rgles irrversibles sont itres en remontant le temps. Pour
aller en arrire par rapport un tat, un tat est slectionn alatoirement parmi les
tats prdcesseurs possibles. Ce processus peut tre rpt un grand nombre de fois.
Litration arrire sert donc mlanger de linformation alatoire avec le message.
CA 1.1 utilise une catgorie particulire de rgles partiellement linaires irrversibles
qui sont telles quun tat prdcesseur alatoire peut tre rapidement construit pour
nimporte quel tat. Les rgles rversibles sont aussi utilises pour certaines tapes du
chiffrement.
Les rgles rversibles (de simples permutations parallles sur des sous-blocs de ltat)
sont totalement non linaires. Les rgles irrversibles sont entirement dduites partir
de la clef, tandis que les rgles rversibles dpendent la fois de la clef et des informa
tions alatoires insres pendant les tapes de chiffrement avec les rgles irrversibles.
C A -1.1 est construit autour d une structure de blocs chans. C est--dire que la ma
nipulation des blocs de messages est partiellement dcouple du flot dinformations
alatoires insres durant le chiffrement. Ces informations alatoires servent relier
les tapes de chiffrement ensemble. Elles peuvent aussi tre utilises pour chaner le
chiffrement d un flot de blocs. L information dans le lien est engendre dans lappareil
de chiffrement.
C A -1.1 est un nouvel algorithme et il est trop tt pour se prononcer quant son
niveau de scurit. G u t o w i t z dcrit des attaques possibles, y compris la cryptanalyse
diffrentielle, mais il est incapable de casser lalgorithme. G u t o w i t z offre une prime
de 1000 $ toute personne qui dvelopperait une mthode applicable pour casser
C A -1.1 .
C A -l.le s t brevet [680], mais son utilisation est libre pour des utilisations non com
merciales. Toute personne intresse par une licence pour lalgorithme ou par la prime
offerte pour sa cryptanalyse doit contacter : Howard G utow itz, ESPCI, L aboratoire
d lectron iq u e, 10 rue Vauquelin, 75005 P a r is , France.

13.12

Skipjack

S k i p j a c k est lalgorithme de chiffrement dvelopp par la NSA pour les puces C l i p p e r


et C a p s t o n e (voir 24.16 et 24.17). Comme cet algorithme est class Top Secret ,
il na jamais t publi. Il sera ralis uniquement dans des puces rsistantes linves
tigation.
Lalgorithme est class Top Secret non pas parce que cela augmente la scurit,
mais parce que la N SA ne veut pas que lalgorithme soit utilis sans le mcanisme de
dpt de clef C l i p p e r . Ils ne veulent pas que lalgorithme soit ralis en logiciel et
stende travers le monde.
S k i p J a c k est il sr? Si la NSA veut produire un algorithme sr, elle peut certainement
le faire. D un autre ct, si la N SA veut concevoir un algorithme avec brche secrte,
elle peut tout aussi bien le faire.
Voici ce qui a t publi [1174, 468] :

- C est un algorithme itratif de chiffrement par blocs.


- La taille des blocs est de 64 bits.

Chapitre 13

Autres algorithmes de chiffrement par blocs

- Il a une clef de 80 bits.


- Il peut tre utilis avec les modes opratoires : E C B , C F B , O FB sur 64 bits et
C B C sur 1, 8, 16, 32 ou 64 bits.
- Il y a 32 rondes par opration simple de chiffrement ou de dchiffrement.
- La NSA a dmarr la conception en 1985 et a termin lvaluation en 1990.
La documentation de la puce C l i p p e r de M y k o t r o n x indique que la latence de
lalgorithme S k i p j a c k est de 64 cycles d horloges. Cela veut dire que chaque ronde
prend deux cycles dhorloges : certainement un pour la substitution par table-S1et un
pour le o u e x c l u s if final la fin de la ronde7. La documentation de M y k o t r o n x fait
rfrence cette opration sur deux cycles sous le nom de table G et lensemble
sous le nom de s h if t ( dcalage ). (Une partie de la table-G est appele table-F,
probablement une table de constantes, ou peut-tre une table de fonctions.)
J ai entendu une ru m eur disant que S k i p j a c k utilise 16 tables S , et une autre disant
que la m m oire totale prise p a r les tables -S est de 128 octets. Il y a p eu de chances
que ces rum eurs soient toutes les deux vraies.

Une autre rumeur insinue qu linverse de celles du DES, les rondes de S k i p j a c k


nagissent pas sur des moitis de bloc. Ceci combin avec la notion de dcalages et
une dclaration faite par mgarde la confrence Crypto 94 comme quoi S k i p j a c k a
une structure interne sur 48 bits implique quil est de conception similaire SHA
(voir 18.7) mais avec quatre sous-blocs de 16 bits : trois sous-blocs passent travers
une fonction sens unique dpendant de la clef pour donner 16 bits qui sont combins
par ou exclusif avec le sous-bloc restant. Ensuite le bloc entier est dcal circulairement
de 16 bits pour devenir lentre de la ronde suivante. Cela implique aussi 128 octets de
donnes pour les tables-.S'. Je suspecte que les tables ,? dpendent de la clef.
L a structure de S k i p j a c k est probablem ent sim ilaire celle d u D E S . L a N SA est
consciente de la possibilit de reconstruire l algorithm e p a rtir des puces ; ils ne ris
queront pas de nouvelles techniques cryptographiques avances.

Le fait que la NSA compte utiliser lalgorithme S k i p j a c k pour chiffrer son Defense
Messaging System (D M S) indique que lalgorithme est sr. Pour convaincre les scep
tiques, le N IST a autoris des experts reconnus extrieurs au gouvernement accder
aux dtails confidentiels de lalgorithme pour valuer ses possibilits et rapporter pu
bliquement leurs rsultats [802].
Le rapport prliminaire de ces experts [266] conclut aussi :
En faisant lhypothse que le cot de la puissance de calcul est divis
par deux tous les dix-huit mois, cest dans 36 ans que la difficult pour
casser S k i p j a c k par attaque exhaustive galera la difficult de casser le
DES aujourdhui. Donc il ny a pas de risque significatif que S k i p j a c k soit
cass par attaque exhaustive dans les 30 40 ans venir.
Il ny a pas de risque significatif que S k i p j a c k puisse tre cass par
une mthode d attaque base sur un raccourci, y compris la cryptanalyse
diffrentielle. Il ny a pas de clefs faibles ; il ny a pas de proprit de compl
mentarit. N ayant pas eu le temps d valuer lalgorithme dans les dtails,
7. R appelez vous que les perm utations ne prennent pas de tem ps en ralisation matrielle.

13.12

S k i p ja c k

349

les experts ont valu le processus de conception et dvaluation de la N SA


elle-mme.
Le niveau de scurit de S k i p j a c k contre une attaque cryptanalytique
ne dpend pas du caractre secret de lalgorithme.
Bien sr les experts nont pas eu le temps d examiner lalgorithme dassez prs pour en
arriver une conclusion par eux-mmes. Tout ce quils pouvaient faire tait de regarder
les rsultats que la N SA leur a montr.
Une question sans rponse est de savoir si lespace des clefs est linaire (voir 8.2).
Mme si S k i p j a c k na pas de clef faible au sens du D E S , des artfacts du processus
de gestion des clefs pourrait rendre certaines clefs plus fortes que dautres. SK IP JA C K
aurait beau avoir 270 clefs fortes, bien plus que le D E S , les chances d en choisir une au
hasard seraient seulement de 1 sur 1000. Personnellement, je pense que lespace des clefs
de SK IP JA C K est linaire, mais le fait que personne ne lait jamais dit publiquement
est inquitant.
S k i p j a c k est brevet, mais le brevet est en train d tre retir de la distribution par
un accord sur la confidentialit du brevet [1128]. Le brevet ne verra le jour que si
lalgorithme S k i p j a c k est reconstitu avec succs depuis une puce. Cela fournit au
gouvernement le beurre et largent du beurre : la protection d un brevet et la confiden
tialit dun march secret.

Chapitre 14

Encore dautres algorithmes


de chiffrement par blocs
14.1

GOST

GO ST est un algorithme de chiffrement par blocs provenant de lex-Union Sovitique


[657, 1399]. GOST est lacronyme de Gosudarstvennyi Standard , ce qui veut dire
standard gouvernemental . C est une sorte d analogue du FIPS amricain mis part
le fait quil se rfr nimporte quel type de standard1. Le numro de ce standard est
28147-89. Le commit gouvernemental de normalisation sovitique autorisa le standard,
quel quil soit.
Je ne sais pas si G O S T 28147-89 a t utilis pour des messages classs secrets ou
seulement pour des besoins civils. Une remarque prliminaire spcifie que lalgorithme
remplit toutes les exigences cryptographiques et quil ny a pas de limite sur le de
gr de confidentialit des informations protger . Jai entendu quil fut initialement
utilis pour des communications haut degr de confidentialit, y compris des com
munications militaires classes, mais sans en avoir la confirmation.

Description de GOST
GOST utilise des blocs de 64 bits et une clef de 256 bits. La clef comporte dautre l
ments suplmentaires qui seront prsents plus loin. L algorithme consiste en litration
sur 32 rondes dun algorithme de chiffrement simple.
Pour chiffrer, il faut commencer par partager le texte en deux : la moiti gauche, L et
la moiti droite D. La sous-clef pour la ronde i est note Ki. La ronde i de G O S T se
formalise ainsi :
t , Rii

Ri = Li-i f(Ri~ A )
1. En ralit, le nom com plet est G osudarstvennyi Standard Soyuza SSR , soit standard gou
vernemental de l Union des rpubliques socialistes sovitiques .

S52

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

La figure 14.1 illustre une ronde de G O S T . La fonction / est assez simple. Tout
dabord, la moiti droite et la ie clef sont ajoutes modulo 232. Le rsultat est coup en
huit morceaux de 4 bits qui passent ensuite chacun travers une table-S' diffrente. Il y
a huit tables S distinctes dans G O S T ; les quatres premiers bits vont dans la premire
table-S, les quatre suivants dans la deuxime, et ainsi de suite. Chaque table-S est
une permutation des nombres de 0 15. Une table-S pourrait tre la suivante par
exemple :
7, 10, 2, 4, 15, 9, 0, 3, 6, 12, 5, 13, 1, 8, 11
Dans ce cas, le bit en position 0 en entre se retrouve en position 7 en sortie. Celui de
position 1 se retrouve en position 10, et ainsi de suite. Les huits tables-S sont toutes
diffrentes; elles sont considres comme une partie de la clef et doivent rester secrtes.

F i g . 14.1 - Une ronde de G O S T

Les sorties des tables-,S' sont mises bout bout pour former un mot de 32 bits qui
subit un dcalage circulaire gauche de 11 bits. Finalement, le rsultat est combin
par ou exclusif la moiti gauche pour devenir la moiti droite, et la moiti droite
devient la nouvelle moiti gauche. Faites cela 32 fois et vous avez fini.
La gnration des sous-clefs est simple. La clef de 256 bits est coupe en huit morceaux
de 32 bits : k\, fc2, -, kg. Chaque ronde utilise une des sous-clefs comme indiqu dans
le tableau 14.1. Le dchiffrement se fait avec le mme algorithme en inversant lordre
des ki.
Le standard G O S T ne dit pas comment gnrer les tables S1, elles sont d une certaine
manire fournies [657]. Certains spculrent quune certaine organisation sovitique
pourrait fournir des tables-S solides qui bon lui semblerait et des mauvaises ceux
quelle voudrait espionner. Cela pourrait trs bien tre vrai mais des discussions plus
pousses avec un fabricant de puces G O S T en Russie mnent une autre alternative.

14-1

GOST

353

Tab.

14.1 - Sous-clefs utilises dans chaque ronde de G O S T

Ronde :
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Sous-clef: 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
Ronde:
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Sous-clef: 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1

Il a gnr lui-mme les permutations des tables-.S' avec un gnrateur de nombres


alatoires.
Plus rcemment, un ensemble de tables-S utilis dans par la banque centrale de Russie
a vu le jour. Ces tables-S sont aussi utilises dans la fonction de hachage sens unique
GOST (voir 18.11) [659]. Elles sont donnes dans le tableau 14.2.

Cryptanalyse de GOST
Il y a des diffrences majeures entre G O S T et le DES.
- La gnration des sous-clefs est complique dans le DES. Elle est simple dans
GOST.
- Le DES utilise une clef de 56 bits; G O S T utilise une clef de 256 bits. Si vous
prenez en compte les tables S, cela reprsente environ 610 bits dinformation
secrte.
- Les tables-S1du DES ont 6 bits dentre et 4 de sortie; celles de G O S T ont 4
bits d entres et 4 de sortie. Les deux algorithmes utilisent 8 tables-S, mais celles
du DES sont quatre fois plus grandes que celles de G O S T .
- Le DES utilise une permutation irrgulire, appele une table-P ; G O S T utilise
un dcalage circulaire gauche de 11 bits.
- Le DES opre 16 rondes ; G O S T en opre 32.
Sil ny a pas d autre moyen de casser G O S T que lattaque exhaustive, c est un algo
rithme trs sr. G O S T utilise une clef longue de 256 bits et mme plus si on compte
les tables-S. G O S T est certainement plus rsistant aux cryptanalyse diffrentielle et

Table-S
Table-S
Table-S
Table-S
Table-S
Table-S
Table-S
Table-S

1:
2:
3:
4:
5:
6:
7:
8:

4
14
5
7
6
4
13
1

ab

14.2 - Tables-S de G O S T

10 9 2 13 8 0
11 4 12 6 13 15
8 1 13 10 3 4
13 10 1 0 8 9
12 7 1 5 15 13
11 10 0 7 2 1
11 4 1 3 15 5
15 13 0 5 7 10

14 6 11 1 12
10 2 3 8 1
2 14 15 12 7
15 14 4 6 12
8 4 10 9 14
13 3 6 8 5
9 0 10 14 7
4 9 2 3 14

7 15 5 3
0 7 5 9
6 0 9 11
11 2 5 3
0 3 11 2
9 12 15 14
6 8 2 12
6 11 8 12

Chapitre 14

354

Encore dautres algorithmes de chiffrement par blocs

linaire que le DES. Bien que les tables -S alatoires de G O S T soient probablement
plus faibles que celles adoptes dans le DES, le fait quelles soient secrtes renforce
la rsistence de G O S T aux attaques diffrentielles et linaires. Ces deux attaques d
pendent aussi du nombre de rondes : plus il y a de rondes, plus lattaque est difficile.
Le seul fait que G O S T ait deux fois plus de rondes que le DES rend probablement les
deux cryptanalyss diffrentielle et linaire impratiquables.
Les autres parties de G O S T sont quivalentes ou infrieures celles du DES. GOST
nutilise pas de permutation expansive quivalente celle du DES. Retirer cette per
mutation du DES laffaiblit en rduisant leffet d avalanche; il est raisonnable que
G O S T est plus faible que sil utilisait une telle permutation. L emploie dans GOST
de laddition au lieu du ou exclusif du DES nest pas moins sre.
La principale diffrence entre les deux algorithmes semble rsider dans le dcalage
circulaire de G O S T au lieu d une permutation expansive. Cette permutation augmente
dans le DES l'effet d avalanche. Dans G O S T , le changement d un bit dentre affecte
une table-S la premire ronde, ce qui affecte ensuite deux tables S la deuxime
ronde, puis quatre la troisime ronde, et ainsi de suite. Il faut huit rondes de GOST
avant que la modification d un bit naffecte tous les bits de sortie, alors que cinq suffisent
avec le DES. Ceci est certainement une faiblesse. Mais noubliez pas que G O S T a 32
rondes et que le D ES en a 16.
Les concepteurs de G O S T ont essay de raliser un compromis entre lefficacit et la
scurit. Ils ont modifis la conception originelle du DES pour obtenir un algorithme
mieux adapt la ralisation par logiciel. Ils semblent avoir t moins srs de la scurit
de lalgorithme et ils ont essay de la compenser en allongeant la longueur de la clef, en
gardant les tables -S secrtes et en doublant le nombre d itrations. Que leurs efforts
aient abouti un algorithme plus sr que le DES reste encore voir.

14.2

CAST

C A S T a t conu au Canada par Carlisle A d a m s et Stafford T a v a r e s [14, 11]. Ils


prtendent que le nom provient de la faon dont lalgorithme a t conu, et est sens
voquer limage du hasard, mais remarquez les initiales des auteurs. Dans C A S T , les
blocs ont une taille de 64 bits, ainsi que la clef.
La structure de C A S T va vous paratre familire. L algorithme utilise huit tables ,?
prenant 8 bits en entre et 32 en sortie. La construction de ces tables S est complique
et dpend de la ralisation, reportez-vous aux rfrences pour les dtails.
Pour chiffrer, il faut partager le texte en clair en la moiti gauche et la moiti droite.
L algorithme opre huit rondes. A chaque ronde, la moiti droite est combine avec
une partie de la clef en utilisant une fonction / et avec la moiti gauche par ou exclusif
pour devenir la nouvelle moiti droite. La moiti droite originelle (avant modifications)
devient la nouvelle moiti gauche. Aprs la huitime ronde, il ne faut pas changer les
deux moitis droite et gauche ; le texte chiffr est obtenu en les mettant bout bout.
La fonction / est simple :
1 Diviser les 32 bits dentre en quatre parts de 8 bits, a, b, c, d.
2 Diviser les 16 bits de la sous-clef en deux morceaux de 8 bits : l, m.
3 Passer a travers la table S 1, b travers la table-S 2, c travers la table-S 3,

14-3

355

B lo w fis h

d travers la table- S 4, l travers la table-S 5, m travers la table-S 6 .

4 Combiner par ou exclusif les six sorties des tables-S ensembles pour obtenir
la sortie finale de 32 bits.
Une alternative consiste combiner par ou exclusif les 32 bits dentre et 32 bits de
la clef, partager le rsultat en quatre parts de 8 bits, et combiner le tout par ou
exclusif [11]. Il se trouve que N rondes de cette version sont aussi sres que N + 2
rondes de lautre option.
Les sous-clefs de 16 bits sont facilement calcules d aprs la clef de 64 bits. En notant
ki,k-2 , fis les huits octets de la clef, les sous-clefs de chaque ronde sont les suivantes :
Ronde
Ronde
Ronde
Ronde
Ronde
Ronde
Ronde
Ronde

1 : k\,
2 : kz,
3 : k$,
4 : k?,
5 : k4,
6 : k2 ,
7 : ks ,
8 : k6,

k-2
k4
ke
k$
k-j,

fci
fc7

La solidit de cette algorithme rside dans ses tables -S. Les tables S de C A S T ne sont
pas fixes ; de nouvelles tables sont construites pour chaque application. Les critres de
conception sont donns dans [14] ; les fonctions courbes sont les colonnes des tables5, et sont choisies selon un certain nombre de proprits dsires des tables-5 (voir
14.10). Une fois quun ensemble de tables S a t attribu une ralisation donne
de C A S T , elles restent fixes jamais. Les tables-5 dpendent de la ralisation, mais
pas de la clef.
Il est montr dans [14] que C A S T rsiste la cryptanalyse diffrentielle et dans [731]
quil rsiste la cryptanalyse linaire. La seule mthode connue de casser C A S T est
lattaque exhaustive.
La socit N o r t h e r n T e l e c o m utilise C A S T dans leur logiciel de scurit Entrust
qui est distribu pour les Macintosh, les PC, et les stations Unix. Les tables -S quils
ont choisies nont pas t rendues publiques. Le gouvernement canadien value actuel
lement C A S T comme un nouveau standard de chiffrement. C A S T est en instance de
brevetage.

14.3

Blowfish

B l o w f i s h est un algorithme de ma conception, prvu pour tre ralis par logiciel sur
les gros microprocesseurs [1394, 1393]. L algorithme nest pas brevet et le code source
en C qui se trouve la fin de cette ouvrage fait partie du domaine publique. Jai conu
B l o w f i s h pour rpondre aux critres de conception suivants :

1. Rapidit. B l o w f i s h chiffre sur un microprocesseur 32 bits la vitesse de 26


cycles d horloge par octet.
2. Compacit.

l o w f is h

peut tourner avec moins de 5 kilo-octets de mmoire.

Chapitre 14

356

Encore dautres algorithmes de chiffrement par blocs

3. Simplicit. B l o w f i s h n utilise que des oprations simples : addition, ou exclusif,


et recherche dans des tableaux avec des paramtres de 32 bits. Sa conception est
facile analyser, ce qui le rend rsistant aux erreurs de programmation [13951.
4. Scurit variable. La longueur de la clef est variable dans B l o w f i s h et peut
atteindre 448 bits.
B l o w f i s h est optimis pour les applications o la clef ne change pas souvent, comme
les liens de communication ou un chiffreur automatique de fichiers. Il est significative
ment plus rapide que le DES avec des microprocesseurs 32 bits possdant une mmoire
cache importante tels que le Pentium ou le PowerPC. B l o w f i s h nest pas adapt aux
applications telles que lchange de paquets avec beaucoup de changement de clefs, ou
lutilisation comme fonction de hachage sens unique. L espace mmoire requis est
trop important pour lutiliser dans les cartes puces.

Description de Blowfish
B l o w f i s h est un algorithme de chiffrement par blocs de 64 bits longueur de clef
variable. L algorithme se fait en deux phases : expansion de la clef et chiffrement des
donnes. L expansion de la clef convertit une clef de taille infrieure 448 bits en
plusieurs tableaux de sous-clefs dune taille totale de 4168 octets.
Le chiffrement est obtenu en itrant 16 fois une fonction simple (voir la figure 14.2).
Chaque ronde consiste en une permutation dpendant de la clef et une substitution
dpendant de la clef et des donnes. Toutes les oprations sont des additions et des ou
exclusifs sur des nombres de 32 bits. La seule opration supplmentaire est la consul
tation de quatre tableaux indxs par ronde.
B lo w fis h

utilise un grand nom bre de sous-clefs. C es sous-clefs doivent tre pr

calcules avant tout chiffrement ou dchiffrement de donnes.

Le tableau P est constitu de 18 sous-clefs de 32 bits :


Pi,P'2 , ,Pis-

Il y a quatre tables-S de 32 bits ayant 256 entres chacune :


$1,0,$1.1 , A , 255
$ 2 ,0 ,$ 2 .1 ,- . . ,$2,255
$ 3 ,0 ,$ 3 ,l i ,$3,255
$ 4 ,0,$4.1 , - - ,$4,255

La mthode de calcul de ces sous-clef sera expose un peu plus loin.


B l o w f i s h est un rseau de Feistel (voir 14.10) constitu de seize rondes. L entre
est un lment de donnes x de 64 bits. Pour chiffrer, procder de la manire suivante :
Partager x en deux moitis de 32 bits :
Pour i variant de 1 16, effectuer:

XL = XL Pt
x R = F (x l ) Xn
Echanger x l et x r

x l ,x r .

14-3

35 7

B lo w fis h

changer

xr

et

xr

= xr Pn

x l

x r

Remettre

Pi8
et

xr

ig

14.2 -

l o w f is h

x r

(annuler le dernier change).

x r

bout bout.

La fonction F est la suivante (voir la figure 14.3) :


Diviser x r en quatre parts de 8 bits a,b,c,d.
x r ) = ((5 i,a + S2,b modulo 232) 5 3iC) + 5 4,d modulo 232

F {

Le dchiffrement seffectue exactement de la manire en inversant lordre des Pi.


Les ralistions de B l o w f i s h ncessitant une vitesse maximale devraient drouler la
boucle et sassurer de la prsence des sous-clefs dans la mmoire cache. Voir [570] pour
les dtails.

Chapitre 14

358

8 bits

Encore dautres algorithmes de chiffrement par blocs

Table-S 1

32 bits
l

8 bits

Table-S 2

32 bits 1

32 bits
8 bits

Table-S 3

32 bits
32 bits

8 bits

Table-S 4

32 bits

F ig . 14.3 - La fonction F

Les sous-clefs sont calcules de la manire suivante :

1 Initialiser le tableau- P et les quatre tables-S avec une chane de caractres


fixe. Cette chane est constitue des dcimales de

t.

2 Combiner par ou exclusif Pi et les 32 premiers bits de la clef, P2 avec les 32

bits suivants, et ainsi de suite pour tous les bits de la clef Itrer ce procd le
nombre ncessaire de fois pour traiter tout le tableau-P.
3 Chiffrer la chane constitue de zros uniquement avec B l o w f ish et les sous-

clefs telles quelles sont aprs les tapes 1 et 2 .


4 Remplacer Pi et P2 avec le rsultat de ltape 3.
5 Chiffrer le rsultat de ltape 3 avec B lo w fish et les sous-clefs modifies.
6

Remplacer P3 et P4 avec le rsultat de ltape 5.

7 Itrer ce procd de manire remplacer tous les lments du tableau-P et


des tables-S (dans lordre) avec le rsultat de lalgorithme B l o w f ish modifi
chaque fois.

521 itrations sont ncessaires au total pour gnrer toutes les sous-clefs. Lapplication
peut stocker les sous-clefs, il nest pas ncessaire d effectuer ce procd de gnration
plusieurs fois.

Scurit de Blowfish
Serge V a u d e n a y a examin B l o w f ish avec r rondes en ayant connaissance des tablesUne attaque diffrentielle permet de retrouver le tableau-P avec 2 8 r + 1 textes en
clair choisis [1570]. Pour certaines clefs faibles qui gnrent de mauvaises tables-5 (la
S.

144

SAFER

359

probabilit d en prendre une au hasard est de une chance sur 214), cette attaque na
besoin que de 24r 11 textes en clair choisis. Si les tables- S ne sont pas connues, cette
attaque permet de dtecter si une clef faible a t utilise, mais ne permet pas de
la trouver (ni les tables- 5 , ni le tableau-P). Cette attaque ne marche que contre les
variantes avec peu de rondes; elle est compltement impraticable contre le B l o w f i s h
16 rondes.
Bien sr, la dcouverte de clefs faibles est significative, mme si elle semble impossible
utiliser. Une clef faible est une clef pour laquelle deux entres dune des table-S1sont
identiques. Il ny a pas moyen de tester si une clef est faible avant d effectuer la phase
dexpansion. Si vous vous inquitez, il vous faut faire lexpansion de la clef et vrifier
quaucune des tables-S na deux entres identiques. Cependant, je ne pense pas que
cela soit ncessaire.
Je ne connais aucune attaque cryptanalytique contre B l o w f i s h . Par prudence, ne
ralisez pas B l o w f i s h avec un nombre rduit de rondes.
La socit K e n t M a r s h L t d . a incorpor B l o w f i s h dans leur produit de protection
FolderBolt pour Microsoft Windows et Macintosh. Il fait aussi partie de Nautilus
et PGPfone .

14.4

SAFER

SA F E R K -64 vient de Secure And Fast Encryption Routine qui veut dire procdure
de chiffrement rapide et sre [1015]. K-64 signifie que la clef a une longueur de 64
bits. James M a s s e y a conu cet algorithme non dpos pour C y l i n k C o r p . et fait
partie de certains de leurs produits. Le gouvernement de Singapour prvoit dutiliser
cet algorithme avec une clef de 128 bits [1016] pour une large varit d applications. Il
ny a ni brevet, ni droits d exploitation, ni aucune autre restriction sur son utilisation.
La taille des blocs et de la clef sont de 64 bits. Ce nest pas un rseau de Feistel comme
le DES (voir 14.10), mais un algorithme de chiffrement par blocs itratif: la mme
fonction est applique pour un certain nombre de rondes. Chaque ronde utilise deux
sous-clefs de 64 bits, et lalgorithme nutilise que des oprations sur des octets.

Description de SAFER
Le bloc de texte en clair est divis en huit parts d un octet :
. . . ,BH. Les sousblocs subissent alors r rondes. Pour finir, une transformation de sortie est applique
aux sous-blocs; Chaque ronde utilise deux sous-clefs :
i et K^rLa figure 14.4 illustre une ronde de S A F E R K-64. Les sous-blocs sont tout dabord
combins avec des bits de la sous-clef K<ir i par ou exclusif ou par addition. Les huits
sous-blocs subissent ensuite une des deux transformations non linaire suivantes :
y 45x modulo 257. (Si x = 0, on pose y = 0.)
y = log45 x. (Si x = 0, on pose y = 0.)

Ce sont des oprations dans le corps fini Z/257, et 45 est un gnrateur de ce corps.
Dans les ralisations pratiques de SA F E R , il est plus rapide de stocker ces valeurs
dans un tableau que de les recalculer chaque fois. Les sous-blocs sont alors combi
ns avec des bits de la sous-clef K ir par ou exclusif ou par addition. Les rsultats

360

Chapitre 14

ig .

Encore dautres algorithmes de chiffrement par blocs

14.4 - Une ronde de S A F E R

de cette opration passent alors travers trois couches doprations linaires dont
l'intrt est d augmenter leffet davalanche. Chaque opration est appele une pseudo
transformation dHadamard (P T H en abrg). Si une P T H prend en entre ai et a2,
alors sa sortie est :
bi = (2 * ai + a2) modulo 256
62

= (ai + a2) modulo 256

Aprs les r rondes, on opre une transformation finale, la mme que la premire tape
de chaque ronde. Bi, B 4 , B 5 , et Bs sont combins par ou exclusif avec les octets
correspondants de la dernire sous-clef, et Z?2, B 3 , B, et B 7 sont additionns avec les
bits correspondants de la dernire sous-clef. Le rsultat est le texte chiffr.
Le dchiffrement est le procd inverse: la transformation de sortie (avec des sous
tractions au lieu des additions), puis r rondes inverses. La PTH inverse (P T H I) est
donne par :
ax = (>1 6 2 ) modulo 256
a 2 = {bi + 22) modulo 256
M A S S E Y conseille d effectuer 6 rondes, m ais vous pouvez en faire plus p o u r plus de
scurit.

14.5

361

3 -W A Y

La gnration des sous-clefs est simple. La premire sous-clef K\ est la clef elle mme.
Les sous-clefs suivantes sont produites de la manire suivante :
K i+1 = (K i <

3i) + Ci

Le symbole < < < est un dcalage circulaire vers la gauche soit encore une rotation
vers la gauche. La rotation se fait octet par octet, et c, est une constante de la ronde.
Si Cij reprsente le j e bit de la constante de la ie ronde, vous pouvez calculer les
constantes de toutes les rondes grce la formule suivante :
Cij = 4545<e l j) modul 257 modulo 257 m o d u lo 2 5 ?

Gnralement, ces valeurs sont stockes dans un tableau.

SAFER K-128
Cette alternative de gestion des clefs a t dveloppe par le ministre de lintrieur
de Singapour, et incorpore ensuite par M a s s e y dans S A F E R [1016]. Elle repose sur
deux clefs de 64 bits K a et Kb- Lastuce consiste gnrer deux squences de sous-clefs
en parallle et prendre alternativement une sous-clef dans chaque squence. Cela
signifie quen prenant K a K h, la clef de 128 bits est compatible avec la clef de 64
bits K a.

Scurit de SAFER k-64


M A S S E Y a montr que S A F E R est immune la cryptanalyse diffrentielle partir de
huit rondes et suffisament rsistant cette attaque aprs six rondes. La cryptanalyse
linaire est inefficace contre cet algorithme aprs trois rondes seulement [1016].
KNUDSEN a trouv une faiblesse dans la gestion des clefs : il existe virtuellement pour
chaque clef au moins une autre clef (et parfois jusqu neuf autres clefs) telle que
les clefs chiffrent des textes en clair diffrents en textes chiffrs identiques [862]. Le
nombre de textes en clair diffrents qui deviennent le mme texte chiffr aprs six
rondes est compris entre 222 et 228. Si la scurit de S A F E R nen patt pas lorsquil
est utilis comme algorithme de chiffrement, cela rduit considrablement sa scurit
sil est employ comme fonction de hachage sens unique. Dans tous les cas, K N U D SEN
conseille d effectuer huit rondes.
SA F E R a t conu pour C y l i n k qui est soudoye par la N SA [87]. Je recommande
quelques annes de cryptanalyse intensive avant d utiliser S A F E R sous quelque forme
que soit.

14.5

3-W A Y

3-W AY est un algorithme de chiffrement par blocs conu par Joan D A E M E N [405, 411].
Il utilise des blocs et une clef de mme taille : 96 bits, et il est conu pour tre trs
efficace en ralisation matrielle.
3-W AY n est pas un rseau de Feitel mais un algorithme de chiffrement itratif. 3W AY peut comprendre n rondes; D a e m e n en conseille 11.

362

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

Description de 3-W A Y
Lalgorithme est simple dcrire Pour chiffrer un bloc de texte en clair x , procd
comme suit :
Pour i variant de 0 n 1, effectuer les oprations suivantes :
x = x Kt
x = theta(x)
x = pi l(x )
x = gamma(x)
x = pi 2(x)

x = x K n+ 1
x = theta(x)

Les fonctions sont les suivantes :


theta(x) est une fonction de substitution linaire en substance, un mlange de
dcalages circulaires et de ou exclusifs.
- pi l(x ) et pi 2(x) sont des permutations simples.

- gamma(x) est une fonction de substitution non linaire. Cest cette tape qui a
donn son nom 3-W A Y ; il sagit de lexcution en parallle d oprations de
substitution sur des blocs de 3 bits de lentre.
Le dchiffrement se fait de la mme manire en inversant les bits de lentre et aussi
ceux de la sortie. Le code source de 3-W A Y se trouve la fin de ce livre.
Jusqu prsent, personne na russi cryptanalyser 3-W AY. Lalgorithme nest pas
brevet.

14.6

CRAB

Les auteurs de cet algorithme sont Burt KALISKI et Matt RoBSHAW des laboratoires
R SA [800]. L ide de C R A B est dutiliser les techniques propres au fonctions de ha
chage sens unique pour construire un algorithme de chiffrement rapide. Du coup,
C R A B ressemble beaucoup M D5, et les concepts du paragraphe 18.5 seront suppo
ss connus dans ce qui suit.
C R A B sappuie sur une grande taille de blocs : 1024 octets. Comme C R A B est plutt
un travail de recherche qu'un algorithme rel, aucune procdure de gnration de clef
nest dcrite. Les auteurs suggrent une mthode permettant de dduire d une clef de
80 bit les trois sous-clef requises, bien que lalgorithme pourrait trs bien accepter des
clefs de longueur variable.
C R A B utilise deux ensembles de grandes sous-clefs:
Une permutation des nombres de 0 255 : Po,Pi, ,p 2bcUn tableau de 2048 nombres de 32 bits : So,S \, . . . ,52047-

CRAB

14.6

363

Ces sous-clefs doivent tre calcules avant le chiffrement ou le dchiffrement.


Voici comment chiffrer un bloc X de 1024 octets :
1 D i v i s e r X e n 256 s o u s -b lo c s d e 32 b i t s : X 0 , X i , . . . , X 255.
2 P e r m u t e r les s o u s -b lo c s d e X s e lo n P .
3 P o u r r v a r ia n t de 0 3 e t g v a r ia n t de 0 63, e ffe c tu e r :
A = X {4g )< < < 2r
B = -V(4ff+ l ) < 2 r
C = X ( 4g+2 ) < 2 r
B

X ( 4 f/+3'j < < < 2 r

P o u r s v a r ia n t de

0 7, fa ir e :

A = A (B + f r(B ,C ,D ) + *S'512ir+8g+s)
A = D
D = C
C = B
B = A < 5
A = A'

^ { 4g ) < 2r = A
A ( 4 s- | _ i ) < 2r B
X ( 4 g + 2) < 2 r

X (4 < , i - 3 ) < 2 r

4 R e m e t tr e X 0 , X i , . . . , X 255 e n s e m b le p o u r f o r m e r le t e x t e c h iffr .
Les fonctions f r ( B , C , D ) sont similaires celles utilises dans M D -5 :
f ( B , C , D ) ( B A C ) V ( ( - .B ) A D )
f ( B , C , D ) = ( B A D ) V ( C V (-,>))
f(B ,C ,D ) B 0 C D
f { B , C , D ) = C ( B V (-.>))

Le dchiffrement se fait par le procd inverse.


La gnration des clefs est une lourde tche. Voici comment produire le tableau P
reprsentant la permutation requise partir dune clef K de 80 bits :

ln itia lis e r K^, K\, . . . ,Kg a v e c les d ix o c te ts d e K .

2 P o u r i v a r ia n t d e 10 255 e ffe c tu e r :
Ki =

2 K ig K i -

K i - 10.

3 P o u r i v a r ia n t de 0 255, p o s e r P i = i.
4 m = 0.

Chap re 14

Encore dautres algorithmes de chiffrement par blocs

5 Effectuer deux fois la boucle suivante : pour i variant de 256 1 (par incr
mentations de 1), faire:
m = ( K 256-i + K 257- i ) modulo i
K 257-i = ^257-i < 3
Echanger I\ et l\-\

Le tableau S pourrait tre construit d une manire similaire, soit partir de la mme
clef de 80 bits, soit partir dune autre. Les auteurs attirent lattention sur limportance
de ces dtails : il peut trs bien exister des schmas alternatifs la fois plus efficaces
et offrant plus de scurit [800].
C R A B a t prsent plus comme un nid d ides nouvelles que comme un algorithme
fonctionnant. Il utilise beaucoup de techniques similaires celles de M D -5. B ih a m
prtend quune taille de bloc trop large rend la cryptanalyse d un algorithme plus
aise [167]. D un autre ct, C R A B pourrait fort bien saccomoder dune trs longue
clef. Dans ce cas, plus ais cryptanalyser risque de ne plus vouloir dire grand
chose.

14.7

SXAL8 et M B AL

Il sagit d un algorithme par blocs de taille 64 bits [769]. SX A L 8 est lalgorithme de


base; M B A L est une version tendue dans laquelle la taille des blocs est variable.
Partant du fait que M B A L opre intelligemment de faon interne, les auteurs pr
tendent obtenir une scurit suffisante avec peu de rondes seulement. Avec une taille de
bloc de 1024 bits, M B A L est environ 70 fois plus rapide que le DES. Malheuresement,
il est montr dans [1180] que M B A L est propice la cryptanalyse diffrentielle et dans
[866] quil est propice la cryptanalyse linaire.

14.8

R.C5

RC5 est un algorithm e de chiffrement p a r blocs avec de nom breux param tres : taille
des blocs, taille de la clef, et nom bre de rondes. R o n R

iv e s t

en estlinventeur et il a

R SA [1335, 1336],
Il y a trois oprations: ou exclusif, addition, et rotation. Les rotations prennent un
temps constant sur la plupart des processeurs et les rotations variables sont des fonc
tions non linaires. Ces rotations qui dpendent la fois de la clef et des donnes
constituent la partie intressante.
La longueur des blocs est variable dans R C5, mais on se concentrera dans lexemple
qui suit sur une taille de 64 bits. Le chiffrement ncessite 2r + 2 mots de 32 bits
dpendants de la clef, Sq,Si , . . . ,S2r+2, o r est le nombre de rondes. Nous parlerons
de leur gnration plus tard. Pour chiffrer, diviser tout dabord le bloc de texte en clair
en mots de 32 bits : A et B. Il faut alors procder ainsi :
t analys p a r les laboratoires

A = A + iSo
B = B + Si

14-8

365

RC5

Pour i variant de 1 r, effectuer :

A {{A 0 B) <
B = ((B A) <

B ) + S2i
A) + S2i+ 1

La sortie est constitue des registres A et B.


Le dchiffrement est tout aussi facile. Partager le texte chiffr en deux mots A et B ,
et effectuer :
Pour i dcroissant de r 1 :
B = {{B - S 2z+1) > A) A
A = (( A - S m ) > B ) B

B = B +Sx
A = A 4- Sq

La cration du tableau de ciels est plus complique mais directe aussi. Commencez
par copier les bits de la clef dans un tableau L de c mots de 32 bits (en remplissant
si ncessaire le dernier mot avec des zros). Initialisez alors le tableau en utilisant un
gnrateur congruentiel modulo 232 :
S0 = P
Pour i variant de 1 2 (r + 1) 1, effectuer :
St = {Si + Q ) modulo 232
P = 0xB7E15163 et P = 0x9E3779B9 sont des constantes bases sur
Pour finir, mlangez L et S :

e.

i= j = 0
A = B = 0

Effectuer n fois (o n est le maximum de 2(r + 1) et c) :


A = Si = (Sz + A + B) < 3
B = Lt = { L j + A + B ) < {A + B)

i = {i + 1) modulo 2(r + 1)
j = (j + 1) modulo c

RC5 est en fait une famille dalgorithmes. Nous avons dfini R C 5 avec des mots de 32
bits de long et des blocs de 64 bits de long ; rien nempche lalgorithme de fonctionner
avec des mots de 64 bits de long et des blocs de 128 bits de long. R i v e s t dsigne
les ralisations particulires de R C5 par R C 5 - w / r / b o w est la taille des mots, r le
nombre de rondes, et b la longueur de la clef en octets. Pour w = 64, P et Q valent
respectivement 0xB7E151628AED2A6B et 0x9E3779B97F4A7C15.

366

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

R C5 est nouveau, mais les laboratoires R SA ont pass un temps considrable lana
lyser avec une taille de bloc de 64 bits. Aprs 5 rondes, les statistiques paraissent trs
bonnes. Aprs 8 rondes, chaque bit du texte en clair affecte au moins une rotation. Il
existe une attaque diffrentielle avec 224 textes en clair choisis- pour 5 rondes, 245 pour
10 rondes, et 268 pour 15 rondes. 11 n y a bien sr que 264 textes en clair possibles,
aussi cette attaque ne marchera pas pour 15 rondes ou plus. Des estimations en crypta
nalyse linaire indiquent que lalgorithme est sr aprs 6 rondes. R i v e s t recommande
au moins 12 rondes et 16 si possible [1336]. Ce nombre pourrait changer.
R SA D SI est en train de faire breveter R C5, et le nom est dpos. La socit prtend
que les frais de license seront trs rduits, mais vous feriez mieux de vrifier au prs
deux.

14.9

Autres algorithmes de chiffrement par


blocs

11 existe dans la littrature un algorithme appel C R Y P T O -M E C A N O [303]; il


nest pas sr. Quatre cryptographes japonais ont prsent un algorithme bas sur
la thorie du chaos la confrence EUROCRYPT91 [688, 689]. B i h a m a cryptanalys cet algorithme la mme confrence [164], Un autre algorithme repose
sur des sous-ensemble d un ensemble particulier de chiffres alatoires [694]. Il existe
plusieurs algorithmes bass sur la thorie des codes correcteurs derreurs : une va
riante de lalgorithme de M c E l i e c e (voir 19.7) [786, 1301], lalgorithme de R a o N a m [1303, 735, 1508, 1302, 1064, 1066, 1065, 1304], des variantes de lalgorithme de
R a o - N a m [470, 751, 1507], et lalgorithme de L i - W a n g [975, 1532] ; aucun nest sr.
C A L C nest pas sr [1115]. Un algorithme du nom de T E A pour Tiny Encryption
Algorithm (petit algorithme de chiffrement) est encore trop neuf pour tre comment.
V i n o est encore un autre algorithme [1271]. M a c G u f f i n , un algorithme de chiffre
ment par blocs conu par Matt B l a z e et moi-mme nest pas sr non plus [196] ; il fut
cass durant la confrence o il a t prsent. B a s e K i n g , un algorithme de conception
philosophiquement identique celle de 3-W AY mais avec une taille de bloc de 192 bits
[390], est trop nouveau pour tre comment.
Il y a bien plus d algorithmes de chiffrement par blocs disponibles hors de la com
munaut cryptologique. Certains sont utiliss par diverses organisations gouvernemen
tales et militaires. Je nai aucune information les concernant. Il y a aussi des douzaines
d algorithmes commerciaux privs. Certains peuvent tre bons ; la plupart ne le sont
probablement pas. Si les socits estiment que rendre lalgorithme public ne sert pas
leurs intrts, il vaut mieux faire lhypothse quelles ont raison et viter lalgorithme.

14.10

Thorie des algorithmes de chiffre


ment par blocs

Jai dcrit au paragraphe 11.1 les principes de confusion et de diffusion de S h a n n o n .


Cinquante aprs la premire rdaction de ces principes, ils restent les fondations de la
conception d un bon algorithme de chiffrement par blocs.

14-10

Thorie des algorithmes de chiffrement par blocs

367

La confusion sert cacher les relations entre le texte en clair, le texte chiffr, et la clef.
Vous rappelez vous comment la cryptanalyse diffrentielle peut exploiter la moindre
relation entre ces trois lments? Une bonne confusion rend les relations statistiques
si compliques que mmes ces outils cryptanalytiques puissants ne marche pas.
La diffusion rpand linfluence d un bit particulier du texte en clair ou de la clef aussi
loin que possible dans le texte chiffr. Cela camoufle aussi les relations statistiques et
rend la cryptanalyse plus difficile.
La confusion elle seule suffit pour la scurit. Un algorithme qui mettrait en corres
pondance en fonction de la clef les 264 textes en clair possibles avec les 264 textes chiffrs
possibles serait tout fait solide. Le problme est que cela ncessiterait beaucoup de
mmoire : il faudrait stocker un tableau de 1020 octets. La conception d algorithmes de
chiffrement par blocs consiste crer quelque chose qui ressemble un tel algorithme,
mais en utilisant beaucoup moins de mmoire.
Lastuce est de mlanger rptivement la confusion (avec des tableaux beaucoup plus
petits) et la diffusion avec un seul algorithme de chiffrement dans diffrentes com
binaisons. Ceci sappelle un algorithme de chiffrement produit. Un algorithme
constitu de couches de substitution et de permutations est parfois appel un rseau
substitution-permutation ou encore un rseau SP.
Considrez la fonction / du DES. La permutation expansive et la table P servent
la diffusion ; les tablesS servent . la confusion. La permutation expansive et la tableP sont linaires ; les tables S ne sont pas linaires. Chaque opration isole est assez
simple ; ensembles, elles fonctionnent plutt bien.
Le DES prsente quelques principes de conception dalgorithmes de chiffrement sup
plmentaires. Le premier est lide dun algorithme de chiffrement itratif. Cela
dsigne tout simplement le fait de prendre une fonction de ronde simple est de la r
pter plusieurs fois. Le DES deux rondes nest pas bien solide ; il faut au moins cinq
rondes avant que les bits de sortie dpendent de tous les bits dentre et de tous les
bits de la clef [1088, 1084]. Le DES seize rondes est solide; le DES trente deux
rondes lest encore plus.

Rseaux de Feistel
La plupart des algorithmes de chiffrement par blocs sont des rseaux de Feistel.
Cette ide date du dbut des annes 1970 [554, 555]. Prenez un bloc de longueur n et
divisez le en deux moitis de longueur n /2 : L et R. n doit bien sr tre pair. Vous
pouvez dfinir un algorithme de chiffrement par blocs itratif o la sortie de la ie ronde
est dtermine daprs la sortie de la ronde prcdente :
h)

Ri

R i = L i_ i f ( R i ~ i , K t )

Ki est la sous-clef utilise dans la ie ronde and / est une fonction quelconque.

Vous avez pu rencontrer ce concept dans les algorithmes DES, L u c i f e r , FE A L,


h u f u , K h a f r e , LO K I, G O S T , C A S T , B l o w f i s h , et dautres. Pourquoi en parler
tant? Il est garanti que la fonction est inversible. Comme la moiti droite et la sortie
de la fonction de ronde sont combines par ou exclusif, lgalit suivant est forcment
vrifie :
K

Ri

f{Ri

jff)

I~>ii

f(Ri-i,Ki)

/ ( R ^ ijKi) =

Li

-1

Chapitre 14

368

Encore d autres algorithmes de chiffrement par blocs

Un algorithme de chiffrement construit avec cette mthode est forcment inversible


pour peu quon puisse reconstruire lentre de la fonction / chaque ronde. La nature
de / nest pas importante ; / na pas besoin d tre inversible. On peut concevoir une
fonction / aussi complique que dsir, et il ne sera pas ncessaire de raliser deux
algorithmes diffrents un pour le chiffrement et un pour le dchiffrement. La structure
des rseaux de Feistel prend cela en compte automatiquement.

Relation simples
Le DES vrifie la proprit suivante: E k { M ) = C implique E K' { M ' ) = C' o M ' , C
et K ' sont les complments bit bit de A f, C et K respectivement. Cette proprit
rduit la complexit d une attaque exhaustive dun facteur deux. LO K I vrifie des
proprits de complmentation qui rduisent la complexit d un facteur 256.
Une relation simple peut tre dfinie comme dans [860] :
Si E k ( M ) = C, alors E f{K)( g ( M , K ) ) = h(C,K).
o f , g et h sont des fonctions simples. Par simples, j entends quelles sont faciles
calculer, bien plus faciles quune itration de lalgorithme. Dans le cas du DES, / , g
et h sont la complmentation bit bit (de leur premire variable). C est le rsultat de
la combinaison par ou exclusif de la clef avec des parties du texte.
Les bons algorithmes de chiffrement ne vrifient aucune relation simple. Des mthodes
pour trouver de telles faiblesses sont donnes dans [918].

Structure de groupe
Quand on examine un algorithme, il est naturel de se demander si c est un groupe. Les
lments du groupe sont les blocs de texte chiffr avec chaque clef possible, et lopration
du groupe est la composition. Regarder la structure de groupe d un algorithme sert
comprendre combien de brouillage supplmentaire on obtient en chiffrant plusieurs
fois.
Cependant, la question pertinente nest pas de savoir si un algorithme est vraiment
un groupe, mais quel point il est proche dun groupe. Si cela revenait perdre un
lment, ce ne serait pas un groupe ; mais statistiquement le double chiffrement serait
une perte de temps. Les travaux concernant le DES ont montr quil est loin dtre un
groupe. Il reste encore des questions intressantes propos du semi-groupe gnr par
le chiffrement par le DES. Est-quil contient lidentit : c est dire, engendre-t-il un
groupe? En d autres termes, certaines combinaisons d oprations de chiffrement (pas
de dchiffrement) fournissent-elles ventuellement la fonction identit? Si c est le cas,
quelle est la longueur de la combinaison la plus petite?
Le but est destimer la taille de lespace des clefs pour une attaque exhaustive thorique
et de donner la meilleure borne infrieure de lentropie de lespace des clefs.

Clefs faibles
Dans un bon algorithme de chiffrement par blocs, toutes les clefs sont aussi solides les
une que les autres. Les algorithmes qui ont un petit nombre de clefs faibles ne posent
gnralement pas de problme. Il y a peu de chance d en tirer une au hasard et il est
facile de les viter. Cependant, on peut parfois exploiter ces clefs faibles si lalgorithme
est utilis comme fonction de hachage sens unique (voir 18.11).

14-10

Thorie des algorithmes de chiffrement par blocs

369

Rsistence aux cryptanalyss diffrentielle et linaire


Ltude des cryptanalyse diffrentielle et linaire a clair de manire significative la
thorie des bons algorithmes de chiffrement par blocs. Les concepteurs dID E A ont
introduit le concept de diffrentielles, une gnralisation de lide de base des ca
ractristiques [942], Ils soutiennent quun algorithme de chiffrement par blocs peut
tre conu pour rsister cette attaque; ID E A est le rsultat de ce travail [942]. Ce
concept est davantage formalis dans [1186,1187], o Kaisa N y b e r g et Lars K n u d s e n
ont montr comment construire des algorithmes de chiffrement par blocs dont il est
possible de prouver la rsistance la cryptanalyse diffrentielle. Cette thorie stend
aux diffrentielles de plus haut degr [703, 168, 938, 858, 861] et aux diffrentielles
partielles [861]. Les diffrentielles de haut degr ne semblent sappliquer quaux algo
rithmes ayant un petit nombre de rondes, mais les diffrentielles partielles se combinent
parfaitement avec les diffrentielles.
La cryptanalyse linaire est plus rcente, et est encore en cours damlioration. Des
notions de rang de clef [1023] et d approximation multiple [801, 802] ont t dfinies.
Dautres travaux tendant lide de la cryptanalyse linaire se trouvent dans [1281] ;
dans [949], on tente de combiner les cryptanalyss linaire et diffrentielle en une seule
attaque. Les techniques de conceptions qui protgeront contre ces types d attaques sont
encore floues.
K n u d s e n a fait quelques progrs en considrant quelques critres ncessaires (mais
peut-tre pas suffisants) pour ce quil appelle les les rseaux de Feistel sr en
pratique: des algorithmes de chiffrement qui rsistent la fois la cryptanalyse
diffrentielle et la cryptanalyse linaire [860]. N y b e r g a introduit en cryptanalyse
linaire un concept analogue celui des diffrentielles en cryptanalyse diffrentielle
[794].
De manire assez intressante, il semble y avoir une sorte de dualit entre les cryptanalyses diffrentielle et linaire. Cette dualit apparat la fois dans la conception
de techniques pour construire de bonnes caractristiques ou de bonnes approximations
linaires [171, 1027], et dans la conception de critres de construction d algorithmes
rsistants ces deux attaques [312], Qui sait o mnera cette ligne de recherche. Pour
commencer, D a e m e n a dvelopp une stratgie de conception dalgorithmes base sur
les cryptanalyss linaire et diffrentielle [405].

Conception de tablesS
La solidit dune varit de rseaux de Feistel et plus spcifiquement leur rsistence
aux cryptanalyse diffrentielle et linaire est directement relie leurs tables-S. Ceci
a lanc une voie de recherche sur ce qui constitue de bonnes tables S.
Une tableS est une simple substitution : une application de m bits d entre vers n bits
de sortie. Une table- S avec m bits en entre et n bits en sortie sappelle une table
S m*n bits. Les tables- S constituent en gnral la seule tape non linaire dun
algorithme ; elles sont ce qui lui donne sa scurit. En gnral, plus elles sont grandes,
meilleures elles sont.
Le DES a huit tables S 6*4 bits diffrentes. K h u f u et K h a f r e ont une seule table5 8*32 bits, L O K I a une table S 12*8 bits, et B l o w f i s h et C A S T ont tous les
deux des tables S 8*32 bits. Dans ID E A la table-S1est en fait ltape de mulitplication modulaire ; cest une table- S 16* 16 bits. Plus la table-S est grande, plus il

370

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

est difficile de trouver des statistiques utiles l'attaque par cryptanalyse linaire ou
diffrentielle [655, 730, 1628]. Aussi, quand des tables S alatoires ne protgent pas
optimalement en gnral contre les cryptanalyss diffrentielle et linaire, il est plus
facile de trouver des tables S solides si elles sont plus grandes. La plupart des tables-S
alatoires ne sont ni linaires, ni dgnres, et offrent une forte rsistence la cryp
tanalyse linaire, et la fraction qui ne satisfait ces critres devient rapidement infime
quand le nombre de bits en entre dcrot [1190, 1191, 1192],
La grandeur de m est plus importante que celle de n. Augmenter n rduit lefficacit de
la cryptanalyse diffrentielle, mais augmente largement celle de la cryptanalyse linaire;
En fait, si n > 2m m, il y a toujours une relation linaire entre les bits en entre et
en sortie de la table S'. Et si n > 2m, alors il existe une relation linaire entre les bits
de sortie [171].
La plupart de ces travaux met enjeu les fonctions boolennes [101,1104,1273,1413].
Pour tre sres, les fonctions boolennes utilises dans une table-S1doivent satisfaire
des conditions spcifiques. Elles ne devraient pas tre linaires ou affines, ni mme sen
approcher [13, 1184, 1183, 1193]. Il devrait y avoir un quilibre entre les un et les
zros, et aucune corrlation entre diffrentes combinaisons de bits. Les bits en sortie
devraient se comporter indpendamment lorsquon eomplmente un bit en entre. Ces
critres de conception sont aussi relis ltude des fonctions courbes qui sont les
fonctions dont on peut prouver quelles sont optimalement non linaires. Bien que leur
dfinition soit simple et naturelle, leur tude est trs complique [1356, 1225, 958, 906,
1182, 1282, 299, 300, 301, 156, 353, 503, 302].
Une proprit trs importante semble tre leffet davalanche : combien de bits changent
en sortie dune table-S quand certains bits sont changs en entre. Il est facile dim
poser certaines conditions aux fonctions boolennes pour quelles satisfassent certains
critres d avalanche, mais les construire est bien plus difficile. Le critre d avalanche
strict (C A S en abrg) guarantit que la moiti des bits changent en sortie quand un
bit change en entre [1588]. Se rfrer aussi [1483, 574, 1273, 403]. Un article tente
dexaminer tous ces critres en termes de perte dinformation [1642],
Il y a quelques annes, les cryptographes ont propos de choisir les tables -S de sorte
que le tableau des distributions des diffrences soit uniforme. Cela protgerait de la
cryptanalyse diffrentielle en aplatissant les diffrentielles de nimporte quelle ronde [10.
445, 446, 1184]. LO K I, par exemple, suit cette conception. Cependant, cette approchi
peut parfois favoriser la cryptanalyse diffrentielle [178]. En fait, une meilleure approcht
consiste sassurer que la diffrentielle maximale est aussi petite que possible. Kwangjc
Kim a propos cinq critres de construction des l abis- S [835], similaires aux critres
de conception des tables-S1du DES.
Choisir de bonnes tables S nest pas une tche aise ; il y a plusieurs ides qui sop
posent sur la faon de le faire. On peut recenser quatre approches diffrentes.
1. Choisir alatoirement. Il est clair que les petites tables -S alatoires ne sont pas
sres, mais les grandes tables S alatoires peuvent ltre suffisament. Les tablesS prenant en entre huit bits ou plus sont assez solides [1191, 1192]. Celles dr
douze bits sont meilleures. On obtient encore plus de robustesse si les tables -S
sont la fois alatoires et dpendantes de la clef. ID E A utilise des tables S la
fois grandes et dpendantes de la clef.
2. Choisir et tester. Certains algorithmes de chiffrement produisent des tables S et

14-10

Thorie des algorithmes de chiffrement par blocs

371

testent alors si elles ont les proprits requises. Voir [13, 730] pour des exemples
de cette approche.

3. Les faire la main. Cette technique utilise peu les mathmatiques : les tables
S sont produites par des mthodes plus intuitives. Bart P r e n e e l a tabli que
...les critres intressants thoriquement ne sont pas suffisants [pour choisir des
fonctions boolennes pour les tables- 5]... et que ...des critres de conception
ad hoc sont ncessaires [1273].

4. Les faires grce aux mathmatiques. Il sagit de gnrer des tables S selon des
principes mathmatiques de sorte que lon puisse prouver quelles soient rsis
tantes aux cryptanalyss diffrentielle et linaire, et quelles ont de bonnes pro
prits de diffusion. Voir [1185] pour un excellent exemple de cette approche.

Il y a eu quelques demandes de combinaison des approches la main et grce


aux mathmatiques , mais le principal dbat semble se tenir entre les tables choisies
alatoirement et les tables S ayant certaines proprits. La dernire approche a cer
tainement lavantage dtre optimale contre les attaques connues les cryptanalyss
linaire et diffrentielle mais elle offre une protection inconnue contre les attaques
inconnues. Les concepteurs du DES connaissaient la cryptanalyse diffrentielle et ses
tables- S ont t optimises contre elle. Il semble quils ne connaissaient pas la crypta
nalyse linaire et les tables du DES sont trs faibles contre elle [1027]. Des tables-S1
alatoires seraient plus faibles contre la cryptanalyse diffrentielle et plus fortes contre
la cryptanalyse linaire.
Dun autre ct, des tables -5 alatoires peuvent ne pas tre optimales contre ces deux
attaques, mais on peut les rendre assez grandes pour quelles soient suffisament r
sistantes. Il y aussi plus de chances pour quelles soient suffisament rsistantes aux
attaques inconnues. Le dbat fait toujours rage, mais mon opinion est que les tables S
devraient tre aussi grandes que possible, alatoires, et dpendantes de la clef.

Concevoir un algorithme de chiffrement par blocs


Il est facile de concevoir un algorithme de chiffrement par blocs. Si vous visualisez un
algorithme avec des blocs de taille 64 bits comme une permutation des nombres de 64
bits, il est clair qu peu prs toutes ces permutations sont sres. La difficult consiste
concevoir un algorithme non seulement sr, mais aussi facile dcrire et raliser.
Il est facile de concevoir un algorithme si vous assez de mmoire pour des tables-5
48*32 bits. Il est difficile de concevoir un DES non sr si vous faites 128 rondes. Si
votre clef fait 512 bits, vous ne vous souciez pas ses proprits de complmentation.
Le vrai but et la raison pour laquelle la conception dalgorithmes de chiffrement par
blocs est si difficile est de concevoir un algorithme avec une plus petite clef possible,
des besoins en espace mmoire les plus petits possibles, et un temps dexcution le plus
court possible.

Chapitre 14

372

14.11

Encore dautres algorithmes de chiffrement par blocs

Utilisation de fonction de hachage


sens unique

Le moyen le plus simple de chiffrer avec une fonction de hachage sens uniqueconsiste
appliquer cette fonction la concatnation du bloc de textechiffr prcdent et de la
clef, puis combiner le rsultat avec le bloc de texte en clair courant par ou exclusif:
Ci = M t H { K , C i - 1 )
M.% = Ci H ( K, Ci 1 )

La taille des blocs est celle de la sortie de la fonction de hachage Ceci donne en fait un
algorithme en mode C FB . Une construction similaire donne un algorithme en mode
OFB:

Ci = M i Si ; Si = HiKiCi-i)
M i = Ci Si ; St = H ( K , C t- i )

La scurit de ce schma dpend de celle de la fonction de hachage.

Karn
Cette mthode, invente par Phil K a r n et place dans le domaine public, drive un
algorithme de chiffrement rversible partir dune fonction de hachage sens unique
particulire.
Lalgorithme manipule le texte en clair et le texte chiffr par blocs de 32 octets.La
clef peut avoir nimporte quelle longueur, bien que certaines longueurs de clefs soient
plus efficaces pour certaines fonctions de hachage sens unique. Pour les fonctions de
hachage sens unique M D 4 et M D5, des clefs de 96 octets (768 bits) conviennent le
mieux.
Pour chiffrer, divisez dabord le texte en clair en deux moitis de 16 octets: M g et
M d Ensuite, divisez la clef en deux moitis de 48 octets: K g et KdM = M g, Md
K = K g; K d

Joignez K g et M g et calculez lempreinte par une des fonctions de hachage sens


unique dcrites au chapitre 14, ensuite combinez cette empreinte par ou exclusif avec
M d pour obtenir la moiti droite du texte chiffr: Cd- Ensuite, joignez Kd Cd et
calculez lempreinte par la fonction de hachage sens unique, ensuite combinez le
rsultat par ou exclusif avec M g pour obtenir Cg. Finalement, joignez Cd Cg pour
produire le texte chiffr.
Cd = M d H { M g, Kg)
Cg = M g H { M d , K d)

C = Cgffd

14-11

Utilisation de fonction de hachage sens unique

373

Pour le dchiffrement, inversez simplement le processus. Joignez K,j et C,j, calculez


lempreinte et combinez la par ou exclusif avec Cg pour produire A4g. Joignez K g
M.g, calculez lempreinte et combinez-la par ou exclusif avec Cd pour obtenir AidM g = C g H(Cg, K g)
Aid Cg H{Cd,Kd)
A4 = A4g,A4d

La structure gnrale de lalgorithme est la mme que la plupart des algorithmes par
blocs dcrits dans cette section. Il ny a que 2 rondes, car la complexit de lalgorithme
est cache dans la fonction de hachage sens unique. Et, puisque la clef n est utilise
que comme entre la fonction de hachage sens unique, elle ne peut pas tre retrouve
par une attaque texte en clair choisi en faisant, bien sr, lhypothse que la fonction
de hachage sens unique est sre.

LubyRackoff
Michael L u b y et Charles R a c k o f f montrrent que K a r n ntait pas sr[1002].
Considrez deux messages dun bloc : A B et A C . Si le cryptanalysteconnat la
fois le texte en clair et le texte chiffr du premier message, et sil connat la premire
moiti du texte en clair du second message, alors il peut aisment calculer la deuxime
moiti du second message. Ceci est une attaque texte en clair connu utile seulement
dans certaines circonstances mais c est un problme de scurit majeur.
Un algorithme de chiffrement trois rondes vite ce problme [1002, 1645, 1646]. Il
utilise trois fonctions de hachage sens unique Hi, H 2 et H3. Des travaux plus pousss
ont montr que lon peut prendre f / j = H 2 ou bien H 2 ~ Hz, mais pas les deux en
mme temps [1202]. De plus, H\, H 2 et Hz ne peuvent pas se baser sur litration de la
mme fonction de base [1645]. Dans tous les cas, en supposant que H{k,x) se comporte
comme une fonction pseudo-alatoire, voici une version trois rondes :
1 divisez la clef en deux moitis K g et Kd ;
2 divisez le bloc de texte en clair en deux moitis Go et Do ;
3 joignez K g Go et calculez lempreinte du rsultat laide de la fonction de

hachage sens unique; combinez lempreinte par ou exclusif avec D 0 pour


obtenir D\ :
Di = Do H ( K g,Go) ;

4 joignez Kd D\ et calculez l empreinte du rsultat laide de la fonction de


hachage sens unique; combinez lempreinte par ou exclusif avec G q pour
obtenir G x :
Gi = G 0 H ( K d, Dl ) ;

5 joignez K g G 1 et calculez lempreinte du rsultat laide de la fonction de


hachage sens unique; combinez lempreinte par ou exclusif avec Di pour
obtenir D 2 :
D 2 D 1 H ( K g,Gi) ;

6 joignez G 1 D 2 pour obtenir le message.

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

Message Digest Cipher (M DC)


M D C , invent par Peter G uTM A N N [677], est un moyen de transformer une fonction
de hachage sens unique en un algorithme de chiffrement par blocs qui opre en mode
C FB . Le systme est virtuellement aussi rapide et au moins aussi sr que la fonction
de hachage. Il est suppos dans le reste du paragraphe que vous tes familier avec le
chapitre 18.
Les fonctions de hachage telles que M D5 et SHA utilisent un bloc de 512 bits de texte
pour transformer une valeur d entre (de 128 bits dans M D5, et 160 bits dans SHA)
en une valeur de sortie de mme taille. Cette transformation nest pas inversible, mais
elle est parfait pour le mode C F B : la mme opration est utilise pour le chiffrement
et le dchiffrement.
Examinons M D C avec SHA. M D C a une taille de blocs de 160 bits et une clef de
512 bits. La fonction de hachage est utilise par effets de bord avec lancienne empreinte
comme bloc de texte en entre (160 bits) et la clef comme entre de 512 bits (voir la
figure 14.5). Normalement, quand on utilise la fonction de hachage seulement pour
calculer lempreinte d une entre, lentre de 512 bits varie chaque fois que lempreinte
dun nouveau bloc de 512 bits est calcule. Mais dans ce cas, lentre de 512 bits devient
une clef fixe.

C le f

B lo c m essage

Valeur
d entree

Fonction
de hachage

Valeur
-------

de sortie

F onction
de hachage

T exte en c la ir-

- Texte chiffre

(b ) F onction de hachage utilise en tant

(a ) F onction d e hachage

q u algonthm e de chiffrem ent par b lo c


en m od e CFB

F ig .

14.5 - M D C

M D C peut tre utilis avec n im p orte quelle fonction de hachage sens unique : MD4,
M D5, S n e f r u , et autres. Il n est pas brevet. N im porte q u i peut l utiliser tout
m om ent, com m e il le dsire, sans payer de royalties [677].
Cependant, je ne fais pas confiance cette construction. Il est possible dattaquer la
fonction de hachage dune manire qui chappe ce qui est prvu dans sa conception.
Il nest pas important que les fonctions de hachage sens unique rsistent aux attaques
textes en clair choisis, o un cryptanalyste choisit plusieurs de ces valeurs de dpart
de 160 bits, les chiffre par la mme clef de 512 bits, et utilise cela pour obtenir
des informations sur la clef de 512 bits utilise. Comme les concepteurs de la fonction
de hachage ne se sont pas proccups de cela, il semble que c est une mauvaise ide
d esprer voir votre algorithme de chiffrement par blocs rsister cette attaque.

14-12

Choisir un algorithme de chiffrement par blocs

375

Scurit des algorithmes de chiffrement bass sur des fonctions


de hachage sens unique
Mme si ces constructions peuvent tre sres, elles dpendent du choix de la fonc
tion de hachage sens unique sous-jacente. Une bonne fonction de hachage ne fait
pas forcment un algorithme de chiffrement sr. Les ncessits cryptographiques sont
diffrentes. Par exemple, la cryptanalyse linaire nest pas une attaque envisageable
contre les fonctions de hachage sens unique, mais elle marche contre les algorithmes
de chiffrement. Une fonction de hachage telle que SHA pourrait prsenter des caract
ristiques linaires qui pourraient fragiliser un algorithme de chiffrement tel que M D C,
sans pour autant affecter la scurit de SHA en tant que fonction de hashage. Je ne
connais aucune cryptanalyse particulire des algorithmes de chiffrement bass sur
des fonctions de hachage ; attendez larrive d une telle analyse avant d avoir confiance
en lun d eux.

14.12

Choisir un algorithme de chiffrement


par blocs

Cest une question difficile. Le DES nest certainement pas sr contre les principaux
gouvernements mondiaux moins que vous ne chiffriez que de petites quantits de
donnes avec la mme clef. Il est probablement suffisant contre nimporte qui dautre,
mais cela est train de changer. Toutes sortes d organisations auront bientt les moyens
de se payer des machines ddies la recherche exhaustive de clefs pour le DES.
Les tables S dpendantes de la clef de B i h a m rsisteront probablement des annes
tous les adversaires except les plus fortuns, et peut-tre mme ceux-ci aussi. Si vous
voulez une confidentialit qui perdure des dcades ou si vous avez peur des possibilits
de cryptanalyse des principaux gouvernements, utilisez le DES triple avec trois clefs
indpendantes.
Les autres algorithmes ne sont pas dnus d intrt. Jaime B l o w f i s h pour sa rapidit
et pour lavoir crit. 3-W A Y a lair bon, et G O S T est probablement acceptable. Le
problme pour recommander l'un d eux est que la NSA dispose certainement dune bat
terie impressionante de techniques cryptanalytiques qui sont toujours classes secrtes,
et je ne sais pas quels sont les algorithmes quils peuvent casser avec. Le tableaul4.3
donne les rapidits de quelques algorithmes. Ils sont l titre de comparaison.
Mon algorithme favori est ID E A . Sa clef de 128 bits, combine avec sa rsistance
toutes les mthodes de cryptanalyse connues publiquement, mincline le prfrer.
Lalgorithme a t cryptanalyse par de nombreux groupes diffrents, et aucun rsultat
srieux na t rvl jusqu prsent. On annoncera peut-tre demain des rsultats de
cryptanalyse dvastateurs ; en attendant je parie sur ID EA.

376

Chapitre 14

Encore dautres algorithmes de chiffrement par blocs

T a b . 14.3 - Vitesse de chiffrement de quelques algorithmes de chiffrement par blocs


sur un 486SX 33 MHz_________________________________________________________

Algorithme

Vitesse de chiffrement
(kilo-octets/seconde) Algorithme

B l o w f ish (12 rondes)


182
B l o w f ish (16 rondes)
135
B l o w fish (20 rondes)
110
DES
35
F E A L -8
300
F E A L -16
161
F E A L -3 2
91
G O ST
53
ID E A
70
221
K h u fu (16 rondes)
K h u fu (24 rondes)
153
K h u fu (32 rondes)
115
L u b y - R a c k o f f (avec M D 4 )4 7
L u b y - R a c k o f f (avec M D 5 )3 4
L u b y -R a c k o f f (avec S H A ) 11
52
L u c ife r

Vitesse de chiffrement
(kilo-octets/seconde)

M D C (avec M D 4 )
M D C (avec M D 5 )
M D C (avec S H A )
N e w DES

186
135
23
233

R E D O C II
R E D O C III
R C 5 -3 2 /8
R C 5 -3 2 /1 2

78
127

86

R C 5 -3 2 /1 6
R C 5 -3 2 /2 0
S A F E R (6 rondes)
S A F E R (8 rondes)
S A F E R (10 rondes)
S A F E R (12 rondes)
3 -W A Y

65
52
81
61
49
41
25

D E S triple

12

Chapitre 15

Combinaison dalgorithmes
de chiffrement par blocs
Il existe de nombreuses faon de combiner des algorithmes de chiffrement par blocs pour
obtenir de nouveaux algorithmes. Le but de la manuvre est d essayer d augmenter
la scurit en vitant les turpitudes de la conception d un nouvel algorithme. Le DES
est un algorithme sr ; il a t cryptanalys pendant plus de vingt ans et le meilleur
moyen de la casser en pratique reste lattaque exhaustive. Cependant, la clef est trop
courte. Ne serait-il pas souhaitable d utiliser le DES comme un lment de base d un
autre algorithme? Nous aurions tous les avantages: lassurance de deux dcennies de
cryptanalyse et une longue clef.
Le surchiffrement est une technique de combinaison : utiliser le mme algorithme
pour chiffrer le mme bloc de texte en clair plusieurs fois avec diffrentes clefs. Il existe
dautres techniques.
Chiffrer un bloc de texte en clair deux fois avec la mme clef, que ce soit avec le mme
algorithme ou avec un autre, ne sert pas grand chose. Pour le mme algorithme,
cela naffecte pas la complexit d une recherche exhaustive1. Pour des algorithmes
diffrents cela peut tre ou ne pas tre le cas. Si vous allez utiliser une des techniques
de ce chapitre, assurez vous que les diffrentes clefs sont diffrentes et indpendantes.

15.1

Surchiffrement double

Un moyen naf d augmenter le niveau de scurit d un algorithme de chiffrement par


blocs est de chiffrer le bloc deux fois avec deux clefs diffrentes. Premirement, chiffrez
le bloc avec la premire clef, et ensuite chiffrez le rsultat avec la deuxime clef. Le
dchiffrement est le processus inverse.
C = E K2(E K l(M ))
M

= D K l ( D K a(C ))

1.
Rappelez vous de supposer qu un cryptanalyste connat les dtails de l algorithm e ainsi que le
nombre de chiffrements effectus.

378

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

Si lalgorithme de chiffrement par blocs est un groupe (voir 11.3), il existera forcment
une clef K$ telle que :
C = EK, { E Kl( M ) ) = E Ka(M)
Dans le cas contraire, le bloc de texte chiffr rsultant du double chiffrement serait
beaucoup plus difficile retrouver par recherche exhaustive. Au lieu de 2n tentatives (o
n est le nombre de bits de la clef), il faudrait 22n tentatives. Si lalgorithme manipule des
blocs de 64 bits, le texte doublement chiffr ncessiterait 2 128 tentatives pour retrouver
la clef.
Cela nest pas vrai pour une attaque texte en clair connu. M e r k l e et H e llm a n [1072]
ont dvelopp un compromis temps-mmoire qui, dans le cadre dune attaque texte
en clair connu, permet de casser ce chiffrement double avec 2 n+1 tentatives et non pas
22" tentatives2. Cette attaque est appele attaque par collisions et elle marche en
chiffrant une extrmit, en dchiffrant lautre et en mettant en correspondance les
rsultats au milieu.
Lattaque est conduite de la manire suivante: le cryptanalyste connat A4i, Ci, A4 2
et C2 , tels que :
Ci -- E k 3 ( Ekx{ M 1 ))
C2 E k 2 ( E k, ( M . 2 ))

Pour tous les K possibles (soit K i , soit K 2 ), calculez Ek{-M-i) et gardez le rsultat en
mmoire. Quand vous les avez tous, calculez D u {Ci) pour tous les K et cherchez le
mme rsultat en mmoire. Si vous le trouvez, il est possible que la clef courante soit
K 2 et la clef en mmoire K j . Essayez de chiffrer M 2 avec K\ et K 2 : si cela donne C2,
vous pouvez tre pratiquement sr (avec une probabilit de succs de 2 2n~2b, o b est
la taille de bloc) que vous avez K\ et K 2. Sinon, continuez chercher. Attendez-vous
avoir environ (22 -26) faux rsultats positifs avant de trouver le bon. Le nombre
maximal de tentatives de chiffrement que vous devrez probablement essayer est 2 x 2 ",
ou 2 n+1. Si la probabilit derreurs est trop grande, vous pouvez utiliser un troisime
bloc de texte chiffr pour avoir une probabilit de succs de 2 2n~ 3b. Il y a encore
dautres optimisations [914].
Cette attaque ncessite beaucoup de mmoire, 2n blocs. Pour un algorithme 56 bits,
cela donne 256 blocs de 64 bits, ou 259 octets. C est encore beaucoup de mmoire
par rapport ce que quelquun peut apprhender aisment mais c est suffisant pour
convaincre le plus paranoaque des cryptographes que le chiffrement double ne vaut
rien.
Pour une clef de 128 bits, la mmoire requise ateind la somme astronomique de 1039
octets. Si nous supposons quil existe un moyen de stocker un bit dinformation sur
un seul atome d aluminium, le priphrique de mmoire ncessaire cette attaque
formerait un cube daluminium solide de 1 km de ct. L attaque par collisions semble
infaisable pour des clefs de cette longueur. .
Une autre mthode de surchiffrement double, appele parfois Davies-Price, est une
variante de C B C [435].
Ct = EKl ( M t EK2(Ci~i))
Mi D k x{Ci ) D k 2(Ci ~ 1 )
2.
Ils lont m ontr pou r le DES, mais le rsultat peu t tre gnralis n im porte quel algorithme
de chiffrement par blocs.

15.2

Surchiffrement triple

379

Ils prtendent que ce mode na pas de vertu spciale , mais il semble vulnrable
la mme attaque par collisions que les autres modes de surchiffrement double.

15.2

Surchiffrement triple

Surchiffrement triple avec deux clefs


Une meilleure ide, propose par T u c h m a n dans [1559], est de chiffrer un bloc trois
fois avec deux clefs : primo avec la premire clef, ensuite avec la seconde clef, et finale
ment avec la premire clef nouveau. Il suggra que lexpditeur chiffre dabord avec
la premire clef, ensuite dchiffre avec la deuxime clef et finalement chiffre avec la
troisime clef.
C = E k i ( D K2 (EKi ( M )))
M = D Kl(EK2 (DKl(C)))

Cette mthode est parfois appele le mode chiffre-dchiffre-chiffre (ED E pour


encrypt-decrypt-encrypt ) [57]. Si lalgorithme de chiffrement par blocs a une clef
de n bits, alors ce schma a une clef de 2n bits. Le curieux schma chiffre-dchiffrechiffre a t conu par IB M pour prserver la compatibilit avec des ralisations
conventionnelles de lalgorithme : en choisissant la mme clef pour K\ et K 2 on ramne
lopration au chiffrement unique avec la clef. Il ny a pas de scurit inhrente au
schma chiffre-dchiffre-chiffre mais il a t utilis pour amliorer lalgorithme DES
dans les standards X 9.17 et ISO 8732 [57, 765].
K\ et I <2 sont alternes pour contrecarrer lattaque par collisions dcrite plus haut.
SiC = E k 2 (E k 1 (Ei;i( M) ) ) , un cryptanalyste pourrait prcalculer E ^ 1 (Ek, (.Ad)) pour
tous les K i possibles et effectuer ensuite lattaque. Cela ne requiert que 2n+2 chiffre
ments.
Le surchiffrement triple avec deux clefs nest pas sujet la mme attaque par collisions
dcrite auparavant. Mais M e r k l e et H e l l m a n ont dvelopp un autre compromis
temps-mmoire qui peut casser cette technique en 2 n _ 1 tapes en utilisant 2 blocs de
mmoire [1072].
Pour toutes les K 2 possibles, dchiffrer 0 et stocker le rsultat en mmoire. Ensuite,
dchiffrer 0 avec toutes les K\ possibles pour obtenir M .. Chiffrer alors triplement M.
pour obtenir C, puis dchiffrer C avec K\. Si ce dchiffrement est un dchiffrement de 0
avec un K 2 (stock en mmoire), la paire K \ ,K 2 est une candidate ventuelle. Vrifier
si cest juste. Sinon, continuer chercher.
Cest une attaque texte en clair choisi, qui ncessite pour tre monte, un nombre
norme de textes en clair choisis. Cela demande 2 " tapes, 2 blocs de mmoire et 2 b
textes en clair choisis. Ce n est pas trs pratique, mais c est une faiblesse.
Paul van O o r s c h o t et Michael W ie n e r ont converti cette attaque en une attaque
texte en clair, ncessitant p textes en clair connus. Cet exemple repose sur lhypothse
du mode EDE.
1 Deviner la premire valeur intermdiaire a.

380

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

2 Tabuler, pour chaque K % possible, la seconde valeur intermdiaire b quand la


premire valeur intermdiaire est a, en utilisant le texte en clair connu :
b = D Kl(C)
o C le texte chiffr provenant dun texte en clair connu.

3 Regarder dans le tableau, pour chaque K 2 possible, les lments qui donnent
une seconde valeur valeur intermdiaire b qui correspond :
b = E K2 (a)

4 La probabilit de succs est p/b o p est le nombre de textes en clair connus et


b est la taille des blocs. Si aucune valeur ne correspond, essayer un autre a et
recommencer.

Lattaque requiert 2rl+rn/ p tapes et p blocs de mmoire. Pour le DES, cela fait 2120/p
[1564]. Pour p suprieur 256, cette attaque est plus rapide que la recherche exhaustive

Surchiffrement triple avec trois clefs


Si vous allez utiliser le chiffrement triple, je recommande trois clefs diffrentes. La
longueur de clef est plus grande, mais le stockage de la clef nest, en gnral, pas un
problme.
C = E K3 {DK2 {EKl{M) ) )
M = S>k , ( E K2 (k 3 (C)))

Lattaque avec le meilleur compromis temps-mmoire ncessite 22" tapes et 2 blocs


de mmoire [1072]. Le chiffrement triple, avec trois clefs indpendantes, est aussi sr
que ce que lon pourrait attendre du chiffrement double.

Surchiffrement triple avec clef minimale (TEM K )


Il existe un moyen sr dutiliser le surchiffrement triple avec deux clefs qui nest pas
sujet lattaque prcdente. Cela sappelle le surchiffrement triple avec clef minimale
(T E M K pour Triple Encryption with Minimum K ey ) [858]. L astuce consiste
driver trois clefs de deux
et X 2 :
K l = E x , (D X2 (EX i (Ti)))
K 2 = E X2 (DXl ( e X2 { t 2)))
K 3 = EXl (E > x2 (EX i (T3)))

Ti, T2 et I 3 sont des constantes non ncessairement secrtes. Cette une construction
spciale qui garantie que pour nimporte quelle paire de clefs, la meilleure attaque est
une attaque texte en clair connu.

15.2

Surchiffrement triple

381

Modes de surchiffrement triple


ne suffit pas de spcifier surchiffrement triple ; il y a plusieurs manires de le faire.
En choisir une affecte la fois la scurit et lefficacit.
Voici deux modes possibles de surchiffrement triple :
11

C B C interne. Chiffrer le fichier entier en mode C B C trois fois (voir la


figure 15.1a). Cela ncessite trois IV diffrents.
Cj = EK3(Si(BCi-1) ; St = Dfc2(TiQ)Si^i) ; T) =
M i Ti^iCBDh^i'E) ; Tt Sl-\ Q)Ek .2(Si) ; S, -

C * _ i

(BD^-ffCi)

Co, S0 et T0 sont les IV.

C B C externe. Surchiffrer triplement le fichier entier en mode C B C (voir


la figure 15.1b). Cela ncessite un seul IV.
Ci = EKs (Dk 2 (Ekx(M i C ,_ i)))
Ci =
1 D Kl ( Ek 2 (D a 3 (Ci)))
Le IV est Co-

F ig .

15.1 - Surchiffrement triple en mode CB C

Les deux modes requirent plus de ressources que le chiffrement simple : plus de ma
triel ou plus de temps. Cependant, avec trois puces de chiffrement, la bande passante

382

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

du C B C interne est aussi grande que celle du chiffrement simple. Comme les trois chif
frements C B C sont indpendants, les trois puces peuvent travailler en permanence,
chacune ayant une rtroaction sur elle-mme.
Par contre, la rtroaction du C B C externe est extrieure aux trois chiffrements. Cela
veut dire que mme avec trois puces, la bande passante est le tiers de celle du chiffrement
simple. Pour obtenir la mme bande passante, il faut intercaler des IV (voir 9.12) :
Ci = E k 3 {D k 3 ( E ^ i - M i

3)))

Dans ce cas, les IV sont Co, C 1 et C _ 2 . Cela ne facilite pas les ralisations logicielles,
moins que vous ne disposiez dune machine parallle.
Malheureusement, le mode le plus simple est aussi le moins sr. BIHAM a tudi plu
sieurs modes dans loptique de la cryptanalyse diffrentielle texte chiffr choisi et a
trouv que le C B C interne est seulement lgrement plus sr que le chiffrement simple
contre une attaque diffrentielle. Si vous visualisez le surchiffrement triple comme un
seul algorithme plus gros, alors la rtroaction interne autorise lintroduction d infor
mation connue et externe dans les rouage internes de lalgorithme ; ceci facilite la
cryptanalyse. Les attaques diffrentielles ont besoin d une quantit norme de textes
chiffrs choisis et ne sont pas trs pratiques, mais les rsultats devraient inspirer la
mfiance des paranoaques. Un autre examen vis vis de lattaque par colsions et de
lattaque exhaustive montre quils sont tous les deux srs [807].
Il existe aussi dautres modes. Vous pouvez chiffrer le fichier entier une fois en ECB,
puis deux fois en C B C ; ou une fois en C B C , une fois en EC B , et une fois en CBC ;
ou encore deux fois en C B C et une fois en E C B . B ih a m a montr que ces variantes ne
sont pas plus sres que le DES vis vis d une attaque par cryptanalyse diffrentielle
texte en clair choisi [170]. Et il ny a pas beaucoup despoir pour les autres variantes. Si
vous voulez utiliser le surchiffrement triple utilisez des modes sans rtroaction externe.

Variantes du surchiffrement triple


Avant quil y ait des preuves que le DES nest pas un groupe, plusieurs schmas de
surchiffrement furent proposs. Une faon de sassurer que le surchiffrement triple ne se
rduit pas un simple chiffrement consiste changer effectivement la taille des blocs.
Une mthode simple est dajouter un bit de remplissage. Compltez le texte avec une
chane de bits alatoires de longueur gale la moiti de la longueur dun bloc, entre le
premier et le second et entre le second et le troisime chiffrement (voir la figure 15.2).
Si P est la fonction de remplissage, on a :
C = E K3 ( P ( DK2 (P(EKl(M)))))

Ce remplissage non seulement brouille les motifs rguliers mais aussi superpose les
blocs chiffrs comme des briques. Cela ne rajoute quun bloc la longueur du message.
Une autre technique, propose par Cari E llison consiste utiliser de fonction de
permutation sans clef entre les trois chiffrements. La permutation pourrait oprer sur
de grands blocs de lordre de 8 kilo-octets et donnerait une taille de bloc effective
de 8 kilo-octets cette variante. En supposant que la permutation est rapide, cette
variante nest pas beaucoup plus lente que le surchiffrement triple classique.
C = E K3(T(DK2(T(EKl(M)))))

15.2

Surchiffrement triple

383

T rassemble un block en entre (jusqu 8 kilo-octets de long) et utilise un gnrateur


pseudo-alatoire pour le transposer. Le changement dun bit en entre cause le change
ment de huit octets en sortie aprs le premier chiffrement, de 64 octets au mieux aprs
le deuxime chiffrement, et de 512 octets au mieux aprs le troisime chiffrement. Si
chaque algorithme par blocs fonctionne en mode C B C , comme propos lorigine, alors
leffet du changement dun seul bit a des chances d atteindre le bloc de 8 kilo-octets en
entier, mme dans les blocs autres que le premier.

La version la plus rcente de ce schma rpond lattaque de B ih a m sur le CBC


interne en introduisant une passe de blanchiment pour masquer les motifs du texte
en clair. Cette passe est un flot de combinaisons par ou exclusif avec un gnrateur
de nombres alatoires cryptographiquement sr, appel R ci-dessous. Lapplication de
T avant et aprs empche le cryptanalyste de savoir priori quelle clef a t utilise
pour chiffrer nimporte quel bit donn en entre du dernier chiffrement. Le deuxime
chiffrement est not nE (chiffrement avec n clefs utilises de manire cyclique) :

C = E Ks(R(T(nEK2(T(EKl( m ) ) )
Tous les chiffrement sont fait en mode C B C et les clefs sont fournies au moins pour
les n + 2 clefs de chiffrement et gnrateur de nombres alatoires cryptographiquement
sr.
Ce schma a t propos avec le DES, mais il fonctionne avec nimporte quel algorithme
de chiffrement par blocs. Je ne connais aucune tude de la scurit de ce schma.

384

15.3

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

Doublement de la longueur de bloc

Certains arguments circulent dans la communaut acadmique pour savoir si des blocs
de 64 bits sont suffisament longs. D un ct, cette taille ne permet la diffusion du texte
en clair que sur 8 octets du texte chiffr. D un autre ct, une taille de blocs plus
grande rend les motifs difficiles masquer de faon sre ; il ny a plus de place pour
les erreurs.
Certains ont propos de doubler la longueur des blocs d un algorithme en utilisant le
surchiffrement [305]. Avant de raliser cela, vrifiez lexistence potentielle d attaques
par collisions. Le schma de Richard OUTERBRIDGE, illustr par la figure 15.3, nest pas
plus sr que le surchiffrement triple deux clefs avec une taille de bloc classique [859].

F ig . 15.3 - Doublement correct de la longueur de bloc

Cependant, je ne conseille pas ce genre de choses. Ce nest pas plus rapide que le
surchiffrement triple conventionnel : il faut toujours six chiffrements pour chiffrer deux
blocs de donnes. Nous connaissons les caractristiques du surchiffrement triple ; les
constructions telles que celle-ci ont souvent des vices cachs.

15.4

Autres schmas de surchiffrement

Le problme avec le surchiffrement triple avec deux clefs est quil permet de doubler
lespace des clefs, mais ncessite trois chiffrements par bloc de texte en clair. Ne seraitil pas opportun de trouver un moyen intelligent de combiner deux chiffrements de
manire doubler lespace des clefs?

15.4

Autres schmas de surchiffrement

385

Mode compteur OFB double


Cet algorithme utilise un algorithme par blocs pour gnrer deux flots de clefs qui sont
alors utiliss pour chiffrer le texte en clair.
Si E iS i-i f i ) ; f i = / i + l

Ti E x2(Ti-1 I 2) ; h = I2 + 1
Ci = M z Si Ti

Si et Ti sont des variables internes et Ji et J2 sont des compteurs. Deux copies de lal
gorithme fonctionnent dans une sorte de mode compteur O F B , et le texte en clair Si et
Tt sont combins ensemble par ou exclusif. Les deux clefs K\ et K 2 sont indpendantes.
Je ne connais aucune cryptanalyse de cette variante.

ECB avec OFB


Cette mthode a t conue pour chiffrer plusieurs messages de mme taille fixe, par
exemple des secteurs de disques [193, 194], Utiliser deux clefs. Il faut tout dabord
crer un masque la taille voulue laide de K i et de lalgorithme. Ce masque sera
utilis chaque fois quon chiffre un message avec les mmes clefs. Combinez alors
par ou exclusif le texte en clair avec le masque. Finalement, chiffrez le rsultat avec
lalgorithme et / f 2 en mode E CB.
Ce mode na pas t analys ailleurs que dans larticle o il est apparu. Il est claire
ment au moins aussi solide quun simple chiffrement en mode E C B et peut-tre aussi
solide que deux passes de lalgorithme. Un cryptanalyste pourrait vraissemblablement
chercher les deux clefs indpendamment si plusieurs textes en clair connus sont chiffrs
avec les mmes clefs.
Pour contrecarrer lanalyse de blocs identiques des positions identiques dans diffrents
messages, vous pouvez ajouter un IV. A linverse de lutilisation classique dun IV dans
tous les autres modes, ici lIV est combin par ou exclusif avec chaque bloc du message
avant le chiffrement en mode E CB.
Matt B l a z e a conu ce mode pour son sytme cryptographique de fichiers sous U N IX
(appel CFS pour Cryptographie File System ). Cest un mode pratique car la
latence nest que dun chiffrement en mode E C B ; on peut gnrer le masque une fois
pour toutes en le stockant. Dans CFS, lalgorithme de chiffrement nest autre que le
DES.

xDES*
Dans [1646, 1647], le DES est utilis comme lment de construction dune srie dal
gorithmes de chiffrement par blocs avec la fois une taille de clef et une taille de bloc
plus grandes. Ces constructions ne dpendent pas du tout du DES et peuvent tre
reproduites avec nimporte quel algorithme par blocs.
Le premier algorithme, x D E S 1, est simplement une construction de LlJBY-RACKOFF
avec lalgorithme de chiffrement par blocs comme fonction sous-jacente (voir 14.11).
La taille de bloc et la taille de clef sont respectivement le double de celles de lalgorithme
sous-jacent. Dans chacune des trois rondes, chiffrez la moiti droite avec lalgorithme
par blocs et lune des clefs, combinez le rsultat par ou exclusif avec la moiti de
gauche, et changez les deux moitis.

386

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

Cest plus rapide que le surchiffrement triple classique car trois chiffrements permettent
de chiffrer deux fois plus que lalgorithme sous-jacent. Mais une simple attaque par
collisions permet de trouver la clef avec 2 k blocs de mmoire, o k est la taille de la clef
de lalgorithme sous-jacent. Chiffrez la moiti droite dun bloc de texte en clair avec
toutes les valeurs possibles de K\, combinez la par ou exclusif avec la moiti gauche
du texte en clair, et stockez ces valeurs dans un tableau. Chiffrez alors la moiti droite
du texte chiffr avec toutes les valeurs possibles de K 3 et regardez si cela correspond
une des valeurs du tableau. Si vous en trouvez une, la paire de clefs K i , K 3 forme un
candidat potentiel. Rptez lattaque plusieurs fois et il ne restera quun seul candidat.
Cela montre que x D E S 1 nest pas une solution idale. Il y a mme pire, il existe une
attaque texte en clair choisi qui prouve que x D E S 1 n est pas beaucoup plus sr que
lalgorithme de chiffrement par blocs sous-jacent [858],
xD E S2 tend cette ide un algorithme 5 rondes avec une taille de bloc 4 fois
suprieure et une taille de clef 10 fois suprieure celles de lalgorithme sous-jacent.
La figure 15.4 illustre une ronde de x D E S 2 ; chacun des quatre sous-blocs ont mme
taille que les blocs de lalgorithme sous-jacent et les 10 clefs sont indpendantes.

F ig . 15.4

Une ronde de x D E S 2

Ce schma est lui aussi plus rapide que le surchiffrement triple : dix chiffrements per
mettent de chiffrer un bloc de taille quatre fois plus grande. Cependant, il est vuln
rable la cryptanalyse diffrentielle [858] et ne devrait pas tre utilis. Le schma est
vulnrable mme si le DES est utilis avec des clefs de rondes indpendantes.
Pour i > 3, xDES* est probablement trop imposant pour savrer utile en tant qual
gorithme par blocs. Par exemple, la taille de bloc de xD E S6 est six fois suprieure
celle de lalgorithme sous-jacent, sa taille de clef est 21 fois suprieure, et 21 chiffre
ments sont ncessaires pour chiffrer un bloc six fois plus gros que ceux de lalgorithme
sous-jacent. Le surchiffrement triple est plus rapide.

Surchiffrement quintuple
Si le surchiffrement triple ne vous parat pas assez sr vous avez peut-tre besoin de
chiffrer des clefs du surchiffrement triple en utilisant un algorithme encore plus sr

Troncature de clef (dans C D M F )

15.5

387

alors vous pourriez utiliser des surchiffrements de plus haut degr. Le surchiffrement
quintuple est trs rsistant lattaque par collisions3.
C = E Ki(DK2 (EK3 (DK2 ( E k A M ) ) ) ) )

M = DK i (EK2(DK3(EKADKi (C)))))
Cette construction est compatible avec le surchiffrement triple en prenant
= K 3 et
aussi avec le chiffrement conventionnel en prenant K \ = K 2 = K 3. Bien sr, il serait
encore plus sr de prendre cinq clefs indpendantes.

15.5

Troncature de clef (dans CDMF)

IBM a conu cet algorithme pour leur utilitaire C D M F (voir 24.8) pour rduire une
clef de 56 bits 40 bits ce qui est la taille requise pour lexportation [785]. La clef est
suppose inclure les bits de parit.
1 Mettre zro les bits de parit qui sont les bits 8, 16, 24, 32, 40, 48, 56, 64.
2 Chiffrer le rsultat de ltape 1 avec le DES et la clef OxC408B0540BAlEOAE,
et combiner le rsultat avec la clef obtenue ltape 1 par ou exclusif.
3 Mettre zro les bits suivants dans le rsultat de ltape 2 : 1, 2, 3, 4, 8, 16,
17, 18, 19, 20, 24, 32, 33, 34 35, 36, 40, 48, 49, 50, 51, 52, 56, 64.
4 Chiffrer le rsultat de ltape 3 avec le DES et la clef 0xEF2C041CE6382FE6.
Cette clef est alors utilise pour chiffrer les messages.

Retenez que cette mthode racourcie la longueur des clefs, et affaiblit par consquent
lalgorithme.

15.6

Blanchiment

B lanchim ent est le no m donn une technique consistant com biner p a r ou exclusif
une partie de la clef avec l entre d un algorithm e de chiffrement p a r blocs, et com biner

La variante D ESX,
RSA D I, est la prem ire l avoir em ploye; viennent ensuite K h u f u

par ou exclusif une pa rtie de la clef avec la sortie de l algorithm e.


dveloppe p a r
et K

hafre

(probablem ent indpendam m ent de celle-l)4.

Lide est dempcher le cryptanalyste dobtenir une paire texte en clair, texte chiffr
pour lalgorithme en question. La technique oblige les cryptanalystes deviner non
seulement la clef de lalgorithme, mais aussi les valeurs de blanchiment. Comme il y a
une combinaison par ou exclusif avant et aprs lalgorithme, cette technique nest pas
propice une attaque par collisions.
C = K 3 0 E K 2( M A r)
M

= K i D K 2(C K 3)

3. Des arguments similaires ceux utiliss propos du surchiffrement dou ble perm ettent de mon
trer que le surchiffrement quadruple na pporte qu une faible am lioration de scurit par rapport au
surchiffrement triple.
4. RiVBST a nom m cette technique ainsi, ce m ot n est pas d un usage conventionnel.

388

Chapitre 15

Combinaison dalgorithmes de chiffrement par blocs

Si K i = K%, une attaque exhaustive ncessite 2n+fc/,p oprations o n est la taille de


la clet, b la taille des blocs, et p le nombre de textes en clair connus. Si K\ et K-A sont
diffrentes, une attaque exhaustive ncessite 2 " 15 11 oprations avec trois textes en clair
connus. Contre les cryptanalyss diffrentielle et linaire, ces mesures ne fournissent
que quelques bits de clef de protection. Mais sur le plan du temps de calcul, cest un
moyen trs conomique d augmenter la scurit d un algorithme de chiffrement par
blocs.

15.7

Mise en cascade de plusieurs algo


rithmes

Quen est-il si on chiffre le bloc tout dabord avec lalgorithme A et la clef K a et ensuite
avec lalgorithme B et la clef K b ? Il se peut quAlice et Bernard ne soient pas d accord
sur la scurit des algorithmes : Alice veut utiliser un algorithme A et Bernard veut
utiliser un algorithme B. Cette technique est parfois appele m ise en cascade et peut
tre gnralise bien plus de deux algorithmes et deux clefs.
Les pessimistes disent quil ny a pas de garantie que les deux algorithmes ensemble
augmenteront le niveau de scurit. Il pourrait y avoir des interactions subtiles entre
les deux algorithmes qui, au contraire, diminueraient le niveau de scurit. Mme le
surchiffrement avec deux ou trois algorithmes diffrents pourrait ne pas tre aussi sr
que vous le croyez. La cryptographie est un art difficile.
La ralit est beaucoup plus rose. Les avertissements prcdents ne valent que si les
clefs sont relies les unes aux autres. Dans le cas o toutes les clefs sont indpendantes,
le rsultat est au moins aussi difficile casser que le premier algorithme [1042]. Si le
second algorithme est vulnrable une attaque texte en clair choisi, alors le premier
algorithme pourrait faciliter cette attaque et rendre le second algorithme vulnrable
une attaque texte en clair connu seulement quand ils sont utiliss en cascade.
Cette attaque potentielle nest pas limite aux algorithmes de chiffrement : si vous
laissez quelquun d autre prcisez quel algorithme est utilis sur vos messages avant
chiffrement, vous feriez mieux de vous assurer que votre chiffrement rsistera une
attaque en texte en clair choisi5.
On peut formuler cela de meilleure manire ainsi : face une attaque texte en clair
choisi, une cascade d algorithmes de chiffrement est au moins aussi difficile casser
que lune de ses composantes [858]. Un prcdent rsultat statuait quune cascade
d algorithmes est au moins aussi difficile casser que la plus solide de ses composantes,
mais ce rsultat est bas sur des hypothses non fondes [530]. C est seulement quand
les algorithmes commutent, comme cest le cas pour une cascade dalgorithmes de
chiffrement en continu (ou dalgorithmes de chiffrement par blocs en mode O F B ), que
leur mise en cascade donne un rsultat au moins aussi solide que le plus solide des
algorithmes la composant.
Si Alice et Bernard nont pas confiance en lalgorithme de lautre, ils peuvent utiliser
une mise en cascade. Si ce sont des algorithmes de chiffrement en continu, lordre na
pas d importance. Si ce sont des algorithmes par blocs, Alice peut utiliser lalgorithme
5. N otez au passage que l algorithm e utilis couram m ent pou r com presser et numriser la parole
la vitesse des m odem s est C E L P qui a t con u par la NSA.

15.8

Combaer plusieurs algorithmes de chiffrement par blocs

389

A puis B et Bernard qui a plus confiance en B peut utiliser B puis A. Ils pourraient
mme ajouter un bon algorithme de chiffrement en continu entre les deux ; cela ne fait
pas de mal et a peut trs bien augmenter la scurit.
Retenez que chaque clef doit tre indpendante. Si A a une clef de 64 bits et B une
clef de 128 bits, le rsulat aprs mise en cascade doit avoir une clef de 192 bits. Si vous
nutilisez pas des clefs indpendantes, alors il y a beaucoup plus de chances que les
pessimistes aient raison.

15.8

Combiner plusieurs algorithmes de


chiffrement par blocs

Voici un autre moyen de combiner plusieurs algorithmes de chiffrement par blocs, lun
deux offre au moins autant de scurit que chaque algorithme. Effectuer avec deux
algorithmes (et deux clefs indpendantes) les oprations suivantes :
1 Gnrer une chane de bits alatoire R de mme taille que le message.
2 Chiffrer R avec le premier algorithme.
3 Chiffrer R (B A4 avec le second algorithme.
4 Le texte chiffr est le rsultat des tapes 2 et 3.

En supposant que la chane de bit est rellement alatoire, cette mthode consiste
chiffrer A4 avec un masque jetable et chiffrer la fois le message chiffr et le
masque, chacun avec un des deux algorithmes. Comme les deux sont ncessaires pour
reconstruire A4, un cryptanalyste doit casser les deux algorithmes. L inconvnient est
que le texte chiffr est deux fois plus gros que le texte en clair.
On peut tendre cette mthode pour un plus grand nombre dalgorithmes, mais le texte
chiffr augmente avec chaque addition d un algorithme. C est une bonne ide, mais je
ne pense pas quelle soit trs pratique.

Chapitre 16

Gnrateurs de suites
alatoires et chiffrement en
continu
16.1

Gnrateurs
suites

pseudo-alatoires

de

Gnrateurs linaires congruentiels


Les g n r a t e u r s lin a ir e s c o n g r u e n t ie ls sont des gnrateurs pseudo-alatoires de
suites de la forme :
X n = {u X n _i

4- b) mod m

o X n est le ne nombre de la suite et


le nombre prcdent de la suite. Les sym
boles a, b, et m dnotent des constantes : a est le m u lt ip li c a t e u r , b est l in c r m e n t
et m est le m o d u le . Le germe est la valeur initiale de Xq.
Ce gnrateur a une priode qui nest pas plus grande que m. Si a, b e t m sont choisis
correctement1, alors le gnrateur sera un g n r a t e u r d e p r io d e m a x im a le , et
aura une priode m. Les dtails concernant le choix des constantes qui garantit la
priode maximale peuvent tre trouvs dans [864, 953] Une autre bonne publication
sur les gnrateurs linaires congruentiels et leur thorie est [1452].
Le tableau 16.1, emprunt [1283], donne une liste des bonnes constantes pour des g
nrateurs linaires congruentiels. Elles donnent toutes des gnrateurs priode maxi
male et mme, plus important encore, ces gnrateurs passent le test spectral de carac
tre alatoire pour les dimensions 2, 3, 4, 5 et 6 [390, 864]. Elles sont arranges dans
lordre croissant du plus grand produit qui ne donne pas de dpassement de capacit
pour une longueur de mot donne.
Lavantage des gnrateurs linaires congruentiels est quils sont rapides, ne ncessitant
que peu d oprations par bit.
1. Par exem ple, b et m doivent tre premiers entre eux.

392

Chapitre 16

Tab

16.1

Gnrateurs de suites alatoires et chiffrement en continu

Constantes pour gnrateurs linaires congruentiels


a

iu

106

221
222
223

211

1283
1663
1663
2531
1399
1283
11213
2531
6173
3041
28411
6571
2957
2731
4621
29573
17117
6173
28411
18257
54773
24631
25673
24749
66037
25673
25367
45289
51749
49297
36979
25673
30809
29573
45289
150889
28411
51349
54773
49297
150889
374441
107839
66037
45989

6075
7875
7875
11979
6655
6075
53125
11979
29282
14406
134456
31104
14000
12960
21870
139968
81000
29282
134456
86436
259200
116640
121500
117128
312500
121500
120050
214326
244944
233280
175000
121500
145800
139968
214326
714025
134456
243000
259200
233280
714025
1771875
510300
312500
217728

Dpassement pour

224

225

226

227

421
430
936
1366
171
859
419
967
141
625
1541
1741
1291
205
421
1255
281
1093
421

1021
1021
228

229

230

23i

232
233
234
235

1277
741
2041
2311
1807
1597
1861
2661
4081
3661
3877
3613
1366
8121
4561
7141
9301
4096
2416
17221
36261
84589

16.1

393

Gnrateurs pseudo-alatoires de suites

Malheureusement, les gnrateurs linaires congruentiels ne peuvent pas tre utiliss


pour la cryptographie par chiffrement en continu, car ils sont prvisibles. Les gn
rateurs linaires congruentiels ont t casss pour la premire fois par Jim R e e d s
[1305, 1306, 1307] et Joan B o y a r [702], Elle a aussi cass les gnrateurs quadra
tiques :
X n (a X + bX n - 1 + c) mod m
et les gnrateurs cubiques :
X n - (aX _ i 4 bX%_ 1 4 cX n - 1 4 d) mod m.

Dautres chercheurs ont tendu les travaux de B o y a r pour casser tout gnrateur
ngruentiel polynomial [934, 899, 900]. Les gnrateurs linaires congruentiels tron
qus ont aussi t casss [583, 706, 582], de mme que les gnrateurs linaires congruen
tiels tronqus avec des paramtre inconnus [1505, 215], L vidence est faite que les
gnrateurs congruentiels ne sont pas utiles pour la cryptographie.
Toutefois, les gnrateurs linaires congruentiels restent utiles pour des applications
non cryptographiques, comme les simulations. Ils sont efficaces et ont de bons com
portements statistiques par rapport aux tests empiriques les plus raisonnables. Vous
trouverez pas mal dinformation sur les gnrateurs linaires congruentiels et leurs
ralisations dans [953].

Combinaison de gnrateurs linaires congruentiels


Plusieurs personnes ont examin la combinaison de gnrateurs linaires congruentiels
[1597, 952]. Leurs rsultats ne sont pas plus srs cryptographiquement, mais ils ont
des priodes plus longues etils passent mieux les tests de caractre alatoire.
Utilisez ce gnrateur sur les ordinateurs motde 32 bits [532] :
s t a t i c lo n g s i = 1

s t a t i c lo n g s2 = 1

/ * Un " l o n g " d o i t

# d e f i n e M O D M U L T (a,b ,c,m ,s) q = s / a ;

a v o ir 32 b i t s .

s = b * (s -a * q )

*/

c*q;

if

( s < 0 ) s+=m;

/ * M 0 D M U L T (a ,b ,c,m ,s) c a l c u l e s * b mod m,


t a n t d o n n m =a*b+c e t 0 <= c < m. */
/ * com binedLCG f o u r n i t u n e v a l e u r r e l l e

* l in te r v a lle

(0 ,1 ).

E lle

p s e u d o - a l a t o ir e dans

co m b in e d e s g n r a t e u r s l i n a i r e s

31

* c o n g r u e n t ie ls a vec d es p r io d e s de 2

31
-8 5 e t 2

-2 4 9

* e t a une p r i o d e g a l e au p r o d u i t d e c e s d eu x
* n om b res p r e m i e r s .

*/

d o u b l e com binedLCG ( v o i d )

t
lo n g q ;
lo n g z ;
M0DMULT ( 5 3 6 6 8 , 4 0 0 1 4 ,

12211, 2147483563L, s i

M0DMULT ( 5 2 7 7 4 , 4 0 6 9 2 ,

3791,

z = si -

s2

2147483399L ,

s2 )

Chapitre 16

394
if

Gnrateurs de suites alatoires et chiffrement en continu

( z < 1 )
z += 2 1 4 7 4 8 3 5 6 2 ;

r e t u r n z * 4 . 6 5 6 6 1 3 e - 10 ;

>
/*

En g n r a l ,

v o i d in itL C G

il

f a u t a p p e l e r in itL C G a v a n t d u t i l i s e r com binedL C G .

( lo n g I n i t S l ,

*/

lo n g I n itS 2 )

{
s i = I n itS l

s2 = In itS 2

>
Ce gnrateur fonctionne tant que la machine peut reprsenter tous les entiers compris
entre 231 -f 85 et 231 85. Les variables s i et s2 sont globales; elles maintiennent
ltat courant du gnrateur. Avant le premier appel, elles doivent tre initialises. La
variable s i doit avoir une valeur initiale entre 1 et 2147483562; la variable s2 doit
avoir une valeur initiale entre 1 et 2147483398. Le gnrateur a une priode denviron
1018.
Si vous navez quun ordinateur 16 bits, utilisez plutt le gnrateur suivant :
s ta tic

in t s i = 1

s ta t ic

in t s2 = 1

/ * Un " i n t " d o i t

a v o i r 16 b i t s .

*/

s t a t ic in t s3 = 1
# d e f i n e M 0 D M U L T (a ,b ,c,m ,s) q s / a ;
/*

s = b * (s -a * q )

c*q;

if

(s < 0 )

s+=m;

com binedLCG f o u r n i t u n e v a l e u r r e l l e p s e u d o - a l a t o i r e dams

* l in te r v a lle

(0 ,1 ).

E lle

co m b in e d e s g n r a t e u r s l i n a i r e s

15

* c o n g r u e n t ie ls a v ec d es p r io d e s de 2

15
-4 0 5 ,

15
-1 0 4 1 ,

et 2

-1 1 1 1

* e t a u n e p r i o d e g a l e au p r o d u i t d e c e s t r o i s
* n o m b re s p r e m i e r s . * /
d o u b le com binedLCG ( v o i d )
in t q ;
in t z

MODMULT

( 206,

157, 21,

32363,

MODMULT

( 217,

146, 4 5 ,

31727,

s2 )

MODMULT

( 222,

142, 133, 31657,

s3 )

z = si

s2

if

( z > 706 )
z -=

z += s 3
if

si )

3 2 3 62

( z < 1 )
z += 3 2 3 6 2

r e t u r n z * 3 .0 8 9 9 e -5

>
/ * En g n r a l ,

v o i d in itL C G

il

f a u t a p p e l e r in itL C G a v a n t d u t i l i s e r com binedL C G . * /

( in t I n it S l,

in t In itS 2 ,

In itS 3

16.2

Registres dcalage rtroaction linaire

395

si = InitSl ;
2 = InitS2 ;
e 3 = InitS3 ;
}
Ce gnrateur fonctionne tant que la machine peut reprsenter tous les entiers entre
32 363 et 32 363. Les variables s i , s2 et s3 sont globales; elles maintiennent ltat
courant du gnrateur. Avant le premier appel, elles doivent tre initialises. La variable
si doit avoir une valeur initiale entre 1 et 32 362. La variable s2 doit avoir une valeur
initiale entre 1 et 31762. La variable s3 doit avoir une valeur initiale entre 1 et 31656.
Le gnrateur a une priode de 1,6 x 1013.
Pour ces deux gnrateurs, le terme constant b est nul.

16.2

Registres dcalage rtroaction li


naire

Les squences de registres dcalage sutilisent la fois en cryptographie et en thorie


des codes. Il existe une thorie trs riche leur propos ; les algorithmes de chiffrement en
continu bass sur des registres dcalage ont t le cheval de bataille des cryptographes
militaires depuis les dbuts de llectronique.
Un registre dcalage rtroaction est compos de deux parties : un registre
dcalage et une fonction de rtroaction (voir la figure 16.1). Le registre dcalage
est une suite de bits. Chaque fois quun bit est ncessaire, tous les bits du registre
dcalage sont dcals vers la droite de un bit. Le nouveau bit le plus gauche est
calcul en fonction des autres bits dans le registre. Le registre dcalage produit un
bit en sortie, le moins significatif en gnral. La priode d un registre dcalage est
la longueur de squence produite avant quelle ne commence se rpter.

bn

r
-------- -

bn-l

ir

bt

b3

b2

bi

1r

ir

ir

Fonction de rtroaction

F i g . 16.1 - Registre dcalage rtroaction

Les cryptographes ont rafol des algorithmes de chiffrement faits de registre dcalage
car ils sont faciles raliser en matriel. Je ne traiterai que la thorie mathmatique.
Ernst S e l m e r le responsable de la cryptographie pour le gouvernement norvgien a
fond la thorie des squences de registre dcalge en 1965 [1416]. Solomon G o l o m b ,
un mathmaticien de la NSA, a crit un livre avec les rsultats de S e l m e r et d autres
qui lui sont propres [645]. Voir aussi [982, 981, 1649].
La forme la plus simple de registre dcalage est le registre dcalage rtroac-

Chapitre 16

396

Gnrateurs de suites alatoires et chiffrement en continu

tion linaire, ou en abrg R D R L 2 (voir la figure 16.2). La fonction de rtroaction


est simplement la combinaison par ou exclusif de certains des bits du registre ; la liste
de ces bits sappelle une squence de drivation ou parfois une configuration de
Fibonaeci. Comme la rtroaction est simple, une large partie des thories math
matiques sappliquent lanalyse des R D R L . Les cryptographes aiment analyser les
suites de bits pour se convaincre quelles sont assez alatoires pour tre utilises en
cryptographie.

F i g . 16.2 - Registre dcalage rtroaction linaire

La figure 16.3 reprsente un R D R L de 4 bits, driv au premier et au quatrime bit.


Il est initialis avec la valeur 1111, produira la suite dtats internes suivante avant de
se rpter :
1 1 1 1
0 111
10 11
0 10

10 10
110 1
0 110
0 0 11
10 0 1

0 10 0
0 0 10
0 0 0 1

10 0 0
2. N ote du traducteur : en anglais, les registres dcalage rtroaction linaire sont appels h n ea r
feed ba ck sh ift reg isters et sont abrgs * L F S R .

F ig . 16.3 - R D R L 4 bits

16.2

Registres dcalage rtroaction linaire

397

110 0
1 1 1 0
La suite de sortie est la chane des bits les moins significatifs :
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 ___
Un R D R L n bits est dans lun de ses 2n 1 tats. En thorie, il peut donc engendrer
des suites pseudo-alatoires de 2'n 1 bits de long avant de se rpter3. Seul les R D R L
avec certaines squences de drivation passeront par tous les 2" 1 tats internes ; ils
sont appels R D R L d e p r io d e m axim ale. La suite de bits produite alors en sortie
sappelle une m -suite.
Pour quun R D R L soit de priode maximale, le polynme form par les lments de
la squence de drivation + 1 doit tre un polynme primitif modulo 2. Le d eg r du
polynme est la longueur du registre dcalage. Un polynme primitif de degr n est
un polynme irrductible qui divise x 2 _1 + 1 mais pas x d + 1 pour tout d qui divise
2n 1 (voir 11.3). Pour un aperu plus mathmatique consulter [645, 1651, 1650].
En gnral, il nexiste pas de moyen de gnrer des polynmes primitifs modulo 2 de
degr donn. Le moyen le plus facile consiste choisir un polynme alatoirement et
vrifier sil est primitif. C est compliqu peu prs autant que de vrifier quun
nombre alatoire est premier mais il existe de nombreux logiciels mathmatiques qui
font cela. Quelques mthodes se trouvent dans [982, 981].
Le tableau 16.2 donne une liste de polynmes primitifs modulo 2 de diffrents degrs
[1585, 645, 1651, 1650, 1283, 692]. Par exemple, lentre (3 2 ,7 ,5 ,3 ,2 ,1 ,0 ) indique que
le polynme suivant est primitif modulo 2 :
x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Il est ais de transformer ceci en un R D R L de priode maximale. Le premier nombre


est le degr et la taille du R D R L , et le dernier nombre toujours 0, peut tre ignor.
Tous les nombres, except le 0, spcifient la squence de drivation. Il faut compter
partir de la gauche du registre dcalage, c est dire que les termes de faible degr
correspondent des bits de drivation sur la gauche du registre.
Pour continuer avec lexemple, lentre (3 2 ,7 ,5 ,3 ,2 ,1 ,0 ) indique que, si vous prenez
un registre dcalage de 32 bits et que vous engendrez le nouveau bit en combinant
par ou exclusif les 32e , 7e , 5e , 3e , 2e et 1er bits ensemble (voir la figure 16.4), alors le
RDRL aura une priode maximale ; il parcourra les 232 1 valeurs avant de se rpter.

Fig. 16.4 - R D R L 32 b its d e p r io d e m a x im a le


3. C est 2 t et non pas 2n parce q u un registre dcalage rem pli de 0 donnera un R D R L qui
produit une suite infinie de 0, ce qui n est pas particulirement utile.

398

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

T ab. 16.2 - Quelques polynmes primitifs modulo 2


(1,0)
(2,1,0)
(3,1,0)
(4,1,0)
(5,2,0)
(6,1,0)
(7,1,0)
(7,3,0)
(8 ,4 ,3 ,2 ,0 )
(9,4,0)
(10,3,0)
(11,2,0)
(1 2 ,6 ,4,1 ,0)
(13 ,4,3 ,1 ,0 )
(1 4,5,3 ,1 ,0 )
(15,1,0)
(1 6,5,3 ,2 ,0 )
(17,3,0)
(17,5,0)
(17,6,0)
(18,7,0)
(1 8 ,5 ,2 ,1 ,0 )
(1 9,5,2 ,1 ,0 )
(20,3,0)
(21,2,0)
(22,1,0)
(23,5,0)
(2 4,4,3 ,1 ,0 )
(25,3,0)
(2 6 ,6 ,2 ,1 ,0 )
(2 7,5,2 ,1 ,0 )
(28,3,0)
(29,2,0)
(30,6 ,4,1 ,0)
(31,3,0)
(31,6,0)
(31,7,0)
(31,13,0)
(112,11,6,4,0)
(113,9,0)
(113,15,0)
(113,30,0)
(114,11,2,1,0)
(115,8,7,5,0)

(3 2 ,7 ,6 ,2 ,0 )
(33,13,0)
(33,16,4,1,0)
(3 4,8,4 ,3 ,0 )
(3 4 ,7 ,6 ,5 ,2 ,1 ,0 )
(35,2,0)
(36,11,0)
(3 6 ,6 ,5 ,4 ,2 ,1 ,0 )
(3 7 ,6 ,4 ,1 ,0 )
(3 7 ,5 ,4 ,3 ,2 ,1 ,0 )
(3 8,6,5 ,1 ,0 )
(39,4,0)
(4 0 ,5 ,4 ,3 ,0 )
(41,3,0)
(4 2,7,4 ,3 ,0 )
(4 2 ,5 ,4 ,3 ,2 ,1 ,0 )
(4 3,6,4 ,3 ,0 )
(44,6 ,5,2 ,0)
(4 5 ,4 ,3,1 ,0)
(46,8,7 ,6 ,0)
(4 6 ,8 ,5 ,3 ,2 ,1 ,0 )
(47,5,0)
(4 8 ,9 ,7,4 ,0)
(4 8 ,7 ,5 ,4 ,2 ,1 ,0 )
(49,9,0)
(4 9 ,6 ,5,4 ,0)
(5 0 ,4 ,3,2 ,0)
(5 1 ,6 ,3,1 ,0)
(52,3,0)
(53,6 ,2,1 ,0)
(54,8 ,6,3 ,0)
(5 4 ,6 ,5 ,4 ,3 ,2 ,0 )
(55,24,0)
(55,6 ,2,1 ,0)
(5 6,7 ,4 ,2 ,0 )
(57,7,0)
(5 7 ,5 ,3,2 ,0)
(58,19,0)
(142,21,0)
(143,5,3,2,0)
(144,7,4,2,0)
(145,52,0)
(145,69,0)
(146,5,3,2,0)

(5 8,6,5,1 ,0)
(5 9 ,7 ,4 ,2 ,0 )
(5 9 ,6 ,5 ,4 ,3 ,1 ,0 )
(60,1,0)
(6 1 ,5 ,2 ,1 ,0 )
(6 2,6,5,3 ,0)
(63,1,0)
(6 4,4,3,1 ,0)
(65,18,0)
(6 5,4,3,1 ,0)
(6 6,9,8,6 ,0)
(6 6 ,8 ,6 ,5 ,3 ,2 ,0 )
(6 7 ,5 ,2 ,1 ,0 )
(68,9,0)
(6 8 ,7 ,5 ,1 ,0 )
(6 9,6,5,2 ,0)
(7 0,5,3,1 ,0)
(71,6,0)
(7 1,5,3,1 ,0)
(72,10,9,3,0)
(7 2 ,6 ,4 ,3 ,2 ,1 ,0 )
(73,25,0)
(7 3,4,3,2 ,0)
(7 4,7,4,3 ,0)
(7 5,6,3,1 ,0)
(7 6,5,4,2 ,0)
(7 7 ,6 ,5 ,2 ,0 )
(7 8,7,2,1 .0)
(79,9,0)
(7 9 ,4 ,3 ,2 ,0 )
(8 0,9,4,2 ,0)
(8 0 ,7 ,5 ,3 ,2 ,1 ,0 )
(81,4,0)
(8 2,9,6,4 ,0)
(8 2 ,8 ,7 ,6 ,1 ,0 )
(8 3,7,4,2 ,0)
(84,13,0)
(8 4 ,8 , 7 , 5 ,3 ,1 ,0 )
(164,12,6,5,0)
(165,9,8,3,0)
(166,10,3,2,0)
(167,6,0)
(170,23,0)
(172,2,0)

(8 5,8,2,1 ,0)
(8 6,6,5,2 ,0)
(87,13,0)
(87,7,5,1 ,0)
(88,11,9,8,0)
(8 8 ,8 ,5 ,4 ,3 ,1 ,0 )
(89,38,0)
(89,51,0)
(89,6,5,3,0)
(90,5,3,2 ,0)
(91,8,5,1 ,0)
(9 1 ,7 ,6 ,5 ,3 ,2 ,0 )
(92,6,5,2 ,0)
(93,2,0)
(94,21,0)
(94,6,5,1 ,0)
(95,11,0)
(9 5 ,6 ,5 ,4 ,2 ,1 ,0 )
(96,10,9,6,0)
(9 6 ,7 ,6 ,4 ,3 ,2 ,0 )
(97,6,0)
(98,11,0)
(9 8 ,7 ,4 ,3 ,1 ,0 )
(99,7,5,4 ,0)
(100,37,0)
(100,8,7,2,0)
(101,7,6,1,0)
(102,6,5,3,0)
(103,9,0)
(104,11,10,1,0)
(105,16,0)
(106,15,0)
(107,9,7,4,0)
(108,31,0)
(109,5,4,2,0)
(110,6,4,1,0)
(111,10,0)
(111,49,0)
(236,5,0)
(250,103,0)
(255,52,0)
(255,56,0)
(255,82,0)
(258,83,0)

16.2

399

Registres dcalage rtroaction linaire

T ab. 16.2 - Quelques polynmes primitifs modulo 2 (suite)


(116,6,5,2,0)
(117,5,2,1,0)
(118,33,0)
(119,45,0)
(119,8,0)
(120,9,6,2,0)
(121,18,0)
(122,6,2,1,0)
(123,2,0)
(124,37,0)
(125,7,6,5,0)
(126,7,4,2,0)
(127,1,0)
(127,7,0)
(127,15,0)
(127,30,0)
(127,63,0)
(128,7,2,1,0)
(129,5,0)
(130,3,0)
(131,8,3,2,0)
(132,29,0)
(133,9,8,2,0)
(134,57,0)
(135,11,0)
(135,16,0)
(135,22,0)
(136,8,3,2,0)
(137,21,0)
(138,8,7,1,0)
(139,8,5,3,0)
(140,29,0)
(141,13,6,1,0)

(147,11,4,2,0)
(148,27,0)
(149,10,9,7,0)
(150,53,0)
(151,3,0)
(151,9,0)
(151,15,0)
(151,31,0)
(151,39,0)
(151,43,0)
(151,46,0)
(151,51,0)
(151,63,0)
(151,66,0)
(151,67,0)
(151,70,0)
(152,6,3,2,0)
(153,1,0)
(153,8,0)
(154,9,5,1,0)
(155,7,5,4,0)
(156,9,5,3,0)
(157,6,5,2,0)
(158,8,6,5,0)
(159,31,0)
(159,34,0)
(159,40,0)
(160,5,3,2,0)
(161,18,0)
(161,39,0)
(161,60,0)
(162,8,7,4,0)
(163,7,6,3,0)

(174,13,0)
(175,6,0)
(175,16,0)
(175,18,0)
(175,57,0)
(177,8,0)
(177,22,0)
(177,88,0)
(178,87,0)
(183,56,0)
(194,87,0)
(198,65,0)
(201,14,0)
(201,17,0)
(201,59,0)
(201,79,0)
(202,55,0)
(207,43,0)
(212,105,0)
(218,11,0)
(218,15,0)
(218,71,0)
(218,71,0)
(218,83,0)
(225,32,0)
(225,74,0)
(225,88,0)
(225,97,0)
(225,109,0)
(231,26,0)
(231,34,0)
(234,31,0)
(234,103,0)

(266,47,0)
(270,133,0)
(282,35,0)

^ (282,43,0)
(286,69,0)
(286,73,0)
(294,61,0)
(322,67,0)
(333,2,0)
(350,53,0)
(366,29,0)
(378,43,0)
(378,107,0)
(390,89,0)
(462,73,0)
(521,32,0)
(521,48,0)
(521,158,0)
(521,168,0)
(607,105,0)
(607,147,0)
(607,273,0)
(1279,216,0)
(1279,418,0)
(2281,715,0)
(2281,915,0)
(2281,1029,0)
(3217,67,0)
(3217,576,0)
(4423,271,0)
(9689,84,0)

Le code en langage C pour ce R D R L est donn par :


i n t RDRL ( )

s t a t i c u n s ig n e d l o n g S h i f t R e g i s t e r = 1 ;
S h iftR e g is te r = ( (((S h ift R e g is t e r
~ (S h iftR e g is te r
6)
(S h iftR e g is te r

4)

(S h iftR e g is te r

2)

'

( S h i f t R e g i s t e r >> 1 )
S h iftR e g is te r ))

& 0x00000001)

31)

/*

N im p o r t e q u o i s a u f 0 . * /

400

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

31)
I (S h iftR e g is te r

1 );

re tu rn S h ift R e g is t e r & 0x00000001;

>
Le code est lgrement plus compliqu quand la taille du registre dcalage est plus
grande que la taille d un mot de lordinateur.
Remarquez quils ont tous un nombre impair de coefficients. Jen ai donn un si grand
nombre parce que les R D R L sont souvent utiliss pour le chiffrement en continu, et je
voulais quil y ait suffisamment d exemples diffrents pour que des personnes diffrentes
choisissent des polynmes primitifs diffrents. Puisque si p(x) est primitif x p ( l /x) lest
aussi, alors chaque entre de la table reprsente en fait deux polynmes primitifs.
Par exemple, si (a, 6,0) est primitif, alors (a, a 6,0) est aussi primitif. Si (a, 6, c, d, 0)
est primitif, alors (a, a d, a c, a b, 0) est aussi primitif. Mathmatiquement :
si x a + x b + 1 est primitif, alors x a + x a~b + 1 lest aussi,
si x a + x b + xc + xd + 1 est primitif, alors xa + x a^d + x a~c + x a~b + 1 lest
aussi.
Les trinmes primitifs donnent les ralisations logicielles les plus rapides car seuls deux
bits du registre dcalage doivent tre combins par ou exclusif. En fait, les polynmes
primitifs modulo 2 donns dans le tableau 16.2 sont clairsem s, ce qui veut dire que
la plupart de leur coefficients sont nuls. Les polynmes clairsems sont toujours plus
faibles cryptographiquement, parfois cela suffit pour casser lalgorithme. Il vaut mieux
utiliser des polynmes primitifs modulo 2 denses (ceux qui ont beaucoup de coefficients
non nuls) pour les applications cryptographiques. Si vous utilisez des polynmes denses,
et plus forte raison si vous les incluez dans la clef, vous pourrez manier des RDRL
beaucoup plus petits.
Il nest pas facile de gnrer des polynmes primitifs modulo 2 denses. En gnral,
pour gnrer des polynmes primitif de degr k, vous devez connatre la factorisation
de 2k 1. Trois bonnes rfrences sur la gnration de polynmes primitifs sont [653,
1296, 1297].
Les R D R L sont des gnrateurs de suites alatoires par eux-mmes mais ils ont des
proprits non alatoires gnantes. Les suites de bits successifs sont linaires, ce qui les
rend tout sauf utiles pour la cryptographie. Pour un R D R L de taille n, ltat; interne
est donn par les n bits prcdents de sortie du gnrateur. Mme si le schma de
rtroaction est inconnu, il ne faut que 2n bits conscutifs de la sortie pour le dterminer
avec lalgorithme trs efficace de Berlekamp-Massey [1086, 1087] (voir 16.3).
De grands nombres alatoires engendrs partir de bits successifs de telles suites
sont fortement corrls et, pour certains types dapplications, pas du tout alatoires.
Malgr cela, les R D R L sont souvent utiliss comme briques de base dalgorithmes de
chiffrement.

Ralisations logicielles de RDRL


Les ralisations logicielles de R D R L sont lentes mais elles sont plus rapides en langage
machine. Une solution consiste faire tourner 16 R D R L (ou 32 selon la taille des mots
de votre ordinateur) en parallle. Ce schma utilise un tableau de mots dont la longueur

16.2

401

Registres dcalage rtroaction linaire

est celle du R D R L , et o chaque position de bit reprsente un R D R L diffrent. En


supposant que tous les polynmes de rtroaction sont les mmes, cela peut tourner
assez vite. En gnral, le moyen le plus rapide de mettre jour des registres dcalage
est de multiplier ltat courant par des matrices binaires apropries [901].
Il est aussi possible de modifier le schma de rtroaction des R D R L . Le gnrateur
rsultant nest pas meilleur cryptographiquement mais il est toutefois de priode maxi
male et il est plus facile raliser en logiciel [1283].
Au lieu d utiliser certains bits pour les combiner par ou exclusif pour former le bit le
plus gauche, certains bits sont combins par ou exclusif avec la sortie du gnrateur
puis remplacs par ce rsultat et, ensuite, la sortie du gnrateur devient le bit le plus
gauche (voir la figure 16.5). Ceci est parfois appel con fig u ra tion d e G alois.

-----

b32

h?

b6 b5 b4 b3 h2 b{

/p A

Eitde
ortie
1

/p A /p A /p A

F ig . 16.5 - R D R L 32 bits modifi


En langage C, on a :
# d e f i n e mask 0 x 8 0 0 0 0 0 5 7
s t a t i c u n s ig n e d l o n g S h i f t R e g i s t e r = l ;
v o i d seed_RDRL ( u n s i g n e d l o n g s e e d )

f
if

( s e e d == 0 ) / *

pou r v it e r l a ca ta stro p h e * /

seed = 1;
S h iftR e g is te r = seed ;

}
i n t m od ifie d _ R D R L

(v o id )

f
if

(S h ift R e g is t e r & 0x00000001) {


S h i f t R e g i s t e r = ( ( S h i f t R e g i s t e r ~ m ask)
retu rn

> e ls e

1)

I 0x8000000;

1;

S h iftR e g is t e r =

1;

retu rn 0;

>
}
Lavantage ici est que tous les ou exclusif peuvent tre faits en une seule opration.
Ceci peut aussi tre paralllis et les polynmes de rtroaction peuvent diffrer. Cette
configuration de Galois peut aussi savrer plus rapide en ralisation matrielle, surtout
dans des ralisation V LSI spcialement conues. En gnral, si votre matriel est bon
dans les dcalages, utilisez une configuration de Fibonacci ; si vous pouvez exploiter le
paralllisme, utiliser une configuration de Galois.

40 2

Chapitre 16

16.3

Conception et analyse dalgorithmes


de chiffrement en continu

Gnrateurs de suites alatoires et chiffrement en continu

La plupart des concptions pratiques dalgorithmes de chiffrement en continu tournent


autour des R D R L . Dans les toutes premires annes de llectronique, ils taient trs
facile construire. Un registre dcalage nest rien dautre quun tableau de bits de
mmoire et la rtroaction est juste une srie de porte logiques. Mme avec les circuits
VLSI, un algorithme de chiffrement en continu bas sur un R D R L peut vous donner
beaucoup de scurit avec peu de portes logiques.
Le problme des R D R L est que leur ralisations logicielles sont trs lentes. Vous devez
viter les polynmes primitifs clairsems, qui facilitent les attaques par corrlation, et
les polynmes primitifs denses donnent des algorithmes inefficaces Tout algorithme
de chiffrement en continu sort un bit la fois ; vous devez le rpter 64 fois pour
chiffrer autant que le DES en une itration. En fait, mme un R D R L simple tel que
le gnrateur rduction qui sera dcrit un peu plus loin, nest pas plus rapide que le
DES en ralisation logicielle.
Cette branche de la cryptographie crot trs rapidement et est trs influence politique
ment. La plupart des conceptions sont secrtes ; la majorit des systmes de chiffrement
militaires utiliss aujourdhui est base sur les R D R L . De fait, la plupart des ordina
teurs C r a y (Cray 1, Cray X-MP, Cray Y-M P) possdent une instruction curieuse du
nom de comptage de la population . Elle compte les 1 dans un registre et peut tre
utilise la fois pour calculer efficacement la distance de Hamming entre deux mots
binaires et pour raliser une version vectorielle d un R D R L . Certains la nomment
linstruction canonique de la NSA, elle est demande sur presque tous les contrats
d ordinateur
D un autre ct, un nombre tonnamment grand de gnrateurs de codons base de
registres dcalage ont t casss. Et il est pratiquement certain que les institutions
militaire^je cryptanalyse telle que la NSA en ont cass beaucoup plus. Il est parfois
surprenant de voir les mmes ides simple revenir encore et encore.

Complexit linaire
Il est souvent plus facile danalyser les algorithmes de chiffrement en continu que les
algorithmes de chiffrement par blocs. Par exemple, une des mesures importantes dans
lanalyse des gnrateurs base de R D R L est la complexit linaire. Elle est dfi
nie comme la taille n du plus petit R D R L qui peut simuler la sortie du gnrateur
Toute suite de bits gnre par une machine nombre dtats fini sur un corps fini a une
complexit linaire finie [1022]. La complexit linaire est importante parce quun algo
rithme simple, lalgorithme de Berlekamp-Massey, permet de produire ce RDRL
aprs avoir examin seulement 2n bits de la suite de bits [1021]. Une fois que vous avez
construit ce R D R L , vous avez cass lalgorithme de chiffrement en continu qui utilise
ce gnrateur.
Cette ide a des extensions quand on considre des anneaux au lieu de corps [1309], et
quand le flux de codons est vu comme une suite d lments d un corps de caractristique
impaire [843]. Une amlioration plus pousse se trouve tre la notion de profil de
complexit linaire, qui permet de mesurer la complexit linaire du flux de codons
au fur et mesure quil augmente [1359, 1, 414, 1584]. Il existe un autre algorithme,

16.4-

Chiffrement en continu base de R D R L

permettant de calculer la complexit linaire, qui nest utile que dans des circonstances
trs spciales [599, 597, 598, 1347]. Une gnralisation de la complexit linaire est
donne dans [776]. Citons aussi la notion de sphre de complexit [500] et la complexit
deux-adique [845].
Dans tous les cas, retenez quune complexit linaire leve n indique pas forcment
que le gnrateur est sr, mais quune complexit linaire faible dnote un gnrateur
non fiable [1359, 1259].

Immunit lattaque par corrlation


Les cryptographes essaient d obtenir une complexit linaire leve en combinant plu
sieurs flux de codons dune manire non linaire. Le danger ici est que lun des flux
interne souvent la sortie d un certain R D R L soit corrl avec la sortie combine et
puisse tre attaqu en utilisant lalgbre linaire. On appelle souvent cela l a t t a q u e
p a r c o r r la t io n ou encore lattaque diviser pour rgner . Thomas S lE G E N a montr
comment dfinir prcisment limunit lattaque par corrlation, et la ncessit de
trouver un compromis entre limmunit lattaque par corrlation et la complexit
linaire [1456].
Lide de base derrire lattaque par corrlation est d identifier une corrlation entre la
sortie du gnrateur et la sortie dun de ses morceaux internes. En observant alors le flux
de codons en sortie, on peut obtenir des informations propos de cette sortie interne. En
utilisant cette information et dautres corrlations, il reste trouver assez d information
sur les autres sorties internes pour pouvoir casser entirement le gnrateur.
Les attaques par corrlations et ses variantes telles que l attaque par corrlation rapide,
qui offre un compromis entre la complexit de calcul et lefficacit, ont permis de casser
de nombreux gnrateurs de codons base de R D R L [1457, 282, 1458, 573, 1638, 1059,
1096, 354, 635, 1062, 1095, 1005]. Quelques ides nouvelles intressantes au milieu de
tout cela se trouvent dans [47, 1643].

Autres attaques
Il existe d autres attaques gnrales contre les gnrateurs de codons. Le t e s t d e
c o n s is t e n c e lin a ir e est une tentative didentification dune partie de la clef de chif
frement en utilisant des techniques matricielles [1640]. Il y a aussi l a t t a q u e d e c o n s is
te n ce p a r c o llis io n [40, 43]. L a lg o r it h m e d u s y n d r o m e lin a ir e repose sur la pos
sibilit d crire un fragment du flux de sortie sous forme d quation linaire [1638, 1639].
Il y l a t t a q u e d e la m e ille u r e a p p r o x im a t i o n a ffin e [500] et l a t t a q u e d e la s u it e
d r iv e [42]. Mme les techniques de la cryptanalyse diffrentielle ont t appliques
aux algorithmes de chiffrement en continu [499], ainsi que celles de la cryptanalyse
linaire [633].

16.4

Chiffrement en continu base de


RDRL

Lapproche classique de la conception de gnrateurs de codons base de R D R L


est simple. Vous commencez par prendre un ou plusieurs R D R L gnralement de

404

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

longueurs diffrentes et avec des polynmes primitifs distincts4. La clef est ltat initial
des R D R L . Chaque fois quun bit est ncessaire, dcalez les R D R L d un cran (on
parle parfois d im p u ls io n d h o r lo g e ) . Le bit de sortie est une fonction de prfrence
non linaire de certains des bits de sortie des R D R L . Cette fonction est appele la
f o n c t io n d e c o m b in a is o n et le gnrateur global est appel un g n r a t e u r p a r
c o m b i n a is o n 5. La plupart des considrations thoriques sur ce type dobjets sont
luvre de S e l m e r et Neal Z i e r l e r [1649].
Des complications ont pu tre ajoutes. Certains gnrateurs ont des horloges de ca
dences diffrentes ; la cadence d un gnrateur dpend parfois de la sortie dun autre.
Toutes ces ides de versions lectroniques de machines chiffrer davant guerre ont
pour nom g n r a t e u r s h o r lo g e c o n t r l e [643]. Le contrle dhorloge se fait par
action simple si la sortie d un R D R L contrle lhorloge d un autre, ou par rtroaction
si la sortie d un R D R L contrle sa propre horloge.
Bien que ces gnrateurs soient au moins en thorie vulnrables aux attaques par
plongement et corrlation probabiliste [636, 634], beaucoup sont sr lheure quil est.
On trouvera plus de thorie sur les registres dcalage horloge contrle dans [97].
Ian C A S S E L L S , qui fut la tte du dpartement de mathmatiques pures de Cambridge
et qui est un ancien cryptanalyste de Bletchy Park, a dit que la cryptographie est un
mlange de mathmatiques et de dsordre, et que sans le dsordre, les mathmatiques
peuvent tre utilises contre vous . Ce quil voulait dire est que dans les algorithmes
de chiffrement en continu, vous avez besoin d une structure mathmatique telle que le
R D R L pour guarantir une taille maximale et d autres proprits, et ensuite de dsordre
compliqu et non linaire pour empcher autrui d obtenir le registre et de le rsoudre.
Ce conseille vaut aussi pour les algorithmes de chiffrement par blocs.
Ce qui suit est un petit nombre de gnrateurs de codons base de R D R L qui sont
apparus dans la littrature. Je ne sais pas si aucun d eux na jamais servi dans un
produit cryptographique rel. La plupart dentre eux n ont dintrt que thorique.
Certains ont t casss, dautres sont peut tre toujours srs.
Comme les algorithmes de chiffrement en continu sont gnralement raliss en mat
riel, les symbole de logique lectronique seront utilis dans les figures. Dans le texte,
dsigne le ou exclusif, A le et, V le ou, et -i la ngation.

Gnrateur de G e f f e
Ce gnrateur de codons utilise trois R D R L , combins de faon non linaire (voir la
figure 16.6) [608]. Les sorties de deux des R D R L servent d entres un multiplexeur
et le troisime R D R L contrle la sortie du multiplexeur. Si Oi, a2 et a3 sont les sorties
des trois R D R L , la sortie du gnrateur de G e f f e peut tre dcrite par la relation :
b = (oi A a2) ( ( -iUi) A a3).

Si les polynmes primitifs de rtroaction des trois R D R L ont respectivement des degrs
m , n 2 et ris, alors la complexit linaire du gnrateur est donne par:
(ni + l)n 2 + n i n 3.
4. Si to u te s les lon g u eu rs son t p rem ires e n tre elles et si les p o ly n m e ch oisis p o u r la r troa ction
son t to u s p rim itifs, ie g n ra te u r t o ta l e st d e p rio d e m axim a le.
5. Si le b it de s o r tie n est fo n c t io n q u e d un seu l g n ra teu r, o n p arle alors d e g nrateur par

filtre.

16.4

Chiffrement en continu base de R D R L

405

La priode de ce gnrateur est le plus petit commun multiple des priodes des trois
gnrateurs. En faisant lhypothse que les degrs des trois polynmes primitifs de
rtroaction sont premier entre eux, la priode est gale au produit des priodes des
trois R D R L .

a2(t)

Multiplexeur
2 pour 1

------------- 0

RDRL-2

Y -------- b(t)
a3(t)

--------------

RDRL-3

1 Slection

afft)
RDRL-1

ig

16.6 - Gnrateur de

effe

Bien que ce gnrateur ait bonne allure sur le papier, il est cryptographiquement faible
et vulnrable une attaque par corrlation [830, 1640]. Si vous passez par les pro
babilits, vous constaterez que la sortie du gnrateur est gale celle du R D R L -2
dans 75 % des cas. Si les squences de drivation sont connues, vous pouvez essayer
de deviner la valeur initiale du R D R L -2 et gnrer le flux de sortie de ce gnrateur.
Vous pouvez alors compter le nombre de fois o la sortie du R D R L est gale celle
du gnrateur. Si vous avez bien devin les suites seront gales 75 % du temps, si vous
vous tes tromps, elle ne seront gales que 50 % du temps.
De mme quelle est gale celle du R D R L -3 dans 75 % des cas. Avec de telles
corrlations, le gnrateur de codons peut tre cass de manire relativement aise. Par
exemple, si les polynmes primitifs nont que trois termes chacun et que le polynme
de degr le plus lev a un degr n, il ne faut alors quun segment de 37 x n codons de
la suite de sortie pour reconstruire les tats internes des trois R D R L [1641],

Gnrateur de Geffe gnralis


Au lieu de choisir entre deux R D R L , on choisi dans ce schma entre k R D R L o k
est une puissance de 2. Il y a k + 1 R D R L au total (voir la figure 16.7). Lhorloge du
R D R L -1 doit avoir une cadence log2 k fois plus rapide que celles des autres R R L.
Bien que ce schma soit plus compliqu que le gnrateur de G e f f e , le mme type
dattaque par corrlation est possible. Je ne recommande pas ce gnrateur.

Gnrateur de

J e n n in g s

Ce schma utilise un multiplexeur pour combiner deux R D R L [778, 779, 780]. Pour
chaque bit de sortie, le multiplexeur, contrl par R D R L -1 , choisit un bit de R D R L 2. U y aussi une fonction qui met en correspondance la sortie de R D R L -2 avec lentre
du multiplexeur (voir la figure 16.8).

Chapitre 16

406

ig

Gnrateurs de suites alatoires et chiffrement en continu

16.7 - Gnrateur de

effe

gnralis

La clef est ltat initial des deux R D R L et la tonction de correspondance. Bien que
ce gnrateur ait de trs bonnes proprits statistiques, il est tomb sous le coup de
lattaque de consistence par collision de Ross A n d e r s o n [40] et lattaque de consitence
linaire [1640, 444]. Nutilisez pas ce gnrateur.

Gnrateur signal darrt BethPiper


Ce gnrateur dcrit par la figure 16.9 utilise la sortie d un R D R L pour contrler
lhorloge d un autre R D R L [158]. Lentre dhorloge de R D R L -2 est contrle par la
sortie de R D R L -1 , en sorte que R D R L -2 ne change d tat au temps t que si la sortie
de R D R L -1 tait 1 linstant t 1.
Personne na pu montrer de rsultats propos de la complexit linaire de ce gnrateur

RDRL-1

G(t+io)
------
(t+i j )

H
_k------Sfft)

(J)

CD'

Multiplexeur

------------- ^ o

--------a(t +i h_x)

Sk- \W

Kn

=>0

n- 1
b{t+n-1)

b(t)
RDRL-2

ig

. 16.8 -

Gnrateur de

J e n n in g s

C(t)

16-4

Chiffrement en continu base de R D R L

F i g . 16.9 - Gnrateur signal darrt de B e t h - P iper

dans le cas gnral. Cependant, il est susceptible d une attaque par corrlation [1641].

Gnrateur signal darrt altern


Ce gnrateur utilise trois R D R L de tailles diffrentes. R D R L -2 est cadenc quand
la sortie de R D R L 1 est 1 ; R D R L -3 est cadenc quand la sortie de R D R L -1
est 0. La sortie du gnrateur est le ou exclusif de R D R L -2 et R D R L -3 (voir la
figure 16.10) [674].
Ce gnrateur a une longue priode et une grande complexit linaire. Les auteurs ont
trouv une attaque par corrlations contre R D R L -1 , mais elle naffaiblit pas substan
tiellement le gnrateur. Il y a eu d autres essais de gnrateurs de codons dans cette
voie [1542, 1576, 1484]

Gnrateur signal darrt bilatral


Ce gnrateur utilise deux R D R L , tous deux de taille i (voir la figure 16.11) [1640].
La sortie du gnrateur est le ou exclusif des sorties de chacun des R D R L . Si la sortie

ig

. 1 6 .1 0 -

Gnrateur signal darrt altern

408

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

de R D R L -1 au temps t 1 est 0 et que la sortie au temps t 2 est 1, alors R D R L -2


ne change pas d tat au temps t. Inversement, si la sortie de R D R L -2 au temps t 1
est 0 et la sortie au temps t 2 est 1, et si R D R L -2 a chang d tat au temps t, alors
R D R L -1 ne change pas d tat au temps t.

F i g . 16.11 - Gnrateur signal darrt bilatral

La complexit linaire de ce systme est approximativement gale la priode. Daprs


[1640], aucune redondance de codons vidente na t constate dans ce systme .

Gnrateur seuil
Ce gnrateur essaie de pallier les dfauts de scurit des gnrateurs prcdents en
utilisant un nombre variable de R D R L [281]. La thorie veut que si vous utilisez un
grand nombre de R D R L , il est plus difficile de casser le chiffre.
Ce gnrateur est illustr par la figure 16.12. Prenez la sortie d un grand nombre de
R D R L (prenez-en un nombre impair). Assurez-vous que les tailles de tous ces R D R L
soient premires entre elles et que tous les polynmes de rtroaction soient primitifs
pour maximiser la priode. Si plus de la moiti des bits de sortie sont 1, alors la
sortie du gnrateur est 1. Si plus de la moiti des bits sont 0, alors la sortie du
gnrateur est 0.
Avec trois R D R L , la sortie du gnrateur peut tre dcrite par :
b = (ai A o2) (ai A 0 3 ) (a 2 A a3).
C est trs sim ilaire un gnrateur d e G e f f e , ex ce p t q u il y a une com p lexit linaire
plus grande :

nin 2 + nl n3 + n 2 n3

o ni, n2 et n3 sont les tailles respectives des premier, second et troisime R D R L .


Ce gnrateur nest pas extraordinaire. Chaque bit de sortie du gnrateur donne un
peu d information sur ltat des R D R L , 0,189 bit pour tre exact, et le tout tombe
sous le coup d une attaque par corrlation. Je ne conseille pas de lutiliser.

16-4

Chiffrement en continu base de

409

RDRL

F i g . 16.12 - Gnrateur seuil

Gnrateurs auto-cadencs
Les gnrateurs auto-cadencs sont des gnrateurs qui contrlent leur propre horloge.
Deux propositions ont t faites, lune par R u e p p e l (voir la figure 16.13) [1361] et
lautre par C h a m b e r s et G o l l m a n n [313] (voir la figure 16.14). Dans le gnrateur
de R u e p p e l , quand la sortie du R D R L est 0, le R D R L est cadenc d fois. Quand
la sortie du R D R L est 1, le R D R L est cadenc k fois. Le gnrateur de C h a m b e r s
et G o l l m a n n est plus compliqu mais lide est la mme. Malheureusement, ces deux
gnrateurs ne sont pas srs [1641], malgrs des modifications qui pourraient corriger
les problmes [1364].

F ig . 16.13 - Gnrateur auto-cadenc de R u e p p e l

F i g . 1 6 .1 4 -

Gnrateur auto-cadenc de

C hm bers

et

ollm ann

4 10

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

Gnrateur multivitesse produit scalaire


Ce gnrateur, conu par M a s s e y et R u e p p e l [1020], utilise deux R D R L cadencs
deux vitesses diffrentes (voir la figure 16.15). R D R L -2 est cadenc d fois plus vite
que R D R L -1 . Puis les bits individuels des deux R D R L sont combins entre eux par
et logique et ensuite combins par ou exclusif les uns avec les autres pour produire le
bit de sortie du gnrateur.

ig

. 1 6 .1 5

- Gnrateur multivitesse produit scalaire

Bien que la complexit linaire soit leve et que ce gnrateur possde dexcellentes
proprits statistiques, il tombe encore sous le coup d une attaque de consistence li
naire [1641]. Si ni est la longueur de R D R L 1, n2 est la longueur de R D R L -2 , et
d est le quotient de vitesse entre les deux, alors ltat interne du gnrateur peut tre
reconstruit partir d une suite de bits de sortie de longueur :
n\ + n2 + log2 d.

Gnrateur sommatoire
Fruit des travaux Rainer R u e p p e l , ce gnrateur combine la sortie de deux R D R L
dans un additionneur avec retenue [1360, 1359]. Cette opration est fortement non
linaire et, jusqu la fin des annes 80, ce gnrateur tait ce qui se faisait de mieux en
matire de scurit, mais il est tomb sous le coup de lattaque par corrlation [1061,
1062, 1097]. De plus, il a t prouv que c est un cas de registre dcalage rtroaction
avec retenue (voir 17.4) qui peut tre cass [845].

Gnrateur dynamique
Le nom complet est gnrateur dynamique de suites alatoires6 [1123]. Lide est
davoir deux gnrateurs par filtre, seuil, sommatoires, ou autres, aliments par un
ensemble de R D R L et contrl par un autre R D R L .
6- On note en abrg D N R S G pou r d yn arm c ra n d o m -s eq u e n c e g e n e r a to r .

16. f

Chiffrement en continu base de R D R L

411

Oprer dabord les R D R L . Si la sortie du R D R L 0 est 1 alors calculer la sortie du


premier gnrateur par filtre, si cest 0, alors calculer la sortie du second gnrateur
par filtre. La sortie finale est la combinaison par ou exclusif des diffrentes sorties.

Cascade de G o l l m a n n
La cascade de G o l l m a n n (voir la figure 16.16) dcrite dans [638, 314] est une version
renforce du gnrateur signal darrt. Il consiste en une srie de R D R L dont lhorloge
est contrle par le R D R L prcdent. Si la sortie de R D R L -1 est 1 linstant t 1,
alors R D R L -2 change d tat. Si la sortie de R D R L 2 est 1 linstant t 1, alors
R D R L -3 change dtat, et ainsi de suite. La sortie du R D R L final est la sortie du
gnrateur. Si tous les R D R L ont la mme taille, n, la complexit linaire dun systme
de k R D R L est :
n(2 l ) fc1.

F ig .

16.16 - Cascade de

G ollm ann

Les cascades sont une bonne ide : leur conception est trs simple, et elle permettent
de gnrer des suites avec des priodes normes, des complexits linaires normes, et
de bonnes proprits statistiques. Elles sont vulnrables une attaque appele v r r o u illa g e [642], C est une technique dans laquelle le cryptanalyste reconstruit lentre
du dernier registre dcalage de la cascade, puis remonte la cascade registre par re
gistre. Cela pose un problme srieux dans certaines situations en rduisant la longueur
effective de la clef de lalgorithme, mais il possible de prendre certaines prcautions pour
minimiser lattaque.
Des analyses plus pousses ont montr que la suite se rapproche de lalatoire quand
k grandit [639, 640, 644, 641], Sur la base d attaques rcentes sur les cascades de
G o l l m a n n courtes, je recommande de prendre k suprieur 15. Vous feriez mieux
dutiliser plus de R D R L de petite taille plutt que peu de grande taille.

Gnrateur rduction
Le gnrateur rduction [382] repose sur une forme diffrente de contrle d horloge
que celle des gnrateurs prcdents. Prenez deux R D R L , R D R L 1 et R D R L 2.
Oprez un cycle d horloge sur chacun d eux. Si la sortie du R D R L -1 est 1, alors la
sortie du gnrateur est celle du R D R L -2 . Dans le cas contraire, annulez les deux bits,
oprez un cycle d horloge sur chacun des R D R L , et essayez nouveau.
Cette ide est simple, raisonnablement efficace et semble sre. Si les polynmes primitif
sont clairsems, le gnrateur est vulnrable, mais aucun autre problme na t dcel.

412

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

Mme ainsi, cest rcent. Un problme de ralisation vient du fait que la cadence de
sortie nest par rgulire ; si le R D R L -1 sort beaucoup de zros la suite, le gnrateur
ne sort aucun bit Les auteurs suggrent dutiliser une mmoire tampon pour rsoudre
cela [382] Une ralisation pratique du gnrateur rduction est prsente dans [901].

Gnrateur auto-rduction
Le gnrateur rduction [1058] est une variante du gnrateur rduction. Au lieu
dutiliser deux R D R L , considrez une paire de bits provenant d un seul R D R L . Oprez
deux cycle d horloge sur un R D R L . Si le premier bit de la paire est 1, la sortie est le
second bit. Si le premier bit est 0, jetez les deux bits et recommencez. Si le gnra
teur auto-rduction utilise environ deux fois moins de mmoire que le gnrateur
rduction, il est aussi deux fois moins rapide
Si le gnrateur auto-rduction semble aussi sr, il prsente encore des comportements
inexpliqus et des proprits inconnues. C est un gnrateur tout nouveau ; consacrez-y
du temps.

16.5

A5

Lalgorithme de chiffrement en continu A5 sert chiffrer les messages en tlphonie


GSM (dont le nom vient de Group Spcial Mobile ). C est le standard non amri
cain pour les tlphones cellulaires numriques. Lalgorithme est utilis pour chiffrer
la communication entre le mobile et la borne relie au rseau. Le reste de la commu
nication nest, pas chiffre ; la compagnie tlphonique peut facilement espionner vos
conversations.
Beaucoup daffaires politiques tranges entourent ce projet. A lorigine, on pensait
quinsrer de la cryptographie en tlphonie G SM nuierait son exportation dans
certains pays. Maintenant, certains rapports offciels mettent en cause A5, impliquant
quil est si faible que cela peut nuire aux ventes lexportation. La rumeur dit que
plusieurs services de renseignements de lOTAN se sont disputs au milieu des annes
1980 pour savoir si le chiffrement de GSM devait tre solide ou faible. Les allemands
voulaient un chiffrement solide commme ils se trouvaient ct de lUnion Sovitique.
Les autres pays ont pris le dessus, et A 5 est de conception franaise.
Nous connaissons la plupart des dtails. Une compagnie tlphonique britanique a
fournit toute la documentation lUniversit de Bradford en omettant de leur faire
signer un contrat de non divulgation. Il y eu des fuites a et l, et lalgorithme aurait
mme t post sur In t e r n e t . Un article dcrit A5 [1624], et le code source se trouve
la fin de ce livre.
A5 est constitu de trois R D R L , de tailles de registres 19, 22 et 23 ; tous les polynmes
primitifs utiliss pour les rtroactions sont clairsems. Chaque registre est cadenc en
fontion de son propre bit du milieu, combin par ou exclusif avec linverse de la fonction
de seuil des bits du milieu des trois registres. Habituellement, deux des R D R L oprent
un cycle dhorloge chaque ronde.
Il existe une attaque vidente ncessitant 240 chiffrements : deviner le contenu des deux
premiers R D R L et essayez alors de dterminer le troisime R D R L d aprs le flux de
codons. (La faisabilit de cette attaque est encore sujette dbats, mais une machine

16.6

413

H ugues X P D / K P D

rechercher les clefs, actuellement en cours de conception, devrait bientt clore la


discussion [46].)
Nanmoins, il apparat que les ides fondamentales de A 5 sont bonnes. Il est trs
efficace. Il russit tous les tests statistiques connus; sa seule faiblesse connue est la
taille de ses registres qui sont assez petits pour permettre la recherche exhaustive. Des
variantes de A 5 avec des registres dcalage plus longs et des polynmes primitifs plus
denses devraient tre sres.

16.6 H u g u e s X P D /K P D
Cet algorithme vous est donn par H u g u e s A i r c r a f t C o r p . Il a t incorpor dans
des radios tactiques de larme et dans des quipements dorientation vendus des
militaires trangers. Il fut conu en 1986 et nomm X P D pour Exportable Protection
Device qui veut dire appareil de protection exportable. Plus tard, il ne fut plus class
secret et fut rebaptis K P D pour Kinetic Protection Device qui veut dire appareil
de protection dynamique [1045, 1044],
Lalgorithme utilise un R D R L 61 bits. Il y a 210 polynmes primitifs distincts qui ont
t approuvs par la NSA. La clef slectionne un de ces polynmes (qui sont stocks
quelque part en mmoire morte), ainsi que ltat initial du R D R L .
Il a huit filtres non linaires diffrents, chacun deux produit un bit partir de six
drivations provenant du R D R L . Les bits sont combins pour gnrer un octet qui
sert chiffrer ou dchiffrer le flot de donnes.
Cet algorithme a lair assez impressionnant, mais je doute quil le soit vraiment. La
NSA lautorise lexportation, il doit donc exister une attaque avec un nombre d op
rations de lordre de 240 ou moins. Quelle est-elle?

16.7

Nanoteq

N a n o t e q est une socit sud africaine en lectronique. Ceci est leur algorithme qui
a t adopt par la police sud africaine pour chiffrer leur communications par fax, et
certainement pour dautres utilisations aussi.
Lalgorithme est plus ou moins dcrit dans [903, 904]. Il utilise un R D R L 127 bits
avec un polynme primitif de rtroaction fix ; la clef est ltat initial du registre. Les
127 bits du registre sont rduits un flux de codons au moyen de 25 cellules primitives.
Chaque cellule a cinq entres et une sortie :

f(xi,X 2 ,X3 ,X4 ,X5) =

X\

X2 + ( Xi +

X 3) ( x 2

+ X4 + X5) +

X4 )(x2 + X3) +

X5

Chaque entre de la fonction est combine par ou exclusif avec certains bits de la clef. Il
y a aussi une permutation secrte qui dpend de la ralisation, et qui nest pas dtaille
dans larticle. On ne peut se procurer cet algorithme quen ralisation matrielle.
Est-ce que cet algorithme est sr? Jen doute. Durant le passage la dmocratie,
certains faxs embarassants d une station de police une autre sont parfois apparus
dans les journaux libraux. Cela pourrait trs bien tre le rsultat des efforts des
services de rensignement amricains, britaniques, ou sovitiques. Ross A n d e r s o n a
fait les premiers pas vers la cryptanalyse de cet algorithme dans [47] ; j espre voir
davantage de rsultats arriver bientt.

4U

Chapitre 16

Gnrateurs de suites alatoires et chiffrement en continu

16.8

Rambutan

a m b u t a n est un algorithme britanique conu par le Communication Electronics


Security Group , soit groupe de scurit en lectronique et en communication. Il nest

vendu que sous forme de module matriel et il est approuv pour la protection de
document classs jusqu confidentiels . Lalgorithme lui-mme est class secret, et
la puce nest gnrallement pas disponible dans le commerce.
R a m b u t a n a une clef de 112 bits (sans compter les bits de parit) et peut oprer dans
trois modes : E C B , C B C , et C FB huit bits. Cela sous-entend fortement que c est
un algorithme par blocs, mais les rumeurs ne vont pas dans ce sens. Il est suppos tre
un algorithme de chiffrement en continu base de R D R L. Il aurait cinq registres
dcalage, chacun dune taille de 80 bits environ. Les polynmes de rtroaction seraient
plutt clairsems, avec peu prs 10 drivations chacun. Chaque registre fournirait
quatre entres une fonction linaire trs grande et trs complique qui sortirait un
bit la fois.
D o vient le nom ? C est peut-tre du fruit7 qui est pineux et repoussant lextrieur
et doux et moelleux lintrieur. D un autre ct, ce nest peut-tre pas la raison.

16.9

Gnrateurs additifs

Les g n r a t e u r s a d d it if s (appels parfois gnrateurs de Fibonacci) sontextrme


ment efficaces car ils produisent des mots alatoiresau lieu de bitsalatoires [864]. A
eux seuls, ils ne sont pas srs, mais ils peuvent tre utiliss comme lment de base de
gnrateurs srs.
L tat initial du gnrateur est un tableau de mots de n bits (mots de 8, 16 ou 32
bits, ou autre) : X i , X , - , X m. Cet tat initial est la clef. Le ie mot produit par le
gnrateur est donn par :
X t ( X la + X l-b + X t-.c + + X tk) modulo 2"

Si les coefficients a,b,c, . . . ,k sont bien choisis, la priode de ce gnrateur est au moins
2n 1. Une condition ncessaire sur les coefficients est que lon obtienne un R D R L de
longueur maximale lorsquon ne considre que les bits de poids faible.
Par exemple, (55,24,0) est un polynme primitif daprs le tableau 16.2. Cela implique
que le gnrateur additif suivant est de longueur maximale :
X t = (X j _ 5 5 + X , - 24) modulo 2"

Cela fonctionne dans ce cas parce que le polynome a trois coefficients non nuls. Sil
en a plus, d autres conditions sont requises pour obtenir un gnrateur de longueur
maximale. Consulter [254] pour les dtails.

Fish
F ish est un gnrateur a d d itif bas sur des techniques utilises dans le gnrateur
rd u ction [197]. Il p rod u it un flux d e m ots d e 32 b its qui peu t tre com bin par ou
7. N ote du traducteur : le ram boutan en franais.

16.9

Gnrateurs additifs

415

exclusif avec un flux de texte en clair pour produire le texte chiffr, ou avec le flux
de texte chiffr pour produire le texte en clair. Lenom vient de Fibonacci shrinking
generator qui veut dire gnrateur rduction de Fibonacci.
Commencez par prendre deux gnrateurs additifs. La clef est constitue des tats
initiaux de ces gnrateurs.
A z { A i - 55 + A i
Bi =

24) modulo 2 32
52 + -B j-ig) modulo 2 32

Ces suites sont rduites, par paires, selon le bit de poids faible de Bi : sil vaut 1 , utilisez
la paire, sil vaut 0 ignorez la paire. Notons par Cj la suite des mots de A t utiliss et
par Dj la suite des mots de B , utiliss. Ces mots servent par couples, 6 2 , et C 2j + \,
I)2j et D 2} f 1 pour former des couples de mots de 32 bits K 2j et K 2]+i en sortie.
E 2, = C 2j (D 2j A D 2j + i )
F2j D 2j + i (E2j A C 2j+ 1 )
K 2j = E2j F2j
K 2j+ i = G2j+ i F2j

Cet algorithme est rapide. Sur un 486 33 MHz, une ralisation de Fish en C permet
de chiffrer 15 megaoctets de donnes par seconde. Malheureusement, il nest pas sr ;
une attaque demande un travail de 2 40 oprations environ [46].

Pike
P lK E est une version pure de F i s h nous venant de Ross A n d e r s o n qui est celui qui

a cass F ish [46]. Il comprend trois gnrateurs additifs, ceux-ci par exemple:

= ( Aj _ 5 5 +
2 4 ) modulo 232
(H ,__57 + B i - 7 ) modulo 232
C i = { C i - 58 + C i_ 19) modulo 232

Ai

Bi =

Pour gnrer le flux de codons, considrez les bits de retenue des trois additions. Sils
sont tous les trois gaux (tous des 0, ou tous des 1), oprez un cycle dhorloge sur
les trois gnrateurs. Si ce nest pas le cas, noprez un cycle dhorloge que sur les
deux gnrateurs dont les bits de retenue sont gaux. Mmorisez le bit de retenue du
troisime gnrateur pour la fois suivante La sortie finale est la combinaison par ou
exclusif des sorties des trois gnrateurs.
PlKE est plus rapide que FlSH puisquil faut en moyenne 2,75 tapes par sortie au
lieu de 3. Il est beaucoup trop rcent pour inspirer confiance, mais il fait bonne figure
jusqu prsent.

Mush
Mush est un gnrateur rduction mutuelle. C est facile expliquer [1592], Prenez
deux gnrateurs additifs A et B . Si le bit de retenue de A est 1, oprez un cycle
dhorloge sur B . Si le bit de retenue de B est 1, oprez un cycle d horloge sur A .

Chapitre 16

416

Gnrateurs de suites alatoires et chiffrement en continu

Oprez un cycle d horloge sur A et B et retenez les bits de retenue pour la fois suivante.
La sortie finale est la combinaison par ou exclusif des sorties de A et B.
Les gnrateurs les plus faciles utiliser sont ceux de F i s h :
A t = (.4,-55 + A t_ 2 4 ) modulo 232
B , = (?,_52 + B, _19) modulo 232

En moyenne, il faut trois itrations de gnrateur pour obtenir un mot en sortie. Si


les coefficients des gnrateurs additifs sont correctement choisis et sont premiers entre
eux, la suite de sortie aura une priode maximale. Je ne connais aucune attaque ayant
russi, mais sachez que cet algorithme est trs rcent.

16.10

Gifford

Dabid G i f f o r d a invent un algorithme de chiffrement en continu et la utilis pour


chiffrer des dpches par cble dans la rgion de Boston de 1984 jusqu 1988 [610,
609, 611]. Lalgorithme a un seul registre de 8 octets : B\,B 2 , ,B-j. La clef est ltat
initial du registre. L algorithme fonction en mode O F B ; le texte en clair n affecte pas
du tout lalgorithme. (Voir la figure 16.17).

ig

16.17 -

if f o r d

Pour gnrer un codon c,, joignez B 0 et i?2, joignez B 4 et B7 - Multipliez les deux
ensemble pour obtenir un nombre de 32 bits. Le troisime en partant de la gauche est
c,.
Pour mettre jour le registre, dcalez les bits de B t vers la droite de 1 bit en laissant
une copie du bit le plus gauche en place. Dcalez les bits de B 7 vers la gauche de 1

16.11

417

A lg o r ith m e M

en mettant le bit le plus droite 0. Combinez par ou exclusif B\ et B 7 ainsi modifis


et B(j. Dcaler le registre, dans son tat initial, de un octet vers la droite et placez cet
octet en premire position gauche.
Cet algorithme est rest sr dnant la dure de son utilisation, mais il fut cass en 1994
[291]. Il se trouve que le polynme de rtraction nest pas primitif et peut-tre attaqu
de cette manire.

16.11

Algorithme M

Le nom est du K n u t h [864]. Il sagit dune mthode pour combiner deux flux pseudo
alatoires de manire augmenter leur scurit. La sortie dun des gnrateurs sert
slectionner une sortie retarde de lautre de gnrateur [1006, 1012]. Cela se traduit
en C par :
# d e f in e TAILLE_TAB (8 1 9 2 ) / * p a r e x e m p le - p l u s c e s t g r a n d , m ieu x c a v a u t * /
s t a t i c u n s ig n e d c h a r d e l a y l TAILLE_TAB ]
u n s ig n e d c h a r p r n g A ( v o i d )
lo n g p r n g B ( v o i d

v o id i n i t _ a l g M ( v o i d

I
lon g i ;
fo r

( i= 0

; i < TAILLE_TAB ; i+ + )

d e la y li]

= prngA C )

/ * in it_a lgM * /

u n s ig n e d c h a r a l g lM ( v o i d

1
lo n g j , v
j

= prngB O

v = d e la y lj]
d e la y lj]
retu rn

% TAILLE_TAB ;
;

/*

= prngA O

( v )

/*

o b t e n t i o n l in d e x d a n s d e l a y l ]

o b t e n t io n de l a
;

/* le

*/

v a l e u r a r e n v o y e r */

r e m p la c e r * /

} / * a lg lM * /

Ceci est solide dans le sens que si prngA tait vraiment alatoire, on ne pourrait rien
apprendre de prngB (et il serait impossible de le cryptanalyser). Il serait possible de
cryptanalyser prgnA seulement si sa sortie tait accessible dans le bon ordre, (cest
dire si prngB tait d abord cryptanalys), et dans le cas contraire, sil tait vraiment
alatoire, la combinaison serait sre.

16.12

PKZIP

Roger S C H L A F L Y a conu lalgorithme de chiffrement intgr dans le programme de


compression P K Z IP . C est un algorithme de chiffrement en continu qui chiffre les

Chapitre 16

418

Gnrateurs de suites alatuires et chiffrement en continu

donnes octet par octet. Ceci est au moins lalgorithme de la version 2.04g. Je ne peux
pas me prononcer pour les version ultrieures, mais moins que cela ne soit annonc,
vous pouvez supposer quelles lutilisent aussi.
Lalgorithme utilise des variables de 32 bit initialises ainsi :
K 0 = 305419896
K 2 = 591751049
K 2 = 878082192

Il y a une clef K 3 dduite de K 2. Voici lalgorithme (tous les symboles viennent du C) :


Cx = M i ~ K 3

K0
K\
Ki
K2
K3

= ct c32(Ko, Mi )

= Ki + (A'o&OxOOOOOOFF)
= Ki * 134775813 + 1
= ct c3 2 {K2, K 1
24)
= ((K 2 12) * {{K 2 12)-1)>
8

La fonction crc32 prend la valeur prcdente et un octet, les combine par ou exclusif et
calcule la valeur suivante au moyen du polynme C R C not 0xEDB88320. En partique,
on peut pr-calculer un tableau T de 256 nombres et le calcul par crc32 devient :
crc32(a,6) (a > > 8)~T[(n& OxFF 6]
Le tableau est pr-calcul selon la dfinition originelle de crc3 2 :
T[i] = crc32(i,0)
Pour chiffrer un flux de texte en clair, commencez faire passez les octets de la clef
dans lalgorithme pour mettre jour les clefs. Ignorez le texte chiffr correspondant.
Chiffrez alors le texte en clair octet par octet. Douze octets alatoires sont acolls au
dbut du texte en clair, mais cela nest pas vraiment important. Le dchiffrement se
fait de manire similaire au chiffrement, mis part quil faut prendre Ci la place de
M i la deuxime tape de lalgorithme.

Scurit de PKZIP
Malheureusement, elle n est pas extraordinaire. Une attaque a besoin de 40 200 octets
de texte en clair connu et prend environ 227 oprations [173]. Vous pouvez la faire en
quelques heures avec votre ordinateur personnel. Si le fichier compress possde une
entte standard, ce nest pas un problme dobtenir le texte en clair. Nutilisez pas le
chiffrement intgr dans P K Z IP .

Chapitre 17

Autres algorithmes de
chiffrement en continu et
gnrateurs de suites vraiment
alatoires
17.1

RC4

RC4 est un algorithme de chiffrement en continu clef de longueur variable dvelopp


en 1987 par Ron R i v e s t pour R S A D a t a S e c u r i t y , In c. Il a t durant sept ans
une marque dpose, et les dtails de lalgorithme ntaient dvoils quaprs signature
dun contrat de non divulgation.
En septembre 1994, quelquun a envoy anonymement le code source aux abonns de la
liste de courrier lectronique Cypherpunks . Il sest rapidement rpandu tout autour
du monde via les sites ftp d iN T E R N E T . Des possesseurs de copies lgales de RC4
ont confirm la compatiblit. R SA D a t a S e c u r i t y , I n c . essaya d touffer laffaire
en prtendant quil sagissait dun secret de fabrication bien qutant devenu public ;
ctait trop tard. Il a depuis t dissqu et comment, distribu des confrences et
enseign dans les cours de cryptographie.
RC4 est simple dcrire. L algorithme fonctionne en mode O FB : le flux de codons
ne dpend pas du texte en clair. Il a une table- S 8*8 bits: S o , S i , . . . ,S 25 5 - Les Si
forment une permutation des nombres entre 0 et 255, et la permutation dpend de la
clef de longueur variable. Il y a deux compteurs i et j , initialiss zro.
Pour gnrer un octet alatoire, procder ainsi :
i = (i + 1) modulo 256
j (j + Si) modulo 256

Echanger Si et S j .
t = (S i + S j ) modulo 256
K = St

420

Chapitre 17

Autres algorithmes de chiffrement en continu

L octet K est combin par ou exclusif avec le texte en clair pour produire le texte
chiffr ou bien avec le texte chiffr pour produire le texte en clair. Le chiffrement est
rapide, environ 10 fois plus que le DES.
Linitialisation est facile aussi. Commencez avec lidentit : Sa 0,S\ = 1 ,... ,6 2 5 5 =
255. Remplissez un autre tableau de 256 octets avec la clef, en rptant celle-ci suffi
samment de fois pour combler le tableau : Kq,K\, . . . , K 2ss- Initialisez lindex j zro
et effectuez ceci :
Pour i variant de 0 255, effectuer :
j (j + St + K r) modulo 256
Echanger Si et S3.

R SA D SI prtend que lalgorithme est immune aux cryptanalyse diffrentielle et li


naire, quil na pas de cycle court, et quil est hautement non linaire1. La table-S
volue lentement au cours de lalgorithme: i permet dassurer que chaque lment
change et j permet assurer que les lments changent alatoirement. Lalgorithme est
si simple que la plupart des programmeurs peuvent rapidement crire le code de m
moire.
Il devrait tre possible de gnraliser cette ide des tables-S 1 et des mots de tailles
plus grandes. La version qui prcde est le R C4 8 bits. Il ny a pas de raison de ne pas
dfinir le R C4 16 bits avec une table-S 1 16*16 bits (100 kilo-octets de mmoire) et
des mots de 16 bits. Il vous faudrait itrer beaucoup plus de fois ltape d initialisation,
65536 pour suivre la conception actuelle, mais lalgorithme rsultant serait plus rapide.
RC4 possde un statut spcial pour lexportation si la longueur de la clef ne dpasse
pas 40 bits (voir 13.8). Ce statut spcial n a rien voir avec la confidentialit de
lalgorithme, bien que R SA D SI lai laiss sous entendre durant des annes. Le nom
est dpos, aussi, toute personne crivant son propre code doit lappeler de manire
diffrente. Divers document internes de la R SA D a t a S e c u r i t y , I n c . nont toujours
pas t rendus publics [1333, 1349].
Quel est le march avec R C 4 ? Il ny a plus de secret de fabrication, aussi n importe
qui peut l utiliser. Cependant, R SA D SI poursuivra certainement en justice tous ceux
qui incorporent RC4 sans license des produits commerciaux. Ils ne gagneront pro
bablement pas, mais il sera moins cher pour une socit d acheter une license que de
combattre.
RC4 fait partie d'une douzaine de produits commerciaux, tels que Lotus Notes, AOCE
d A p p l e , et Oracle Secure SQL. Il est aussi dans la spcification de tlphones modu
laires Cellular Digital Packet Data [38].

17.2

SEAL

SEAL est un algorithme de chiffrement en continu efficace sous forme de logiciel conu
chez IBM par Phyl R o g a w a y et Don C o p p e r s m i t h [1352]. L algorithme a t conu
pour les processeurs 32 bits : pour bien fonctionner, il lui faut des registres de 32 bits
et une mmoire cache de quelques kilo-octets. Au moyen d une opration assez lente,
1.
(256!

Il ny existe aucun rsultat cryptanalytique public. R C 4 peut se trouver dans environ 21700

x 2562) tats possibles, un nom bre incomm ensurable.

17.2

SEAL

421

SEAL calcule au pralable un ensemble de tableaux partir de la clef. Ces tableaux


acclrent ensuite le chiffrement et le dchiffrement.

Famille de fonctions pseudo-alatoires


Une particularit nouvelle de SEAL est de ne pas tre un algorithme traditionnel
de chiffrement en continu : c est une f a m ille d e f o n c t io n s p s e u d o - a l a t o ir e s .E t a n t
donn une clef k de 160 bits et un mot n de 32 bits, SEA L dilate n jusqu une chane
k(n) de L bits. L peut prendre nimporte quelle valeur infrieure 64 kilo-octets.
SEAL est suppos avoir la proprit suivante : si k est pris alatoirement, alors k{n)
est indistinguable par calcul du rsultat dune fonction alatoire de L bits applique
n.

Lintrt pour SEAL dtre une famille de fonctions pseudo-alatoires est que cela
le rend utile dans des applications o les algorithmes traditionnels de chiffrement en
continu ne le sont pas. Avec la plupart des algorithmes de chiffrement en continu,
vous gnrez une suite de bits dans une seule direction : sachant la clef et une position
i, le seul moyen de dterminer le ie bit est de gnrer tous les bits jusquau ie . Mais
une famille de fonctions pseudo-alatoires agit diffremment : laccs nimporte quelle
position dans le flux de codons est aise. C est trs utile.
Imaginez que vous deviez protger un disque dur. Vous voulez chiffrer chacun des
secteurs de 512 octets. Avec une famille de fonctions pseudo-alatoires telle que SEAL,
vous pouvez chiffrer le contenu du secteur n en le combinant par ou exclusif avec k(n).
Tout se passe comme si le disque entier tait combin par ou exclusif avec une longue
chane pseudo-alatoire o chaque morceau de cette longue chane peut tre calcul
sans difficult.
Une famille de fonctions pseudo-alatoires simplifie aussi le problme de synchronisa
tion rencontr avec les algorithmes classiques. Supposez que vous deviez chiffrer des
messages envoys par un canal qui perd parfois des messages. Avec une famille de fonc
tions pseudo-alatoires, vous pouvez chiffrer avec k le ne message xn que vous envoyez
sous la forme de n suivi de la combinaison par ou exclusif de xn et k(n). Le destinataire
na pas besoin de stocker d tat pour retrouver xn, il na pas non plus sinquiter de
la perturbation du processus de dchiffrement par la perte d un message.

Description de SEAL
La boucle interne de SEAL est illustre par la figure 17.1. L algorithme repose sur trois
tableaux, R, S et T, drivs de la clef. Ltape de pr-calcul produit ces trois tableaux
partir de la clef k au moyen d une procdure base sur SHA (voir 18.7). Le tableau
T de 2 kilo-octets est une table-S 9*32 bits.
SEAL utilise aussi quatre registres de 32 bits A, B, C et D dont les valeurs initiales
dpendent de n, R et T. Ces registres sont modifis au cours de plusieurs itrations,
chacune delle comprenant huit rondes. A chaque ronde, 9 bits dun premier registre
[A, B, C ou D) servent d index dans le tableau T. La valeur retire de T est alors
ajoute ou combine par ou exclusif un deuxime registre. Le premier registre est
dcal circulairement de neuf positions. Dans certaines rondes le second registre (aprs
dcalage) subit des modifications suplmentaires en le combinant par ou exclusif avec
le premier registre ou en le lui ajoutant. Aprs huit rondes de ce type, A, B , C et D
viennent gonfler le flux de codons, aprs avoir masqu chacun d eux en le combinant

422

Chapitre 17

ig

Autres algorithmes de chiffrement en continu

17.1 - Boucle interne de SEAL

avec un certain mot de S par addition ou par ou exclusif. Litration sachve en


ajoutant A et C des valeurs suplmentaires dpendantes de n, n i, n2, 'ris, n 4 , selon
la parit du numro de litration.
Les ides importantes de la conception semble tre :
1. Utiliser une grande table-S1secrte et drive de la clef (T).
2. Alterner des oprations arithmtiques qui ne commutent pas (addition et ou
exclusif).

3. Utiliser un tat interne maintenu par lalgorithme qui ne se manifeste pas direc
tement dans le flot de donnes (les valeurs des n%qui servent modifier A et C
la fin de chaque itration).
4. Faire varier la fonction de ronde avec le numro de la ronde, la fonction d itration
avec le numro ditration.
SEAL fait appel environ cinq oprations lmentaires de la machine pour chiffrer un
octet de texte en clair. Il fonctionne 58 mgaoctets par seconde sur un 486 cadenc
50 MHz. C est lalgorithme de chiffrement le plus rapide du livre.
D un autre ct, SEAL doit pr-calculer ses tableaux internes partir de la clef. Ces
tableaux occupent en mmoire environ 3 kilo-octets au total et leur calcul requiert
peu prs 200 calculs de SHA. SEAL nest donc pas adapt aux situations o vous
navez pas de temps pour effectuer le pr-calcul sur la clef, ou la mmoire suffisante
pour stocker les tableaux.

17.3

W AKE

Scurit de SEAL
SEAL est un nouvel algorithme et nest encore le sujet daucune cryptanalyse publie.
Cela incite la prudence. Il semble cependant que SEAL est bien pens. Ses curiosit
ont un sens au bout du compte. Et Don C O P P E R S M IT H est gnralement considr
comme le cryptanalyste le plus intelligent du monde.

Brevets et licenses
SEAL est en cours de brevetage [384]. Quiconque dsire se procurer une license pour
utiliser SEAL devrait contacter: Director of Licenses, IBM Corporation, 500
Columbus Ave., Thurnwood, N Y , 10594, tats-Unis.

17.3

WAKE

W AK E a t invent par David W H E E L E R [1591], Il produit un flux de mots de 32


bits qui peut tre combin par ou exclusif avec le texte en clair pour le chiffrement,
ou avec le texte chiffr pour le dchiffrement.
W AKE fonctionne en mode C FB ; le mot prcdent de texte chiffr est utilis pour
produire le codon suivant. Il utilise aussi une table-S1de 256 valeurs de 32 bits. Cette
table-S1vrifie une proprit spciale : les octets de poids fort des 256 valeurs forment
une permutation de tous les octets possibles et les trois octets de poids faibles sont
alatoires.
Tout d abord, gnrez les valeurs Si de la table-S1 partir de la clef. Initialisez alors
quatre registre cto, bo, Co et do avec la clef (ou avec un autre clef). Pour gnrer un
codon K l de 32 bits, appliquez simplement ceci :
Ki

dj

Le mot de texte chiffr Ci est obtenu par combinaison par ou exclusif du mot de texte
en clair A4, avec Ki.
Mettez alors jour les quatre registres :
G-j-1

7Vd(GEj,dj)

5-i+i Af(6j ,g j_|_i )


ci+i = M (c i,b i+ 1 )
di+i 4lL(dj,Cj-ri)

La fonction M est donne par :


M( x, y) = (x + y)

8 S^x+y)2ss

Ceci est illustr par la figure 17.2. L opration > > est un dcalage droite et non une
rotation. Les bits de poids faible de x + y sont les entres de la table-S1. W H E E L E R
propose une procdure pour gnrer la table-S1, mais elle nest pas vraiment complte.
Nimporte quel algorithme gnrant des octets alatoires et une permutation alatoire
conviendra.
Le principal atout de W A K E est sa rapidit. Cependant il ne rsiste pas une attaque
texte en clair choisi ou une attaque texte chiffr choisi. Il est utilis dans la version
courante du programme Dr. Solomons Anti-Virus .

Chapitre 17

17.4

ig

Autres algorithmes de chiffrement en continu

17.2 - W A K E

Registres dcalage rtroaction avec


retenue

Un registre dcalage rtroaction avec retenue ou en abrg R D R R 2, ressemble


un R D R L . Ils ont tous les eux un registre dcalage et une fonction de rtroaction ; la
diffrence est quun R D R R a aussi un registre de retenue (voir la figure 17.3). Au lieu
de combiner par ou exclusif tous les bits de la squence de drivation, ajoutez les bits
et le contenu du registre de retenue ensemble. Le rsultat modulo 2 devient le nouveau
bit. Le rsultat divis par 2 devient le nouveau contenu du registre de retenue.
La figure 17.4 prsente un exemple de R D R R 3 bits driv au premier et eu deuxime
bit. Sa valeur initiale est 0 0 1 et le registre de retenue contient initialement 0. Le bit

2.
N ote du traducteur : en anglais, les registres dcalage rtroaction avec retenue sont appels
feed ba ck w ith c a r r y shzft r e g iste r s et sont abrgs F C S R .

17.J,

Registres dcalage rtroaction avec retenue

Registre dcalage
Som m e m odulo 2 h

bn-l

b,4

ae
2

bl

Somme divise par 2

F i g . 17.3

Registre dcalage rtroaction avec retenue

de sortie est le bit le plus droite du registre.


Registre dcalage
0
1
0
1
1
1
0
1
0
0
0
1

0
0
1
0
1
1
1
0
1
0
0
0

1
0
0
1
0
1
1
1
0
1
0
0

Registre de retenue
0
0
0
0
0
0
1
1
1
1
1
0

Notez que ltat interne final (y compris le contenu du registre de retenue) est identique
au second tat interne. La suite boucle partir de ce point et sa priode est 10.
Il faut prciser quelques points. Premirement, le registre de retenue nest pas un simple
bit ; cest un nombre. La taille du registre de retenue doit tre au moins log2 1 o t est le
nombre de drivations. Il ny a que deux drivations dans lexemple prcdent, aussi le
registre de retenue ne requiert quun seul bit. Sil y avait quatre drivations, le registre
de retenue aurait deux bits, et pourrait valoir 0, 1, 2, ou 3.
Ensuite, le R D R R passe initialement par une squence transitoire avant de se rpter
priodiquement. Dans lexemple prcdent, un seul tat nest jamais rpt. Pour des
R D R R plus grands et plus compliqus, il peut y en avoir plus.
Enfin, la priode maximale d un R D R R nest pas 2n 1, n tant la taille du registre
dcalage. La priode maximale est q 1 o q est l e n t ie r d e c o n n e x io n . Ce nombre
identifie la squence de drivation, il est donn par :
q 2qi + 2 22 + 24Q4 + + 2nqn 1

Chapitre 17

Autres algorithmes de chiffrement en continu

Somme modulo 2

H h
u3

b_2 b,
ui

Bit de sortie

Somme

Somme divise par 2


F ig. 17.4 - Un R D R R 3 bits
(Les q, sont bien numrots de gauche droite et valent 1 lorsque le bit correspondant
du registre dcalage est driv, 0 sinon.) q doit tre premier et admettre 2 comme
racine primitive. On supposera par la suite que q est bien de cette forme.
Dans lexemple prcdent, = 2 x 0 + 4 x l + 8 x l - 1 = 11. Et 11 est un nombre
premier admettant 2 comme racine primitive. La priode maximale est donc 10.
Tous les tats initiaux ne conduisent pas une priode maximale, considrez par
exemple le R D R R prcdent avec une valeur initiale de 1 0 1 et le registre de re
tenue 4.
Registre dcalage Registre de retenue
10 1
4
110
2
111
1
111
1
partir de l, le registre produit une suite sans fin de un.
Tout tat initial appartient lune des quatre catgories suivantes. 1) Il fait partie de
la priode maximale. 2) Il conduit la priode maximale aprs une squence initiale
de transition. 3) Il conduit une suite infinie de zros aprs une ventuelle squence
initiale de transition. 4) Il conduit une suite infinie de un aprs une ventuelle
squence initiale de transition.
Il existe une formule mathmatique permettant de dterminer ce quil adviendra
partir dun tat initial donn, mais il est beaucoup plus facile de le tester. Faites
fonctionner le R D R R un moment. (Si m est la taille de la mmoire initiale et t le
nombre de drivations, alors log2 1 + log2 m -I- 1 tapes suffisent.) Sil dgnre en une
suite continue de 1 ou de 0 d au moins n bits, o n est la taille du R D R R , ne lutilisez
pas. Dans le cas contraire, utilisez le. Comme ltat initial d un R D R R dpend de la
clef, cela signifie quun gnrateur base de R D R R aura des clefs faibles.
Le tableau 17.1 rassemble tous les entiers de connexion q infrieurs 10 000 admettant
2 comme racine primitive. Ils donnent tous une priode maximale de q 1. Pour obtenir

17.5

Chiffrement en continu base de R D R R

427

a squence de drivation, il suffit de calculer la reprsentation binaire de q + 1. Par


exemple, 9949 se traduit par la drivation des bits 1, 2, 3, 4, 6, 7, 9, 10, et 13 car
9950 = 213 + 210 + 29 + 27 -f 26 + 24 + 23 + 22 + 21.
Le tableau 17.2 rassemble toutes les squences de drivation quatre bit qui donnent
in R D R R de taille maximale pour un registre dcalage de 32, 64, 96 ou 128 bits.
Les quatres valeurs a,b,c,d donnent toujours un nombre premier q dont 2 est une racine
primitive.
q=

2b +

2 e +

2d -

Chacune de ces squences de drivation permet de construire un R D R R de priode


7-

1.

Lide dutiliser des R D R R pour la cryptographie est encore trs rcente; elle est
actuellement dfriche par Andy K l a p p e r et Mark G o r e s k y [845, 846, 656, 844, 847],
Tout comme lanalyse des R D R L est base sur laddition des polynmes primitifs
modulo 2, lanalyse des R D R R est base sur ce que lon appelle les nombre 2-adiques.
La thorie dpasse largement le cadre de ce livre, mais il semble exister un analogue
2-adique pour chaque chose. Par analogie la complexit linaire, on peut dfinir la
complexit 2-adique. Il y a mme un analogue 2-adique de lalgorithme de BerlekampMassey.

17.5

Chiffrement en continu base de


R D R R

Il nexiste pas dalgorithmes de chiffrement en continu base de R D R R dans la littra


ture ; la thorie est encore trop rcente. Jen propose quelques uns ici pour faire avancer
les choses. Je me lance dans deux voies diffrentes : je propose des gnrateurs base
de R D R R identiques ceux prsents avec des R D R L , et je propose des gnrateurs
utilisant la fois des R D R R et des R D R L . II est probablement possible d valuer la
scurit des premiers avec la thorie des nombres 2-adiques; les seconds ne peuvent
pas tre analyss avec des techniques algbriques, il est probablement possible de les
analyser indirectement. Dans tous les cas, il est important de choisir des R D R R et des
RDRL dont les priodes soient premires entre elles.
Ceci fait partie de lavenir. Je ne connais aucune ralisation ou analyse de ces ides.
Attendez quelques annes et consultez alors la littrature avant de leur faire confiance.

Gnrateurs en cascade
Il y a deux faons de mettre des R D R R en cascade dans un gnrateur :
- Cascade de R D R R . Reprendre la cascade de G
lieu de R D R L .

o llm an n

- Cascade de R D R L /R D R R . Reprendre la cascade de G


ternance de R D R L et de R D R R .

avec des R D R R au

ollm an n

avec une al

Chapitre 17

428

ab

Autres algorithmes de chiffrement en continu

17.1 - Entiers de connexion pour R D R R de priode maximale

653

1549

2477

3539

4397

5693

6781

7 717

8861

659

1571

2531

3547

4451

5701

6803

7757

8 867

11

661

1619

2539

3 557

4483

5 717

6 827

7789

8923

13

677

1621

2549

3571

4493

5741

6829

7829

8933

19

701

1637

2557

3581

4507

5749

6869

7853

8 963

29

709

1667

2579

3613

4517

5779

6883

7877

8971

37

757

1669

2621

3637

4547

5813

6899

7883

9011

53

773

1693

2659

3643

4603

5827

6907

7901

9029

59
61

787

1733

3659

4621

5843

6917

7907

9 059

797

1741

2677
2683

3 677

4637

5851

6947

7933

9173

67

821

1747

2693

3691

4691

5869

6949

7949

9181

83

827

1787

2699

3701

4723

5923

6971

8053

9203

101
107

829

1861

3709

4 787

8069

9221

1867

3733

4789

5939
5 987

7013

853

2707
2741

7019

8093

9 227

131

859

1877

2789

3779

4813

7027

8117

9283

139

877

1901

2 797

3 797

4877

6011
6029

7043

8123

9293

149

883

1907

2803

3803

4933

6053

7069

8 147

9323

163

907

1931

2819

3851

4957

6067

7109

8171

9341

173

941

1949

2837

3853

4973

6101

7187

8179

9349

179

947

1973

2843

3877

4 987

6131

7211

8219

9371

181

1019

1979

2851

3 907

5003

6173

7219

8221

9397

197

1061
1091

1987
1997

2861

3917

7229

8237

9419

2909

3923

5011
5051

6197

211

6203

7237

8243

9421

227

1109

2939

3931

5059

6211

7243

8269

9 437

269

1117

2 027
2029

2957

3947

5 077

6229

7253

8291

9467

293

1123

2053

2963

3989

5099

6269

7283

8293

9491

317

1171

2069

4 003

5 107

6 277

7307

8363

9533

347

1187

2083

3011
3019

4013

5147

6299

7331

8387

9 539

349

1213

2099

3037

4019

5171

6 317

7349

8429

9547

373

1229

2131

3067

4021

5179

6323

7411

8443

9587

379

1237

2141

3083

4091

5189

6373

7451

8 467

9613

389
419

1259

2213

3 187

4093

5227

6379

7459

8539

9619

1277

2221

3203

4099

5261

6389

7477

8563

9629

421

1283

2237

3253

4133

5309

6397

7499

8573

9643

443

1291

2243

3299

4139

5333

6469

7507

8597

9661

461

1301

2267

3307

4157

5 387

6491

7517

8 627

9677

4 67

1307

4219

5443

6547

7523

8669

9733

1373

2269
2293

3323

491

3 347

4229

5477

6619

7541

8 677

9749

509

1381

2309

3371

4243

5483

6637

7547

8693

9803

523

1427

2333

3413

4253

5501

6653

7549

8699

9851

541

1451

2339

3461

4259

5507

6659

7573

8731

9859

547

1453

2357

3 467

4261

5 557

6691

7589

8741

9883
9901

557

1483

2371

3469

4283

5563

6701

7603

8747

563

1493

2389

3491

4 349

5573

6709

7621

8803

9 907

587

1499

2437

3499

4 357

5651

6733

7643

8 819

613

1523

2459

3 517

4363

5659

6763

7669

8821

9923
9941

619

1531

2467

3533

4 373

5683

6779

7691

8 837

9949

17.5

Chiffrement en continu base de R D R R

429

Tab. 17.2 - Squences de drivation pour R D R R de priode maximale


(3 2 .6 .3 .2 )

(6 4 ,2 4 ,1 9 ,2 )

(6 4 ,5 9 ,2 8 ,2 )

(9 6 ,5 5 ,5 3 ,2 )

(3 2 .7 .5 .2 )

(6 4 ,2 5 ,3 ,2 )

(6 4 ,5 9 ,3 8 ,2 )

(9 6 ,5 6 ,9 ,2 )

(3 2 .8 .3 .2 )

(6 4 ,2 5 ,4 ,2 )

(6 4 ,5 9 ,4 4 ,2 )

(3 2 .1 3 .8 .2 )
(3 2 .1 3 .1 2 .2 )

(6 4 ,2 5 ,1 1 ,2 )
(6 4 ,2 5 ,1 9 ,2 )

(6 4 ,6 0 ,4 9 ,2 )
(6 4 ,6 1 ,5 1 ,2 )

(3 2 .1 5 .6 .2 )

(6 4 ,2 7 ,5 ,2 )

(6 4 ,6 3 ,8 ,2 )

(3 2 .1 6 .2 .1 )

(6 4 ,2 7 ,1 6 ,2 )

(6 4 ,6 3 ,1 3 ,2 )

(9 6 ,5 8 ,3 5 ,2 )

(3 2 .1 6 .3 .2 )

(6 4 ,2 7 ,2 2 ,2 )

(6 4 ,6 3 ,6 1 ,2 )

(9 6 ,5 9 ,4 6 ,2 )

(3 2 .1 6 .5 .2 )
(3 2 .1 7 .5 .2 )

(6 4 ,2 8 ,1 9 ,2 )
(6 4 ,2 8 ,2 5 ,2 )

(9 6 ,5 6 ,5 1 ,2 )
(9 6 ,5 7 ,3 ,2 )
(9 6 ,5 7 ,1 7 ,2 )
(9 6 ,5 7 ,4 7 ,2 )

(9 6 ,6 0 ,2 9 ,2 )
(9 6 ,1 5 ,5 ,2 )

(9 6 ,6 0 ,4 1 ,2 )

(3 2 .1 9 .2 .1 )

(6 4 ,2 9 ,1 6 ,2 )

(9 6 ,2 1 ,1 7 ,2 )

(9 6 ,6 0 ,4 5 ,2 )

(3 2 .1 9 .5 .2 )

(6 4 ,2 9 ,2 8 ,2 )

(9 6 ,2 5 ,1 9 ,2 )

(9 6 ,6 1 ,1 7 ,2 )

(3 2 .1 9 .9 .2 )

(6 4 ,3 1 ,1 2 ,2 )

(9 6 ,2 5 ,2 0 ,2 )

(9 6 ,6 3 ,2 0 ,2 )

(3 2 .1 9 .1 2 .2 )

(6 4 ,3 2 ,2 1 ,2 )

(9 6 ,2 9 ,1 5 ,2 )

(9 6 ,6 5 ,1 2 ,2 )

(3 2 .1 9 .1 7 .2 )

(6 4 ,3 5 ,2 9 ,2 )

(9 6 ,2 9 ,1 7 ,2 )

(9 6 ,6 5 ,3 9 ,2 )

(3 2 .2 0 .1 7 .2 )

(6 4 ,3 6 ,7 ,2 )

(9 6 ,3 0 ,3 ,2 )

(9 6 ,6 5 ,5 1 ,2 )

(3 2 .2 1 .9 .2 )

(6 4 ,3 7 ,2 ,1 )

(9 6 ,3 2 ,2 1 ,2 )

(9 6 ,6 7 ,5 ,2 )

(3 2 .2 1 .1 5 .2 )

(6 4 ,3 7 ,1 1 ,2 )

(9 6 ,3 2 ,2 7 ,2 )

(9 6 ,6 7 ,2 5 ,2 )

(3 2 .2 3 .8 .2 )

(6 4 ,3 9 ,4 ,2 )

(9 6 ,3 3 ,5 ,2 )

(9 6 ,6 7 ,3 4 ,2 )

(3 2 .2 3 .2 1 .2 )
(3 2 .2 5 .5 .2 )

(6 4 ,3 9 ,2 5 ,2 )
(6 4 ,4 1 ,5 ,2 )

(9 6 ,3 5 ,1 7 ,2 )
(9 6 ,3 5 ,3 3 ,2 )

(9 6 ,6 8 ,5 ,2 )
(9 6 ,6 8 ,1 9 ,2 )

(3 2 .2 5 .1 2 .2 )

(6 4 ,4 1 ,1 1 ,2 )

(9 6 ,3 9 ,2 1 ,2 )

(9 6 ,6 9 ,1 7 ,2 )

(3 2 .2 7 .2 5 .2 )

(6 4 ,4 1 ,2 7 ,2 )

(9 6 ,4 0 ,2 5 ,2 )

(9 6 ,6 9 ,3 6 ,2 )

(3 2 .2 9 .1 9 .2 )

(6 4 ,4 3 ,2 1 ,2 )

(9 6 ,4 1 ,1 2 ,2 )

(9 6 ,7 0 ,2 3 ,2 )

(3 2 .2 9 .2 0 .2 )

(6 4 ,4 3 ,2 8 ,2 )

(9 6 ,4 1 ,2 7 ,2 )

(9 6 ,7 1 ,6 ,2 )

(3 2 .3 0 .3 .2 )

(6 4 ,4 5 ,2 8 ,2 )

(9 6 ,4 1 ,3 5 ,2 )

(9 6 ,7 1 ,4 0 ,2 )

(3 2 .3 0 .7 .2 )

(6 4 ,4 5 ,4 1 ,2 )

(9 6 ,4 2 ,3 5 ,2 )

(9 6 ,7 2 ,5 3 ,2 )

(3 2 .3 1 .5 .2 )

(6 4 ,4 7 ,5 ,2 )

(9 6 ,4 3 ,1 4 ,2 )

(9 6 ,7 3 ,3 2 ,2 )

(3 2 .3 1 .9 .2 )

(6 4 ,4 7 ,2 1 ,2 )

(9 6 ,4 4 ,2 3 ,2 )

(9 6 ,7 7 ,2 7 ,2 )

(3 2 .3 1 .3 0 .2 )

(6 4 ,4 7 ,3 0 ,2 )
(6 4 ,4 9 ,1 9 ,2 )

(9 6 ,4 5 ,4 1 ,2 )
(9 6 ,4 7 ,3 6 ,2 )

(9 6 ,7 7 ,3 1 ,2 )
(9 6 ,7 7 ,3 2 ,2 )

(6 4 .3 .2 .1 )

(6 4 ,4 9 ,2 0 ,2 )

(9 6 ,4 9 ,3 1 ,2 )

(9 6 ,7 7 ,3 3 ,2 )

(6 4 .1 4 .3 .2 )

(6 4 ,5 2 ,2 9 ,2 )

(9 6 ,5 1 ,3 0 ,2 )

(9 6 ,7 7 ,7 1 ,2 )

(6 4 .1 5 .8 .2 )

(6 4 ,5 3 ,8 ,2 )

(9 6 ,5 3 ,1 7 ,2 )

(9 6 ,7 8 ,3 9 ,2 )

(6 4 .1 7 .2 .1 )

(6 4 ,5 3 ,4 3 ,2 )

(9 6 ,5 3 ,1 9 ,2 )

(9 6 ,7 9 ,4 ,2 )

(6 4 .1 7 .9 .2 )

(6 4 ,5 6 ,3 9 ,2 )

(9 6 ,5 3 ,3 2 ,2 )

(9 6 ,8 1 ,8 0 ,2 )

(6 4 .1 7 .1 6 .2 )

(6 4 ,5 6 ,4 5 ,2 )

(9 6 ,5 3 ,4 8 ,2 )

(9 6 ,8 3 ,1 4 ,2 )

(6 4 ,1 9 ,2 ,1 )

(6 4 ,5 9 ,5 ,2 )

(9 6 ,5 4 ,1 5 ,2 )

(9 6 ,8 3 ,2 6 ,2 )

(6 4 .1 9 .1 8 .2 )

(6 4 ,5 9 ,8 ,2 )

(9 6 ,5 5 ,4 4 ,2 )

(9 6 ,8 3 ,5 4 ,2 )

(9 6 .8 3 .6 0 .2 )

(1 2 8 ,3 1 ,2 5 ,2 )

(1 2 8 ,8 1 ,5 5 ,2 )

(1 2 8 ,1 0 5 ,1 1 ,2 )

(9 6 .8 3 .6 5 .2 )

(1 2 8 ,3 3 ,2 1 ,2 )

(1 2 8 ,8 2 ,6 7 ,2 )

(1 2 8 ,1 0 5 ,3 1 ,2 )

(9 6 .8 3 .7 8 .2 )

(1 2 8 ,3 5 ,2 2 ,2 )

(1 2 8 ,8 3 ,6 0 ,2 )

(1 2 8 ,1 0 5 ,4 8 ,2 )

(9 6 .8 4 .6 5 .2 )

(1 2 8 ,3 7 ,8 ,2 )

(1 2 8 ,8 3 ,6 1 ,2 )

(1 2 8 ,1 0 7 ,4 0 ,2 )

(9 6 .8 5 .1 7 .2 )

(1 2 8 ,4 1 ,1 2 ,2 )

(1 2 8 ,8 3 ,7 7 ,2 )

(1 2 8 ,1 0 7 ,6 2 ,2 )

(9 6 .8 5 .3 1 .2 )

(1 2 8 ,4 2 ,3 5 ,2 )

(1 2 8 ,8 4 ,1 5 ,2 )

(1 2 8 ,1 0 7 ,1 0 2 ,2 )

(9 6 .8 5 .7 6 .2 )

(1 2 8 ,4 3 ,2 5 ,2 )

(1 2 8 ,8 4 ,4 3 ,2 )

(1 2 8 ,1 0 8 ,3 5 ,2 )

(9 6 .8 5 .7 9 .2 )

(1 2 8 ,4 3 ,4 2 ,2 )

(1 2 8 ,8 5 ,6 3 ,2 )

(1 2 8 ,1 0 8 ,7 3 ,2 )

(9 6 .8 6 .3 9 .2 )

(1 2 8 ,4 5 ,1 7 ,2 )

(1 2 8 ,8 7 ,5 7 ,2 )

(1 2 8 ,1 0 8 ,7 5 ,2 )

(9 6 .8 6 .7 1 .2 )

(1 2 8 ,4 5 ,2 7 ,2 )

(1 2 8 ,8 7 ,8 1 ,2 )

(1 2 8 ,1 0 8 ,8 9 ,2 )

Chapitre 17

430

ab

Autres algorithmes de chiffrement en continu

17.2 - Squences de drivation pour R D R R de priode maximale (suite)


(9 6 .8 7 .9 .2 )

(1 2 8 ,4 9 ,9 ,2 )

(1 2 8 ,8 9 ,8 1 ,2 )

(1 2 8 ,1 0 9 ,1 1 ,2 )

(9 6 .8 7 .4 4 .2 )

(1 2 8 ,5 1 ,9 ,2 )

(1 2 8 ,9 0 ,4 3 ,2 )

(1 2 8 ,1 0 9 ,1 0 8 ,2 )
(1 2 8 ,1 1 0 ,2 3 ,2 )

(9 6 .8 7 .4 5 .2 )

(1 2 8 ,5 4 ,5 1 ,2 )

(1 2 8 ,9 1 ,9 ,2 )

(9 6 .8 8 .1 9 .2 )

(1 2 8 ,5 5 ,4 5 ,2 )

(1 2 8 ,9 1 ,1 3 ,2 )

(1 2 8 ,1 1 1 ,6 1 ,2 )

(9 6 .8 8 .3 5 .2 )

(1 2 8 ,5 6 ,1 5 ,2 )

(1 2 8 ,9 1 ,4 4 ,2 )

(1 2 8 ,1 1 3 ,5 9 ,2 )

(9 6 .8 8 .4 3 .2 )

(1 2 8 ,5 6 ,1 9 ,2 )

(1 2 8 ,9 2 ,3 5 ,2 )

(1 2 8 ,1 1 4 ,8 3 ,2 )

(9 6 .8 8 .7 9 .2 )

(1 2 8 ,5 6 ,5 5 ,2 )

(1 2 8 ,9 5 ,9 4 ,2 )

(1 2 8 ,1 1 5 ,7 3 ,2 )

(9 6 .8 9 .3 5 .2 )

(1 2 8 ,5 7 ,2 1 ,2 )

(1 2 8 ,9 6 ,2 3 ,2 )

(1 2 8 ,1 1 7 ,1 0 5 ,2 )

(9 6 .8 9 .5 1 .2 )

(1 2 8 ,5 7 ,3 7 ,2 )

(1 2 8 ,9 6 ,6 1 ,2 )

(1 2 8 ,1 1 9 ,3 0 ,2 )

(9 6 .8 9 .6 9 .2 )

(1 2 8 ,5 9 ,2 9 ,2 )

(1 2 8 ,9 7 ,2 5 ,2 )

(1 2 8 ,1 1 9 ,1 0 1 ,2 )

(9 6 .8 9 .8 7 .2 )

(1 2 8 ,5 9 ,4 9 ,2 )

(1 2 8 ,9 7 ,6 8 ,2 )

(1 2 8 ,1 2 0 ,9 ,2 )

(9 6 .9 2 .5 1 .2 )

(1 2 8 ,6 0 ,5 7 ,2 )

(1 2 8 ,9 7 ,7 2 ,2 )

(1 2 8 ,1 2 0 ,2 7 ,2 )

(9 6 .9 2 .7 1 .2 )

(1 2 8 ,6 1 ,9 ,2 )

(1 2 8 ,9 7 ,7 5 ,2 )

(1 2 8 ,1 2 0 ,3 7 ,2 )

(9 6 .9 3 .3 2 .2 )

(1 2 8 ,6 1 ,2 3 ,2 )

(1 2 8 ,9 9 ,1 3 ,2 )

(1 2 8 ,1 2 0 ,4 1 ,2 )

(9 6 .9 3 .3 9 .2 )

(1 2 8 ,6 1 ,5 2 ,2 )

(1 2 8 ,9 9 ,1 4 ,2 )

(1 2 8 ,1 2 0 ,7 9 ,2 )

(9 6 .9 4 .3 5 .2 )

(1 2 8 ,6 3 ,4 0 ,2 )

(1 2 8 ,9 9 ,2 6 ,2 )

(1 2 8 ,1 2 0 ,8 1 ,2 )

(9 6 .9 5 .4 .2 )

(1 2 8 ,6 3 ,6 2 ,2 )

(1 2 8 ,9 9 ,5 4 ,2 )

(1 2 8 ,1 2 1 ,5 ,2 )

(9 6 .9 5 .1 6 .2 )

(1 2 8 ,6 7 ,4 1 ,2 )

(1 2 8 ,9 9 ,5 6 ,2 )

(1 2 8 ,1 2 1 ,6 7 ,2 )

(9 6 .9 5 .3 2 .2 )

(1 2 8 ,6 9 ,3 3 ,2 )

(1 2 8 ,9 9 ,7 8 ,2 )

(1 2 8 ,1 2 1 ,9 5 ,2 )

(9 6 .9 5 .4 4 .2 )

(1 2 8 ,7 1 ,5 3 ,2 )

(1 2 8 ,1 0 0 ,1 3 ,2 )

(1 2 8 ,1 2 1 ,9 6 ,2 )

(9 6 .9 5 .4 5 .2 )

(1 2 8 ,7 2 ,1 5 ,2 )

(1 2 8 ,1 0 0 ,3 9 ,2 )

(1 2 8 ,1 2 3 ,4 0 ,2 )

(1 2 8 ,1 0 1 ,4 4 ,2 )

(1 2 8 ,1 2 3 ,7 8 ,2 )

(1 2 8 ,7 2 ,4 1 ,2 )
(1 2 8 .5 .4 .2 )

(1 2 8 ,7 3 ,5 ,2 )

(1 2 8 ,1 0 1 ,9 7 ,2 )

(1 2 8 ,1 2 4 ,4 1 ,2 )

(1 2 8 .1 5 .4 .2 )

(1 2 8 ,7 3 ,6 5 ,2 )

(1 2 8 ,1 0 3 ,4 6 ,2 )

(1 2 8 ,1 2 4 ,6 9 ,2 )

(1 2 8 .2 1 .1 9 .2 )

(1 2 8 ,7 3 ,6 7 ,2 )

(1 2 8 ,1 0 4 ,1 3 ,2 )

(1 2 8 ,1 2 4 ,8 1 ,2 )

(1 2 8 .2 5 .5 .2 )

(1 2 8 ,7 5 ,1 3 ,2 )

(1 2 8 ,1 0 4 ,1 9 ,2 )

(1 2 8 ,1 2 5 ,3 3 ,2 )

(1 2 8 .2 6 .1 1 .2 )

(1 2 8 ,8 0 ,3 9 ,2 )

(1 2 8 ,1 0 4 ,3 5 ,2 )

(1 2 8 ,1 2 5 ,4 3 ,2 )

(1 2 8 .2 7 .2 5 .2 )

(1 2 8 ,8 0 ,5 3 ,2 )

(1 2 8 ,1 0 5 ,7 ,2 )

(1 2 8 ,1 2 7 ,1 2 1 ,2 )

Gnrateurs combinaison de R D RR
Ces gnrateurs utilisent un nombre variable de R D R L et de R D R R , et toute une
varit de fonctions pour les combiner entre eux. L opration de ou exclusif dtruit les
proprits algbriques des R D R R , aussi, il est sens de les utiliser pour combiner. Le
gnrateur, illustr par la ligure 17.5, utilise un nombre variable de R D R R . Sa sortie
est la combinaison par ou exclusif des sorties des R D R R .
Voici gnrateurs du mme type :
- Gnrateur R D R R quitable. Tous les registres sont des R D R R combins par
ou exclusif.
Gnrateur R D R L /R D R R quitable. Les registres sont un mlange de R D RL
et de R D R R combins par ou exclusif.

Gnrateur R D R R seuil. Tous les registres sont des R D R R combins selon la


majorit.
Gnrateur R D R L /R D R R seuil. Les registres sont un mlange de R D R L et
de R D R R combins selon la majorit

17.5

Chiffrement en continu base de R D R R

F i g . 17.5

431

- Combinaison de gnrateurs

- Gnrateur R D R R sommatoire. Tous Les registres sont des R D R R combins par


addition avec retenue.
- Gnrateur R D R L /R D R R sommatoire. Les registres sont un mlange de R D R L
et de R D R R combins par addition avec retenue.

Cascade de R D R L /R D R R sommatoire/quitable
La thorie dit que laddition avec retenue dtruit les proprits algbriques des R D R L
et que lopration de ou exclusif dtruit celles des R D R R . Ce gnrateur combine ces
ides, telles quelles sont utilises dans le gnrateur R D R L /R D R R sommatoire et le
gnrateur R D R L /R D R R quitable, avec la cascade de G o l l m a n n .
Le gnrateur est une srie de tableaux de registres o lhorloge de chaque tableau est
contrle par la sortie du tableau prcdent. La figure 17.6 illustre une couche de ce
gnrateur. Aprs avoir opr un cycle d horloge sur un premier tableau de R D R L , les
rsultats sont combins par addition avec retenue. Si le rsultat de cette combinaison
est 1, alors on opre un cycle dhorloge sur le tableau suivant, qui compos de R D R R ,
et les sorties de ces R D R R sont combines par ou exclusif. Si le rsultat de la premire
combinaison est 0, le tableau de R D R R nest pas actionn et le rsultat est seulement
ajout la retenue de la ronde prcdente. Si le rsultat de la deuxime combinaison
est 1, alors le troisime tableau est actionn, et ainsi de suite.
Ce gnrateur utilise beaucoup de registres n par m o n est le nombre de couches et
m le nombre de registre par couche. Je recommande n = 10 et m ~ 5.

Gnrateurs signal darrt altern


Ces gnrateurs sont des gnrateurs signal darrt avec des R D R R la place de
certains R D R L . On peut remplacer de plus lopration de ou exclusif par une autre
fonction de combinaison telle que laddition avec retenue (voir la figure 17.7).

Chapitre 17

Autres algorithmes de chiffrement en continu

F ig . 17.6 - Mixture de gnrateurs

- Gnrateur R D R R signal d arrt. Les registres 1, 2 et 3 sont des R D RR. La


fonction de combinaison est lopration de ou exclusif.

- Gnrateur R D R R /R D R L signal darrt. Le registre 1 est un R D R R , les


registres 2 et 3 sont des R D R L . La fonction de combinaison est laddition avec
retenue.

- Gnrateur R D R L /R D R R signal darrt. Le registres 1 est un R D R L, les


registres 2 et 3 sont des R D R R . La fonction de combinaison est lopration de
ou exclusif.

F i g . 1 7 .7 -

Gnrateurs signal darrt altern

17 6

Registres dcalage rtroaction non linaire

Gnrateurs rduction
Il y a quatre types principaux de gnrateurs rduction utilisant des R D R R :
- Gnrateur R D R R rduction. Un gnrateur rduction conventionnel avec
des R D R R la place des R D R L .
- Gnrateur R D R R /R D R L rduction. Un gnrateur rduction avec un
R D R L rduisant un R D R R .
- Gnrateur R D R L /R D R R rduction. Un gnrateur rduction avec un
R D R R rduisant un R D R L .
- Gnrateur R D R R auto-rduction. Un gnrateur auto-rduction avec un
R D R R la place du R D R L .

17.6

Registres dcalage rtroaction non


linaire

Il est facile d imaginer des squences de rtroaction plus compliques que celles des
RDRL et des R D R R . Le problme est quil nexiste pas de thorie mathmatique
permettant de les analyser. Vous obtiendrez quelque chose, mais Dieu sait quoi. En
particulier, voici quelques problmes susceptibles dtres rencontrs avec les registres
dcalage rtroaction non linaire :
- La suite de sortie risque d tre biaise, par exemple si elle contient plus de un
que de zros.
- La priode maximale peut savrer plus faible que prvu.
- La priode de la suite de sortie peut diffrer pour des valeurs de dpart distinctes.
- La suite peut paratre alatoire pendant un temps, puis se coincer sur la mme
valeur. (Il est facile d viter cela en combinant par ou exclusif la fonction non
linaire avec le bit le plus droite.)
Le bon ct de labsence de thorie pour analyser la scurit des registres dcalage
rtroaction non linaire est quil existe peu d outils de cryptanalyse des algorithmes
de chiffrement qui les utilisent. On peut utiliser les registres dcalage rtroaction
non linaire pour chiffrer en continu, mais il faut tre prudent.
Dans un registre dcalage rtroaction non linaire, la fonction de rtroaction peut
tre ce que vous voulez (voir la figure 17.8).
La figure 17.9 illustre un registre dcalage utilisant la fonction de rtroaction suivante :
le nouveau bit est gal au produit du premier et du troisime bit. Init.ialis avec la
valeur 110, il produira la suite dtats internes suivante:
110
0 11
10 1

434

Chapitre 17

Autres algorithmes de chiffrement en continu

0 10
0 0 1
0 0 0
0 0 0

Et ainsi de suite.
La suite de sortie est la chane des bits les moins significatifs :

________

Ce nest pas trs utile.


Cela peut tre pire. Initialis avec 100, il produit les tats 010, 001, et boucle jamais
sur 000. Si la valeur initiale est 111, il se rptera jamais depuis le dbut.
Il existe quelques travaux sur le calcul de la complexit linaire du produit de deux
R D R L [1652, 728, 1366, 632, 660, 661]. Une construction sappuyant sur le produit de
R D R L dans un corps de caractristique impaire [315] sest avre peu sre [843].

ig

17.9 - Un registre dcalage rtroaction non linaire (probablement pas sr)

17.7

Autres algorithmes de chiffrement en continu

17.7

435

Autres algorithmes de chiffrement en


continu

Beaucoup d autres algorithmes de chiffrement en continu sont apparus dans la littra


ture a et l. En voici quelques uns.

Gnrateur de Pless
Ce gnrateur est conu autour des possibilits des bascules bistables JK [1260]. Il
consiste en huit R D R L qui commandent quatre bascules bistables JK. Chaque bascule
bistable agit comme un combinateur non linaire pour deux des R D R L . Pour viter le
problme h au fait que la connaissance de la sortie dune bascule identifie la fois la
source et la valeur du codon suivant, chaque impulsion dhorloge, les sorties de trois
des quatre bascules sont ignores. Les sorties sont ensuite mlanges pour produire le
flux de codons final.
Cet algorithme a t cryptanalys par lattaque indpendante de chacune des quatre
bascules [1358]. De plus, combiner des bascules bistables JK est cryptographiquement
faible et les gnrateurs de ce type tombent sous le coup des attaques par corrla
tion [1457].

Gnrateur base dautomates cellulaires


Dans [1611, 1610], Steve W o l f r a m propose d utiliser un automate cellulaire unidimensionnel comme G PASCS. Une description du mcanisme des automates cellulaires
dpasse le cadre de cet ouvrage mais, en bref, le gnrateur de W o l f r a m consiste en
un vecteur de bits a, 2 , ..., k, , an et une fonction de mise jour :
a'k ~ ak-\ (d-k V Ofc+l).

Le bit est extrait d une des valeurs


; peu importe laquelle.
Le comportement de ce gnrateur a une apparence alatoire. Toutefois, il existe une
attaque texte en clair connu contre ce type de gnrateurs [1060]. Cette attaque
marche sur un PC avec des valeurs de n jusqu 500 bits. De plus, Paul B a r d e l l a
prouv que la sortie dun automate cellulaire est identique la sortie d un registre
dcalage rtroaction linaire, et quil noffrait donc pas plus de scurit [90].

Gnrateur 1/p
Ce gnrateur fut propos et ensuite cryptanalys dans [200]. Si ltat interne du g
nrateur linstant t est donn par x t, alors :
xt+i = bx, mod p .

La sortie du gnrateur est donne par le bit le moins significatif de x t div p, o


div est la division entire tronque. Pour une priode maximale, les constantes b et
p doivent tre choisies telles que p soit premier et b soit une racine primitive modulo
p. Mal heureusement, ce gnrateur nest pas sr du tou t3.
3.
Notez que pou r b = 2, un R D R R d ot d un entier de connexion valant p sortira cette suite de
bits dans lordre inverse.

Chapitre 17

436

Autres algorithmes de chiffrement en continu

crypt(l)
Lalgorithme de chiffrement original d U N IX, C R Y P T ( l) , est un chiffrement en continu
bas sur la mme technologie que P E n i g m a . Il utilise un seul tambour de 256 lments
et un rflecteur Le tambour et le rflecteur sont tous deux engendrs partir de la clef.
Cet algorithme est nettement plus simple que P E n i g m a allemand de la Seconde Guerre
mondiale et, pour un cryptanalyste dou, il est trs facile casser [1578, 1310]. Un
programme U N IX du domaine public, appel Crypt Breakers Workbench (CBW),
peut tre utilis pour casser des fichiers chiffrs avec C R Y P T ( l) .

Autres schmas
Il existe aussi un gnrateur bas sur le problme des empilements (voir 19.2) [1365].
C R Y P T O -L E G G O nest pas sr. Joan D a e m e n a dvelopp S u b S t r e a m , J a m et
S t e p R i g h t U p [405] ; ils sont trop rcents pour tre comments. Beaucoup dautres
algorithmes sont dcrits dans la litrature, et davantage encore gard secrets et incor
pors des quipements.

17.8

Approche par la thorie des systmes

En pratique, la conception d algorithmes de chiffrement en continu ressemble beau


coup la conception d algorithmes de chiffrement par blocs. Elle implique davantage
de thories mathmatiques, mais au bout du compte, un cryptographe propose un
algorithme et essaye ensuite de le cryptanalyser.
Selon Rainer R u e p p e l , il y a quatre approches diffrentes de la construction d algo
rithmes de chiffrement en continu [1363, 1364] :
- Lapproche par la thorie des systmes. Elle consiste sassurer que chaque
conception pose un problme difficile et inconnu au cryptanalyste, en utilisant
un ensemble de principes et de critres fondamentaux de conception
- Lapproche par la thorie de linformation. Il sagit de masquer le plus possible
le texte en clair au cryptanalyste. Peu importe la somme de travail quil mettra
en jeu, il nobtiendra jamais une seule solution.
Lapproche par la thorie de la complexit. Elle consiste baser le cryptosys
tme sur, ou le rendre quivalent , un problme connu et difficile tel que la
factorisation ou le calcul de logarithmes discrets.
- Lapproche par recherche de lalatoire. Il sagit de gnrer un problme trop
gros pour tre rsolu en forant le cryptanalyste examiner beaucoup de donnes
inutiles dans ses tentatives de cryptanalyse.
Ces approches diffrent par les hypothses faites sur les capacits du cryptanalyste,
la dfinition dune cryptanalyse russie, et la notion de scurit. La plupart des re
cherches dans ce domaine sont thoriques, mais il existe quelques bons algorithmes de
chiffrement en continu parmi ceux qui sont impraticables.
Lapproche par la thorie des systme est celle qui a t utilise pour tous les al
gorithmes de chiffrement en continu dcrits prcdemment ; elle est lorigine de la

17.9

Approche par la thorie de la complexit

plupart des algorithmes qui sont ralisables en pratique. Un cryptographe conoit des
gnrateurs de codons dont on peut tester les proprits de scurit priode, distri
bution des motifs de bits, complexit linaire, et ainsi de suite et non des algorithmes
bass sur des thories mathmatiques. Le cryptographe essaye aussi plusieurs tech
niques cryptographiques contre ces gnrateurs et sassure quils leur rsistent.
Au fil des annes, cette approche a abouti un ensemble de critres de conception
pour les algorithmes de chiffrement en continu [1438, 106, 1359, 1259]. R u e p p e l les a
tudi dans [1364] o il a dtaill les thories sous-jacentes.
- Priode longue, pas de rptitions.
Critres de complexit linaire : grande complexit linaire, profil de complexit
linaire, complexit linaire locale, et ainsi de suite.
- Critres statistiques tels que les distributions idales de fc-uplets.
- Confusion : chaque bit des codons doit provenir dune transformation complexe
de tous les bits de la clef ou de la plupart d entre eux.
- Diffusion: les redondances dans les sous-structures doivent se dissiper dans les
statistiques grande chelle.
- Critres de non linarit pour les fonctions boolennes comme limmunit la
corrlation dordre m, la distance aux fonctions linaires, le critre d avalanche,
et ainsi de suite.
Cette liste ne se restreint aux algorithmes conus avec lapproche par la thorie des
systmes ; elle est valable pour tous les algorithmes de chiffrement en continu. Elle
est mme valable pour les algorithmes de chiffrement par blocs. Le point important
avec lapproche par la thorie des systmes est que les algorithmes sont conus pour
directement satisfaire ces buts.
Le problme majeur avec ces cryptosystmes est quon ne rien prouver propos de leur
scurit ; il na jamais t prouv que ces critres de conception soient ncessaires ou
suffisants la scurit. Un gnrateur de codons peut satisfaire tous ces principes de
conception et savrer malgr tout peu sr. Un autre peut savrer sr. Il reste quelque
chose de magique dans le procd.
Dun autre ct, casser chacun de ces gnrateurs de codons constitue un problme
diffrent pour le cryptanalyste. Sil existe assez de gnrateurs, le cryptanalyste na
peut tre pas intrt essayer de casser chacun deux. Il obtiendra peut tre plus de
gloire et de renomme en trouvant de meilleurs moyens de factoriser les grands nombres
ou de calculer les logarithmes discrets.

17.9

Approche par la thorie de la com


plexit

R u e p p e l a aussi dtaill une approche de la conception dalgorithmes de chiffrement


en continu base sur la thorie de la complexit. Ici, le cryptographe essaie dutiliser
la thorie de la complexit pour prouver que ses gnrateurs sont srs. De ce fait, ces

Chapitre 17

Autres algorithmes de chiffrement en continu

gnrateurs ont tendance tre plus compliqus, ils sont bass sur le mme type de
problmes que nous avons dj vus pour la cryptographie clef publique. Et, tout
comme la cryptographie clef publique, ils ont tendance tre lents et peu commodes.

Gnrateur pseudo-alatoire de nombres de S h a m i r


i r utilise lalgorithme R S A comme gnrateur pseudo-alatoire de nombres
[1424]. Bien que S h a m i r ait montr que prdire la sortie du gnrateur pseudo-alatoire
de nombres est quivalent casser R SA , des biais potentiels dans la sortie ont t d
crits dans [1406, 206].

Sham

Gnrateur de B l u m - M i c a l i
La scurit de ce gnrateur dpend de la difficult de calculer des logarithmes dis
crets [206]. Soit g un nombre premier et p un nombre premier impair. Un codon, Xo,
dmarre le processus :
Xi+i gx' mod p.
La sortie du gnrateur vaut 1 si x l < (p l)/2 , et 0 sinon.
Si p est grand assez pour que le calcul de logarithmes discrets modulo p soit infai
sable, alors le gnrateur est sr. Des rsultats thoriques supplmentaires sont dcrits
dans [1629, 996, 995, 1247, 896, 808].

RSA
Le gnrateur R SA [36, 37] est une variante de [206], Les paramtres initiaux sont N , le
produit de deux grands nombres premiers p et , un entier e premier avec (p ~ l ) ( 1),
et un germe alatoire Xo infrieur N :
Xi+ 1 = xf modulo N.

La sortie du gnrateur est le bit le moins significatif de xt. La scurit de ce gnrateur


est base sur la difficult de casser le R SA . Si N est assez grand, alors le gnrateur
est sr. Vous trouverez davantage de thorie dans [1571, 1572, 1573, 34, 358].

Blum Blum Shub


Actuellement, le gnrateur le plus simple et le plus efficace est appel le gnrateur
B l u m B l u m S h u b d aprs les noms de ses inventeurs. Nous utiliserons labrviation
BBS, bien que de temps autre il soit appel gnrateur rsidu quadratique [200].
La thorie sous-jacente au gnrateur BBS est lie aux rsidus quadratiques modulo
n (voir 11.3). Voici comment il fonctionne:
Trouvez deux grands nombres premiers p et g qui soient congrus 3 modulo 4. Le
produit de ces nombres n = p x q est un entier de B l u m . Choisissez un autre entier
alatoire x qui soit premier par rapport n. Calculez
Xo = x 2 modulo n.
C est le germe du gnrateur.

17.10

Autres approches la conception dalgorithmes de chiffrement en continuas9

Maintenant, vous pouvez commencer calculer des bits. Le ie bit pseudo-alatoire est
le bit le moins significatif de x, o
Xi =

modulo n.

La proprit la plus trange de ce gnrateur est que vous navez pas calculer tous
les i 1 bits prcdents pour obtenir le 2e bit. Si vous connaissez p et q, vous pouvez
calculer le ie bit directement :
bi est le bit le moins significatif de Xi o Xi = Xq ^ mduIo ((p i)(/-i)) moc[

n.
Cette proprit signifie que vous pouvez utiliser ce gnrateur pseudo-aleatoire de bits
comme un cryptosystme de chiffrement en continu pour des fichiers accs alatoire.
La scurit de ce schma dpend de la difficult de factoriser n. Vous pouvez rendre n
public, ainsi tout le monde peut engendrer des bits en utilisant le gnrateur. Toutefois,
moins que les cryptanalystes puissent factoriser n, ils ne pourront jamais prdire la
sortie du gnrateur mme sous la forme d affirmations telles que le bit suivant a
51 % de chances d tre un 1 .
Il y a mieux, le gnrateur BBS est imprvisible gauche et imprvisible droite.
Cela signifie que, tant donn une suite engendre par le gnrateur, les cryptanalystes
ne peuvent pas prdire le bit suivant ou le bit prcdent de la suite. Sa scurit nest
pas base sur un gnrateur de bits compliqu que personne ne comprend, mais sur les
mathmatiques sous-jacentes la factorisation de n.
Cet algorithme est lent, mais il existe des amliorations. 11 semble que vous puis
siez utiliser plus que le bit le moins significatif de Xi comme bit pseudo-alatoire.
Daprs [1571, 1572, 1573, 36, 37], si t est la longueur de x lt les log2 bits les moins si
gnificatifs de x.Lpeuvent tre utiliss. Le gnrateur BBS est relativement lent et nest,
pas utile pour le chiffrement en continu. Toutefois, pour des applications de haute
scurit, telles que la gnration de clefs, ce gnrateur est le meilleur.

17.10

Autres approches la concep


tion dalgorithmes de chiffrement en
continu

Dans le cadre de lapproche par la thorie de linformation, le cryptanalyste est suppos


disposer de ressources illimites en temps et en puissance de calcul. Le seul chiffrement
en continu qui soit sr contre ce type d adversaire est le masque jetable (voir 1.5).
Pour les besoins de lillustration, faisons lhypothse que les masques sont stocks sur
des bandes magntiques. Deux bandes magntiques, lune du ct du chiffrement et
lautre du ct du dchiffrement, porteraient la mme suite de codons. Pour chiffrer,
on combine simplement par ou exclusif le texte en clair avec les bits sur la bande.
Pour dchiffrer, on combine par ou exclusif le texte chiffr avec les bits de lautre
bande identique. Comme les suites de codons sont vraiment alatoires, vous n utilisez
jamais deux fois la mme suite de codons. Si vous brlez les bandes aprs vous en tre
servi, vous avez le niveau de scurit parfait4.
4. Note du traducteur : cette technique est parfois appele bande usage unique .

Chapitre 17

440

Autres algorithmes de chiffrement en continu

Un autre chiffre en continu, dvelopp par Claus S c h n o r r , fait lhypothse que le


cryptanalyste na accs qu un nombre limit de bits du texte chiffr [1400]. Les
rsultats sont fortement thoriques et nont pas de valeur pratique, du moins pas encore.
Pour plus de dtails, consultez [1362, 1645, 1202].
Par un chiffrement en continu rendu alatoire, le cryptographe essaie de sassurer que
le cryptanalyste a un problme de taille non soluble. Lobjectif est daugmenter le
nombre de bits que le cryptanalyste doit manipuler, tout en gardant la clef secrte
petite. Cela peut tre rendu possible en utilisant une grande chane alatoire publique
pour le chiffrement et le dchiffrement. La clef spcifierait quelle partie de la chane doit
tre utilise pour le chiffrement et le dchiffrement. Le cryptanalyste, qui ne connat pas
la clef, devrait utiliser une attaque exhaustive en parcourant toute la chane alatoire.
Le niveau de scurit de ce type de chiffre peut tre exprim comme le nombre moyen
de bits que le cryptanalyste doit examiner avant que les chances de trouver la clef ne
soient meilleures que le simple tirage au sort.

Chiffre de Rip

v a n

in k le

James M

a s s e y et Ingemar I n g e m a r s s o n
ont propos le chiffre de Rip v a n
[566], ainsi appel parce que le destinataire doit recevoir 2n bits du texte
chiffr avant de tenter le dchiffrement5. Lalgorithme illustr par la figure 17.10 est
facile raliser, on peut dmontrer quil est sr et il est totalement inutilisable. D aprs
M a s s e y : On peut facilement garantir que le cryptanalyste ennemi aura besoin de

in k le

milliers dannes pour casser le chiffre, si quelquun est prt attendre des millions
dannes pour lire le texte en clair. D autres travaux partant de cette ide sont dcrits

dans [1579, 757].

Flux de bits
alatoires

Canal

Flux de bits___
du texte en clair

Texte
en clair

0-20 ans
(Le retard est secret et dpend de la clef)

ig .

17.10

Chiffre rendu alatoire de

-i

(multiplex)

Retard

Retard

Chiffre de Rip

van

in k le

iffie

Whietfield D i f f i e est le premier a avoir prsent ce schma [1364]. Les donnes sont
formes de 2" chanes alatoires. La clef k est une chane alatoire de n bits. Pour
chiffrer un message, Alice utilise la ke chane alatoire comme masque jetable. Elle
envoie le texte chiffr et les 2" chanes alatoires sur 2 n + 1 canaux de communication
diffrents.
5. Note du traducteu r: R ip VAN WlNKLE a dorm i pendant 20 ans.

17.11

Chiffrement en continu en cascade

441

Bernard qui connat k peut facilement choisir le bon masque jetable pour dchiffrer le
message. Estelle n a pas dautre choix que dexaminer toutes les chanes alatoires les
unes aprs les autres jusqu ce quelle trouve le bon masque jetable. Toute attaque
doit examiner un nombre de bits moyen de lordre de 2n. R u e p p e l fait remarquer
quen envoyant n chanes alatoires au lieu de 2", et en utilisant la clef pour spcifier
une combinaison linaire de ces chanes, la scurit est la mme.

Chiffre rendu alatoire de M a u r e r


Ueli M a u r e r a dcrit un schma bas sur la combinaison par ou exclusif de plusieurs
chanes de bits alatoires trs longues [1041, 1038, 1037]. La clef est lensemble des
positions de dpart dans chaque chane. Il se trouve que la presque totale scurit de
ce schma est prouvable, en calculant la probabilit de le casser selon la quant it de
mmoire dont dispose lattaquant. M a u r e r prtend que cela serait viable avec environ
100 chanes alatoires de 1020 bits. Numriser la surface entire de la Lune serait une
faon dobtenir autant de bits.

17.11

Chiffrement en continu en cascade

Si la performance nest pas primordiale, rien nempche de choisir plusieurs algorithmes


de chiffrement en continu et de les mettre en cascade. Il suffit de combiner par ou
exclusif toutes les sorties des gnrateurs avec le texte en clair pour obtenir le texte
chiffr. Si les clefs des gnrateurs sont indpendantes, le rsultat de Ueli M a u r e r
(voir 15.7) implique que la scurit de la cascade est au moins aussi grande que celle
du meilleur algorithme de la cascade. Elle est probablement beaucoup plus sre que
cela.
Les algorithmes en continu peuvent aussi tre combin de la mme manire que les
algorithmes par blocs (voir le chapitre 15). On peut mettre en cascade (voir 15.7) les
algorithmes de chiffrement en continu avec dautres algorithmes en continu ou aussi
avec des algorithmes de chiffrement par blocs.
Une ide intelligente consiste utiliser un algorithme, soit en continu, soit par blocs,
pour frquemment changer la clef dun algorithme rapide de chiffrement en continu (ou
mme un algorithme par blocs en mode O F B ). Peu importe la faiblesse de lalgorithme
rapide puisquun cryptanalyste naura jamais beaucoup de texte en clair chiffr avec
la mme clef.
Il faut trouver un compromis entre la taille de ltat interne de lalgorithme rapide
(ce qui influe sur la scurit) et la frquence avec laquelle vous pouvez vous permettre
de changer de clef. Le changement de clef doit tre assez rapide ; les algorithmes qui
prennent un long moment pour mettre en place la clef ne sont pas adapts pour ce
type d application. Le changement de clef devrait tre indpendant de ltat interne de
lalgorithme rapide.

Chapitre 17

17.12

Autres algorithmes de chiffrement en continu

Choisir un algorithme de chiffrement


en continu

Sil y a un enseignement tirer de ltude du chiffrement en continu, cest que de nou


velles sortes d attaques voient le jour avec une rgularit alarmante. Les algorithmes de
chiffrement en continu reposent souvent sur de considrables thories mathmatiques.
Ces thories permettent de prouver des proprits intressantes propos de lalgo
rithme, mais aussi de trouver de nouvelles attaques. Je minquite pour les algorithmes
base de R D R L pour cette raison.
Je prfre les algorithmes qui suivent davantage les traces des algorithmes de chif
frement par blocs: transformations non linaires, grandes tables-iS1, et ainsi de suite.
R C 4 est mon prfr, et SEAL arrive tout de suite derrire. Je serait trs intress de
voir des rsultats de cryptanalyse sur mes gnrateurs combinant des R D R L et des
R D R R ; cela semble un domaine trs fructueux de recherche creuser pour trouver
de relles conceptions. Vous pouvez utiliser un algorithme par blocs en mode O FB ou
C FB pour obtenir un algorithme de chiffrement en continu.
Le tableau 17.3 donne des mesures de vitesse de quelques algorithmes titre de com
paraison.

Tab.

17.3 - Vitesses de chiffrement en continu de quelques algorithmes sur un 486SX


____________________________________________
Algorithme
Vitesse de chiffrement
(en mgaoctets par seconde)
A5
5
P IR E
62
R C4
164
SEAL
381

33 MHz

17.13

Gnration de plusieurs flux par


tir dun seul gnrateur pseudo
alatoire de suites

Si vous avez besoin de chiffrer plusieurs canaux de communication en mme temps,


dans un multiplexeur par exemple, la solution simple consiste utiliser un gnrateur
pseudo-alatoire par canal. Cela pose deux problmes : cest coteux en matriel et
il faut synchroniser les diffrents gnrateurs. Il serait plus simple d utiliser un seul
gnrateur.
Une solution consiste donner une cadence plus rapide lhorloge du gnrateur. Si
vous voulez trois flux indpendants, oprez trois cycles dhorloge et envoyez 1 bit dans
chaque canal. Cette technique marche mais vous risquez d avoir du mal cedencer le
gnrateur aussi vite que vous le voudriez. Par exemple, si vous ne pouvez multiplier la
cadence du gnrateur que par 3, vous ne pourrez crer que trois flux. Un autre moyen

17.13
Gnration de plusieurs flux partir dun seul gnrateur pseudo-alatoire
de suites
448
consiste utiliser le mme flux pour tous les canaux avec dventuels dlais. Mais ce
nest pas sr.
Une ide vraiment intelligente [1496], brevete par la NSA, est illustre par la fi
gure 17.11. Dtournez la sortie de votre gnrateur favori vers un registre dcalage
usuel de m bits. A chaque impulsion d horloge, dcaler le registre de un bit vers la'
droite. Pour chaque flux de sortie, combinez par et le registre avec un vecteur de
contrle de m bits, qui identifie de manire unique ce flux, et combinez alors par ou ex
clusif les bits ensembles pour obtenir le bit de sortie de ce flux. Si vous voulez produire
plusieurs flux en parallle, vous avez besoin d un vecteur de contrle et dun tableau
logique de et/ou exclusif par flux.

Gnrateur

Vecteur de
contrle 2

Vecteur de
contrle 1

Sortie
de m bits

Vecteur de
contrle n

1 1
et logique

et logique

et logique

bit bit

bit bit

bit bit

ou exclusif

ou exclusif

ou exclusif

bit bit

bit bit

bit bit

Flux 2

Flux n

v
Flux 1

F ig. 17.11 - Gnrateur de plusieurs flux

Il faut tre vigilant sur un point. Si un seul des flux est une combinaison linaire des
autres, alors le systme peut tre cass. Mais si vous tes intelligent, cest, un moyen
sr et facile de rsoudre le problme.

Chapitre 17

444

17.14

Autres algorithmes de chiffrement en continu

Gnrateurs de suites vraiment ala


toires

Parfois, les gnrateurs pseudo-alatoires de suites cryptographiquement srs ne sont


pas suffisants. Il y a de nombreuses circonstances en cryptographie o vous dsirez des
nombres vraiment alatoires. La gnration de clefs est un des principaux exemples
d une telle situation. C est bien d engendrer des clefs cryptographiques alatoires
partir d un gnrateur pseudo-alatoire de suite, mais si un adversaire obtient une
copie de ce gnrateur pseudo-alatoire de suite et de toute autre information secrte
que vous auriez utilise pour produire les nombres, il peut crer les mmes clefs et
casser votre cryptosystme, quel que soit le niveau de scurit de votre algorithme. Des
suites engendres par un gnrateur de suites vraiment alatoires ne peuvent pas tre
reproduites. Personne, pas mme vous, ne peut reproduire la suite de bits partir de
ces gnrateurs.
Il y a un grand dbat philosophique quant savoir si lune de ces techniques permet
rellement de produire des bits vraiment alatoires. Je ne vais pas mattarder sur ce
dbat. L objet qui nous occupe ici est de produire des bits qui aient les mmes proprits
statistiques que des bits alatoires et qui ne soient pas reproductibles.
Limportant concernant nimporte quel gnrateur alatoire de suites est quil ait t
test. Il existe une littrature abondante ce sujet. Les tests de caractre alatoire sont
dcrits dans [864, 106]. Ueli M a u r e r a montr que tous ces tests peuvent tre dduits
de tentatives de comprimer la suite [1039, 1040]. Si vous pouvez comprimer une suite
alatoire, alors elle nest pas vraiment alatoire.
De toute faon, ce que nous avons, c est une bonne dose de magie noire. Le point prin
cipal est d engendrer une suite de bits que votre adversaire ne puisse deviner sans une
chance inhabituelle. Cela na lair de rien mais c est plus difficile que vous ne le pensez.
Je ne peux pas prouver quune de ces techniques engendre des bits alatoires, mais ces
techniques produisent des suii.es de bits qui ne peuvent tre facilement reproduites.
Pour plus de dtails, voyez [1378, 1377, 512].

Tables RAND
En

1955, l poque o les ordinateurs faisaient seulement leur app arition, la socit

R and
toires

o r p o r a t io n

a publi un livre qu i contenait u n m illio n de chiffres ala

[1300]. L e u r m thode est dcrite dans le livre:


Les chiffres alatoires de ce livre ont t produits par mlange alatoire
d une table de base engendre par une roulette lectronique. Brivement, un
source d impulsions de frquence alatoire, fournissant en moyenne 100000
impulsions environ par seconde, tait connecte environ une fois par seconde
par une impulsion de frquence constante. Des circuits de normalisation
des impulsions passaient les impulsions travers un compteur binaire 5
cases En principe, la machine tait une roulette 32 cases qui effectuait, en
moyenne, 3000 rvolutions environ par essai et qui produisait un nombre
par seconde. Un convertisseur binaire dcimal tait utilis pour convertir
20 des 32 nombres (les 12 autres taient ignors) et ne retenait que le
dernier chiffre des nombres de deux chiffres ; ce chiffre final alimentait une

17.14

Gnrateurs de suites vraiment alatoires

perforatrice IBM pour produire la table finale de chiffres alatoires sur


cartes perfores.
Le livre dcrit ensuite les rsultats de divers tests de caractre alatoire des donnes.
Il suggre galement comment utiliser le livre pour trouver un nombre alatoire :
Les lignes de la table des chiffres sont numrotes de 00000 19999.
Pour toute utilisation de la table, on doit dabord trouver une position
de dpart alatoire. Une procdure habituelle pour raliser ceci consiste
ouvrir le livre une page non utilise de la table de chiffres et choisir en
aveugle un nombre de 5 chiffres ; avec le premier chiffre rduit modulo 2 ce
nombre dtermine la ligne de dpart ; les deux chiffres droite du nombre de
5 chiffres initialement slectionn sont rduits modulo 50 pour dterminer
la colonne de dpart parmi la ligne slectionne. Pour se prmunir de la
tendance quont les livres de toujours souvrir la mme page et de la
tendance naturelle quont, les gens de choisir un nombre prs du centre de
la page, chaque nombre de 5 chiffres utilis pour dterminer une position
de dpart doit tre marqu afin de ne pas tre utilis une deuxime fois
cette fin.
La matire principale du livre est la table de chiffres alatoires. Elle les numre par
groupe de 5 chiffres 10097 32533 76520 13586 . . . raison de 50 par ligne
et de 50 lignes par page. La table continue ainsi sur 400 pages, ce qui, except pour
une section particulirement ose la page 283 qui indique 69696 , savre dune
lecture particulirement ennuyeuse. Le livre comprend galement une table des 100 000
carts types.
Ce qui est intressant propos de la table R A N D nest pas quelle contienne un
million de chiffres alatoires, mais quelle a t cre avant la rvolution informatique.
De nombreux algorithmes cryptographiques utilisent des constantes arbitraires aussi
appeles n o m b r e s m a g i q u e s . Choisir les nombres magiques partir de la table
RAND garantit quils nont pas t choisis pour quelque raison cache. Par exemple,
K h a f r e se sert de la table R A N D .

Utilisation de bruit alatoire


Le meilleur moyen de collecter un grand nombre de bits alatoires est de se raccorder
sur le caractre alatoire naturel du monde rel. Cette mthode ncessite la plupart
du temps du matriel spcialis, mais il y a des techniques que vous pouvez employer
avec les ordinateurs.
Trouvez un vnement qui a lieu souvent mais alatoirement : le bruit atmosphrique
dpassant un certain niveau, les chutes dun bambin qui apprend marcher, etc.
Mesurez lintervalle de temps entre un vnement et le suivant. Enregistrez-le. Mesurez
lintervalle de temps entre ce second vnement et le troisime. Enregistrez-le gale
ment. Si le premier intervalle de temps est plus grand que le second, produisez un 1
comme bit alatoire. Si le second intervalle de temps enregistr est plus grand que le
premier, produisez un 0 comme bit alatoire. Continuez ainsi pour le bit suivant.
Lancez une flchette sur le journal de votre choix. Comparez la lettre la plus proche de
la pointe et la lettre qui prcde celle-l. Produisez un 1 si la premire suit 1a deuxime
dans lordre alphabtique, et un 0 sinon.

Chapitre 17

Autres algorithmes de chiffrement en continu

Branchez un compteur Geiger votre ordinateur, comptez le nombre d missions pro


duites durant un intervalle de temps fix et gardez le dernier bit significatif. Ou encore,
mesurez le temps entre deux missions. (Comme la source radioactive se consume, le
temps moyen entre deux missions sallonge continuellement. Si vous voulez une source
de dure de vie suffisante, prenez le plutonium. Si vous craignez pour votre sant, vous
pouvez faire les corrections statistiques appropries.)
G.B. A g n e w a propos un vrai gnrateur alatoire de bits adapt lintgration
dans une puce VLSI [25]. C est une capacit semi-conducteurs (M ISC pour Mtal
Insulator Semiconduction Capacitor ). Deux dentre elles sont places proximit
lune de lautre et le bit alatoire est une fonction de la diffrence de charge entre
les deux. Un autre gnrateur alatoire de nombre en technologie LSI engendre un
flux de bits alatoires bas sur des instabilits de frquence d un oscillateur en boucle
ouverte [537]. Une puce commercialise par A T & T engendre des nombres alatoires
partir du mme phnomne [73]. M. G u d e a construit un gnrateur alatoire de
nombres qui collecte des bits alatoires partir de phnomnes physiques tels que la
dcroissance radioactive [669, 670]. Manfield R i c h t e r a dvelopp un gnrateur de
nombres alatoires bas sur le bruit thermique d une diode semiconductrice [1320].
Il parat que linterval de temps entre deux missions lumineuses dun atome de mercure
pig seraient alatoires. Exploitez cela. Mieux vaut finalement trouver une socit de
semi-conducteurs qui fabrique des puces gnrant des nombres alatoires ; elles existent.
Il y a aussi un gnrateur de nombres alatoires qui utilise le disque dur de lordinateur
[439]. Le gnrateur mesure le temps ncessaire pour lire un bloc du disque et utilise la
variabilit de ce temps comme source de nombres alatoires. Il filtre les donnes pour
enlever les structures provenant de la quantification, puis effectue une transforme de
Fourrier des vecteurs de nombres. Ceci retire le biais et la corrlation. Finalement
il tire les bits alatoires grce des frquences spectrale entre 0 et n normalises
lintervalle de temps unitaire. Une grande part des variations de la vitesse de rotation
du disque tant due aux turbulences de lair, il y a donc un caractre alatoire propre au
systme. Il y a pourtant des points noirs. Si vous gardez trop de bits de la sortie, vous
utilisez la transformation de Fourrier comme gnrateur, ce qui risque d tre prvisble.
Et il vaut mieux toujours lire le mme bloc du disque pour viter au filtrage davoir
retirer les structures provenant du gestionnaire de disque. Une ralisation de ce systme
permet de produire environ 100 bits par minute [439].

Utilisation de lhorloge de lordinateur


Si vous avez besoin dun seul bit alatoire (ou de quelques-uns), prenez le bit le moins
significatif de nimporte quel registre d horloge. Sur un systme U N IX, cela peut ne
pas tre tellement alatoire cause de diffrentes synchronisations potentielles mais
cela marchera bien sur un ordinateur personnel.
vitez dobtenir trop de bits de cette faon : utiliser la mme routine plusieurs fois
de suite peut facilement biaiser les bits engendrs de cette manire. Par exemple, si
chaque excution de la routine de gnration de bit utilise un nombre pair de clics
dhorloge, vous obtiendrez une suite infinie de la mme valeur de bit de ce gnrateur.
Si chaque excution ncessite un nombre impair de clics dhorloge, vous obtiendrez une
suite infinie de valeurs alternantes de ce gnrateur. Mme si la rsonance nest pas
aussi simpliste, le flux de bits rsultant sera loin d tre alatoire.

17.14

Gnrateurs de suites vraiment alatoires

Il existe un gnrateur de nombres alatoires fonctionnant de la manire suivante [929] :


Notre gnrateur de nombres vraiment alatoires... fonctionne en rglant
une alarme et en incrmentant rapidement un compteur dans un registre du
microprocesseur jusqu larrive dune interruption. Le contenu du registre
est alors combin par ou exclusif avec un tampon de sortie de un octet (en
tronquant ainsi les donnes du registre 8 bits). Une fois que le tampon
de sortie est rempli, il subit un dcalage circulaire vers la droite de 2 bits,
ce qui a pour effet de pousser les bits les plus actifs (et alatoires) de poids
faible vers les positions de poids fort. Le procd entier est rpt trois fois.
A la fin, chaque bit du tampon a touch un des deux bits les plus alatoires
du registre aprs interruption. On obtiendra donc n octets alatoires au
bout de 4n interruptions.
Cette mthode est trs sensible au caractre alatoire des interruptions systme et la
granularit de lhorloge. La sortie faisait bonne figure au cours de tests sur de relles
machines UNIX.

Mesure de caractristiques de la vitesse de frappe


Les rythmes de frappe au clavier des gens sont alatoires et en mme temps ne le sont
pas. Ils possdent assez dinformation pour permettre lidentification, mais ils sont
assez alatoires pour gnrer des bits alatoires. Mesurez le temps entre deux frappes
de touche successives et prenez ensuite le bit le moins significatif de ces mesures. Cette
technique pourrait ne pas marcher sur des terminaux U N IX, parce que les touches
utilises passent travers toute une srie de filtres avant datteindre votre programme.
Mais elle est adquate pour les ordinateurs personnels.
Idalement, vous ne devriez collecter quun bit alatoire par touche. En collecter plus
pourrait biaiser le rsultat en fonction des talents de dactylo de celui qui est au clavier.
Toutefois, cette technique est limite. Bien quil soit facile de demander quelquun
dentrer une centaine de mots quand il est temps d engendrer une clef, il nest pas
raisonnable de lui demander de taper un roman de 100000 mots pour engendrer un
flux de codons pour un masque jetable.

Biais et corrlations
Le dfaut majeur de tous ces systmes est quil peut y avoir des corrlations et des biais
dans les suites engendres. Le processus physique sous-jacent peut tre alatoire mais
il y a de nombreux instruments de mesures entre la partie numrique de l'ordinateur et
le dispositif physique. Ces instruments peuvent facilement introduire des biais et des
corrlations.
Un moyen dminer ce biais est de combiner par ou exclusif plusieurs bits ensemble.
Si un bit alatoire a un biais e en faveur de 0, alors la probabilit du rsultat 0 peut
tre crite :
P ( 0) = 0,5 + e.
Combiner par ou exclusif deux de ces bits donne :
P(Q) = (0,5 + e)2 + (0,5 - e)2 = 0,5 + 2 x e2.

Chapitre 17

Autres algorithmes de chiffrement en continu

Par le mme type de calcul, la combinaison par ou exclusif de 4 bits ddonne :


P ( 0) = 0,5 + 8 x e4.

Combiner par ou exclusif m bits convergera exponentiellement vers une probabilit


gale de 0 et de 1.
Une bien meilleure mthode consiste retirer tout biais de la source alatoire. Analysez
les paires de bits. Si deux bits sont identiques, jetez-les et analysez la paire suivante.
Si les deux bits sont diffrents, prenez le premier bit comme sortie du gnrateur. Ceci
limine compltement le biais. D autres techniques de rduction du biais reposent sur
la compression de donnes, et les transformes de Fourrier [512],
Le dfaut potentiel de ces deux mthodes est que sil y a une c o r r l a t i o n entre bits
adjacents, alors ces mthodes augmentent le biais. Un moyen de corriger cela est duti
liser plusieurs sources alatoires. Prenez quatre sources alatoires et combinez par ou
exclusif les bits ; ou prenez deux sources alatoires et analysez les bits par paires.
Par exemple, prenez une source radioactive et branchez un compteur G ei GER votre
ordinateur. Prenez une paire de diodes bruyantes et enregistrez un vnement
chaque fois que le bruit dpasse un certain seuil. Mesurez le bruit atmosphrique.
Prenez un bit alatoire de char-une des sources et combinez-les par ou exclusif pour
produire le bit alatoire. Les possibilits sont infinies.
Le simple fait quun gnrateur alatoire soit biais ne le rend pas ncessairement
inutilisable. Cela veut seulement dire quil est moins sr. Par exemple, Alice veut
engendrer une clef de 112 bits pour le DES T R I P L E , en disposant uniquement dun
gnrateur avec un biais vers 0 : il produit 55 % de 0 et 45 % de 1. Cela signifie quil
ny a que 0,99277 bit dentropie par bit de la clef, au lieu de 1 bit si le gnrateur
tait parfait. Martin, qui essaie de casser la clef, peut optimiser son attaque exhaustive
pour essayer la clef la plus probable en premier lieu ( 0 0 0 ... 0) et continuer ainsi vers
la clef la moins probable ( 1 1 1 ... l). A cause du biais, Martin peut esprer trouver la
clef en 2109 tentatives. Sil ny avait pas de biais, Martin devrait sattendre faire 2111
tentatives. La clef rsultante est moins sre, mais pas de faon apprciable.
*

Epuration du caractre alatoire


En gnral, le meilleur moyen de gnrer des nombres alatoires est de se trouver un
grand nombre d vnements apparemment alatoires et den extraire le caractre ala
toire. Les fonctions de hachage sont faites pour cela ; elles sont rapides et traiteront une
grande quantit de donnes avant de faire baisser les performances, tout en amliorant
le caractre alatoire de vos observations. Passez par des fonctions de hachage tout ce
qui vous passe sous la main et qui soit un peu alatoire. Essayez entre autres :
- une copie de chaque touche frappe,
les commandes de la souris,
- le numro de secteur, la date du jour, et la latence de recherche pour opration
sur le disque,
- la position courante de la souris,
- le numro de la ligne courante de balayage du moniteur,

17.14

Gnrateurs de suites vraiment alatoires

449

- le contenu de limage affiche,


- le contenu de la table dallocation des fichiers (FA T), des tables du noyau, etc.,
- les temps d accs et de modification du fichier /d e v /t t y ,
- la charge du processeur,
- le temps darrive des paquets du rseau,
- lentre d un microphone,
- le contenu du fichier /d e v /a u d io sans micro branch.
Si votre systme utilise des oscillateurs quartz diffrents pour le microprocesseur
et lhorloge, essayez de lire la date du jour dans une boucle serre. Sur certains sys
tme (mais pas tous), cela refltera le tremblement alatoire de phase entre les deux
oscillateurs.
Comme le caractre alatoire de la plupart de ces vnements provient de datations,
utilisez lhorloge la plus prcise possible. Un P C standard utilise une puce d horloge
Intel 8254 (ou une quivalente) cadence 1,1931818 MHz; aussi la lecture directe
du compteur vous donne une prcision de 838 nanosecondes. Pour ne pas fausser les
rsultats, vitez dchantillonner lors dune interruption.
Voici le code en C avec M D 5 (voir 18.5) comme fonction de hachage :
char c h a ineAleat[16];
/* Appelez souvent la fonction suivante sur une varit d vnements
* alatoires ou pseudo-alatoires pour brasser la chane alatoire.
* L a forme exacte et la longueur de evenAleat n importe pas du
* moment que son contenu soit un tant soit peu imprvisible.

*/
void b rasserAleat(char *evenAleat, unsigned int evenLong)

f
MD5_CTX md5;
M D5Init(&md5);
MD5MiseAJour(&md5,chaineAleat,siezof(chaineAleat));
MD5MiseAJour(&md5,evenAleat,evenLong);
MD5Final(chaineAleat,&md5);

}
Aprs suffisamment dappels bra sserA lea t () pour que chaineA leat soit assez ala
toire, vous pouvez en tirer des bits alatoires. Pour cela, M D 5 nous sert nouveau,
cette fois comme gnrateur doctets pseudo-alatoires en mode compteur.
long comptAleat;
void genAleat(char *buf, unsigned int longbuf)

f
MD5_CTX md5;
char t m p [16];
unsigned int n;
while(longbuf

!= 0) {

Chapitre 17

450
/*

Autres algorithmes de chiffrement en continu

Passer la chane alatoire dans la fonction de hachage

* avec un compteur.

*/
M D5Init(&md5);
MD5MiseAJour(&md5,chaineAleat,siezof(chaineAleat));
MD5MiseAJour(&md5,(unsigned char *)&comptAleat,
siezof(comptAleat));
MD5Final(tmp,&md5);
comptAleat++; /* Incrmenter le compteur */
/* Copier 16 octets,

ou la quantit requise, mais moins

* que le contenu du tampon de l utilisateur.

*/
n = (longbuf < 16) ? longbuf

: 16;

m e m c py(buf,t m p ,n ) ;
buf += n;
longbuf -= n;

>
>
La fonction de hachage est ici cruciale pour plusieurs raisons. Elle permet tout d abord
de gnrer facilement une quantit arbitraire de donnes pseudo-alatoires sans devoir
appeler brasserAleat () chaque fois. Dans les faits, le systme se passe lgamment
de lalatoire parfait lalatoire pratique quand la demande dpasse loffre. Dans ce
cas, il devient thoriquement possible d utiliser le rsultat dun appel genAleatO
pour dterminer le rsultat de lappel suivant ou prcdent. Mais cela exige dinverser
M D 5, ce qui nest pas faisable en pratique.
Ceci est important car la procdure ignore ce quil adviendra du rsultat de chaque
appel, il se peut quun appel serve gnrer un nombre alatoire pour un protocole
qui lenverra en clair, par exemple en rponse une requte d un attaquant. L appel
suivant peut servir dans une session sans rapport que lattaquant essaye de pntrer.
Il est clairement important quun attaquant ne puisse dduire le rsultat dun appel
d aucun autre.
Il reste un problme. chaineAleat [] doit tre suffisament alatoire avant le premier
appel genAleatO. Si le systme a fonctionn quelque temps avec un utilisateur au
clavier, il ny a pas de problme. Mais quen est-il d un systme automatique qui se
rinitialise tout seul sans quaucune commande au clavier ou la souris n advienne?
Ce problme est difficile. Une solution partielle consiste faire taper au clavier un
moment lutilisateur aprs la toute premire mise en route de la machine et den crer
un fichier de germes germeAleat [] utiliser chaque initialisation de la machine. Mais
ne sauver pas sur disque germeAleat [] directement. Un attaquant qui copierait se
fichier pourrait dterminer tous les rsultats gnrs par genAleatO aprs la cration
du fichier jusquau premier appel brasserAleat ().
Pour rsoudre ce problme, il faut appliquer la fonction de hachage germeAleat []
juste avant de le sauver. Quand le systme se rinitialise, il charge le fichier de germes,
le passe brasserAleat ( ) et le dtruit aussitt. Malheureusement, il reste la menace
du vol du fichier de germes entre la rinitialisation et sa destruction, et son utilisation
pour deviner les rsultats des futurs appels genAleatO. Je ne vois pas dautre
solution ce problme que dattendre larrive dvnements alatoires extrieurs aprs

17.H

Gnrateurs de suites vraiment alatoires

la rinitialisation avant dautoriser des appels genAleatO.

451

Chapitre 18

Fonctions de hachage sens


unique
18.1

Introduction

Une fonction de hachage sens unique, H (A i), opre sur un message A i de longueur
arbitraire. Elle fournit une valeur de hachage de longueur fixe h.
h = H (Ai), o h est de longueur m.

Il existe de nombreuses fonctions qui prennent une entre de longueur arbitraire et qui
fournissent une sortie de longueur fixe, mais les fonctions de hachage sens unique ont
les caractristiques additionnelles suivantes :
tant donn A i, il est facile de calculer h.
tant donn h, il est difficile de calculer A i.
tant donn A i, il est difficile de trouver un autre message A i' tel que
H ( M ) = H (M ').
Si Martin pouvait effectuer la partie difficile, cela minerait la scurit de tout protocole
utilisant la fonction de hachage sens unique. L essence mme des fonctions de hachage
est de fourinir une empreinte de A i qui soit unique. Si Alice signait A i en utilisant
un algorithme de signature numrique sur H (A i), et si Bernard pouvait produire un
Ai' tel que H (A i) = H (Ai'), alors Bernard pourrait prtendre quAlice a sign A i'.
Dans certaines applications il ne suffit pas que la fonction soit sens unique ; il faut
de plus quelle est ait une proprit appele rsistan ce la collision :
Il est difficile de trouver deux messages alatoires A i et A4' tels que
H (A l) = H (A i').
Vous vous rappelez de lattaque des anniversaires du paragraphe 7.4. Elle ne consiste
pas trouver un autre message A i' tel que I I (A4') = II(A i), mais trouver deux
messages alatoires A4 et A i' tels que H (A i) H (A i1).

Chapitre 18

Fonctions de hachage sens unique

Le protocole suivant, dcrit pour la premire fois par Gideon Y u v a l [1637], montre
comment Alice peut utiliser lattaque des anniversaires pour duper Bernard si la pro
prit supplmentaire ntait pas vrifie.
1 Alice prpare deux versions dun contrat, lune favorable Bernard, et lautre
qui lui fait faire ce que bon lui semble.

2 Alice apporte des modifications subtiles chaque document et calcule lem


preinte de chacun L
3 Alice compare les valeurs des ensembles dempreintes pour chacun des deux
documents, pour rechercher une paire qui concorde2. Elle reconstruit les deux
documents qui ont la mme empreinte.

4 Alice fait signer par Bernard la version du contrat qui lui est favorable en
utilisant un protocole o il signe seulement l'empreinte.

5 Plus tard, Alice remplace le contrat sign par Bernard par celui quil na pas
sign. Maintenant elle peut convaincre un juge que Bernard a sign cet autre
contrat.

Cest un problme srieux. (La morale de cette histoire est de toujours faire un petit
changement un document que vous signez.)
Il existe des attaques similaires qui peuvent tre montes en faisant lhypothse dune
attaque des anniversaires russie. Par exemple, les adversaires peuvent envoyer un
systme de contrle automatique (dun satellite, peut-tre) des messages alatoires
avec des signatures alatoires. Finalement, lun de ces messages alatoires aura une
signature valide. Les adversaires nauraient aucune ide de ce que la commande ferait,
mais si leur seul but consistait fausser le satellite, cela russirait.

Longueur des empreintes


Des fonctions de hachage sens unique 64 bits sont juste trop petites pour survivre
une attaque des anniversaires. La plupart des fonctions de hachage sens unique
pratiques produisent des empreintes de 128 bits. Cela oblige toute personne qui essaie
lattaque des anniversaires calculer 264 empreintes de documents alatoires pour en
trouver deux qui aient la mme empreinte. Le N IST, dans son standard de hachage
sr (SHS pour Secure Hash Standard ), utilise des empreintes de 160 bits. Cela rend
lattaque des anniversaires encore plus difficile, ncessitant le calcul de 280 empreintes
alatoirement.
Pour engendrer une empreinte plus longue que le produit de la fonction de hachage, la
mthode suivante a t propose :
1 Engendrez lempreinte dun message en utilisant une fonction de hachage
sens unique reprise dans cet ouvrage.

2 Joignez lempreinte au message.


1. L es c h a n g e m e n ts p e u v e n t co n s is te r : re m p la ce r u n e s p a c e p a r la c o m b in a is o n e sp a cere to u r en
a r r i re -e sp a ce , r a jo u te r un o u d e u x e sp a ces avan t les aller la lig n e , e tc . E n faisant o u n e fa isan t
p as un seul c h a n g e m e n t p arm i 3 2 lignes, A lic e p e u t fa cilem en t en g en d rer 2 32 d o cu m e n ts d iffrents.
2. Si la fo n c t io n d e h a ch ag e p r o d u it des valeurs d e 64 b it s seu lem en t, elle p o u r ra it v en tu ellem en t
tro u v e r une p a ire c o n c o r d a n te a v e c 2 32 v ersion s d e ch a q u e d o cu m e n t.

18.2

455

Snefru

3 Engendrez lempreinte de la jointure du message et de l empreinte du message.


4 Crez une grande empreinte constitue de lempreinte engendre ltape 1
jointe lempreinte engendre ltape 3.

5 Rptez les tapes 1 3 autant de fois que vous le voulez.


Bien que cette mthode n ait jamais t prouve sre ou non sre, plusieurs personnes
mettent de srieuses rserves son propos [1273, 859].

Survol des fonctions de hachage sens unique


Il nest pas facile de concevoir une fonction qui prenne en entre un paramtre de
longueur variable, et de la rendre sens unique. Dans la ralit, les fonctions de hachage
sens unique sont inspires des fo n ctio n s d e com p ression . Ces fonctions qui sont
sens unique, produisent une valeur de longueur n, partir d une entre de longueur m
suprieure n [1076, 416]. Lentre de la fonction de compression est un bloc de texte
et lempreinte du bloc prcdent (voir la figure 18.1). La sortie est lempreinte de tous
les blocs jusqu ce point. C est--dire que lempreinte du bloc M.i est donne par :
K =

Lempreinte en cours et le bloc de texte suivant servent de paramtre lapplication


suivante de la fonction de compression. Lempreinte du dernier bloc devient lempreinte
de tout le message.
M
i-l

kr

'

Fonction de hachage
sens unique

hi

F ig. 18.1 - Fonction de hachage sens unique


Le message d entre devrait contenir sous une certaine forme la reprsentation binaire
de la longueur du message en entier. Cette technique prvient un problme de scurit
ventuel, qui rsulterait de messages de longueurs diffrentes pouvant avoir la mme
empreinte [1076, 416]. Cette technique est parfois appele ren forcem en t-M D [941],
Diffrents chercheurs ont conjectur que si une fonction sens unique est sre pour un
seul bloc, alors cette mthode de hachage dune suite de longueur quelconque de blocs
est aussi sre, mais rien na t prouv [1147, 1075, 416].
On a beaucoup crit propos des fonctions de hachage sens unique. Pour plus
dindications mathmatiques consultez [1033, 793, 791, 1147, 1076, 416, 98, 858, 1275].
La thse de doctorat de Bart P R E N E E L [1273] est probablement lexpos le plus complet
concernant les fonctions de hachage sens unique.

18.2
Sn e f r u 3

Snefru
est une fonction de hachage sens unique conue par Ralph

3. Snefru, l instar de Khufu et Khafre, est un des pharaons d Egypte.

erkle

[1075].

456

Chapitre 18

S n e f r u calcule des em preintes de

Fonctions de hachage sens unique

128 ou 256 b its po ur des messages de longueur

arbitraire.

Au dpart, le message est dcoup en morceaux de (512 m) bits chacun (m est la


longueur de lempreinte). Si lempreinte calcule a 128 bits les morceaux sont longs de
384 bits ; si lempreinte a 256 bits, les morceaux ont 256 bits.
Le cur de lalgorithme est une fonction H qui hache une valeur de 512 bits en une
valeur de m bits. La fonction H a t conue pour quil soit facile de calculer lempreinte
d une entre mais quil soit impossible en pratique de calculer une entre qui a une
empreinte spcifique.
Les m premiers bits de la sortie de H forment lempreinte du bloc ; le reste est inutilis.
Le bloc suivant est joint lempreinte du bloc prcdent et hach nouveau. Le bloc
initial est joint une suite de 0. Aprs le dernier bloc (si le message n a pas une
longueur multiple de la taille de bloc, le dernier bloc est complt par une suite de 0),
les m premiers bits sont joints la reprsentation binaire de la longueur du message
et hachs une fois de plus.
La fonction H est base sur une autre fonction E qui est une fonction de chiffrement
par bloc rversible qui opre sur des blocs de 512 bits. La valeur de H est donne par
les m derniers bits de la sortie de E combins par ou exclusif avec les m premiers bits
de la sortie de E.
La scurit de S n e f r u dpend de la fonction E qui rend alatoires les donnes en
plusieurs passes. Chaque passe est compose de 64 rondes de brouillage. Dans chaque
ronde, un octet diffrent des donnes est utilis comme entre d une table 5 ; le mot
de sortie de la table-5' est combin par ou exclusif avec les deux mots voisins du
message. Les tables-5 sont construites d une manire similaire celles de K h a f r e . Il
y a galement quelques rotations. A lorigine, S n e f r u tait conu avec deux passes.

Cryptanalyse de Snefru
En utilisant la cryptanalyse diffrentielle, B i h a m et S h a m i r ont prouv que S n e f r u
128 bits et deux passes ntait pas sr [178].
Leur attaque trouve les paires de messages qui ont la mme empreinte en quelques
minutes.
Pour S n e f r u 1 2 8 bits, leur attaque est plus efficace que la recherche exhaustive
pour quatre passes ou moins. Une attaque des anniversaires contre S n e f r u requiert
264 oprations ; la cryptanalyse diffrentielle peut trouver une paire de messages ayant
la mme empreinte en 2 28,5 oprations pour un S n e f r u trois passes et en 2 44,5 op
rations pour un S n e f r u quatre passes. Trouver un message ayant une empreinte
donne par recherche exhaustive ncessite 2128 oprations ; la cryptanalyse diffren
tielle requiert 2 56 oprations pour un S n e f r u trois passes et 2 88 oprations pour un
S n e f r u quatre passes.
Bien que B i h a m et S h a m i r naient pas considr les empreintes 256 bits, ils ten
dirent leur analyse des empreintes de 224 bits. Par comparaison avec lattaque des
anniversaires, qui requiert 2112 oprations, ils peuvent trouver des messages avec la
mme empreinte en 212-5 oprations pour un S n e f r u deux passes, 233 oprations
pour un S n e f r u trois passes et 288 oprations pour un S n e f r u quatre passes.
Actuellement, M e r k l e recommande dutiliser S n e f r u avec au moins huit
passes [1079]. Toutefois, avec autant de passes, lalgorithme est nettement plus lent
que M D5 et SHA.

18.3

N - H ash

18.3

457

NHash

est un algorithme invent par des chercheurs de la N i p p o n T l p h o n a n d


, les mmes que ceux qui ont invent F E A L en 1990 [1111, 1112]. N - H a s h
utilise des blocs de message de 128 bits, une fonction de brouillage complique similaire
celle de F E A L et produit des empreintes de 128 bits.
Lempreinte de chaque bloc de 128 bits est une fonction du bloc et de lempreinte du
bloc prcdent :
N -H

ash

eleg raph

ho = / , o I est une valeur initiale quelconque


h i - g ( M i ,h i 1 ) M , h i_i.

Lempreinte du message entier est lempreinte du dernier bloc La valeur initiale quel
conque I peut tre n importe quelle valeur choisie par l'utilisateur (mme tous des
0).
La fonction g est une fonction complique. La figure 18.2 donne un aperu de lalgo
rithme. Au dpart, les 64 bits de gauche et les 64 bits de droite de lempreinte de 128
bits du bloc prcdent du message hi- 1 sont changs; les deux moitis sont ensuite
combines par ou exclusif avec 1010___ 1010 (sur 128 bits) en binaire et ensuite com
bines par ou exclusif avec le bloc courant du message A4 j. Cette valeur passe alors
dans N tapes (N 8 pour les figures) de traitement. L autre entre d une tape de
traitement est la valeur de lempreinte prcdente combine par ou exclusif avec une
constante binaire parmi huit.
Une tape de traitement est illustre par la figure 18.3. Le bloc de message est coup
en quatre valeurs de 32 bits. L empreinte prcdente est coupe galement en quatre
valeurs de 32 bits. La fonction f est donne par la figure 18.4. Les fonctions So et ,S'i
sont les mmes que pour FE A L :
S'(c.,b) = dcalage circulaire gauche de 2 bits de ((a + b) mod 256)

5i(a,6) = dcalage circulaire gauche de 2 bits de ((a + 6 + 1 ) mod 256).


La sortie d une tape de traitement devient lentre de ltape de traitement suivante.
Aprs la dernire tape de traitement, la sortie est combine par ou exclusif avec A4,
et 6 j_ i, et ensuite le bloc suivant est prt tre hach.

Cryptanalyse de NHash
Bert DEN B o e r a dcouvert un moyen de provoquer des collisions dans la fonction de
ronde de N- H a s h [1273]. BlHAM et S h a m i r ont utilis la cryptanalyse diffrentielle
pour casser N - H a s ii 6 rondes [176, 178]. Leur attaque particulire (il y en a certai
nement dautres) marche pour nimporte quel N qui est divisible par 3, et elle est plus
efficace que lattaque des anniversaires pour tout N infrieur 15.
La mme attaque permet de trouver des paires de messages qui ont la mme empreinte
pour N- H a SII 12 rondes en 256 oprations au lieu des 264 oprations ncessaires pour
une attaque exhaustive. N H a s h 15 rondes nest pas vulnrable la cryptanalyse
diffrentielle qui requiert dans ce cas 272 oprations.
Les concepteurs de lalgorithme recommandent dutiliser N H a s h avec au moins
8 rondes [1112]. tant donn le peu de sret de N - H a s h et de FE A L (et tant
donn sa lenteur avec 8 rondes), je conseille d utiliser un autre algorithme.

458

Chapitre 18

Fonctions de hachage sens unique

F i g . 18.2 - Aperu de N - H ash

18.4

M D4

M D 4 est une fonction de hachage sens unique conue par Ron R iv e s t [1329, 1330,
1331]. L acronyme MD vient de Message Digest et lalgorithme produit des
empreintes de 128 bits du message dentre.

Dans [1330], R iv e s t dcrit les objectifs de conception pour lalgorithme:


Scurit. Il est impossible de trouver par le calcul deux messages qui
aient la mme empreinte. Aucune attaque nest plus efficace que lattaque
exhaustive.
Scurit directe. La scurit de M D 4 nest base sur aucune hypothse,
telle que la difficult de la factorisation.
Vitesse. M D 4 est adapt pour des ralisations logicielles rapides. Il est

18-4

459

MD4

F ig. 18.3 - Une tape de traitement de N H A SU

bas sur un ensemble de manipulations de bits sur des oprandes de 32


bits.

Simplicit et compacit. MD4 est aussi simple que possible sans grandes
structures de donnes ni programme compliqu.
Favorise les architectures octet de poids faible en premier .
MD4 est optimis pour les architectures microprocesseurs (spcifiquement
les processeurs I n t e l ) ; des ordinateurs plus grands et plus rapides feront
les transformations ncessaires.

Aprs que lalgorithme ait t prsent pour la premire fois, Bert DEN BOER et Antoon
B o sselaers ont cryptanalys avec succs les deux dernires des trois rondes de lalgo
rithme [459]. Ralph M e r k l e a attaqu avec succs les deux premires rondes [459]. Eli
B iham dcrit une attaque par cryptanalyse diffrentielle possible contre deux tiers de
MD4 [166]. Bien que ces attaques ne puissent pas tre tendues lalgorithme complet,
R iv est a renforc lalgorithme. Le rsultat est M D5.

460

Chapitre 18

Fonctions de hachage sens unique

fU p )

S0( X ,, X 2 ) = rot2((X , + X 2 ) mod 256)


5, (X l, X 2) = rot 2((X , + X 2 + 1 ) mod 256)
X, et X 2 : entres de 8 bits

S0 et 5, : rsultats de 8 bits
rot 2 (7 ) : dcalage circulaire gauche de 2 bits de T

F ig. 18.4 - Fonction f

18.5

M D5

M D5 est une version amliore de M D 4 [1391, 1332]. Bien que plus complexe, il est
similaire de conception et il produit galement des empreintes de 128 bits.

Description de M D5
Aprs un traitement initial, M D5 manipule le texte d entre par blocs de 512 bits
diviss en 16 sous-blocs de 32 bits. La sortie de lalgorithme est un ensemble de 4 blocs
de 32 bits qui, joints ensemble, forment une seule empreinte de 128 bits.
Tout d abord le message est complt de manire ce que 64 bits de plus amneraient
sa longueur un multiple de 512. Ce remplissage se fait avec un seul 1 rajout la fin
du message suivi d autant de 0 que ncessaire. Ensuite, une reprsentation de 64 bits
de la longueur totale du message (avant que le remplissage ne soit effectu) est jointe
au rsultat. Ces deux tapes servent rendre la longueur du message multiple de 512
bits (ce qui est ncessaire pour la suite de lalgorithme), tout en sassurant que des
messages diffrents nauront pas lair similaires aprs le remplissage.
Quatre variables de 32 bits sont initialises :
A = 0x01234567

18.5

461

MD5

B = 0x89ABCDEF
C = 0xFEDCBA98
D = 0x76543210.

On les appelle variables de chanage .


Maintenant, la boucle principale de lalgorithme commence. Cette boucle est effectue
autant de fois quil y a de blocs de 512 bits dans le message traiter.
Les quatre variables sont copies dans d autres variables A dans A A , B dans B B , C
dans C C et D dans D D .
La boucle principale a 4 rondes (M D 4 navait que 3 rondes), toutes trs similaires.
Chaque ronde consiste en 16 excutions dune opration. Chaque opration calcule une
fonction non linaire de trois des variables A, B , C et D. Ensuite elle ajoute au rsultat
la quatrime variable, un sous-bloc et une constante. Ce nouveau rsultat est ensuite
dcal circulairement vers la gauche dun nombre variable de bits et ensuite ajout
lune des A , B, C, D. Finalement ce dernier sultat remplace lune des A, B , C, D.
Voir les figures 18.5 et 18.6.

F ig .

18.5

Boucle principale de M D5

Il y a 4 fonctions non linaires, une diffrente pour chaque ronde4 :


F (X ,Y ,Z )

( X A Y ) V (--X A Z)

G (X ,Y ,Z )

( X A Z) V (Y A -<Z)

H (X ,Y ,Z )

X Y Z

I{X ,Y ,Z )

Y (X V iZ ).

Ces fonctions sont conues de telle manire que si les bits correspondants de X , Y et
Z sont indpendants et non biaiss, alors les bits du rsultat sont aussiindpendants
et non biaiss. La fonction F est la conditionnelle bit bit : si X , alorsY, sinon Z. La
fonction H est loprateur de parit bit bit.
4. Signification des oprateurs logiques : A dn ote le et logique logique, V dnote le ou in clu sif ,
i dnote la ngation et ffi dnote le ou exclu sif .

Chapitre 18

462

F ig .

18.6

Fonctions de hachage sens unique

Une opration de M D5

Si M .3 reprsente le j e sous-bloc du message (j allant de 0 15), et si Os reprsente


un dcalage circulaire gauche de s bits, les quatre oprations de base sont :
F F{a,b,c,d,M 3 ,s,ti) dnote a b + ((a + F(b,c,d) + A i 3 -F U) <3 s),
GG(a,b,c,d,4J,s,tl ) dnote a b + ((a + G(b,c,d) + A i 3 + ti) O s),
H H (a,b,c,d,M j ,s,t,) dnote a = b + ((a + H(b,c,d) + M .3 + U ) O s),
lI(a,b,c,d,Al 3 ,s,ti) dnote a = b + ((a + I(b,c,d) + A4 3 + tl) O s).

Les 4 rondes (64 tapes) sont donnes par5 :


ronde 1 :
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF

(A,
(D,
(C,
(B,
(A,
(D,
(C,
(B,
(A,
(D,
(c ,
(B,
(A,
(D,
(C,
(B,

B,
A,
D,
C,
B,
A,
D,
C,
B,
A,
D,
c,
B,
A,
D,
C,

c,
B,
A,
D,
c,
B,
A,
D,
C,
B,
A,
D,
c,
B,
A,
D,

D,
c,
B,
A,
D,
C,
B,
A,
D,
C,
B,
A,
D,
C,
B,
A,

M[ 0],
M[ 1],
M[ 2],
M[ 3],
M[ 4],
M[ 5],
M[ 6],
M[ 7],
M [ 8] ,
M[ 9] ,
M[10] ,
M[ll] ,
M[12] ,
M[13] ,
M[14] ,
M [15] ,

7,
12,
17,
22,
7,
12,
17,
22,
7,
12,
17,
22,
7,
12,
17,
22,

0xd76aa478)
0xe8c7b756)
0x242070db)
Oxclbdceee)
Oxf57c0faf)
0x4787c62a)
0xa8304613)
Oxfd469501)
0x698098d8)
0x8b44f7af)
Oxffff5bbl)
0x895cd7be)
0x6b901122)
0xfd987193)
0xa679438e)
0x49b40821);

ronde 2 :
GG (A, B, c , D, M[ 1],

5, Oxf61e2562)

5. N o te d u tr a d u c t e u r : M [j] d n o t e le j e so u s -b lo c .

18.5

463

MD5

GG (D ,
GG (C ,
GG (B ,
GG (A ,
GG (D ,
GG (C ,
GG (B ,
GG (A ,
GG (D ,
GG ( c ,
GG (B ,
GG (A ,
GG (D ,
GG (C ,
GG (B ,

A,
D,
c,
B,
A,
D,
c,
B,

B,
A,
D,
C,
B,
A,
D,
C,

A, B,
D, A,
c , D,
B, c ,
A, B,
D, A,
c , D,

c,
B,
A,
D,
c,
B,
A,
D,
c,
B,
A,
D,
c,
B,
A,

9 , 0 x c0 4 0 b 3 4 0 )
14, 0x265e5a51)
2 0 , 0 x e9 b6c7aa)
M[ 5 ] ,
5 , 0 x d 6 2 f1 0 5 d )
M [1 0 ],
9 , 0x02441453)
M[1 5 ] , 1 4 , 0 x d 8 a le 6 8 1 )
M[ 4 ] , 2 0 , 0 x e 7 d 3 fb c 8 )
M[ 6 ] ,

H t ll],
M[ 0 ] ,

M[ 9 ] ,
M [1 4 ],
M[ 3 ] ,
M[ 8 ] ,
M [13] ,
M[ 2 ] ,
M[ 7 ] ,
M [1 2 ],

5,
9,
14,
20,

0 x 2 1 e lc d e 6 )
0 x c3 3 7 0 7 d 6 )
0 x f4 d 5 0 d 8 7 )
0 x 4 5 5 a l4 e d )

5 , 0xa9e3e905)
9 , O x fc e fa 3 f8)
1 4 , 0 x 6 7 6 f0 2 d 9 )
2 0 , 0 x 8 d 2 a 4 c 8 a );

ronde 3 :
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH
HH

(A ,
(D ,
(c ,
(B ,
(A ,
(D ,
(C ,
(B ,

B,
A,
D,
c,
B,
A,
D,
c,
B,

c,
B,
A,
D,
c,
B,
A,
D,

D,
c,
B,
A,
D,
c,
B,
A,

M[ 5]
M[ 8 ]
M [ll]
M [14]

M[ 1]
M[ 4 ]
M[ 7]
M [10]
D, M [13]
c , M[ 0]
B , M[ 3 ]
A, M[ 6]
D, M[ 9]
c , M [12]
B, M [15]
A, M[ 2]

4 , 0 x fffa 3 9 4 2 )
u , 0x877l f 681)
16, 0x6d9d6122)
2 3 , 0 x fd e 5 3 8 0 c )
4 , 0xa4beea44)
u , 0 x 4 b d e c fa 9 )
1 6 , O x f6 b b 4 b 6 0 )
2 3 , 0 x b e b fb c 7 0 )
4 , 0x 2 8 9b7ec6)
u , 0 x e a a l2 7 f a )
1 6 , 0 x d 4 e f3 0 8 5 )
2 3 , 0 x 0 4 8 8 ld 0 5 )
4 , 0 x d 9 d 4 d 0 39 )
11, 0xe6db99e5)
16, O x lfa 2 7 c f8)
2 3 , 0xc4a c5 6 65 )

(A ,
(D ,
(c ,
(B ,
(A ,
(D ,
(C ,
(B ,

A,
D,
c,
B,
A,
D,
c,

(A ,
(D ,
(c ,
(B ,
(A ,
(D ,
(C ,
(B ,
(A ,
(D ,

B , c , D, M[ 0 ] ,
6,
A, B, c , M[ 7 ] , 1 0 ,
D, A, B, M [14] , 1 5 ,
C, D, A, M[ 5 ] , 2 1 ,
B, c , D, M [12] ,
6,
A, B, C, M[ 3 ] , 1 0 ,
D, A, B, M [10] , 1 5 ,
c , D, A, M[ 1 ] , 2 1 ,
B, c , D, M[ 8 ] ,
6,
A, B, c , M [15] , 1 0 ,

c,
B,
A,
D,
c,
B,
A,
D,

ronde 4 :
1 1

II
II
II
II
II
II
II
II
II

O x f4 2 9 2 2 4 4 )
0 x 4 3 2 a ff97)
0xab9423a7)
0 x fc 9 3 a 0 3 9 )
0 x 6 5 5 b 5 9 c3 )
0 x 8 f0 c c c 9 2 )
O x ffe ff4 7 d )
0 x 8 5 8 4 5 d d l)
0 x 6 fa 8 7 e 4 f)
0 x fe 2 c e 6 e 0 )

Chapitre 18

464
II
II
II
II

II
II

(C , D, A, B,
(B , C, D, A,
(A , B, c , D,
(D , A, B, c ,
( c , D, A, B,
(B , c , D, A,

M[ 6 ] , 1 5 ,
M [13] , 2 1 ,
M[ 4 ] ,
6,
M [ll] , 10,
M[ 2 ] , 1 5 ,
M[ 9 ] , 2 1 ,

Fonctions de hachage sens unique.

0xa3014314)
0 x 4 e 0 8 1 1 a l)
0 x f7 5 3 7 e 8 2 )
0 x b d 3 a f2 3 5 )
0x2ad7d2bb)
0xeb86d391)

Les constantes tz furent choisies de la manire suivante :


ltape i, L est la partie entire de 232 x abs(sin(*)), o i est exprim en
radian.
Aprs tout cela, A, B, C et D sont ajoutes AA , B B , C C , D D respectivement et
lalgorithme continue avec le bloc suivant de donnes. Le rsultat final est la jointure
de AA, B B , C C , D D .

Scurit de M D5
Ron R i v e s t dcrit les amliorations de M D5 par rapport M D 4 [1332] :
1. Un quatrime ronde a t ajoute.
2. Chaque tape a maintenant une constante additive unique.
3.

La fonction G de la 2e ronde remplace (X A Y ) V (X A Z) V (Y A Z) par (X A


Z ) V ( f A ~'Z), afin de rendre G moins symtrique.

4. Chaque tape ajoute maintenant le rsultat de ltape prcdente. Cela favorise


un effet davalanche plus rapide.
5. Lordre daccs des sous-blocs est chang dans les 2e et 3e rondes afin de rendre
les motifs moins similaires.
6. Le nombre de dcalages de chaque ronde a t approximativement optimis pour
obtenir un effet d avalanche plus rapide. Les dcalages circulaires sont diffrents
dune ronde lautre.
Tom BERSON a essay d utiliser la cryptanalyse diffrentielle contre une seule ronde de
M D5 [151] mais son attaque est loin dtre efficace contre les 4 rondes. Une attaque
nettement mieux russie de Bert DEN B o e r et Antoon BOSSELAERS peut produire des
collisions en utilisant la fonction de compression de M D5 [460, 1344, 1348]. Cela ne
donne pas des attaques pratiques contre des applications concrtes de M D5 et cela
ne remet pas en cause lutilisation de M D5 dans les algorithmes de chiffrement la
L u b y - R a c k o f f (voir 14.11). Cela veut simplement dire que lun des principes de
conception de M D 5 concevoir une fonction de compression rsistante aux collisions a t viol. Mme sil est vrai que la fonction de compression semble possder une
faiblesse, mais sans consquence sur la scurit de la fonction de hachage en pratique ,
je reste circonspect quant lutilisation de M D5

18.6

MD2

18.6

465

M D2

MD2 est encore une autre fonction de hachage sens unique conue par Ron
R i v e s t [810,1346]. Elle est utilise, avec M D 5, dans les protocoles PE M (voir 24.10).
La scurit de M D 2 dpend dune permutation alatoire de lensemble de tous les
octets. Cette permutation est fixe, et dpend des dcimales de n. Elle sera not
Sq,Si, . . . ,5255 Pour calculer lempreinte d un message A4, procdez ainsi :
1 Compltez le message avec i octets de valeur i de sorte que sa longueur en
octets devienne un multiple de 16.
2

Accolez une somme de contrle de 16 octets au message.

3 Initialisez un bloc de 48 octets : X o ,X k, . . . , A 4 7 . Mettez les 16 premiers octets


de X zro, copiez les 16 premiers octets du message dans les 16 suivants, et
remplissez les 16 derniers avec le rsultat de la combinaison par ou exclusif du
premier tiers de X avec le second tiers de X .

4 Appliquez la fonction de compression :


t= 0
Pour j variant de 0 17 et k variant de 0 47, effectuer:
t = X k S t
Xk= t
t = (t + j ) modulo 256

5 Copiez le deuxime morceau de 16 octets du message dans le second tiers de X


et remplissez le troisime tiers de X avec le rsultat de la combinaison par ou
exclusif du premier tiers de X avec le second tiers de X .
6

Excuter ltape 4 Rptez les tapes 5 et 4 avec chaque morceau de 16 octets


du message.

7 Les 16 premiers octets de X constituent l empreinte du message.


Bien quaucune faiblesse nait t trouve dans M D2 (consulter [1273]), il est plus lent
que la plupart des autres fonctions de hachage sens unique suggres.

18.7

Algorithme sr de hachage SHA

LInstitut national des standards et de la technologie amricain ainsi que lAgence


nationale de scurit amricaine ont conu lalgorithme sr de hachage (SHA pour
Secure Hash Algorithm ) pour tre utilis dans le D SA (voir 20.2) [1174]6. D aprs
le Fdral Register [542] :
Un standard fdral de traitement de linformation [amricain] (FIPS
pour Fdral Information Processing Standard ) est propos pour le
standard de hachage sr (SHS). Cette proposition de standard spcifie un
6.
Le standard est le standard d e hachage sr (SHS pou r S ecu re H a sh S ta n d a rd ) ; SH A est
lalgorithm e utilis dans ce standard.

Chapitre 18

466

Fonctions de hachage sens unique

algorithme de hachage sr (SH A) pour tre utilis avec le standard de


signature numrique [(DSS)]. De plus, pour les applications ne ncessitant
pas de signatures numriques, le SHA doit tre utilis chaque fois quun
algorithme de hachage sr est requis pour les applications fdrales.
E t:
Ce standard spcifie un algorithme de hachage sr (SH A), qui est n
cessaire pour garantir la scurit de lalgorithme de signature numrique
(D SA ). Quand un message de nimporte quelle longueur infrieure 264
est donn en entre, le SHA produit une sortie de 160 bits appele mes
sage abrg7. Le message abrg est alors fourni comme entre au DSA
qui calcule la signature du message. Signer le message abrg plutt que
le message dentre amliore souvent lefficacit du processus parce quha
bituellement le message abrg est nettement plus court que le message
dentre. Le mme message abrg doit tre obtenu par le vrificateur de
la signature quand la version reue du message est utilise comme entre
la fonction SHA. Le SHA est qualifi de sr parce quil est conu pour
quil soit impossible de retrouver par le calcul un message correspondant
un message abrg donn, ou de trouver deux messages diffrents qui
produiraient le mme message abrg. Tout changement un message en
transit produira, avec une trs haute probabilit, un message abrg diff
rent et la vrification de la signature chouera. Le SHA est bas sur des
principes similaires ceux utiliss par le professeur Ronald L. R i v e s t du
M IT quand il conut lalgorithme de message abrg M D 4 [1330] et est
troitement calqu sur cet algorithme.
SHA produit des empreintes de 160 bits, ce qui est plus long que ce que produit MD5.

Description du SHA
Au dpart, le message est complt de manire ce que sa longueur en bits soit un
multiple de 512. Le remplissage est exactement le mme que celui de M D5 : ajoutez
dabord un 1 suivi dautant de 0 que ncessaire pour que 64 bits manquent par rapport
un multiple de 512 et enfin une reprsentation en 64 bits de la longueur du message
avant remplissage.
Cinq variables (M D 5 avait 4 variables, mais SHA produit une empreinte de 160 bits)
sont initialises de la faon suivante :
A
B
C
D
E

= 0x67452301
= 0xEFCDAB89
=

0x98BADCFE

= 0x10 3 2 5 4 7 6
= 0xC3D2ElF0.

La boucle principale de lalgorithme commence alors. Elle traite le message 512 bits
la fois et continue tant quil y a des blocs de 512 bits.
7.
N ote du traducteur : le term e m e s s a g e a b r g est utilis ici com m e traduction littrale de
lexpression anglaise m e s s a g e d tg est . Il s agit en fait de ce qui a t appel tou t au long de cet
ouvrage une e m p r e in te .

18.7

Algorithme sr de hachage S H A

467

Premirement, les 5 variables sont copies dans des variables diffrentes : A dans AA ,
B dans B B , C dans C C , D dans D D et E dans E E .

La boucle principale a 4 rondes de 20 oprations chacune (M D 5 a 4 rondes de 16


oprations chacune). Chaque opration effectue une opration non linaire sur trois
des variables A, B , C et D , et effectue des dcalages et des additions similaires ceux
de M D5.
Lensemble des oprations non linaires de SHA sont donnes par :
ft(X ,Y ,Z )
ft(X ,Y ,Z )
ft(X ,Y ,Z )
ft(X ,Y ,Z )

= (X A Y ) V (~>X A Z), pour t entre 0 et 19,


X Y Z , pour t entre 20 et 39,
= ( X A Y ) V (X A Z) V (Y A Z ), pour t entre 40 et 59,
= X Y Z, pour t entre 60 et 79.

Cet algorithme utilise galement 4 constantes8 :


K t = 0x5A 827999, pour t entre 0 et 19,
K t = 0x6ED9EBAl, pour t entre 20 et 39,
K t 0x8FlBBCDC,pour t entre 40 et 59,
Kt 0xCA62ClD6, pour t entre 60 et 79.

Le bloc du message dcoup en 16 mots de 32 bits (A4o A4is) est transform en


80 mots de 32 bits (Wo W 79 ) en utilisant lalgorithme suivant9 :
Wt M-t, pour t 0 15,
W t = Wt- 3 Wt s W t- 1 4 W t- 1 6 , pour t = 16 79.

Si t est le numro de lopration (de 1 80), A4 , reprsentele j esous-blocdu message


(j allant de 0 15), et que Os reprsente un dcalagecirculaire gauche de s bits,
alors la boucle principale ressemble :
Pour t variant de 0 79,
T E M P = (A o 5) + ft(B ,C ,D ) + E + W t + K t
E D
D C
C = (B o 30)
B A
A = TEM P.

La figure 18.7 illustre une opration Le dcalage des variables a le mme effet que
lutilisation de diffrentes variables diffrents endroits dans MD5.
Aprs tout cela, A, B , C, D et E sont ajouts AA , B B , C C , D D et E E res
pectivement et lalgorithme passe au bloc de donnes suivant. La sortie finale est la
juxtaposition de A A , B B , C C , D D et E E .
8. Si vous vous dem andez d o ces constantes viennent: 0x5A827999 \ A j 4 . 0x6ED9EBAl = v^3/4,

0x8FlBBCDC = \ /4 et 0xCA62ClD6 = vT /4 .
9. Une anecdote intressante : la spcification originale de SH A ne contenait pas le dcalage circu
laire gauche. La m odification corrige une im perfection technique qui rendait le standard moins sr
que prvu [545]. La N SA a refus de rvler la nature exacte de cette im perfection.

Chapitre 18

468

Fonctions de hachage sens unique

F ig. 18.7 - Une opration de SHA

Scurit de SHA
SHA est trs similaire M D4. Les changements principaux sont laddition dune tape
dexpansion, la sommation de la sortie de ltape prcdente lentre de ltape sui
vante pour obtenir un effet d avalanche. Ron R i v e s t a rendu publics les choix de
conception de M D5 mais les concepteurs de SHA ne lont pas fait. Voici les amliora
tions apportes par R lV E S T dans M D 5 par rapport M D 4 et leur comparaison avec
SH A:
1. Une quatrime ronde a t ajoute. SHA fait de mme. Toutefois, la 4e ronde
de SHA utilise la mme fonction / que la 2e ronde.
2. Chaque tape a maintenant une constante additive unique. SHA garde le
schma de M D4 en rutilisant la mme constante au sein de chaque groupe de
20 oprations.
3. La fonction G de la 2e ronde remplace (X A Y ) V (X A Z) V (Y A Z) par

( X A i ? ) V (Y A -'Z ), afin de rendre G moins symtrique. SH A utilise la fonction


de M D 4 : (A A Y ) V (X A Z) V (F A Z)

18.8

R IP E -M D

469

4. Chaque tape ajoute maintenant le rsultat de ltape prcdente. Cela favorise


un effet davalanche plus rapide. Ce changement a galement t effectu dans

SHA. La diffrence dans SHA est quune cinquime variable est ajoute et non
pas B , C ou D qui sont dj utilises dans f t. Ce changement subtil rend lattaque
DEN B o e r - B o s s e l a e r s contre M D5 impossible contre SHA.
5. L ordre daccs des sous-blocs est chang dans les 2e et 3e rondes afin de rendre
les motifs moins similaires. SHA est compltement diffrent, puisquil utilise
un code cyclique correcteur d erreurs.
6. Le nombre de dcalages de chaque ronde a t approximativement optimis
pour obtenir un effet davalanche plus rapide. Les quatre dcalages circulaires
utiliss dans une ronde sont diffrents de ceux des autres rondes. SHA utilise

un dcalage circulaire constant dans chaque ronde. Le nombre de dcalages est


un nombre premier par rapport la taille des mots, tout comme dans MD4.
Cela conduit la comparaison suivante: SHA ressemble M D 5 avec laddition dune
transformation d expansion , une ronde supplmentaire et un meilleur effet d ava
lanche; M D 5 ressemble M D4 avec un mlange de bit amlior, une ronde suppl
mentaire et un meilleur effet d avalanche.
Il ny a pas dattaque cryptographique connue contre SHA. Et comme il produit une
empreinte de 160 bits, il est plus rsistant une attaque exhaustive (y compris lattaque
des anniversaires) que les autres algorithmes couverts par ce chapitre.

18.8

R IP E -M D

R IP E -M D a t dvelopp par le projet R IP E [1316] de la Communaut europenne


(voir 25.7). Cet algorithme est une variante de M D4 conue pour rsister toutes
les attaques cryptanalytiques connues. Les rotations et lordre des mots du message
sont modifis. De plus, deux versions de lalgorithme, qui diffrent seulement par les
constantes, sont excutes en parallle. Aprs chaque bloc, la sortie des deux versions
est ajoute aux variables de chanage. Il semble que cela rende lalgorithme trs rsistant
la cryptanalyse.

18.9

HAVAL

H AVAL est une fonction de hachage sens unique de longueur variable [1648]. Cest
une variante de M D 5. HAVAL manipule les messages par blocs de 1024 bits, deux fois
la taille de M D5. Il utilise des variables de chanage de 32 bits, deux fois la longueur de
celles de M D5. Il a un nombre variable de rondes, de 3 5 (chaque ronde a 16 tapes),
et il peut produire des empreintes de 128, 160, 192, 224 et 256 bits.
HAVAL remplace les fonctions non linaires simples de M D5 par des fonctions
7 variables fortement non linaires. Chaque ronde utilise une seule fonction mais,
chaque tape, une permutation diffrente est applique aux entres. Il y a un nouvel
ordre de traitement des blocs du message et chaque tape (sauf la premire) utilise une
constante additive diffrente. Il y a aussi deux rotations.

Chapitre 18

470

Fonctions de hachage sens unique

Le cur de lalgorithme est10 :


T E M P = (f(j,A ,B ,C ,D ,E ,F ,G ) < 7 ) + (H < 11) + Af[i][r(j)] + K (j);
H = G; G = F ; F = E\ E = D ; D = C ; C = B ; B A ; A T E M P .

Le nombre variable de rondes et la longueur variable de sortie donnent 15 versions


diffrentes de lalgorithme Lattaque de DEN B o e r et B o s s e l a e r s contre M D5 [460]
nest pas applicable HAVAL cause de la rotation applique a H .

18.10

Autres fonctions de hachage sens


unique

Ron R i v e s t a conu une autre fonction de hachage, appele MD3. Elle avait plusieurs
imperfections et elle nest jamais sortie du laboratoire, bien quune description ait
rcemment t publie dans [1346].
Un groupe de chercheurs de l University of Waterloo a propos une fonction de hachage
sens unique base sur lexponentiation itre dans Z j 2593 [26]. Dans ce schma, un
message est divis en blocs de 593 bits. Les blocs sont successivement soumis Iex
ponentiation, en commenant par le premier bloc. Chaque exposant est le rsultat du
calcul avec le bloc prcdent ; le premier exposant est donn par un vecteur d initiali
sation.
Ivan D a m g r d a conu une fonction de hachage sens unique base sur le problme
des empilements (voir 19.2) [416] ; il peut tre cass en 232 oprations environ [294,
1242, 787].

Les automates cellulaires de Steve W o l f r a m [1611] ont t proposs comme base


pour des fonctions de hachage sens unique. Une premire ralisation [239] nest pas
sre [1060, 410]. Une autre fonction de hachage sens unique, CELLHASH [388, 410] et
une version amliore S u b h a s h [388, 405, 407] sont bases sur des automates cellulaires
et sont toutes les deux destines a des ralisations matrielles. B o o g n i s h mlange les
principes de conception de C e l l h a s h avec ceux de M D 4 [405, 409]. S t e p R i g h t U p
peut aussi servir de fonction de hachage sens unique [405].
Claude ScHNORR a propos une fonction de hachage sens unique base sur la trans
forme de Fourier discrte, appele F F T H a s h , au courant de lt 1991 [1402] ; elle
fut casse quelques mois plus tard par deux groupes indpendants [406, 91]. S c h n o r r a
propos une version rvise, appele F F T H a s h II (la version prcdente fut rebapti
se F F T - H a s h I) [1405] qui fut casse quelques semaines plus tard [1569]. S c h n o r r a
propos d autres modifications [1407, 1408] mais, tel quil est maintenant, lalgorithme
est nettement plus lent que les autres de ce chapitre. Une autre fonction du nom de

S L 2 [1534] nest pas sre [307].


D autres travaux thoriques sur la construction de fonction de hachage sens unique
partir de fonctions sens unique et de permutations sens unique sont dcrits
dans [415, 1147, 1354].
10. N ote du traducteu r: le lecteur intress trouvera la description des intervalles p ou r i e t j , ainsi
que la faon de diviser le message M et la signification de la fonction r dans l article original [1648].

18.11

18.11

Utilisation dalgorithmes de chiffrement par blocs

471

Utilisation dalgorithmes de chiffre


ment par blocs

Il est possible dutiliser un algorithme de chiffrement par blocs comme fonction de


hachage sens unique. L ide est que si nous savons que lalgorithme de chiffrement
par blocs est sr, alors la fonction de hachage sens unique sera sre aussi.
La mthode la plus vidente consiste utiliser lalgorithme en mode C B C ou C FB
avec une clef et un vecteur dinitialisation fixes, et prendre le dernier bloc de texte
chiffr comme empreinte. Ces mthodes sont dcrites dans plusieurs standards utilisant
le D E S : avec les deux modes dans [1156], avec le mode C B C dans [57, 58, 65]. Ce
nest pas assez pour les fonctions de hachage sens unique, bien que cela suffise pour
un C A M (voir 18.14) [33].
Une approche plus intelligente est d utiliser les blocs du message comme clef, la valeur
prcdente dempreinte tant lentre et lempreinte courante tant la sortie.
En fait, les fonctions de hachage proposes sont plus complexes. La taille de bloc est
en gnral la longueur de la clef et la taille de lempreinte est la taille de bloc. Comme
la plupart des algorithmes de chiffrement par blocs ont 64 bits, plusieurs schmas sont
conus pour engendrer une empreinte qui a deux fois la taille dun bloc.
En supposant que la fonction de hachage est correcte, la scurit du schma est ba
se sur celle de la fonction de bloc sous-jacente. Il y a cependant des exceptions. La
cryptanalyse diffrentielle contre les fonctions de bloc est plus facile quand elle est uti
lise dans une fonction de hachage que dans un algorithme de chiffrement : la clef est
connue, aussi peut-on appliquer certaines astuces ; une seule paire concordante suffit au
succs de lattaque ; et vous pouvez gnrer au tant de texte en clair que vous voulez.
Quelques travaux sur le sujet se trouvent dans [1274, 858, 1324].
Ce qui suit est un rsum des diffrentes fonctions de hachage sens unique qui sont
parues dans la littrature [937, 1471, 1273]. Les affirmations concernant les attaques
contre ces schmas font lhypothse que les chiffrements par blocs sous-jacents sont
srs; autrement dit, que la meilleure attaque contre eux est lattaque exhaustive.
Une mesure qui savre utile en matire de fonctions de hachage base dalgorithme
de chiffrement par blocs est le ta u x d e hachage, c est dire le nombre de blocs de
n bits du message traits par chiffrement, o n est la taille de bloc dans lalgorithme.
Plus ce taux est grand, plus lalgorithme est rapide11.

Schmas o empreintes et blocs ont mme taille


Le schma gnral est le suivant (voir la figure 18.8) :
H o I h , o I j{ est un valeur initiale alatoire,
Hi = E a (B ) 0 C.

A, B et C sont prendre parmi les termes A4, H i - 1 , (A4,; H i - j), ou une constante

(suppose tre 0). Le message est divis en morceaux de la taille dun bloc, les A-fr, qui
sont traits individuellement. Il y a de plus une sorte de renforcement MD, ventuelle
ment la mme procdure de remplissage que dans M D5 et SHA.
11. C ette mesure est donne avec la dfinition oppose dans [1273], mais la dfinition donne ici est
plus intuitive et plus largement utilise. C ela peut tre source de confusion.

Chapitre 18

472

ig

18.8 -

Fonctions de hachage sens unique

a v ie s -

eyer

Chacune des trois variables peut prendre une des quatre valeurs possibles, ce qui donne
en tout 64 schmas possibles. Bart P r e n e e l les a tous tudis [1273].
Quinze d entre eux sont trivialement faibles car le rsultat ny dpend pas de lune
des entres. Trente sept dentre eux ne sont pas srs pour des raisons plus subtiles. Le
tableau 18.1 donne la liste des douze schma restants : les quatres premiers rsistent
toutes les attaques (voir la figure 18.9) et les huits autres rsistent toutes sauf une
attaque du point fixe, qui ne vaut pas la peine de sinquiter.

Clef

M,
Chiffre

H,.|

Af,

<5

Clef
Chiffre

F ig .

Clef

*W

Chiffre

18.9 - Les quatres fonctions de hachage sre o empreintes et blocs ont mme

taille

Le premier schma a t dcrit dans [1033]. Le troisime a t dcrit dans [526, 1111,
1112] et propos comme standard ISO [1142]. Le cinquime est d Cari M e y e r ,
mais connu sous le nom de D a v i e s - M e y e r dans la littrature [1608, 1609, 434, 1033].
Le dixime a t propos comme un mode fonction de hachage pour LO K I [278].
Les premier, deuxime, troisime, quatrime, cinquime, et onzime schmas ont un
taux de hachage de 1 ; la longueur de la clef est gale la longueur des blocs. Les autres
ont un taux de k /n o k est la longueur de la clef. Cela signifie que si la clef est plus
courte que les blocs de lalgorithme, alors les blocs de message ne peuvent pas tre plus
long que la clef. Il nest pas recommand d utiliser des blocs de message plus longs que
la clef, mme si les blocs de lalgorithme de chiffrement sont plus courts que la clef.
Si lalgorithme par blocs a comme le DES une proprit de complmentation, ou des
clefs faibles, il existe une attaque supplmentaire possible contre les douze schmas.

18.11

Utilisation dalgorithmes de chiffrement par blocs

T a b . 18.1 - Fonctions de hachage sres o empreintes et blocs ont mme taille

H
H
H
H
H

= Ehx_ j (Af*) M i
=

( M i H i-x ) Al* l i -1

= Eh i_1(Mi) if i-i Al*


= E h,.* (Al* t fi-i) Al*
E m ,(H i ) H i - i
H ?M.(Ati -H*i) Al* ffi Hii
H E m %(H i- 1) ffi A li
H = Em ,(Mi ffi Hi-i) Hi-1
(Ali) Ali
H = E m ,h
H =
(# i-l) # i-l
H, = EM x<
h x__x(M i) H i-i
H = E^umh-1 (H i- 1) M i _________

Lattaque nest pas trs dangeureuse et ne vaut pas la peine de sinquiter. Cependant,
vous pouvez la contrecarrer en fixant les bits 2 et 3 de la clef 01 ou 10
[1085, 1113]. Cela rduit bien sr la longueur de la clef de 2 bits ( 54bits pour leDES
par exemple), et aussi le taux de hachage.
Les schmas suivants, extraits de la littrature, ne sont pas srs.
Ce schma [1293] a t cass dans [373] :
H = E Mx(H i-\)
D a v i e s et P

r ic e

ont propos une variante qu i fait passer le message entier deux fols

[432, 433]. L a ttaque de CO PPER SM ITH m arche sur cette variante


[373],
Un autre schma [432, 464] nest pas sr non plus [1608] :
travers l algorithm e

sans dem ander beaucoup plus de calculs

H i = E m & H i-

x( H

i-1

Il est m ontr dans [1033] que le schm a suivant n est pas sr (c est une constante) :
Lf* = Ec(M i ffi H i- x) A f i Hi- !

Davies-Meyer modifi
L a i et M a s s e y ont modifi la technique de D a v i e s - M e y e r pour pouvoir lutiliser
avec le chiffre ID E A [941, 937]. ID E A a une taille de bloc de 64 bits et une taille de
clef de 128 bits. Ce schma est :

Ho = / , o I est une valeur initiale quelconque,


Hi = % _ llM t( E - i ) -

Cette fonction hache un message par blocs de 64 bits et produit une empreinte de 64
bits (voir la figure 18.10).
Il nexiste pas dattaque connue contre ce schma qui soit plus facile que lattaque
exhaustive.

Chapitre 18

474

Fonctions de hachage sens unique

Chiffre
|

Clef

t
Airf

F ig .

18.10 -

a v ie s -

eyer

modifi

PreneelBosselaers-GovaertsVandewalle
Cette fonction de hachage, propose pour la premire fois dans [1277], engendre une
empreinte qui a deux fois la longueur de bloc de lalgorithme de chiffrement ; un algo
rithme 64 bits donne une empreinte de 128 bits.
Avec un algorithme de chiffrement par blocs 64 bits, ce schma produit deux em
preintes de 64 bits, Gt et H t, qui sont jointes pour produire une empreinte de 128 bits.
Avec la plupart des algorithmes de chiffrement par blocs, la taille de bloc est de 64
bits. Deux blocs de messages adjacents Lt et llt ayant chacun la taille de la clef sont
hachs ensemble.
Go = I gi
H0 =

IG est une valeur initiale quelconque,

I h -, o I h e s t u n e a u t r e v a le u r in itia le q u e lc o n q u e ,

Gt = E L,//,_! (H, ffi


Rt Gt -1 Ht- 1,
H, = E l , r ,(H t-1 G ,_ i) ffi Li G\_i ffi H j_i.
L a i a montr des attaques contre ce schma qui, dans certains cas, rendent lattaque
des anniversaires facilement applicable [937, 935]. P r e n e e l [1273] et C o p p e r s m i t h
[377] ont galement des attaques contre ce schma. Ne lutilisez pas.

QuisquaterGirault
Ce schma, propos pour la premire fois dans [1290], produit galement une empreinte
qui a deux fois la taille du bloc de chiffrement. Deux blocs L, et lii, chacun de la taille
de la clef, sont hachs ensemble.
Go I gi
Ho =

I g est une valeur initiale quelconque,

I h , o I r

e s t u n e a u t r e v a le u r in it ia le q u e lc o n q u e ,

W i = E l , (G t_ i ffi R t ) ffi R t ffi H t_ i ,

Gj = Efi^W t ffi Lj) ffi G - i ffi H ti ffi L , ,


Hj = W , ffi Gt iCe schma est apparu dans une bauche de standard ISO de 1989 [760] mais fut
abandonn dans une version ultrieure [761]. Les problmes de scurit avec ce schma
furent identifis dans [1113, 937, 1273, 377]12. Dans certaines circonstances, lattaque
des anniversaires est soluble avec une complexit de 232 au lieu de 264, par attaque
exhaustive. Nutilisez pas ce schma.
12. En fait, la version publie a t renforce aprs que la version prsente la confrence fut
attaque.

18.11

Utilisation dalgorithmes de chiffrement par blocs

475

LOKI double bloc


Cet algorithme est une variante de Q u i s q u a t e r - G i r a u l t , conue spcifiquement pour
tre utilise avec L O K I [278]. Les paramtres sont les mmes que dans Q u i s Q U A T E R G

ir a u l t .

Go = Ig ,
Ho Ih ,

o
o

I g est une valeur initiale quelconque,


Ih est une autre valeur initiale quelconque,

W t ? i , , g , i ( G i - 1 H i ) H , H i 1 ,

Gi =

'h , j ,_1(Wi ffi

Li) ffi Gi-

1 ffi

Hi-

1 ffi

Li,

Hx = W i G t- i .

Une fois de plus, dans certaines circonstances, lattaque des anniversaires est aisment
soluble [937, 935, 1273, 377, 376]. Nutilisez pas ce schma.

Davies-Meyer parallle
Il sagit encore d une tentative d algorithme de taux de hachage 1 produisant une
empreinte deux fois plus longue que les blocs [738].
Go = I g , o I g est une valeur initiale quelconque,
H o

I h

I h

est une autre valeur initiale qu elcon qu e,

Gi = ELtRz(G i-i ffi Li) ffi Li ffi Hi1,


Hi = E Lt {H i-! ffi Ri) ffi Ri ffi H i - 1 .
Malheureusement, ce schma nest pas sr non plus [939, 863]. Il savre quune fonction
dempreinte de longueur double et de taux de hachage 1 ne peut pas tre plus sre que
D a v i e s - M e y e r [863],

Davies-Meyer en tandem et de front


Une autre manire de contourner les limitations inhrentes aux chiffrements par blocs
avec une clef de 64 bits, est d utiliser un algorithme avec une clef de 128 bits et des
blocs de 64 bits, tel quID E A (voir 13.9). Ces deux schmas produisent une empreinte
de 128 bits et ont un taux de hachage de 1/2 [941, 937].
Dans ce prem ier schm a, d eu x fon ction s D a v ie s M e y e r m odifies travaillent en tan
dem (voir la figure 18.11).

Go = Ig ,
H0 = I h ,

o
o

Ig est une valeur initiale quelconque,


I h

est une autre valeur initiale quelconque,

W t = EGt- UM i(H i-!),


G t = G i - i ffi E M t, w , ( G i 1 ),

Hi = W i ffi H i-i.

Le schma suivant utilise deux fonctions


figure 18.12).

D a v ie s - M

eyer

modifies de front (voir la

G 0 = I , o I est une valeur initiale quelconque,


Ho = Ih , o Ih est une autre valeur initiale quelconque,
g

Gi = Gt-i ffi
( "Gii),
Hi ~ H ^ 1 ffi E G , - 1, M , {Ht-i).

476

Chapitre 18

ig

. 1 8 .1 1 - D

a v ie s -

Fonctions de hachage sens unique

eyer

en tandem

Dans les deux schmas, les deux empreintes de 64 bits G l et IIi sont juxtaposes pour
former une unique empreinte de 128 bits.
Pour autant que lon sache, ces algorithmes ont la scurit idale pour des fonctions de
hachage 128 bits : trouver un message qui a une empreinte donne ncessite 2128 tenta
tives, et trouver deux messages qui ont la mme empreinte ncessite 264 tentatives en
faisant lhypothse quil ny pas de meilleur moyen d attaquer lalgorithme de chiffre
ment par bloc que lattaque exhaustive, bien entendu.

M D C 2 et M D C 4
M D C -2 et M D C -4 ont t dvelopps par IBM [1085, 1089]. M D C -2 qui est parfois
appel IscMeyer-Schilling est pris en considration pour devenir un standard AN SI et
ISO [62, 761] ; une variante a t propose dans [767]. M D C -4 est spcifi pour le
projet R IP E [1316] (voir 25.7). La spcification utilise le DES comme fonction de
bloc (il faut quatre chiffrements DES pour traiter un seul bloc de message de 64 bits),
bien quen thorie, nimporte quel autre algorithme puisse tre utilis.
M D C -2 a un taux de hachage de 1/2 et produit une empreinte qui a deux fois la
longueur d un bloc de chiffrement. Il est illustr par la figure 18.13. M D C -4 produit
aussi une empreinte qui a deux fois la longueur d un bloc de chiffrement et a un taux
de hachage de 1/4 (voir la figure 18.14.
Ces schmas ont t analyss dans [937, 1273]. Ils sont sr au vu de la puissance actuelle

F i g . 18.12 - D a v ie s - M

eyer

de front

18.11

Utilisation dalgorithmes de chiffrement par blocs

477

F ig . 18.13 - M D C -2
des ordinateurs, mais ils ne sont pas aussi srs que ce que leurs concepteurs avaient
estim. Si lalgorithme de chiffrement est le DES, ils ont t examins sous langle de
la cryptanalyse diffrentielle [1273].
M DC -2 et M D C -4 sont tous les deux brevets [226].

AR
La fonction de hachage A R a t dveloppe par A l g o r i t h m i c R e s e a r c h , L t d . et
distribue par ISO dans un but informatif uniquement [1141]. Sa structure fonda-

F i g . 18.14 - M D C - 4

Chapitre 18

Fonctions de hachage sens unique

mentale est une variante de lalgorithme par blocs (le DES en loccurrence) en mode
C B C . Les deux derniers blocs de texte chiffr, une constante et le bloc de message
courrant sont combins par ou exclusif puis chiffrs par lalgorithme. L empreinte est
constitue des deux derniers blocs de texte chiffr calculs. Le message est trait deux
fois avec deux clefs diffrentes, la fonction a donc un taux de hachage de 1 / 2 . La pre
mire clef est 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 , la seconde est 0 x 2 A 4 1 5 2 2 F 4 4 4 6 5 0 2 A , et c vaut
0 x 0 1 2 3 4 5 6 7 8 9 A B C D E F . Le rsultat est comprim en une seule empreinte de 1 2 8 bits.
Consulter [752] pour les dtails.
Ih = E K { M t 77,_i 77,_2) -A4,

Cela a lair intressant, mais ce nest pas sr. Aprs le traitement d une somme de
donnes considrable, il devient possible de trouver facilement des collisions pour cette
fonction de hachage [419].

GOST
Cette fonction vient de Russie, elle est spcifie dans le standard G O S T R 34.11-94
[659]. Elle utilise lalgorithme de chiffrement par blocs G O S T (voir 14.1), bien quen
thorie elle fonctionnerait avec nimporte quel algorithme par blocs de 64 bits et de
clef de 256 bits. La fonction produit une empreinte de 256 bits.
La fonction de compression / ( A i , , / / , _ i ) (dont les deux paramtres sont forms de 256
bits) est dfinie ainsi :
1 Gnrer quatre clefs de chiffrement pour G O S T par une combinaison linaire
de M i , de / / , _ i et de quelques constantes.
2 Utilisez chaque clef pour chiffrer un diffrent morceau de 64 bits de 77,_ i en
mode E C B . Stockez les 256 bits rsultants dans une variable temporaire S.
3 77, est une combinaison complexe, bien que linaire, de S, A4, et //, i .
Lempreinte finale de A4 nest pas lempreinte du dernier bloc.
de chanage : H n est lempreinte du dernier bloc de message,
ou exclusif de tous les blocs de message, et L est la longueur
ces variables et le dernier bloc de remplissage A4' accol
finale est la suivante :

Il y a en fait trois variable


Z est la combinaison par

du message. Etant donn


la fin de A4, lempreinte

H f ( Z A f',/(L ,/(A 4 \ 7 7 )))

La documentation est un peu confuse (et en russe), mais je pense que tout cela est
correct. Dans tous les cas, cette fonction de hachage est destine au standard russe de
signature numrique (voir 20.3).

Autres schmas
Ralph M e r k l e a propos un schma qui utilise le DES mais il est lent ; il ne traite que
7 bits du message par itration, et chaque itration met en jeu deux chiffrement par
le DES [1081, 1076]. Un autre schma [1644, 1647] nest pas sr [1278] ; il fut propos
un temps pour devenir un standard ISO.

18.12

18.12

Utilisation dalgorithmes clef publique

Utilisation dalgorithmes clef pu


blique

Il est possible d utiliser les algorithmes clef publique en mode de chanage de blocs
pour une signature numrique. Si vous jetiez la clef prive, casser lempreinte serait
aussi difficile que de lire le message sans la clef prive.
Par exemple, voici comment le R S A peut tre transform en une fonction de hachage
sens unique. Si A4 est le message hacher, n le produit de deux nombres premiers p
et q, et e un autre grand nombre premier par rapport (p l)(q 1), alors la fonction
de hachage H (AI ) sera :
H ( M ) = M c mod n.
Une solution encore plus simple serait dutiliser un seul nombre premier fort comme
module p. Alors :
H (A4) = A4e mod p.
Casser ce problme est probablement aussi difficile que de trouver le logarithme discret
de e. Si e et p sont assez grands, la fonction de hachage sens unique est sre. Le
dfaut de cet algorithme est quil est nettement plus lent que tous les autres dj
dcrits ci-dessus. Je ne le recommande pas pour cette raison.

18.13

Choix dune fonction de hachage


sens unique

Les prtendants semblent tre SHA, M D5 et les constructions base dalgorithmes


de chiffrement par blocs ; les autres n ont pas t assez tudis pour concourir. Je vote
pour SHA. Les empreintes sont plus longues que celles de M D5, il est plus rapide que
les diffrentes construction base dalgorithmes de chiffrement par bloc, et il a t
dvelopp par la NSA. Jai confiance dans les capacits des chercheurs de la NSA en
matire de cryptanalyse, mme si leurs rsultats ne sont pas rendus publics.
Le tableau 18.2 donne des mesures de vitesse de quelques fonctions de hachage sens
unique titre de comparaison uniquement.

18.14

Codes dauthentification de messages

Un code dauthentification de messages, C A M en abrg, est une fonction de hachage


sens unique dpendant d une clef. Les C A M ont les mmes proprits que les fonctions
de hachage sens unique dcrites ci-dessus mais, en plus, elles incluent une clef13. Seul
celui qui possde une clef identique peut vrifier lempreinte. Elles sont trs utiles pour
prouver lauthenticit sans fournir la confidentialit.
Les C A M peuvent servir lauthentification de fichiers entre des utilisateurs. Elle peut
aussi servir un seul utilisateur pour vrifier que ses fichiers nont pas t altrs, par
un virus par exemple. Un utilisateur pourrait calculer les empreintes de ces fichiers
13. Ce qui ne veut pas dire que vous pouvez rvler la clef d un C A M et vous en servir de fonction
de hachage sens unique.

Chapitre 18

480

Fonctions de hachage sens unique

T a b . 18.2 - Vitesses de chiffrement en continu de quelques fonctions de hachage sens

unique sur un 486SX 33 MHz____________________________________________________

Longueur de lempreinte Vitesse de chiffrement


(en mgaoctets par seconde)
22
D a v i e s - M e y e r de front (avec ID E A )
128
D a v i e s - M e y e r (avec le D ES)
64
9
11
G OST
256
168
variable
HAVAL (3 rondes)
118
variable
HAVAL (5 rondes)
variable
95
HAVAL (5 rondes)
M D2
128
23
236
128
M D4
174
128
M D5
N-H ASH (12 rondes)
128
29
24
N -H ASH (15 rondes)
128
182
R IP E -M D
128
75
SHA
160
48
SN EFRU (4 passes)
128
128
23
SNEFRU (8 passes)
Algorithme

avec un C A M et les stocker dans une table. Si lutilisateur utilisait une fonction de
hachage sens unique la place, le virus pourrait calculer la nouvelle empreinte aprs
infection et remplacer celle de la table. Un virus ne pourrait pas faire cela avec un
C A M parce quil ne connaitrait pas la clef.
Un moyen facile de transformer une fonction de hachage sens unique en un CAM
consiste chiffrer lempreinte avec un algorithme clef secrte.

C A M par chiffrement par blocs


Le moyen le plus simple de raliser une fonction de hachage sens unique clef est de
chiffrer un message avec un algorithme de chiffrement par blocs en mode C FB ou CBC.
Lempreinte est le dernier bloc chiffr, chiffr une fois de plus en mode C F B ou CBC.
Cette mthode est spcifie dans lANSI X 9.9 [65J, lAN SI X 9.19 [58], lISO 87311 [763], lISO 9797 [768], et un standard australien [1196]. La cryptanalyse permet de
casser ce schma quand il a peu de rondes et utilise le DES ou F E A L [1206].
Le problme potentiel de scurit avec cette mthode est que le destinataire doit avoir
la clef, et que cette clef lui permet de gnrer des messages de mme empreinte quun
message donn en dchiffrant lenvers.

Algorithme dauthenfication de messages


Cet un algorithme est un standard ISO [764]. Il produit une empreinte de 32 bits pour
les units centrales possdant une instruction de multiplication rapide [429].
v = v <3 1
e= v w
x = ((((e -f y) modulo 232) V A A C ) x (a; A U )) modulo 232 1

18.14

Codes dauthentification de messages

481

V = ((((e+ x ) modulo 232) V B A D ) x ( y M i ) ) modulo 232 2


Rpter cela pour chaque bloc de message M i et lempreinte rsultante est la combi
naison par ou exclusif de x et y. Les variables u et e proviennent de la clef. A, B , C
et D sont des constantes.
Cet algorithme est probablement largement utilis, mais je ne peux pas croire quil soit
si sr. Il y a fort longtemps quil a t conu, et il nest pas trs compliqu.

C A M bidirectionnel
Ce C A M produit des empreintes de longueur double de celle des blocs de lalgorithme
[989]. Commencez par calculer le C A M par chiffrement par blocs en mode C B C ap
pliqu au message. Calculez alors le C A M par chiffrement par blocs en mode C B C
appliqu au message en prenant les blocs dans lordre inverse. L empreinte du C A M bi
directionnel est obtenu simplement en juxtaposant les deux valeurs. Malheureusement,
cette construction nest pas sre [1103].

Mthodes de J u e n e m a n
Ce C A M est aussi appel code de dtection de manipulations congruentielles quadra
tiques (C D M C Q en abrg) [792, 790]. Divisez tout dabord le message en blocs de m
bits, et appliquez ceci ensuite :
/ / n = I h I h est la clef secrte,
Hi = ( i i - 1 + M {)2 modulo p o p est un nombre premier infrieur 2m 1
et + dnote laddition entire.
J u e n e m a n suggre de prendre n = 16 et p 231 1. Dans [792], il suggre de plus de
prendre H i comme clef supplmentaire en faisant commencer le message H?.
Suite la dcouverte de nombreuses attaques du type de celle des anniversaires avec
Don C o p p e r s m i t h , J u e n e m a n a suggr de calculer le C D M C Q quatre fois, en pre
nant le rsultat de chaque itration comme vecteur dinitialisation de la suivante, puis
en juxtaposant les rsultats pour obtenir une empreinte de 128 bits [793]. Ceci fut da
vantage renforc en oprant les quatre itrations en parallle et en les liant de manire
entrecroise [789, 791]. Ce schma a t cass par C o p p e r s m i t h [380].
Une autre variante [432, 434] remplaait laddition par un ou exclusif et utilisait des
blocs de taille bien infrieure p. H 0 tant fix, cela devenait une fonction de hachage
sens unique sans clef. Aprs que ce schma ait t attaqu [614], il fut renforc en tant
que partie intgrante du projet European Open Shop Information-TeleTrust [1233],
cit dans C C IT X .509 [309], et adopt dans lISO 10118 [760, 761], Malheureusement,
C o p p e r s m i t h a aussi cass ce schma [380]. Certaines recherches ont essay des ex
posants autres que 2 [605], mais aucune na t prometteuse.

RIPE-M AC
R I P E M A C a t conu par Bart P r e n e e l [1273] et adopt par le projet R IP E [1316]
(voir 18.8). Il est bas sur lISO 9797 [768] et utilise le DES comme fonction de
chiffrement de bloc. Il y a deux variantes de R IP E -M A C : lune utilisant le DES
normal, appele R IP E M AC1 et lautre utilisant le DES triple pour une plus grande

Chapitre 18

482

Fonctions de hachage sens unique

scurit, appele R IP E -M AC3. RIPE-JVIAGI utilise un chiffrement DES par blocs


de messages de 64 bits ; R IP E - M A C 3 en utilise trois.
L algorithme consiste en trois parties. Au dpart, le message est tendu pour rendre la
longueur multiple de 64 bits. Ensuite, le message tendu est divis en blocs de 64 bits.
Une fonction de compression clef est utilise pour hacher ces blocs, sous le contrle
dune clef secrte, en un seul bloc de 64 bits. C est cette tape qui utilise soit le DES
soit le DES triple. Finalement, la sortie de cette compression est soumise un autre
chiffrement DES avec une autre clef, drive de la clef utilise pour la compression.
Voyez [1316] pour les dtails.

IBC-Hash
IB C -H ash est un autre C A M adopt par le projet R IP E [1316] (voir 18.8). Il
est intressant car on peut prouver sa scurit ; la probabilit dune attaque russie
peut tre quantifie. Malheureusement, chaque message doit tre hach avec une clef
diffrente. Le niveau de scurit choisi impose des contraintes sur la longueur maximale
du message, quelque chose quaucune autre fonction de ce chapitre ne fait. tant donn
ces considrations, le rapport R IP E recommande de nutiliser IB C -H ash que pour des
longs messages envoys peut frquemment.
Le coeur de la fonction rside dans la formule suivante :
H t - ((A41 modulo p) + v) modulo 2"

La clef secrte est la paire p et v , o p est un nombre premier de n bits et v un


nombre alatoire infrieur 2n. Les A4, proviennent dune procdure de remplissage
prcisment spcifie. On peut quantifier les probabilits de casser la fonction, que ce
soit par collision ou en linversant, et lutilisateur peut choisir le niveau de scurit en
modifiant les paramtres.

C A M partir dune fonction de hachage sens unique


Une fonction de hachage sens unique peut aussi tre utilise comme C A M [1545].
Faites lhypothse quAlice et Bernard partagent une clef K et quAlice veut envoyer
Bernard une C A M pour le message A4. Alice joint A4 et A et calcule la fonction de
hachage sens unique de lensemble : H( A ,A4). Cette empreinte est la C A M . Comme
Bernard connat A , il peut reproduire le rsultat d Alice. Martin, qui ne connat pas
A , ne peut pas le faire.
Cette mthode fonctionne avec les techniques de renforcement MD, mais prsente de
srieux problmes. Martin peut toujours ajouter de nouveaux blocs la fin du message
et calculer une empreinte de C A M valide. Cette attaque peut sviter en mettant
la longueur du message au dbut, mais P r e n e e l se mfie de ce schma [1276]. Il
vaut mieux mettre la clef la fin du message : H (A4, A ), mais cela pose aussi certains
problmes [1276], Si H est sens unique, mais pas sans collisions, Martin peut fabriquer
des messages. La meilleure solution est H ( K , A i , K ) ou bien H (A'i ,A4,A2), o K\ et
A 2 sont diffrentes [1545]. P r e n e e l reste encore mfiant vis vis de cette dernire
[1276].
Les constructions suivantes paraissent sres :
H ( K i ,H ( K 2,M))

18.14

Codes dauthentification de messages

483

H(K,H(K,M))
H{K, p, M., K) o p sert remplir K jusqu obtenir un bloc de message.

La meilleure approche consiste joindre 64 des bits de la clef avec chaque bloc du
message. Cela rend la fonction de hachage moins efficace car les blocs du message sont
plus petits, mais c est beaucoup plus sr [1276].
Une alternative consiste utiliser une fonction de hachage sens unique et un algo
rithme de chiffrement clef secrte. Calculez lempreinte du fichier, et chiffrez la. Elle
est plus sre que de chiffrer le fichier et de calculer lempreinte du fichier chiffr, mais
elle est vulnrable aux mmes attaques que lapproche H( 4 ,K) [1276].

CAM partir dun chiffrement en continu


Ce schma de C A M utilise les chiffrements en continu (voir la figure 18.15) [948]. Un
gnrateur pseudo-alatoire de bits cryptographiquement sr dmultiplexe le flux de
message en deux sous-flux. Si le bit de sortie du gnrateur de bit kz est 1, alors le bit
courant du message m, est envoy au premier sous-flux; si U vaut 0,
est envoy
au deuxime sous-flux. Les sous-flux sont chacun fournis comme entre un R D R L
diffrent (voir 16.2). Le rsultat de la C A M est donn simplement par les tats finaux
des registres dcalage.

F ig. 18.15 - Chiffrement en continu C A M


Malheureusement, cette mthode n est pas lpreuve de petits changements dans le
message [1527]. Par exemple, si vous modifiez le dernier bit du message, il suffit de
modifier deux bits de lempreinte pour en obtenir une fausse; cela est faisable avec
une probabilit raisonnable. Les auteurs prsentent une alternative plus sre et plus
complique.

Chapitre 19

Algorithmes clef publique


19.1

Introduction

Le concept de cryptographie clef publique fut invent par Whitfield D i f f i e et Martin


H e l l m a n , et indpendamment par Ralph M e r k l e . Lide neuve dans le domaine
tait que les clefs pouvaient tre des paires une clef de chiffrement et une clef de
dchiffrement et quil tait impossible de gnrer une clef partir de lautre (voir
2.5). D i f f i e et H e l l m a n ont prsent ce concept pour la premire fois en 1976
la National Computer Confrence [493] ; quelques mois aprs, leur article New
Directions in Cryptography paraissait dans IEEE Transactions on Information
Theory [494]1.
Depuis 1976, de nombreux algorithmes de cryptographie clef publique ont t propo
ss. Nombre dentre eux ne sont pas srs. Parmi ceux qui sont encore considrs comme
srs, nombre dentre eux ne sont pas pratiques. Soit ils ont une clef exagrment grande,
soit le texte chiffr est nettement plus long que le texte en clair.
Seuls quelques algorithmes sont la fois srs et pratiques. Ces algorithmes sont en
gnral bass sur lun des problmes difficiles dcrits dans le paragraphe 11.2. De ces
algorithmes clef publique srs et pratiques, certains ne sont adapts qu la distribu
tion de clefs. D autres sont adapts au chiffrement (et, par extension, la distribution
de clefs). D autres ne sont adapts quaux signatures numriques. Seuls trois algo
rithmes sont adquats la fois pour le chiffrement et les signatures numriques : RSA ,
E l G a m a l et R a b i n . T o u s ces algorithmes sont lents. Les vitesses de chiffrement et
de dchiffrement sont nettement plus faibles que pour les algorithmes clefs secrtes ;
habituellement cest trop lent pour le chiffrement de donnes en masse.
Les systmes hybrides (voir 2.5) permettent daugmenter la vitesse : un algorithme
avec une clef secrte alatoire sert chiffrer le message, et un algorithme clef public
sert chiffrer la clef.

I.
D u fait des dlais de publication exagrs des C o m m u n ic a tio n s o f th e A C M , la premire
contribution de M e r k l e au dom aine ne parut pas avant 1978 [1073].

486

Chapitre 19

Algorithmes clef publique

Scurit des algorithmes clef publique


Comme les cryptanalystes ont accs la clef publique, ils peuvent toujours choisir
nimporte quel message chiffrer. Cela veut dire qutant donn C = E k (A4), les
cryptanalystes peuvent deviner la valeur de M et aisment vrifier leur pari. C est
un problme srieux si le nombre de messages en clair possible est assez petit pour
permettre une recherche exhaustive, mais peut tre rsolu en rajoutant une chane de
bits alatoires au message. Cela signifie que des textes en clair identiques donneront
des textes chiffrs diffrents (pour plus de dtails concernant ce concept, voir 23.15).
Cela est particulirement important lorsquun algorithme clef publique sert chiffrer
une clef de session. Estelle peut gnrer une base de donnes de toutes les clefs de session
possibles chiffres avec la clef publique de Bernard. Cela reprsente videmment une
somme norme de travail et de mmoire, mais pour une clef exportable de 40 bits ou
une clef de 56 bits du DES, cest beaucoup moins que ce quil faudrait pour casser la
clef publique de Bernard. Une fois quEstelle aura gnr la base de donne, elle pourra
trouver facilement toutes les clefs de session et lire le courrier lectronique de Bernard.
Les algorithmes clef publique sont conus pour rsister aux attaques texte en clair
choisi ; leur scurit dpend la fois de la difficult de dduire la clef prive partir de
la clef publique et de la difficult de dduire le texte en clair partir du texte chiffr.
Toutefois, la plupart des algorithmes clef publique sont particulirement sensibles
ce que lon appelle une attaque texte chiffr choisi (voir 1.1).
Dans les systme o la signature numrique est lopration du chiffrement, il est im
possible dempcher cette attaque moins dutiliser des paires de clefs diffrentes pour
le chiffrement et la signature numrique.
En consquence, il est important de considrer le systme comme un tout et non pas
seulement comme des parties individuelles. Les bons protocoles clef publique sont
conus de telle manire que les diffrents participants ne dchiffrent pas nimporte quel
message engendr par les autres participants ; la preuve d identit est un bon exemple
(voir 5.2).

19.2

Algorithmes empilement

Le premier algorithme pour le chiffrement clef publique gnralis fut dvelopp


par Ralph M e r k l e et Martin H e l l m a n [715, 1080]. Il ne peut tre utilis que pour
le chiffrement bien que S h a m i r ait adapt plus tard le systme pour les signatures
numriques [1420]. Les algorithmes empilement2 tirent leur scurit du problme
d empilement, un problme TVP co m p le t. Bien quon ait dcouvert aprs coup que cet
algorithme nest pas sr, il vaut la peine dtre examin parce quil montre comment des
problmes P -co rn p le ts peuvent tre utiliss pour la cryptographie clef publique.
Le problme d empilement est un problme simple. Etant donn un tas dobjets, chacun
ayant un poids diffrent, est-il possible de faire un nouveau tas avec certains de ces
objets de telle manire que le nouveau tas pse un poids donn ? Plus formellement :
tant donn un ensemble de valeurs,
et une somme S, calculer les valeurs
2.
N ote du traducteur : la traduction p ro b l m e d e m p ile m e n t a t utilise pour lexpression
anglaise : k n a p sa ck p ro b lem que d autres traducteurs ont galem ent appel p ro b l m e du sa c
dos [240].

19.2

Algorithmes empilement

des bi de telle m anire que :

S b%Mi + 62 M 2 + ... + bnM n.

Les valeurs des bi tant soit 0 soit 1. Un 1 indique que llment est dans le nouveau
tas ; un 0 indique quil ny est pas.
Par exemple, les objets pourraient avoir les poids suivants: 1, 5, 6, 11, 14 et 20. II
est possible de crer un tas qui pse 22; utilisez les objets pesant 5, 6 et 11. Il est
impossible de crer un tas qui pse 24. En gnral, le temps ncessaire pour rsoudre
ce problme semble crotre exponentiellement avec le nombre d objets dans le nouveau
tas.
L ide de base de l algorithm e em pilem ent M

erkle

--H E LLM A N est de coder le mes

sage com m e une solution d une suite de problm es d em pilem ent. U n b lo c de texte en
clair de longueur gale au nom bre d o bjets dans le tas slectionnerait des objets (les
bits du texte en cla ir correspondraient aux valeurs des 6, : un 1 signifierait que l objet
est prsent et u n 0 signifierait que l o bjet est absent) et le texte chiffr serait la somme
rsultante. L a figure

19.1 illustre u n texte en cla ir chiffr avec un exemple de problm e

d empilement.

Texte en clair:
Tas:
Texte chiffr:

1 1 1

0 1

0 10

1 1

1 5 6 11 14 20

1 5 6 11 14

1+5+6+20

5+11+14 =

20

0 0

0 11

0 0

1 5 6 11 14 20

1 5 6 11 14 20

0 =

5+6 =

30

32

F ig. 19.1

0 0 0 0

11

Chiffrement par empilement

Le truc ici est quil y a en fait deux problmes dempilement, lun soluble en temps
linaire, lautre soluble en temps exponentiel seulement. Lempilement facile peut tre
transform pour crer un empilement difficile. La clef publique est lempilement difficile,
qui peut tre facilement utilise pour chiffrer des messages mais qui ne peut pas tre
utilise pour dchiffrer des messages. La clef prive est lempilement facile qui donne
un moyen simple de dchiffrer les messages. Les gens qui ne connaissent pas la clef
prive sont obligs dessayer de rsoudre le problme d empilement difficile.

Empilement super-croissant
Quest-ce quun problme d empilement facile? Si la liste des poids est une suite
super-croissante, alors le problme d empilement correspondant est facile rsoudre.
Une suite super-croissante est une suite dans laquelle tout terme est plus grand que la
somme de tous les termes qui prcdent. Par exemple, {1,3,6,13,27,52} est une suite
super-croissante tandis que {1,3,4,9,15,25} ne lest pas.
La solution d un empilement super-croissant est facile trouver. Prenez le poids
total et comparez-le avec le plus grand nombre de la suite. Si le poids total est infrieur
ce nombre, alors il nest, pas dans le tas. Si le poids total est suprieur ou gal au
nombre, alors il est dans le tas. Rduisez le poids du tas crer de ce nombre et passez
au plus grand-nombre suivant de la suite. Rptez cela jusqu ce que ce soit termin.
Si le poids total a t ramen 0, alors il y a une solution. Si le poids total na pas t
annul, il ny a alors pas de solution.

488

Chapitre 19

Algorithmes clef publique

Par exemple, considrez un tas de poids total de 70 crer et une suite de poids
{2,3,6,27,52}. Le poids le plus lev est 52, ce qui est infrieur 70, donc 52 est dans
le nouveau tas. Retirer 52 70 laisse 18. Le poids suivant est 27 qui est plus grand
que 18 et donc 27 n est pas dans le nouveau tas. Le poids suivant 13 est infrieur
18, donc 13 est dans le nouveau tas. Retirer 13 18 donne 5. Le poids suivant est 6.
qui est plus grand que 5, donc 6 nest pas dans le nouveau tas. Continuer ainsi montre
que 2 et 3 se trouvent aussi dans le nouveau tas et le poids est ramen 0, ce qui
indique quune solution a t trouve. Si cela avait t un bloc chiffr par empilement
M e r k l e H e l l m a n , alors le texte en clair correspondant au texte chiffr de valeur 70
aurait t 110101.
Avec des suites qui ne sont pas super-croissantes, on ne connat pas d algorithme rapide.
Le seul moyen de dterminer quels sont les objets dans le nouveau tas est de tester
mthodiquement toutes les solutions possibles jusqu ce que lon tombe sur la bonne.
Les algorithmes les plus rapides, prenant en compte les heuristiques ncessaires, sont
exponentiels en fonction du nombre de poids possibles dans le tas. Ajoutez un poids
la suite des poids et il faut deux fois plus de temps pour trouver la solution. Cest
nettement plus difficile quavec une suite super-croissante o, si vous ajoutez un poids
la suite, cela ne fait quune opration de plus.
L algorithme M e r k l e H e l l m a n est bas sur cette proprit. La clef prive est une
suite de poids super-croissante pour un problme d empilement. La clef publique est une
suite de poids pour un problme dempilement normal avec la mme solution. M e r k l e
et H e l l m a n ont dvelopp une technique pour convertir un problme dempilement
super-croissant en un problme d empilement normal. Ils ont fait cela en utilisant
larithmtique modulaire.

Cration de la clef publique partir de la clef prive


Sans entrer dans les dtails de la thorie des nombres, voici comment lalgorithme
marche : pour obtenir une suite pour empilement normale, prenez une suite pour empi
lement super-croissante, par exemple {2,3,6,27,52} et multipliez toutes les valeurs par
un nombre n modulo m. Le module doit tre un nombre plus grand que la somme de
tous les nombres de la suite, 105 par exemple. Le multiplicateur ne doit avoir de fac
teur en commun avec aucun nombre de la suite, 31 par exemple. La suite d empilement
normale serait alors :
(2 x 31) mod 105
(3 x 31) mod 105

62

93

(6 x 31) mod 105


(13 x 31) mod 105

81

88

(27 x 31) mod 105

102

(52 x 31) mod 105

37

L empilement difficile est alors {62,93,81,88,102,37}.


La suite pour empilement super-croissante est la clef prive. La suite pour empilement
normale est la clef publique.

19.2

Algorithmes empilement

489

Chiffrement
Pour chiffrer un message binaire, coupez dabord le message en morceaux de longueur
gale au nombre d objets dans la suite pour empilement. Ensuite, en prenant la conven
tion quun 1 indique que lobjet figure dans le tas et quun 0 indique que lobjet est
absent, calculez le poids total des tas.
Par exemple, si le message est 011000110101101110, le chiffrement en utilisant la suite
ci-dessus se fait de la faon suivante :
message = 011000

110101

101110

011000 donne 93 + 81 = 174


110101 donne 62 + 93 + 88 + 37 = 280
101110 donne 62 + 81 + 88 + 102 = 333
Le texte chiffr sera alors :
174,280,333

Dchiffrement
Un destinataire lgitime de ce message connat la suite super-croissante originelle, ainsi
que les valeurs n et m utilises pour la transformer en une suite normale. Pour dchiffrer
le message, le destinataire doit dabord calculer n ~x tel que n x n-1 = 1 (mod m) et
ensuite multiplier chaque valeur du texte chiffr par n ' 1 mod m pour retrouver les
valeurs du texte en clair.
Pour notre exemple, la suite super-croissante est {2,3,6,13,27,52}, m vaut 105 et n vaut
31. Le message chiffr est 174,280,333. Dans ce cas, n ~ x vaut 61 et les valeurs chiffres
doivent donc tre multiplies par 61 mod 105.
174 x 61 mod 105 = 9 = 3 + 6, ce qui Correspond 011000
280 x 61 mod 105 = 70 = 2 -f 3 -f 13 + 52, ce qui correspond 110101
333 x 61 mod 105 = 48 = 2 + 6 + 13 + 27, ce qui correspond 101110.
Le texte en clair correspondant est

011000

110101

101110.

Ralisations pratiques
Avec une suite pour empilement de six lments, il nest pas difficile de rsoudre le
problme mme si la suite nest pas super-croissante. Les vrais empilements contiennent
au moins 250 lments. La valeur de chaque terme de la suite super-croissante est longue
de 200 400 bits. Le module est choisi pour avoir une longueur comprise entre 100 et
200 bits. Les ralisations concrtes de lalgorithme utilisent un gnrateur de squences
alatoires pour produire ces valeurs.
Il serait vain d essayer de rsoudre des empilements tels que ceux-l. Si un ordina
teur peut essayer un million de possibilits par seconde, essayer tous les empilements
possibles prendrait plus de 1046 annes. Mme un million de machines travaillant en
parallle ne rsoudraient pas le problme avant que le soleil ne se transforme en nova.

490

Chapitre 19

Algorithmes clef publique

Scurit des empilements


Ce nest pas un million de machines qui ont cass le systme empilement mais bien
deux cryptographes. Premirement, H e r l e s t a m remarqua que souvent un bit du texte
en clair pouvait tre retrouv [727], Ensuite, S h a m i r a montr que lalgorithme pouvait
tre cass dans certaines circonstances [1422, 1423]. Il y eut d autres rsultats [1434,
39, 756, 518, 486] mais aucun ne permettait de casser le systme M e r k l e - H e l l m a n
gnral. Finalement, S h a m i r et Z i p p e l [1427, 1425, 1428] trouvrent des failles dans
la transformation qui permettait de reconstruire la suite super-croissante partir de
la suite normale. Largumentation exacte dpasse le cadre de cet ouvrage, mais un
bon rsum peut tre trouv dans [1243, 1254]. A la confrence o les rsultats furent
prsents dans [490, 492], la dmonstration de lattaque fut ralise sur lestrade
laide d un ordinateur A p p l e II.

Variantes du systme empilement


Depuis que le schma initial M e r k l e - H e l l m a n a t cass, de nombreux autres sys
tmes empilement ont t proposs : empilements itrations multiples, empilement
de Graham- Shamir, etc. Ils ont tous t analyss et casss, en utilisant gnralement
les mmes techniques cryptographiques, et ils empilement encombrent lautoroute de
la cryptologie [264, 257, 273, 932, 19, 930, 931, 933, 370, 258, 267, 259]. Un bon aperu
de ces systmes et de leur cryptanalyse peut tre trouv dans [271, 478, 261, 272].
D autres systmes cryptographiques qui utilisent des ides similaires aux empilements
ont t proposs mais ils ont t galement casss. Le cryptosystme L u - L e e [1000, 17]
a t cass dans [24, 616, 874] ; une version modifie [508] nest pas sre non plus
[1622]. Les attaques contre le cryptosystme G o o d m a n - M c A u l e y sont dcrites dans
[648, 649, 271, 272]. Le cryptosystme P i e p r z y k [1256] peut tre cass par des attaques
similaires. Le cryptosystme NlEM) [749], bas sur des empilements modulaires, a t
cass dans [349, 788]. Une version plus rcente dempilement plusieurs tages [7491
na pas encore t casse, mais je ne suis pas optimiste. Une autre variante est dcrite
dans [298].
Bien quil existe encore une variante de lalgorithme empilement qui est toujours sre
lheure actuelle lempilement C h o r R i v e s t [360], malgr une attaque spciali
se [745] la quantit de calculs ncessaires le rend nettement moins utilisable que
les autres algorithmes dcrits ici. Une variante du nom de systme P O W E R L IN E nest
pas sre [969]. Plus important, tant donn la vitesse laquelle les autres variantes
sont tombes, il ne semble pas prudent d avoir confiance en celles-ci.

Brevets
Lalgorithme M e r k l e H e l l m a n originel est brevet aux Etats-Unis [723] et dans le
monde entier (voir le tableau 19.1). P K P octroie des licences d exploitation de ce brevet
ainsi que d autres brevets de cryptographie clef publique (voir 25.5). Toute personne
intresse par lobtention dune telle licence doit contacter: Robert B. Fougner,
D ir e cto r o f L ice n sin g , P u b lic Key P artn ers, 310 N Mary Avenue,
Sunnyvale, CA 94086, T e l: +1 (408) 735-5893. Le brevet amricain expire le 19
aot 1997.

19.3

491

RSA

ab

19.1 - Brevets pour l empilement


Pays
Belgique
Pays-Bas
Grande-Bretagne
Allemagne
Sude
France
Allemagne
Allemagne
Canada
Grande-Bretagne
Suisse
Italie

19.3

Numro
871039
7810063
2006580
2843583
7810478
2405532
2843583
2857905
1128159
2006580
63416114
1099780

erkle

H ellm

an

dans le monde

Date
5 avril 1979
10 avril 1979
2 mai 1979
10 mai 1979
14 mai 1979
8 juin 1979
3 juin 1982
15 juillet 1982
20 juillet 1982
18 aot 1982
14 janvier 1983
28 septembre 1985

RSA

Peu aprs lalgorithme empilement de M e r k l e , le premier algorithme clef publique


grandeur nature apparut. Il fonctionne pour le chiffrement aussi bien que pour les
signatures numriques: R SA [1339, 1340]. De tous les algorithmes clef publique
proposs tout au long de ces annes, c est de loin le plus facile comprendre et
raliser3. C est le plus populaire. Baptis d aprs le nom de ses inventeurs, Ron R i v e s t ,
Adi S h a m i r et Lonard A d l e m a n , il a rsist depuis des annes de cryptanalyse
intensive. Bien que la cryptanalyse nait jamais prouv la scurit ou la non-scurit
de R SA , cela inspire un certain niveau de confiance dans lalgorithme.
Le niveau de scurit du R S A dpend de la difficult de factoriser des grands nombres.
Les clefs publique et prive sont des fonctions dune paire de grands nombres premiers
(100 200 chiffres ou plus encore). Retrouver le texte en clair partir d une des clefs et
du texte chiffr est suppos quivalent la factorisation du produit des deux nombres
premiers.
Pour engendrer les deux clefs, choisissez deux grands nombres premiers, p et q. Calculez
le produit :
n - pq.

Choisissez ensuite une clef de chiffrement alatoire e telle que e et (p l ) ( 1) soient


premiers entre eux. Finalement, utilisez lalgorithme dEuclide pour calculer la clef de
dchiffrement d de telle manire que :
ed = 1

(mod (p l ) ( 1)).

En d autres termes :
d e~ x mod ((p l ) ( 1)).

Remarquez que d et n sont aussi premiers entre eux. Les nombres e et n forment la
clef publique, le nombre d est la clef prive. Les deux nombres premiers p et g ne sont
plus ncessaires. Ils peuvent tre carts mais jamais rvls.
3. M artin G a r d n e r publia une premire description de l algorithm e dans sa colonne M a th em a tica l
G a m es du S c ie n tific A m e r ic a n [602].

Chapitre 19

Algorithmes clef publique

Pour chiffrer un message m, dcoupez celui-ci en blocs numriques tels que chaque
bloc ait une reprsentation unique modulo n (avec des donnes binaires, choisissez la
plus grande puissance de 2 infrieure n). Ainsi, si p et q sont tous deux des nombres
premiers de 100 chiffres, alors n aura tout juste moins de 200 chiffres et chaque bloc de
message m, doit avoir juste moins de 200 chiffres. Le message chiffr c sera constitu de
manire similaire de blocs ct d peu prs la mme longueur. La formule de chiffrement
est simplement :
C = ml mod n.
Pour dchiffrer un message, prenez chaque bloc ct et calculez :
m t = cf mod n.
Puisque (toutes les oprations tant effectues modulo n) :
cf = ( ml)d = raf* = m *0- 1h 9 -P + 1 m l x

= m , x l = mi,

la formule ci-dessus permet de retrouver la message. Ceci est rsum par le tableau 19.2.

ab

19.2 - Chiffrement R SA

C lef publique :
n produit de deux nombres premiers, p et q (p et q doivent rester secrets)
e premier par rapport {p l ) ( 1)
C lef prive :
d = e-1 mod ((p l ) ( 1))
Chiffrement :
c = me mod n
Dchiffrement :
m = cd mod n
Le message aurait tout aussi bien pu tre chiffr avec d et dchiffr avec e ; le choix est
arbitraire. Je ninclus pas ici la thorie des nombres qui prouve que cela marche; les
textes rcents sur la cryptographie couvrent cette thorie en dtail.
Un petit exemple contribuera certainement rendre tout cela plus clair. Si p = 47 et
q 71 alors :
n = pq = 3337.
La clef de chiffrement e ne doit pas avoir de facteurs communs avec :
(p l ) ( 1) = 46 = 3220.
Choisissez e (alatoirement) gal 79. Dans ce cas :
d = 79 1 mod 3220 = 1019.

Ce nombre a t calcul en utilisant lalgorithme d Euclide tendu (voir 11.3). Publiez


e et n et gardez d secret. Jetez p et q.
Pour chiffrer le message :
m = 688232687966683

19.3

493

RSA

divisons-le dabord en petits blocs. Des blocs de trois chiffres conviendront dans ce
cas-ci. Le message est divis en 6 blocs rrii tels que :
mi

688

m2

232

m3

687

m4

966

m5

668

me

3.

Le premier bloc est chiffr par :


68879 mod 3337 = 1570 = <*.
En effectuant la mme opration pour tous les blocs, on obtient le message chiffr :
c = 1570 2756 2091 2276 2423 158.
Pour dchiffrer le message, il faut effectuer les mmes exponentiations mais en utilisant
la clef de dchiffrement 1019. Donc :
15701019 m od 3337 = 688 = m ,.
Le reste du message est obtenu de la mme manire.

RSA en matriel
On a beaucoup crit sur le sujet des ralisations matrielles du R S A [1325,1480,1462,
1327, 1492, 875, 1231, 94, 1415, 1414, 1355, 1342, 371, 1435, 525, 772]. De bons articles
rsums sont [262, 873]. De nombreuses puces diffrentes qui ralisent le R SA ont t
construites [1321, 256, 1108, 1328, 875, 74, 739, 596, 1286, 1565, 510, 1232], Une liste
partielle des puces R S A actuellement disponibles, extraite de [157, 262], est donne
par le tableau 19.3. Elles ne sont pas toutes sur le march.

Vitesse du RSA
A sa vitesse maximum, le R S A est environ 1000 fois plus lent que le DES. La ralisation
matrielle VLSI la plus rapide du R SA avec un module de 512 bits a un dbit de 64
kilo-bits par seconde [262]. Il existe aussi des puces qui effectuent le chiffrement R SA
1024 bits. Actuellement, des puces qui approcheraient le million de bits par seconde
avec un module de 512 bits sont prvues, elles devraient tre disponibles en 1995.
Certains fabricants ont ralis le R S A dans les cartes puce; ces ralisations sont plus
lentes.
En logiciel, le DES est environ 100 fois plus rapide que le R SA . Ces nombres pourraient
changer lgrement, avec les changements de technologie mais le R SA napprochera
jamais la vitesse des algorithmes clef secrte. Le tableau 19.4 compare les vitesses de
quelques ralisations en logiciel de R S A [929].

Chapitre 19

494

a b

Vitesse
Socit
d horloge
Alpha Techn.
25 MHz
A T& T
15 MHz
British Telecom
10 MHz
5 MHz
Business Sim. Ltd.
Calmos Syst. Inc.
20 MHz
CNET
25 MHz
Cryptech
14 MHz
Cylink
16 MHz
Pijnenburg
25 MHz
8 MHz
Sandia
Siemens
5 MHz

19.3

Algorithmes clef publique

Puces R SA existantes

Vitesse de
transmission
par 512 bits
13 K
19 K
5,1 K
3,8 K
28 K
5,3 K
17 K
6,8 K
50 K
10 K
8,5 K

Cycles d
horloge par
chiffrement
de 512 bits
0,98 M
0,4 M
1M
0,67 M
0,36 M
2,3 M
0,4 M
1,2 M
0,256 M
0,4 M
0,03 M

Bits
Nombre
par
de
puce transistors
Technologie
1024
2g
180 000
l,5 p
298
100000

256
2,5p
32

Rseau logique
2p
593
95 000
1024
100000
lp
Rseau logique
120
33 000
1024
150 000
l,5 p
1024
lp
400 000
272
2p
86 000
512
lp
60 000

T a b . 19.4 -

Vitesses de R SA pour diffrentes longueurs de module avec une clef pu


blique de 8 (sur une station SP A R C II,)
Chiffrement
Dchiffrement
Signature
Vrification

512 bits
0,03 s
0,16 s
0,16 s
0,02 s

768 bits
0,05 s
0,48 s
0,52 s
0,07 s

1024 bits
0,08 s
0,93 s
0,97 s
0,08 s

Optimisation en logiciel
Le chiffrement par R S A est bien plus rapide si vous choisissez bien la valeur de e. Les
choix les plus courants sont 3, 17 et 65537 (216 + 1 )4. X .509 recommande 65537 [309],
PE M recommande 3 [83], et P K C S # 1 (voir 24.14) recommande 3 ou 65537 [919].
Aucun problme de scurit ninterdit de prendre lune de ces trois valeurs pour e (
condition de combler le message par remplissage avec des valeurs alatoires voir le
paragraphe suivant), mme si tout un groupe d utilisateurs utilise la mme valeur.
Les oprations avec la clef prive peuvent sexcuter plus rapidement grce au thorme
du reste chinois si vous conservez les valeurs de p et q, ainsi que d autres telles que
d mod (p 1), d mod ( q 1) et q 1 mod p [1294, 1287]. Ces nombres supplmentaires
se calculent facilement partir des clefs publique et prive.

Scurit de RSA
La scurit de R S A dpend entirement du problme de la factorisation de grands
nombres. Techniquement, ce nest pas vrai. Il a t conjectur que la scurit de RSA
dpend du problme de la factorisation de grands nombres. Il na jamais t prouv
mathmatiquement que vous devez factoriser n pour calculer m partir de c et e. Il est
concevable quun tout autre moyen de cryptanalyser R S A soit dcouvert. Toutefois,
4.
Les reprsentations binaires de ces nombres ne prsentent que deux 1, aussi le calcul de leur
puissances ne requiert que 17 m ultiplications.

19.3

495

RSA

si cette nouvelle voie permettait aux cryptanalystes de retrouver d, cela pourrait aussi
tre utilis comme une nouvelle voie pour la factorisation de grands nombres. Je ne me
tracasserais pas trop ce propos.
Il est aussi possible dattaquer R SA en essayant de deviner la valeur de (p 1)(q 1).
Cette attaque nest pas plus facile que la factorisation de n [1618].
Pour les ultra-sceptiques, il y a des variantes de R S A qui ont t prouves aussi difficiles
que la factorisation (voir 19.5). Voyez galement [37], qui montre que mme retrouver
un seul bit dinformation partir dun texte chiffr par R SA est aussi difficile que de
dchiffrer le message en entier.
Factoriser n est lattaque la plus vidente. Les adversaires auront la clef publique e et
le module n. Pour trouver la clef de dchiffrement, d, ils doivent factoriser n. Le para
graphe 11.4 dcrit ltat de lart de la technologie de la factorisation. Actuellement, des
nombres de 129 chiffres sont la pointe de ce qui se fait en technologie de factorisation.
n doit donc tre suprieur cela. Lisez galement le paragraphe 7.2 sur la longueur
des clefs publiques.
II est certainement possible pour un cryptanalyste d essayer toutes les valeurs possibles
de d jusqu tomber sur la bonne. Cette attaque exhaustive est encore moins efficace
que dessayer de factoriser n.
De temps en temps des gens prtendent avoir trouv un moyen facile de casser RSA,
mais leurs revendications ne durent pas. Par exemple, William P a y n e proposait en
1993 une mthode base sur le petit thorme de F e r m t [1244]. Malheureusement,
cette mthode est aussi plus lente que la factorisation du module.
Il y a une autre inquitude. La plupart des algorithmes usuels de calcul de nombres pre
miers p et q sont, probabilistes ; que se passe-t-il si p ou g est compos? Premirement,
vous pouvez les rendre les chances que cela arrive aussi minces que vous le dsirez.
Et si cela arrive, il y a de grandes chances que le chiffrement et le dchiffrement, ne
fonctionnent pas normalement vous le remarquerez tout de suite. U y a trs peu de
nombres sur lesquels les algorithmes probabilistes de test de primalit chouent, on les
appelle les nombres de Carmichael. Us sont excessivement rares, mais ils ne sont pas
srs [748]. Honntement, je ne m en inquiterais pas.

Attaque texte chiffr choisi contre le RSA


Certaines attaques tirent profit de la ralisation de R S A ; elles ne sont pas diriges
contre lalgorithme lui-mme, mais contre le protocole. Ils est important de raliser
quil ne suffit pas dutiliser le R SA , les dtails comptent.
S c n a r i o 1 : Estelle, qui coute la ligne de communication dAlice, sarrange pour
collecter un message c, chiffr par R S A avec sa clef publique. Estelle veut tre capable
de lire le message. Mathmatiquement, elle veut m tel que :

m = cd.
Pour retrouver m, elle choisit dabord un nombre alatoire r, tel que r soit, infrieur
n. Elle obtient la clef publique d Alice, e. Ensuite elle calcule :
x = re mod n

y = xc m od n

Chapitre 19

496

Algorithmes clef publique

t r 1 mod n.

Si x = re mod n, alors r = x d mod n. Et donc, t = x ~ d mod n.


Maintenant, Estelle fait signer y par Alice avec sa clef prive, dchiffrant ainsi y. Alice
doit signer le message, pas lempreinte du message. Rappelez-vous quAlice n a jamais
vu y avant. Alice envoie Estelle :
u = y d mod n.

Maintenant, Estelle calcule :


tu mod n x ~dyd mod n = x ~ dx dcd mod n = cd mod n = m.

Ce qui lui permet de disposer maintenant de m.


S cn ario 2 : Ivan est un notaire informatis. Si Alice veut un document notari, elle
lenvoie Ivan. Ivan le signe avec une signature numrique R SA et le renvoie5.
Martin veut faire signer par Ivan un message quautrement ce dernier refuserait de
signer. Peut-tre ce message a-t-il une datation factice, ou peut-tre que ce message est
une mascarade. Peu importe la raison, Ivan ne signerait jamais ce message sil avait le
choix. Appelons ce message m'.
Martin choisit une valeur arbitraire x et calcule y x e mod n. Il peut aisment obtenir
e ; c est la clef publique d Ivan et elle doit tre publique pour permettre la vrification
de sa signature. Ensuite il calcule m = ym! mod n et envoie m Ivan pour quil le
signe. Ivan renvoie rnd mod n. A prsent, Martin calcule ( (rad mod ti)x~1) mod n qui
est gal m'd mod n et constitue donc une signature de m'.
En fait, il y a diverses manires pour Martin de raliser la mme chose [425, 464, 484]. La
faiblesse quelles exploitent toutes est. le fait que lexponentiation prserve la structure
multiplicative de lentre. C est--dire :
{xm )d mod n x dm d mod n.

S cn ario 3 : Estelle veut quAlice signe 1 3 . Elle engendre deux messages m i et


tels que :
m 3 s m im 2 (mod n).

Si elle arrive faire signer m 1 et m 2 par Alice, Estelle peut calculer la signature de
m3 :
md = (md mod n)(md mod n) mod n.
M o ra lit : Nutilisez jamais le R SA pour signer un document quelconque qui vous est
prsent par un inconnu. Le bloc de formatage de la norme ISO 9796 empche cette
attaque.

Attaque par module commun contre le RSA


Rendons la vie plus facile et donnons le mme n tout le monde. Ils peuvent avoir
des valeurs diffrentes pour e et d, mais la mme valeur de n. Malheureusement, cela
5.
O n n utilise pas de fonction de hachage sens unique ici ; Ivan chiffre le message en son intgralit
avec sa clef prive.

19.3

RSA

ne fonctionne pas. Le dfaut le plus vident est que si le mme message est chiffr
avec deux clefs diffrentes (toutes les deux avec le mme module), et que ces deux clefs
sont premires entre elles (ce quelles sont en gnral), alors le texte en clair peut tre
retrouv sans aucune des deux clefs de dchiffrement [1463].
Soit A4 le message en clair. Les deux clefs de chiffrement sont ei et 6 2 . Le module
commun est n. Les deux messages chiffrs sont :
C\ --- A4ei mod n
Ci A4 62 mod n.

Le cryptanalyste connat n, ej, e2, Cj et C2. Voici comment il peut retrouver A4.
Comme rq et e 2 sont premiers entre eux, lalgorithme dEuclide permet de trouver r
et s tels que :
r x ei + s x e 2 =

En faisant lhypothse que r est ngatif (soit r soit s doit ltre), alors lalgorithme
dEuclide peut tre utilis nouveau pour calculer C 1. Donc :
(C f1)~r x C2 = A4 mod n.
Il existe deux autres attaques, plus subtiles, contre un tel systme. L une utilise une
mthode probabiliste de factorisation de n. Lautre utilise un algorithme dterministe
pour calculer la clef prive de quelquun sans factoriser le module. Les deux attaques
sont dcrites en dtail dans [452].
Moralit : Ne partagez jamais n parmi un groupe dutilisateurs.

Attaque par petit exposant de chiffrement contre le RSA


Le chiffrement et la signature sont plus rapides si vous prenez une petite valeur pour e,
mais cela risque de ne pas tre sr [705]. Si vous chiffrez e ( e + l ) / 2 messages linairement
dpendants avec des clefs publiques diffrentes mais la mme valeur de e, il est possible
dattaquer le systme. Sil ny a pas autant de messages, ou sils sont indpendants, il
ny a pas de problme. Si les messages sont identiques, alors e suffisent. La solution la
plus facile consiste combler les messages par remplissage avec des valeurs alatoires
indpendantes. Cela vite aussi d avoir A4e mod n A4e. La plupart des ralisation
de R SA , telles que P E M et P G P (voir 24.10 et 24.12) par exemple, font cela.
Moralit : Comblez les messages par remplissage avec des valeurs alatoires avant de
les chiffrer, assurez vous que A4 a au moins mme taille que n.

Attaque par petit exposant de dchiffrement contre le RSA


Une autre attaque, de Michael W i E N E R permet de retrouver d quand d est infrieur au
quart de la longueur du module et e est infrieur n [1598]. Ceci narrive que rarement
si e et d sont choisis alatoirement, et ne peut pas arriver si e est petit.
Moralit : Choisissez une grande valeur pour d.

Chapitre 19

498

Algorithmes clef publiqw

Leons apprises
M o o r e numre plusieurs restrictions de lutilisation du R S A bases sur ces attaques
russies [1 1 2 0 , 1 1 2 1 ]:

- La connaissance d une paire chiffrement-dchiffrement d exposants pour un mo


dule donn permet lattaquant de factoriser le module.
- La connaissance dune paire chiffrement-dchiffrement d exposants pour un mo
dule permet lattaquant de calculer d autres paires chiffrement-dchiffrement
sans devoir factoriser n.
- Un module commun ne peut pas tre utilis dans un protocole qui utilise le RSA

dans un rseau de communication6.


Les messages doivent tre combls par remplissage avec des valeurs alatoires
pour empcher les attaques par petit exposant de chiffrement.
- Lexposant de dchiffrement choisi pour un protocole doit tre grand.
Rappelez-vous quil nest pas suffisant d avoir un algorithme cryptographique sr. Tou
le cryptosystme doit tre sr et le protocole cryptographique aussi. Sil y a la moindri
faille dans une de ces trois zones, le systme entier nest pas sr.

Attaque sur le chiffrement et la signature par RSA


Il est sens de signer un message avant de le chiffrer (voir 2.7), mais tout le mondi
ne suit pas cette pratique. Avec le R SA , il existe une attaque contre les protocoles qu
chiffrent avant de signer [49].
Alice veut envoyer un message Bernard. Elle commence par le chiffrer avec la cle
publique de Bernard, puis le signe avec sa clef prive. Son message chiffr et sigm
ressemble ceci :
(A4eB mod riB)dA m od n a

Voil comment Bernard peut prtendre quAlice lui a envoy A4' et non A4. Comm
Bernard connat la factorisation de % (cest son module), il peut calculer les loga
rithmes discrets modulo n s- H lui suffit alors de trouver x tel que
A41
,x = A4 mod ng.

Il publie alors x e s comme tant sa nouvelle clef publique en gardant tib comme module
Il peut ainsi prtendre que Alice lui a envoy le message A4' chiffr avec ce nouve
exposant.
Cette attaque est particulirement pnible dans certaines circonstances. Une fonctio]
de hachage ne rsoud pas le problme. Cependant, imposer chaque utilisateur ui
exposant de chiffrement fixe le rsoud.
6. Ceci doit tre vident partir des deux points prcdents.

19.4

P o h l ig - H

499

ellm an

Standards
RSA est un standard de facto pratiquement dans le monde entier. L Organisation
internationale de normalisation a pratiquement cr un standard R S A de signatures
numriques; le R S A figure en annexe de lIS O /IE C 9796 [767]. La communaut
bancaire franaise a standardis le R SA [514] ainsi que les australiens [1198]. Les EtatsUnis nont actuellement pas de standard de cryptographie clef publique cause des
pressions de la N SA et de problmes de brevets. De nombreuses socits amricaines
utilisent PK C S (voir 24.14) qui est un produit de R S A D a r a S e c u r i t y , In c . Une
bauche de standard bancaire ANSI sappuie sur RSA.

Brevets
Lalgorithme R SA est brevet aux tats-Unis [1341]. Il nest brevet dans aucun autre
pays. P K P offre des licences d exploitation de ce brevet ainsi que pour dautres bre
vets de cryptographie clef publique (voir 25.5). Le brevet amricain expire le 20
septembre 2 0 0 0 .

19.4

PohligHellman

Le schma de chiffrement P o h l i g - H e l l m a n [1263] est similaire au R SA . Ce nest


pas un algorithme clef secrte puisque des clefs diffrentes sont utilises pour le
chiffrement et le dchiffrement. Ce nest pas un schma clef publique car les clefs
se dduisent facilement lune de lautre, les clefs de chiffrement et de dchiffrement
doivent tre toutes deux gardes secrtes.
Comme pour le R SA ,
C = A4e mod n
M . = C d mod n,

tel que :
ed = 1

(mod un nombre compliqu ).

Contrairement au R SA , n nest pas dfini en fonction de deux grands nombres pre


miers ; il doit faire partie de la clef secrte. Si quelquun avait e et n, il pourrait calculer
i. Sans la connaissance de e ou d, un adversaire serait oblig de calculer
e = (logM C) mod n.

Vous avons dj vu que ctait un problme difficile.

Brevets
^'algorithme P o h l i g H e l l m a n est brevet aux tats-Unis [724] et au Canada. P K P
ictroie des licences dexploitation de ce brevet, ainsi que d autres brevets de crypto
graphie clef publique (voir 25.5).

Chapitre 19

500

19.5

Algorithmes clef publique

Rabin

La scurit du schma de R a b in [1294, 1603] dpend de la difficult de calculer des


racines carres modulo un nombre composite. Ce problme est quivalent la factori

sation.
Tout dabord, choisissez deux nombres premiers, p et q, tout deux congrus 3 modulo 4.
Ces nombres premiers forment la clef prive ; n = pq est la clef publique.
Pour chiffrer un message, A4 (A4 doit tre infrieur n), calculez simplement
C --- A42 mod n.

Dchiffrer un message est aussi facile, mais un peu plus embtant. Comme les desti
nataires connaissent p et q. ils peuvent rsoudre les deux congruences en utilisant le
thorme du reste chinois. Calculez :
Toi = c ( p + D / 4 m o d

m 2 (p ~ C ^ +l)>A) mod p
m 3 = c (9 + D /4 m o d g

7714 ( C(9+1)/4) mod q.

Prenez alors des entiers a et b tels que a = q i q 1 mod p) et b =


quatres solutions possibles sont les suivantes :
A4i
M .2
A43
A44

= ( ami + bm3) mod


{ami + bm) mod
= (am 2 + bm3) mod
= (am2 + brri/f) mod

p(p~*

mod q).Les

n
n

n
n.

Lun de ces 4 rsultats, A4i, A42, A43 ou A44, est gal A4. Si
le message estdu
texte en anglais, il serait facile de choisir le bon A4*. D autre part, si le message est
une chane alatoire de bits (pour la gnration de clefs, par exemple) ou une signature
numrique, il ny a aucun moyen de savoir quel A4* est correct. Un moyen de rsoudre
ce problme est d ajouter une entte connue au dbut du message.

Williams
W illia m s a redfini les schmas de R a b in pour liminer leurs limitations [1603]. Dans

son schma, p et q sont slectionns tels que :


p= 3

(m od 8)

q= 7

(mod 8)

et

N = pq.

Il y a galement un petit entier S , tel que J(S,N) = 1 dans lequel J dnote le


symbole de Jacobi (voir 11.3). Les valeurs N et S sont publiques. La clef secrte est
k telle que :
k = \ x (^ x (p - i ) x (q - i ) + i)-

19.6

501

E lG a m a l

Pour chiffrer un message A l, calculez cj tel que J (A l,N ) (l ) Cl. Ensuite, calculez
M ' = ( S Cl x A l) mod N . Comme pour le schma de R a b i n , C = A l '2 mod N . Et
C2 = A 1' mod 2. Le message chiffr final est le triplet :
(C,C!,C2).

Pour dchiffrer C, le destinataire calcule A i en utilisant :


Ck = A t "

(mod N).

Le signe correct tant donn par c2. Finalement,


A l = (S ~Cl x ( - 1 ) C1 x A i ) mod N.
il l ia m s a modifi ce schma dans [1605, 1606, 1607]. Au lieu de mettre le message
au carr, mettez-le au cube. Les grands nombres premiers doivent tre congrus 1
modulo 3 ; sinon la clef publique et la clef prive sont les mmes. Mieux encore, il ny
a quun dchiffrement possible pour chaque chiffrement.
Par rapport au R SA , R a b i n et W il l ia m s ont tous deux lavantage d avoir t prouvs
aussi srs que la factorisation. Toutefois, ils ne sont absolument pas srs dans le cas
dune attaque texte chiffr choisi. Si vous avez lintention dutiliser ces schmas dans
des situations o un attaquant peut monter une telle attaque (par exemple, dans un
algorithme de signature numrique o lattaquant peut choisir les messages quil fait
signer), assurez-vous d utiliser une fonction de hachage sens unique avant de signer.
Malheureusement, une fois que vous ajoutez une fonction de hachage sens unique au
systme, il nest plus aussi sr que la factorisation [630], bien que dun point de vue
pratique, lajout de la fonction de hachage ne peut pas affaiblir le systme.
Dautres variantes de R a b i n se trouvent dans [983, 910, 696, 698, 1441, 999]. Une
variante deux dimensions est dcrite dans [867, 889].

19.6

ElGamal

Les schmas E l G a m a l [520, 521] peuvent tre utiliss la fois pour les signatures
numriques et pour le chiffrement. Il tire sa scurit de la difficult de calculer des
logarithmes discrets.
Pour engendrer une paire de clefs, choisissez d abord un nombre premier p et deux
nombres alatoires g et x, tels que g et x soient tous deux infrieurs p. Ensuite
calculez :
y gx mod p.
La clef publique est faite de y, g et p. Les valeurs de g et p peuvent tre toutes deux
partages par un groupe d utilisateurs. La clef prive est x.

Signatures ElGamal
Pour signer un message A4, choisissez d abord un nombre alatoire k, tel que k et p 1
soient premiers entre eux. Ensuite calculez :
a = gk mod p

Chapitre 19

502

Algorithmes clef publique

et utilisez lalgorithme d Euclide tendu pour trouver la valeur de b qui satisfait lqua
tion suivante :
AA = (xa -f kb) mod (p 1).
La signature est la paire : a et b. La valeur alatoire k doit tre tenue secrte.
Pour vrifier une signature, il faut confirmer que :
yaab mod p = gM mod p.

Cela est rsum par le tableau 19.5.


Tab.

19.5 - Signatures E l G a m a l

C l e f p u b liq u e :

p premier (peut tre partag par un groupe d utilisateurs)


g < p (peut tre partag par un groupe dutilisateurs)
y gx mod p
c l e f p r iv e :

x < p
S ig n a tu r e :

k choisi alatoirement et premier avec p 1


a (signature) = gk mod p
b (signature) tel que AA = (xa + kb) mod (p - 1)
V r if ic a t i o n :

La signature est valide si y aab mod p = gM mod p.


Il faut prendre une nouvelle valeur de k chaque chiffrement et chaque signature,
et cette valeur doit tre choisie alatoirement. Si jamais Estelle rcupre une valeur
de k que Alice a utilis, elle peut retrouver la clef prive x d Alice. Si jamais Estelle
rcupre deux messages signs ou chiffrs avec la mme valeur de k, elle peut retrouver
x.

Par exemple, choisissez p = 11 et g = 2. Choisissez la clef prive x = 8. Calculez :


y gx mod p = 28 mod 11 = 3.

La clef publique est faite de y = 3, p = 2 et p = 1 1.


Pour authentifier A4 5, choisissez dabord un nombre alatoire k = 9. Confirmez que
pgcd(9,10) = 1. Calculez :
a = gk mod p = 29 mod 11 = 6

et utilisez lalgorithme d Euclide tendu pour rsoudre :


JA = (ax + kb) mod (p 1)

5 = ( 8 x 6 + 9 x 6 ) mod 10.
La solution est b = 3 et la signature est la paire a 6 et b 3.
Pour vrifier la signature, confirmez que :
y aab mod p = gM mod p

3663 mod 11 = 25 mod 11.

19.6

503

E lG a m al

Une variante de E l G a m a t , pour les signatures est dcrite dans [1382]. Thomas B e t h
a invent une variante du schma E l G a m a l adapte aux preuves d identit [153]. Il
existe des variantes pour la validation de mots de passe [317], et pour lchange de clefs
[773]. Et il en existe bien d autres (voir 20.4).

Chiffrement ElGamal
Une modification du schma E l G a m a l permet le chiffrement. Pour chiffrer un message
A4, choisissez d abord un nombre alatoire k tel que k et p 1 soient premiers entre
eux. Ensuite calculez :
a = gk mod p
b = y kM. mod p.

La paire a et b forme le texte chiffr. Remarquez que la taille du texte chiffr est le
double de celle du texte en clair.
Pour dchiffrer a et 6, calculez :
A4 = b /a x mod p.
Puisque ax = gkx (mod p) et que b/ax = ykM / a x = gxkM / g xk = A4 (mod p), tout
est en ordre(voir le tableau 19.6). C est vraiment la mme chose que dans lchange
de clefs deD if f ie - H e l l m a n (voir 22.1), ceci prs que y fait partie de la clef, et que
le chiffrement est multipli par y k.

Tab.

19.6 - Chiffrement E l G a m a l

C l e f p u b liq u e :

p premier (peut tre partag par un groupe dutilisateurs)


g < p (peut tre partag par un groupe dutilisateurs)
y gx mod p
C l e f p r iv e :

x < p
C h iff r e m e n t :

k choisi alatoirement et premier avec p 1


a (texte chiffr) = gk mod p
b (texte chiffr) = y kA4 mod p
D c h iff r e m e n t :

A4 (texte en clair) = b/ax mod p

Vitesse
Le tableau 19.7 donne des exemples de vitesses de ralisations logicielles de E l G am al
[929].

Chapitre 19

504

Algorithmes clef publique

T a b . 19.7 - Vitesses de E l G a m a l pour diffrentes longueurs de module avec des ex


posants de 160 bits (sur une station SP A R C II)

Chiffrement,
Dchiffrement
Signature
Vrification

512 bits
0,33 s
0,24 s
0,25 s
1,37 s

768 bits
0,80 s
0,58 s
0,47 s
5,12 s

1024 bits
1,09 s
0,77 s
0,63 s
9,30 s

Brevets
E l G a m a l nest pas brevet. Mais, avant de dmarrer une ralisation de cet algorithme,
tenez compte du fait que P K P considre que cet algorithme est couvert par le brevet
du systme DlFFiE-HELLMAN [720]. Cependant, ce brevet expire le 29 avril 1997, ce
qui fera de E l G a m a l le premier algorithme cryptographique clef publique adapt
au chiffrement et aux signatures numriques qui ne soit pas couvert par un brevet aux
Etats-Unis. Je suis impatient de voir cela.

19.7

McEliece

En 1978, Robert M c E l ie c e a dvelopp un cryptosystme clef publique bas sur la


thorie des codes algbriques [1049]. Lalgorithme fait usage de lexistence dune classe
de codes correcteurs derreurs, connus sous le nom de codes de G o p p a . Son ide est
de construire un code de G o p p a et de le dguiser en code linaire gnral. Il existe un
algorithme rapide pour dcoder un code de G o p p a , mais dcoder des codes linaires
gnraux est un problme N P - c o m p l e t . Une bonne description de cet algorithme peut
tre trouve dans [1243] ; consultez aussi [1533]. Ce qui suit est un bref rsum.
Soit dff(x,y) la distance de H a m m i n g entre x et y. Les nombres n, k et t sont des
paramtres du systme.
La clef prive a trois parties : G' une matrice gnratrice k x n pour un code de G o p p a
qui peut corriger t erreurs, P une matrice de permutation n x n, S une matrice non
singulire k x k.
La clef publique est une matrice G, k x n telle que: G = SG P.
Les messages en clair sont des chanes de k bits sous la forme de vecteurs k lments
de Z /2 .
Pour chiffrer un message, choisissez un vecteur alatoire n lments deZ j 2, z avec
une distance de H a m m i n g infrieure ou gale t.
c = mG + z
Pour dchiffrer le texte chiffr, calculez d abord c'

= cP 1. Ensuite, en utilisant lalgo

rithme de dcodage des codes de G o p p a , trouvez m 't e l que d //( m , G ,c, ) soit infrieure
ou gale t. Finalem ent, calculez m = m 'S _1.

Dans son article originel, M c E l ie c e suggre d utiliser n = 1024, t = 50 et k = 524.


C est le minimum requis pour la scurit.
Bien que cet algorithme ft lun des premiers algorithmes clef publique et quil ny
ait pas de rsultats cryptanalytiques contre cet algorithme, il nobtint jamais une large

19.8

Cryptosystmes courtes elliptiques

505

diffusion dans la communaut cryptographique. Ce schma est de deux trois ordres


de grandeurs plus rapide que le R S A mais il pose diffrents problmes. La clef publique
est norme : 219 bits de long. Lexpansion des donnes est importante : le texte chiffr
est deux fois plus long que le texte en clair.
Certaines tentatives de cryptanalyse de ce systme sont dcrites dans [12, 954, 1530,
311]. Aucune d entre elles ne fut victorieuse, bien que la similarit entre lalgorithme
de M c E l ie c e et les empilements ait inquit certains.
En 1991, deux cryptographes de lex-Union sovitique, K o r z h ik et T u r k in ont pr
tendu avoir cass le systme avec certains paramtres [882]. Leur article ne contient au
cune preuve et beaucoup de cryptographes doutent de leur rsultat. Une autre attaque
russe, qui ne peut pas sutiliser directement contre le systme M c E l ie c e , est dcrite
dans [1453, 1454], Des extensions de M c E l ie c e sont prsents dans [426, 1237, 986].

Autres algorithmes bass sur les codes correcteurs derreurs li


naires
Lalgorithme de NlEDERREiTER [1166] est troitement li lalgorithme de M c E l i e c e ,
et fait lhypothse que la clef publique est une matrice alatoire de vrification de parit
dun code correcteur. La clef prive est un algorithme efficace de dcodage pour cette
matrice.
Un autre algorithme, servant lidentification et aux signatures numriques, est bas
sur le syndrome du dcodage [1504] ; consultez [311] pour les commentaires. Un dernier
algorithme bas sur les codes correcteurs d erreurs [1623] nest pas sr [699, 51, 52,1531,
53].

19.8

Cryptosystmes courbes elliptiques

Les courbes elliptiques ont t tudies pendant de nombreuses annes et il existe


un volume important de publications ce sujet. En 1985, Neal K o b l i t z et V.S.
M il l e r ont propos indpendamment de les utiliser pour des cryptosystmes clef
publique [868, 1101]. Ils n ont pas invent un algorithme cryptographique qui utilise
les courbes elliptiques mais ils ont ralis des algorithmes clef publique existants, tel
que D if f ie H e l l m a n , laide de courbes elliptiques.
Les courbes elliptiques sont intressantes parce quelles fournissent un moyen de cons
truire des lments et des rgles de combinaison qui produisent des groupes.
Ces groupes ont suffisamment de proprits familires pour construire des algorithmes
cryptographiques mais ils nont pas certaines proprits qui faciliteraient la cryptana
lyse. Par exemple, il ny a pas de bonne notion de continuit. C est--dire quil ny
a pas d ensemble de petits lments en fonction desquels un lment quelconque au
rait une bonne chance de pouvoir tre exprim par un algorithme simple. D o le fait
que les algorithmes de calcul indiciel de logarithmes discrets ( index calculus discrte
logarithm algorithms ) ne marchent pas. Voyez [1101] pour plus de dtails.
Les courbes elliptiques sur les corps finis Z j2 n sont particulirement intressantes.
Les processeurs arithmtiques pour les corps sous-jacents sont faciles construire et
relativement simples raliser pour des valeurs de n dans lintervalle de 130 200. Ces
systmes ont le potentiel de fournir des cryptosystmes clef publique plus rapides

Chapitre 19

506

Algorithmes clef publique

avec des clefs plus petites. D e nombreux algorithmes clef publique, tels que DlFFiEH e l l m a n , E l G a m a l et S c h n o r r , peuvent tre raliss laide de courbes elliptiques
sur des corps finis.

Les mathmatiques de ces systmes sont complexes et dpassent le cadre de ce livre.


Ceux qui sont intresss par le sujet sont invits lire les deux rfrences men
tionnes ci-dessus et lexcellent livre de Alfred M e n e z e s [1068]. Deux analogues
de R SA fonctionnent avec les courbes elliptiques [890, 457]. D autres articles sont
[27, 129, 1069, 871, 159, 872, 892, 30, 895, 357, 1070, 29, 915, 916, 913]. Les cryptosys
tmes courbes elliptiques clefs de petite taille sont examins dans [702]. Le Fa s t
E l l ip t ic E n c r y p t i o n (F E E ) de N e x t C o m p u t e r , I n c . utilise des courbes ellip
tiques [392]. Le FEE prsente lavantage de pouvoir utiliser nimporte quelle chane
de caractres facile retenir comme clef prive. Il y a aussi des cryptosystmes clef
publique qui utilisent des courbes hyperelliptiques [870, 869, 1447, 1222].

19.9

LUC

Quelques cryptographes ont dvelopp des gnralisations de R SA qui utilisent diff


rents polynmes la place de lexponentiation. Une variante appele K r a v i t z - R e e d ,
utilisant des polynmes binaires irrductibles [897], nest pas sre [454, 591]. Winfried
M l l e r and Wilfried N b a u e r utilisent les polynmes de D i c k s o n [1133, 1134, 976].
Rudolf L i d l et N b a u e r ont inspect sa scurit [1178, 1179]. (La gnration de
nombres premiers avec les fonction de L u c a s est commente dans [980, 978, 979, 600].)
Malgr tous ces travaux antrieurs, un groupe de chercheurs de la Nouvelle-Zlande
ont tent en 1993 de breveter ce schma, lui donnant le nom de LUC [1493, 523, 1494].
Le ne nombre de L u c a s Vn(AA,\) est, dfini par:
Vn( M , 1 )

Un _ 2 (A 4 ,l)

Tout le reste de la thorie de nombres de L u c a s est ignore ici. Une bonne approche
mathmatique des suites de L u c a s se trouve dans [1318, 1319]. Une description parti
culirement soigne des mathmatiques de LU C est donne dans [1501, 709].
Dans tous les cas, pour gnrer une paire clef publique/clef prive, commencez par
choisir deux grands nombres premiers p et q. Calculez n = pq. La clef de chiffrement e
est un nombre alatoire premier avec p 1, q 1 , p + 1 et q + 1.
Il y a quatre clefs de dchiffrement possibles (ppcm dsigne le plus petit commun
multiple) :
d=
d=
d=
d=

e~ l mod (ppcm(p -f 1,q + 1))


e ~ 1 mod (ppcm(p + 1,q 1))
e ~ x mod (ppcm(p 1, + 1))
e-1 mod (ppcm(p 1,q 1))

La clef publique est forme de d et n, la clef prive de e et n. Jetez p et q. Pour chiffrer


un message AA (AA doit tre infrieur n), calculez :
C = Ve(JA,\)

(mod n)

19.10

507

Automates finis

et pour dchiffrer :
M = V d(M ,l)

(mod n)

Au mieux, LU C est aussi sr que R SA . Et un rsultat rcent, non encore publi,


montre comment casser LU C au moins dans certaines ralisations. Je ne lui fait pas
confiance.

19.10

Automates finis

Le cryptographe Tao R e n j i a dvelopp un algorithme clef publique bas sur les


automates finis [1312, 1313, 1314, 1315, 667]. De mme quil est difficile de factoriser
le produit de deux grands nombres premiers, il est difficile de factoriser la composition
de deux automates finis, spcialement quand lun deux (ou les deux) nest pas linaire.
La majorit de ces recherches a t mene en Chine dans les annes 1980 et publie en
chinois. R e n j i commence lcrire en anglais. Son rsultat principal dit que certains
automates non linaires (les automates quasi-linaires) possdent des inverses faibles
si et seulement sils ont une certaine structure de matrice chelons. Cette proprit
disparat sils sont composs avec un autre automate, mme linaire. Dans lalgorithme
clef publique, la clef prive est compose dun automate quasi-linaire inversible et
dim automate linaire, et la clef publique correspondante est obtenue en les multipliant
terme terme. Les donnes sont chiffres en les passant travers lautomate publique,
et dchiffres en les passant travers les inverses de ses composantes (dans certains
cas, condition quils aient t positionns des tats initiaux appropris). Ce schma
fonctionne la fois pour le chiffrement et pour les signatures numriques.
La performance de ces systmes se rsume ainsi : comme le systme M c E l i e c e , ils sont
beaucoup plus rapides que le R S A , mais ncessitent des clefs plus longues. La longueur
de clef donnant une scurit similaire au R SA 512 bits est de 2792 bits, et de 4152
bits pour le R S A 1024 bits. Dans le premier cas, ce systme chiffre 20 869 octets de
donnes par seconde et dchiffre 17117 octets de donnes par seconde sur un 80486
33 MHz.
R en ji a publi trois algorithmes. Le premier, FAPK C 0, est un systme affaibli qui
utilise des composantes linaires, et est avant tout illustratif. Deux systmes srieux,
FAPKC1 et FA P K C 2 utilisent une composante linaire et une composante non li
naire chacun. Le deuxime est plus compliqu et a t dvelopp de manire per
mettre les oprations base d identification.
Quand leur solidit, une somme de travail assez importante leur a t ddie en Chine
(o il y a maintenant plus de 30 instituts publiant des articles de cryptographie). On
peut apprcier daprs limposante littrature en chinois que le problme a t tudi.
Un charme ventuel de FA PK C 1 et F A PK C 2 est quils ne sont encombrs daucun
brevet amricain. Aussi, quand le brevet de D if f ie - H e l l m a n expirera en 1997, ils
feront sans doute partie du domaine publique.

Chapitre 20

Algorithmes de signature
numrique clef publique
20.1

Algorithme de signature numrique


DSA

En aot 1991, lInstitut national des standards et de la technologie amricain NIST


( National Institute of Standards and Technology ) proposa lalgorithme de signa
ture numrique D SA ( Digital Signature Algorithm ) pour le nouveau standard
de signature numrique DSS ( Digital Signature Standard ). D aprs le Fdral
Register [541] :
Un standard fdral de traitement de linformation FIPS ( Fdral
Information Processing Standard ) est propos pour le standard de signa
ture numrique DSS. Cette proposition de standard spcifie un algorithme
de signature numrique clef publique (D S A ) appropri pour les appli
cations de signature numrique fdrales. Le DSS propos utilise une clef
publique pour permettre un destinataire de vrifier lintgrit des donnes
et de vrifier lidentit de lexpditeur des donnes. Le DSS peut aussi tre
utilis par une tierce personne pour tablir lauthenticit dune signature
et des donnes qui y sont associes.
Cette proposition de standard adopte un schma de signature clef
publique qui utilise une paire de transformations pour engendrer et vrifier
la valeur numrique appele signature.
Et:
La proposition de FIPS est le rsultat de lvaluation d un certain
nombre dalternatives de techniques de signature numrique. En faisant
son choix, le N IST sest conform au mandat contenu dans la section 2
du Computer Security Act de 1987 indiquant que le N IST dveloppe
des standards pour . . . garantir de manire rentable la scurit et la confi
dentialit des informations fdrales et, parmi les technologies offrant un

510

Chapitre 20

Algorithmes de signature numrique clef publique

niveau de protection comparable, choisir loption avec les meilleures carac


tristiques oprationnelles et pratiques.
Parmi les facteurs considrs durant ce processus, il y avait le niveau de
scurit offert, la facilit de ralisation la fois matrielle et logicielle, la
facilit dexportation hors des Etats-Unis, les brevets applicables, limpact
sur la scurit nationale et la prservation de la loi, et le niveau defficacit
la fois pour les fonctions de signature et de vrification.
Un certain nombre de techniques furent considres comme fournissant
la protection approprie pour les systmes fdraux. La technique slection
ne prsente les avantages suivants :
- Le N IST escompte quelle sera disponible gratuitement. Un plus large
usage de cette technique rsultant de sa disponibilit dans le domaine
public devrait tre bnfique au gouvernement et au public.
- La technique slectionne permet des ralisations efficaces des opra
tions de signature dans des applications de cartes puce. Dans ces
applications, les oprations de signature sont effectues avec les mo
destes ressources en calcul de la carte puce, tandis que le processus de
vrification est ralis dans un environnement plus riche en ressources
de calculs tels quun ordinateur personnel, un module cryptographique
matriel, ou un ordinateur central.
Avant que cela ne devienne trop confus, laissez-moi revoir la nomenclature : D SA est
lalgorithme, DSS est le standard. Le standard utilise lalgorithme. Lalgorithme fait
partie du standard.

Ractions lannonce
Lannonce du N IST a dclench un maelstrm de critiques et daccusations. Mal
heureusement, toutes plus politiques quacadmiques. R S A D a t a S e c u r i t y , In c .,
pourvoyeur de lalgorithme R SA , conduisit les critiques contre le DSS, exigeant que le
R S A soit utilis dans le standard comme algorithme, et pas un autre. R SA D SI gagne
beaucoup d argent en vendant des licences dexploitation de lalgorithme R SA , et un
standard de signature numrique exempt de droits affecterait directement ses revenus
de base1.
Avant que lalgorithme ne soit annonc, R SA D SI fit campagne contre un module
commun , qui aurait donn la possibilit au gouvernement de falsifier des signatures.
Quand lalgorithme fut annonc sans ce module commun , R SA D S I lattaqua sur
dautres bases [161], la fois dans des lettres adresses au N IST et dans la presse2.
De nombreuses grandes socits de logiciel qui avaient dj acquis une licence pour
lalgorithme R S A sopposrent au DSS. En 1982, le gouvernement amricain sollicita
des algorithmes clef publique pour un standard [539]. Aprs cela, il n y eut plus le
moindre signe de vie du N IST durant neuf ans. Des socits telles quIBM , A p p l e ,
N o v e l l , L o t u s , N o r t h e r n T e l e c o m , M i c r o s o f t , D EC et S u n avaient dj investi
1. Notez que le D S A pourrait enfreindre certains brevets; j y reviendrai
2. Q uatre lettres adresses au N IS T furent publies dans [1337]. Q uand vous les lisez, gardez
lesprit qu au moins deux des auteurs, R . RlVEST et M. HELLMAN, ont un intrt financier ce que le
D SS ne soit pas accept.

20.1

Algorithme de signature numrique D S A

511

des montants importants dans la ralisation de lalgorithme RSA . Ils ne voulaient pas
perdre cet investissement.
En tout, le N IST avait reu 109 commentaires la fin de la premire priode dva
luation, le 28 fvrier 1992.
Parcourons une une les critiques contre le D SA :
1. Le D S A ne peut pas tre utilis pour le chiffrement ou la distribution de clefs.
C est vrai, mais ce nest pas son objet. C est un standard de signature. Il devrait
y avoir un standard N IST de chiffrement clef publique. Le N IST cause un
grave prjudice au peuple amricain en ne mettant pas sur pieds un standard de
chiffrement clef publique. Il est suspect que le N IST ait propos un standard
de signature numrique qui ne puisse pas tre utilis pour le chiffrement3. Cela
ne veut pas dire quun standard pour la signature numrique est inutile.
2. Le D SA a t dvelopp par la N SA, et il peut y avoir une brche secrte dans
lalgorithme.
La plupart des premiers commentaires relevaient de la paranoa: Le refus du
N IST de fournir linformation sans justification apparente ninspire pas confiance
dans le DSS, mais renforce linquitude quant lexistence dun dessein cach
telle la mise en place dun cryptosystme clef publique national qui puisse
tre cass par le N IST et/ou la NSA. [161]. Il y eut une objection srieuse
concernant la scurit du DSS souleve par Arjen L e n s t r a et Stuart H a b e r
des laboratoires B e l l c o r e . Elle sera prsente plus avant dans le texte.
3. Le D SA est plus lent que le R S A [809].
C est vrai, plus ou moins. Les vitesses de gnration de signature sont les mmes
mais la vrification de signature peut tre 10 40 fois plus lente avec le D SA. La
gnration de clefs est plus rapide que celle du R SA . La gnration de clef est
hors de propos ; un utilisateur fait cela rarement. D autre part, la vrification de
signature est ]opration la plus usite.
Le dfaut de cette critique est quil y a plusieurs moyens de jouer avec les pa
ramtres de test en fonction du rsultat que lon veut obtenir. Les prcalculs
peuvent acclrer la gnration de signatures du D SA mais ils ne sont pas tou
jours ralisables. Les dfenseurs du R S A utilisent des nombres optimiss pour
rendre leurs calculs plus faciles; les dfenseurs du D S A utilisent leurs propres
optimisations. Dans tous les cas, les ordinateurs vont toujours de plus en plus
vite. Bien quil y ait une diffrence, dans la plupart des applications ce nest pas
notable.
4. Le R SA est un standard de facto.
Il y a deux exemples dune telle plainte. Lune mane de Robert
recteur du programme des standards dIBM [572] :

FOLLETT,

IBM sinquite du fait que le N IST ait propos un standard avec un


schma de signature numrique diffrent plutt que dadopter un stan
dard international. Nous avons t convaincus par les utilisateurs et les
3. E t pourtant, il peu t quand m m e ltre voir 23.3.

di

512

Chapitre 20

Algorithmes de signature numrique clef publique

organisations dutilisateurs que des standards internationaux utilisant


le R S A seraient un prrequis pour la vente de produits de scurit dans
un avenir trs proche.
L autre est de Les S h r o y e r , vice-prsident et directeur des services informatiques
et des tlcommunications chez MOTOROLA [1450] :
Nous devons avoir un standard de signature unique, robuste et politi
quement accept qui soit utilisable travers le monde, entre amricains
et n on- Amricains, et entre MOTOROLA et des entits non-M oTOROLA.
Labsence dune autre technologie de signature numrique viable du
rant ces huit dernires annes a fait de R S A un standard de facto ...
M o t o r o l a et de nombreuses autres socits ... ont dpens des mil
lions de dollars pour le R SA . Nous sommes inquiets de linterfonctionnement et du soutien de deux standards diffrents car cette situation va
occasionner des surcots, des retards de diffusion et des complications
...
De nombreuses socits voulaient que le N IST adopte IS O /IE C 9796, le stan
dard international de signature numrique qui utilise le R S A [767]. Bien que ce
soit une objection valable, ce nest pas une justification suffisante pour en faire un
standard. Un standard exempt de droits servirait au plus haut point les intrts
du public amricain.
5. Le processus de slection du D SA ntait pas public; il na pas bnfici dun
temps suffisant pour lanalyse.
Tout dabord, le N IST prtendit avoir conu le D SA ; ensuite ils admirent que la
N SA les avait aids. Finalement, ils confirmrent que la N SA avait conu lalgo
rithme. Cela inquitait nombre de gens auxquels la NSA n inspire pas confiance.
Mme ainsi, lalgorithme est public et disponible pour analyse; et le N IST a
prolong la priode danalyse et de commentaires.
6. Le D S A peut enfreindre d autres brevets.
C est possible. Ce sera discut plus en dtail dans la section sur les brevets.
7. La taille de clef est trop petite.
C tait la seule critique valable contre le DSS. La ralisation originale prvoyait
un module de 512 bits [1176]. Comme la scurit de lalgorithme dpend de la
difficult de calculer des logarithmes discrets modulo le module, c tait inquitant
pour la plupart des cryptographes. Il y a eu des avances dans le domaine du
calcul des logarithmes discrets sur un corps fini et un module de 512 bits est trop
court pour une scurit long terme (voir 7.2). D aprs Brian LaMacchia et
Andrew O d l y z k o , ... mme des nombres premiers de 512 bits semblent noffrir
quune scurit marginale ... [945]. Ce nest pas tout fait correct 512 bits
offrent une scurit suffisante aujourdhui. Mais si votre scurit doit stendre
dans la futur, ce nest pas sr. En rponse cette critique, le NIST a rendu
variable la taille de clef de 512 1024 bits. Nous y reviendrons plus en dtail.

20.1

Algorithme de signature numrique D S A

513

Le standard a finalement vu le jour le 19 mai 1994 [1174], Le dcret d adoption prcisait


[540] :
Ce standard sapplique tous les dpartements et instituts fdraux pour
la protection dinformations non classes... Ce standard doit tre inclus
dans la conception et la ralisation de schmas de signature clef publique
utiliss par les dpartement et instituts fdraux ou par dautres organismes
sous contrat avec eux. Ladoption et lutilisation de ce standard est ouverte
aux organismes privs ou commerciaux.
Avant dinclure ce standard dans votre prochain produit, lisez un peu plus loin la partie
concernant les problmes de brevet.

Description de lalgorithme
Le DSA est une variante des algorithmes de signature S c h n o r r et E l G a m a l qui est
entirement dcrite dans [1174]. Lalgorithme utilise les paramtres suivants:
p un nombre premier de L bits de long, o L est compris entre 512 et

1024 et est un multiple de 64.4


q = un facteur premier de p 1, long de 160 bits.

g = /j(p-i)/<7 mod p, o h est nimporte quel nombre infrieur p 1 tel


que h^p~ l^'q mod p soit plus grand que 1.
x = un nombre infrieur q.
y = gx mod p.

De plus, lalgorithme utilise une fonction de hachage sens unique: H (x). Pour le
DSS, c est lalgorithme de hachage sr ( Secure Hash Algorithm ) dcrit par le
paragraphe 18.7.
Les trois premiers paramtres p, q et g sont publics et peuvent trecommuns un
rseau dutilisateurs. La clef prive est x et la clef publique est y.
Pour signer un message M. :
1 Alice engendre un nombre alatoire k infrieur q.
2 Alice engendre
r = ( gk mod p) mod q
s = ( k~ 1 ( H ( M ) + xr)) mod q.

Les paramtres r et s forment sa signature ; elle les envoie Bernard.


3 Bernard vrifie la signature en calculant:

w = s-1 mod q
u\ = (H (M ) x w ) mod q
u2 = rw mod q
v = ((g, 1 x yU2) mod p) mod q.
4.
Dans le standard original, la longueur de p tait fixe 512 bits [1176]. C e fut la source de
nombreuses critiques et le N IS T du changer [1174],

Chapitre 20

514

Algorithmes de signature numrique clef publique

Si v = r, alors la signature est vrifie.

Les preuves des relations mathmatiques sont fournies dans [1174]. Voyez le ta
bleau 20.1 pour un rsum.

T a b .

20.1

Signatures DSA

C lef publique :
p nombre premier de 512 1024 bits
q facteur premier de p 1 de 160 bits
g=
mod p, o h est infrieur p 1 et (hSp O/ mod p) > 1
(p, q et g peuvent chacun tre partags par un groupe d utilisateurs)
y = gx mod p
C lef prive :
x < q (un nombre de 160 bits)
Signature :
k choisi alatoirement et infrieur q
r (signature) = ( gk mod p) mod q
s (signature) = (fc- 1 (i/(m ) + xr)) mod q
Vrification :
w = s ~ l mod q
Ui = ( H (m ) x w) mod q
u2 = rw mod q
v = (( gUl x y U2) mod p) mod q
Si v = r, alors la signature est vrifie.

Vitesse et prcalculs
Le tableau 20.2 donne quelques vitesses de logiciels ralisant le DSA.
20.2 - Vitesses du D S A pour diffrentes longueurs de module avec un exposant
de 160 bits (sur une station S P A R C II )

T a b .

Signature
Vrification

512 bits
0,20 s
0,35 s

768 bits
0,43 s
0,80 s

1024 bits
0,57 s
1,27 s

Les ralisations concrtes du D SA peuvent tre acclres grce aux prcalculs. Notez
que la valeur de r ne dpend pas du message. Vous pouvez crer une chane de valeurs
alatoires k et prcalculer la valeur r pour chacune dentre elles. Vous pouvez aussi
prcalculer A;'1 pour chacune de ces valeurs k. Ensuite, quand un message arrive, vous
pouvez calculer s pour des r et fc-1 donns.
Ce prcalcul acclre considrablement le D SA. Le tableau 20.3 donne une comparaison
des temps de calcul pour le D S A et le R S A pour une ralisation en carte puce [I486].

Gnration des nombres premiers pour le DSA


L enstra

et

H aber

remarqurent que certains modules sont nettement plus faciles

20.1

515

Algorithme de signature numrique D S A

T ab. 20.3 - Comparaison des temps de calcul pour le R SA et le D SA

Calculs gnraux
Gnration de clef
Prcalcul
Signature
Vrification

D SA

RSA

hors-carte (P)
14 s
14 s
0,03 s
16 s
1-5 s hors-carte (P)

sans objet
hors-carte (S)
sans objet
15 s
1,5 s
1-3 s hors-carte (P)

D SA
avec p, q
et g communs
hors-carte (P)
4s
4s
0,03 s
10 s

Les calculs hors-carte furent effectus sur un ordinateur personnel avec un processeur
80386 cadenc 33 MHz. (P) indique les paramtres publics hors-carte et (S)
indique les paramtres secrets hors-carte. Les deux algorithmes ont t tests avec un
module de 512 bits.

casser que les autres [961]. Si quelquun utilisait lun de ses modules faibles ,
ses signatures pourraient tre facilement falsifies. Ce nest pas un problme pour deux
raisons : primo, les modules pour lesquels cette proprit est vraie sont faciles dtecter.
Secundo, ces modules sont si rares que les chances den utiliser lors du choix alatoire
dun module sont ngligeables plus petites en fait que les chances dengendrer un
nombre compos par une mthode probabiliste de gnration de nombres premiers.
Dans [1174], le N IST recommande la mthode suivante de gnration des deux nombres
premiers p et q tels que q divise p 1. Le nombre premier p a une longueur de 512
1024 bits multiple de 64. Le nombre premier g a 160 bits de long. Soit L 1 = 160n + b
o L est la longueur de p, n et b sont deux nombres, et b est infrieur 160.
1 Choisissez une chane arbitraire dau moins 160 bits et appelez-la S. Soit g la
longueur de S en bits.

2 Calculez U = S H A (S ) S H A ((S + 1) mod 29), o S H A est lalgorithme de


hachage sr (voir 18.7).
3 Formez q partir de U en mettant le bit le plus significatif et le bit le moins
significatif tous deux 1.
4 Vrifiez si q est un nombre premier.
5 Si q nest pas un nombre premier, retournez ltape

1.

6 Posez C = 0 et N = 2.
7 Pour k = 0,1,...,n, on a 14 = S H A ((S 4- N + k) mod 29).
8 Calculez
W = V0 + Ri x 2160 + ... + Vn- i x 2(n 1)* 160 + (14 mod 2 b) x 2nxl6Q
et
X = W + 2 l ~ 1.
Remarquez que X est un nombre de L bits.

516

Chapitre 20

Algorithmes de signature numrique clef publique

9 Calculez p = X ((X mod 2q) 1). Remarquez que p est congru 1 modulo
2q.
10 Si p < 2 L , alors allez ltape 13.
11 Vrifiez si p est premier.
12 Si p est premier, allez ltape 15.
13 Posez C = C + 1 et N = N + n + 1.
14 Si C = 4 096, alors allez ltape 1 , sinon allez ltape 7.
15 Sauvegardez les valeurs de S et C utilises pour engendrer p et q.
Dans [1174], la variable S est appele le germe , C le compteur , et N l offset .
La raison dtre de cet exercice est quil existe un moyen public dengendrer p et q.
Rappelez-vous les gens qui sinquitaient du fait que des valeurs faibles pour p et q
permettraient de casser le DSA plus facilement. Pour toute utilisation pratique, cette
mthode vite cela. Si quelquun vous donne p et q, vous pouvez vous demander do ils
viennent. Par contre, si quelquun vous donne les S et les C qui ont permis dengendrer
les p et les q alatoires, vous pouvez par vous-mme refaire les calculs. L utilisation de
S H A , une fonction de hachage sens unique, vite que quelquun puisse remonter les
calculs partir de p et g pour gnrer S et C.
La scurit est meilleure que celle que vous auriez avec le R SA . Avec le R SA , les
nombres premiers sont gards secrets. Quelquun peut engendrer un nombre premier
factice ou un nombre ayant une forme spciale qui facilite la factorisation. moins que
vous ne connaissiez la clef prive, vous ne le sauriez pas. Ici, mme si vous ne connaissez
pas la clef prive, vous pouvez vrifier que p et q ont t engendrs alatoirement.

Chiffrement ElGamal laide du DSA


Selon certaines allgations, le D SA plaisait au Gouvernement amricain parce que
ce n tait quun algorithme de signature numrique qui ne pouvait pas servir pour le
chiffrement. Bien que cela soit vrai, il est possible dutiliser un appel la fonction DSA
p ou r raliser un chiffrement E l G a m a l .
Faites lhypothse que lalgorithme D SA est ralis par une fonction qui peut tre
appele par :
D SA sign ( p , q , g , k , x , h , r , s ) .

Vous fournissez les nombres p, q, g, k, x et h et la fonction fournit comme rsultat les


paramtres r et s.
P ou r raliser le chiffrem ent E l G a m a l d un m essage m avec la c le f pu bliqu e y, choisissez
un n om bre alatoire k et appelez :
D S A s ig n (p ,p ,g ,k ,0 ,0 ,r ,s ).

La valeur de r fournie est a dans le schma E l G a m a l . Jetez s. Ensuite appelez :


D S A s ig n (p ,p ,y ,k ,0 ,0 ,r , s ) .

Renommez la valeur r en u ; jetez s. Appelez :


D S A s ig n (p ,p ,m ,l,u ,0 ,r ,s ).

20.1

Algorithme de signature numrique D S A

517

Jetez r. La valeur de s fournie est b du schma E l G a m a l . V o u s avez maintenant le


texte chiffr constitu de a et b.
Le dchiffrement est tout aussi simple. Utilisez la clef secrte x et les messages chiffrs
a et b. Appelez :
D S A s ig n ( p ,p ,a ,x ,0 ,0 ,r ,s ) .
La valeur de r est ax mod p. Appelez-la e. Ensuite appelez :
D S A s i g n ( p ,p ,l ,e ,b ,0 ,r ,s ) .
La valeur s est le texte en clair du message : m.
Cette mthode ne marchera pas avec toutes les ralisations du D SA , dont certaines
peuvent fixer les valeurs de p et , ou la longueur de certains autres paramtres.
Toutefois, si la ralisation est suffisamment gnrale, il y a un moyen de chiffrer avec
une fonction de signature numrique.

Chiffrement RSA laide du DSA


Le chiffrement R S A est encore plus facile raliser. Avec un module n, un message m
et une clef publique e, appelez :
D S A s ig n (n ,n ,m ,e ,0 ,0 ,r ,s ).
La valeur r fournie est le texte chiffr.
Le dchiffrement R S A est la mme chose :
D S A s ig n (n ,n ,m ,d ,0 ,0 ,r ,s ).
La valeur de r est le texte en clair.

Scurit du DSA
Avec 512 bits, le D S A ntait pas assez solide pour la scurit long terme. Avec 1024
bits, il lest.
LAgence nationale de scurit amricaine, dans une premire interview ce sujet, r
pondit Joe A b e r n a t h y du Houston Chronicle aux allgations concernant lexistence
dune brche secrte dans le DSS [367] :
En ce qui concerne la prsume brche secrte dans le DSS, nous
trouvons les termes brche secrte quelque peu trompeurs puisquils
impliquent que des messages envoys par le DSS sont chiffrs et que par
une brche secrte quelquun pourrait dune certaine faon dchiffrer (lire)
le message linsu de lexpditeur.
Le DSS ne chiffre aucune donne. Le vrai problme est de savoir si le
DSS est susceptible dtre utilis par quelquun pour falsifier une signature
et ainsi discrditer tout ie systme. Nous affirmons catgoriquement que les
probabilits que quiconque y compris la N SA falsifie une signature
avec le DSS quand il est correctement utilis et ralis sont infinitsimales.
De plus, la prsume vulnrabilit par brche secrte est vraie pour
nimporte quel systme dauthentification clef publique, y compris le

518

Chapitre 20

Algorithmes de signature numrique clef publique

RSA . Faire croire d une certaine faon que cela naffecterait que le DSS
(un argument rpandu dans la presse) est totalement trompeur. C est un
problme qui dpend de la ralisation et de comment on slectionne les
nombres premiers. Nous attirons votre attention sur la rcente confrence
EUROCRYPT, pendant laquelle fut organise une tribune sur le problme
des brches secrtes dans le DSS. L un des chercheurs de B e l l c o r e qui
avait initialement allgu de lexistence d une brche secrte faisait partie de
la tribune et il nous a sembl que les participants la tribune y compris
celui de B e l l c o r e conclurent que la prsume brche secrte ntait
pas un problme pour le DSS. De plus, le consensus semblait gnral sur
le fait que le problme de la brche secrte tait insignifiant et quil avait
t exagr par la presse. Toutefois, pour essayer de rpondre lallgation
concernant la brche secrte, la demande du N IST, nous avons conu
un processus de gnration des nombres premiers qui garantira que lon
puisse viter le choix des relativement rares nombres premiers faibles qui
auraient entran une faiblesse dans lutilisation du DSS. De plus, le N IST
a lintention de permettre des tailles de module allant jusqu 1024, ce qui
en soi limine la ncessit d utiliser le processus de gnration de nombres
premiers pour viter les nombres premiers faibles. Un point supplmentaire
trs important qui passe souvent inaperu est quavec le DSS les nombres
premiers sont publics et donc sujets lexamen public. Tous les systmes
clef publique ne fournissent pas cette possibilit dexamen.
Lintgrit de tout systme de scurit de linformation dpend de
lattention apporte une ralisation correcte. Avec la myriade de vulnra
bilits possibles compte tenu des diffrences entre les utilisateurs, la NSA
a toujours insist sur les centres de confiance centraliss comme moyen de
minimiser les risques dans le systme. Bien que nous ayons apport des mo
difications techniques au DSS pour satisfaire les requtes du N IST pour
une approche plus dcentralise, nous insistons quand mme sur la partie
de la note du Fdral Register pour le DSS qui indique :
Bien que le but de ce standard soit de spcifier les exigences
gnrales de scurit pour engendrer des signatures numriques,
la conformit ce standard ne garantit pas la scurit d une ra
lisation particulire. Les autorits responsables de chaque agence
ou dpartement doivent veiller ce que la ralisation globale offre
un niveau de scurit acceptable Le NIST collaborera avec les
utilisateurs gouvernementaux pour veiller la bonne qualit des
ralisations.
Finalement, nous avons lu tous les arguments concernant les inscurits po
tentielles avec le DSS et nous restons sceptiques sur leur validit. Le DSS
a fait lobjet dune valuation en profondeur par la NSA, qui a conduit
notre directeur des systmes de scurit de linformation ladopter pour
signer des donnes non classes traites par certains systmes d espionnage,
et mme pour signer des donnes classes dans des systmes choisis. Nous
pensons que cette approbation parle en faveur de labsence de toute attaque
crdible contre lintgrit offerte par le DSS, pour autant quil soit correc
tement utilis et ralis. En fonction des exigences techniques et de scurit

20.1

Algorithme de signature numrique D S A

519

du gouvernement amricain pour les signatures numriques, nous pensons


que le DSS est le meilleur choix. En fait, le DSS est utilis dans un pro
jet pilote pour le systme de messagerie de la dfense [ Defense Message
System ] afin de garantir lauthenticit de messages lectroniques pour des
informations vitales de commandement et de contrle. Le prototype initial
inclut la participation de ltat-major, les services de larme, des agences
de la dfense et il est ralis en collaboration avec le N IST.
Je ne vais pas piloguer sur lhonntet de la N SA. Prenez leurs commentaires comme
bon vous semble.

Attaques contre

Chaque signature requiert une nouvelle valeur de k, et cette valeur doit tre choisie
alatoirement. Si jamais Estelle rcupre une valeur de k que Alice a utilis, ventuel
lement en exploitant certaines proprits du gnrateur de nombres alatoires qui a
produit k, elle peut retrouver la clef prive x dAlice. Si jamais Estelle rcupre deux
messages signs ou chiffrs avec la mme valeur de k, elle peut retrouver x (mme sans
connatre cette valeur de k). Et avec x, Estelle peut falsifier la signature dAlice de
manire indtectable. Dans toute ralisation du D SA, un bon gnrateur de nombres
alatoires est essentiel pour la scurit du cryptosystme [1475].

Danger dun module commun


Mme si le DSS ne spcifie pas un module commun partager entre tout le monde, dif
frentes ralisations le peuvent. Par exemple, le service des impts amricain (1RS pour
Internai Revenue Service ) envisage dutiliser le DSS pour la soumission lectro
nique des dclarations de revenu. Que se passera-t-il sils obligent tous les contribuables
du pays utiliser les mmes p et g? Mme si le standard ne requiert pas un module
commun, cette ralisation accomplit la mme chose. Le danger dun module commun
est quil devient une cible tentante. Il est trop tt pour savoir quelle ralisation du
DSS sera adopte mais il y a certaines raisons de sinquiter.

Canal subliminal dans le DSS


Gus S i m m o n s a dcouvert un canal subliminal dans le DSS [1475, 1478] (voir 23.3).
Ce canal subliminal permet aux gens de cacher un message secret dans leur signa
ture et ce message peut seulement tre lu par une autre personne qui connat la clef.
Daprs S i m m o n s , cest une concidence remarquable que les limitations quant
lintroduction dun canal subliminal, apparemment inhrentes au schma E l G a m a l ,
peuvent toutes tre surmontes dans le DSS, et que le DSS offre lenvironnement
le plus propice aux communications subliminales dcouvert ce jour. Le N IST et la

NSA nont pas fait de commentaires propos de ce canal subliminal ; personne ne sait
mme sils taient au courant de son existence. Comme ce canal subliminal permet
un ralisateur peu scrupuleux de laisser fuir un morceau de la clef prive avec chaque
signature, il est important de ne jamais utiliser une ralisation du DSS si lon na pris
confiance en celui qui la faite.

520

Chapitre 20

Algorithmes de signature numrique clef publique

Brevets
David K r a v i t z , qui a travaill la N SA, dtient un brevet sur le DSS [898]. Daprs
le N IST [541] :
Le N IST a lintention de rendre cette technique DSS
le monde entier, sans perception de droits, dans lintrt
pensons que cette technique est brevetable et quaucun
sapplique au DSS, mais nous ne pouvons pas donner des
de cela avant lmission du brevet.

disponible dans
du public. Nous
autre brevet ne
garanties fermes

Mme ainsi, trois dtenteurs de brevets prtendent que le DSA enfreint leur propre
brevet: D i f f i e H e l l m a n (voir 22.1) [720], M e r k l e - H e l l m a n (voir 19.2) [723]
et S c h n o r r (voir 21.3) [1404].
Le brevet de S C H N O R R est le plus nvralgique. Les deux autres expirent en 1997 ;
celui de S C H N O R R est valable jusquen 2008. Lalgorithme de S C H N O R R nayant pas
t dvelopp avec largent du Gouvernement amricain, contrairement aux brevets
de P K P , le Gouvernement amricain na aucun droit sur le brevet de S C H N O R R , et
celui-ci a brevet son algorithme dans le monde entier. Mme si une cour de justice
tranche en faveur du D S A , il nest pas vident que les autres cours de justice de par le
monde en feront autant. Est-ce quune socit internationale va adopter un standard
qui pourrait tre lgal dans un pays mais qui enfreindrait un brevet dans un autre ? Ce
problme mettra du temps tre rsolu ; au moment dcrire ces lignes, il nest mme
pas encore rsolu aux Etats-Unis.
En juin 1993, le N IST a propos doctroyer une licence dexploitation exclusive du
brevet du D SA P u b l i c K e y P a r t n e r s [544]. Cet accord a t dmenti suite un
toll gnral et le standard a vu le jour sans quil ny ait d accord. Le N IST a dclar
[540] :
...Le N IST a fait suivre les protestations concernant dventuelles infrac
tions de brevet, et a conclu quil ny avait pas de protestation justifie.
Le standard est officiel, les poursuites judiciaires sont menaces, et personne ne sait
que faire. Le N IST a dclar quil viendrait en aide aux personnes poursuivies pour
infraction de brevet, si elles utilisent le D SA pour remplir un contrat gouvernemental. Il
semble que les autres doivent se dbrouiller eux-mmes. LAN SI a bauch un standard
bancaire utilisant le D SA [63]. Le NIST travaille la standardisation du DSA
lintrieur du gouvernement. S h e l l a fait du D S A son standard international. Je ne
connais aucune autre proposition de standard utilisant le DSA.

20.2

Variantes de DSA

Cette variante rend le calcul du signataire plus facile en ne lobligeant pas calculer k 1
[1144]. Tous les paramtres sont identiques ceux de DSA. Pour signer un message AA,
Alice gnre deux nombres alatoires k et d, tous les deux infrieurs q. La signature
est donne par :
r = (gk mod p) mod q
s = (H (A 4) + xr) x d mod q

20.2

Variantes de D S A

521

t = kd mod q

Bernard vrifie la signature en calculant :


w = t /s mod q
ui = (H(A4) x w ) mod q
u2 = rw mod q

Si r {{gUl x y u'2) mod p) mod q, alors la signature est vrifie.


La variante suivante rend le calcul plus facile pour le vrificateur [1048, 1631]. Tous les
paramtres sont identiques ceux de DSA. Pour signer un message A4, Alice gnre
un nombre alatoire k infrieur q. La signature est donne par :
r = (gk mod p) mod q
s = k x ( H ( M ) + r)_1 mod q

Bernard vrifie la signature en calculant :


Ui = ( H (A4 ) x s) mod q
u2 = sr mod q
Si r = (( gUl x y U2) mod p ) mod q, alors la signature est vrifie.
Une autre variante permet de vrifier plusieurs signatures la fois [1144], Si elles
sont valides c est fini. Si une des signatures nest pas valide, il reste la trouver.
Malheureusement, cette vaiiante nest pas sre ; le signataire, aussi bien que le vrifi
cateur, peut facilement crer un ensemble de fausses signatures dont lensemble passe
la vrification avec succs [984],
Il existe aussi une variante de D SA pour la gnration des nombres premiers, dans
laquelle q et les autres paramtres de la gnration sont cods dans p. On ne sait pas
encore si ce schma rduit la scurit de DSA.
1 Choisissez une chane alatoire S dau moins 160 bits. Soit g sa longueur en
bits.

2 Calculez U = SH A (S) S H A ((S + 1) mod 2S), o S H A est lalgorithme de


hachage sr (voir 18.7).
3 Formez q partir de U en mettant le bit le plus significatif et le bit le moins
significatif tous deux 1.
4 Vrifiez si q est un nombre premier.
5 Si q nest pas un nombre premier, retournez ltape 1.
6 Mettez q, S, C et SH A (S ) bout bout pour former p, o C est un mot de 32
zros.

7 p = p (p mod q) + 1.
8 p = p + q.

522

Chapitre 20

Algorithmes de signature numrique clef publique

9 Si la partie de p correspondante C est 0x7FFFFFFF, retournez ltape 1.


10 Vrifiez si p est un nombre premier.
11 Si p nest pas un nombre premier, retournez ltape 7.
Lavantage de cette variante est dviter le stockage des valeurs de C et S1 utilises
pour gnrer p et q ; elles se lisent dans p. Pour les applications avec peu de mmoire,
comme les cartes puces, cela peut savrer trs intressant.

20.3

Algorithme de signature numrique


GOST

Ceci est un standard de signature numrique russe, appel officielement GOST


R 34.10-94 [658].
Lalgorithme ressemble beaucoup au D SA , et utilise les paramtres suivants:
p = un nombre premier de longueur comprise entre 509 et 512 bits, ou
bien entre 1020 et 1024 bits.
q un facteur premier de p 1 de 254 256 bits.
a = un nombre infrieur p 1 tel que aq mod p = 1.
x un nombre infrieur q.
y = ax mod p.

Lalgorithme utilise aussi une fonction de hachage: H (x). Le standard spcifie lemploi
de G O S T R 34.11-94 (voir 18.11), une fonction base sur lalgorithme clef secrte
G O S T (voir 14.1) [659].
Les trois premiers paramtres, p, q et a, sont publics et peuvent tre partags par les
utilisateurs dun rseau. La clef prive est x ; la clef publique est y.
Pour signer un message AA,
1 Alice gnre un nombre alatoire k infrieur q.
2 Alice gnre:
r = ( ak mod p) mod q
s - (xr + k x H (A4)) mod q.

Si H (A4) mod q = 0, Alice fait comme s il valait 1. S ir 0, elle recommence


avec une autre valeur de k. La signature est compose de deux nombres : r mod
2256 et s mod 2256. Elle les envoie Bernard.

3 Pour vrifier la signature, Bernard calcule :


v = H (A 4 )q~ 2 mod q
Z\ sv mod q

z2 = ((q r) x u) mod q
u = ((aZl x y 22) mod p) mod q.

20-4

523

Schmas de signature numrique base de logarithmes discrets


Si u = r, alors la signature est vrifie.

La diffrence entre ce schma et le DSA est quon pose s = (& 1 x (xr + H (A 4))) mod q
dans le DSA, ce qui conduit une quation de vrification diffrente. Il est curieux de
fixer la longueur de q 256 bits. La plupart des cryptographes occidentaux stalent
mis d accord sur les alentours de 160 bits. C est peut-tre une manire de penser russe
qui veut un maximum de scurit.
Le standard est en utilisation depuis 1995, et nest pas class pour utilisations sp
ciales , quoi que cela puisse vouloir dire.

20.4

Schmas de signature numrique


base de logarithmes discrets

E l G a m a l , S c h n o r r (voir 21.3) et DSA sont des schmas de signature numrique


trs similaires. En fait, ce sont trois exemples dun schma gnral de signature num
rique bas sur le problme des logarithmes discrets. Ces trois schmas et bien dautres
font partie de la mme famille [742, 743, 700, 1189].
Choisissez un grand nombre premier p , et prenez q gal p 1 ou un grand facteur
premier de p 1. Choisissez alors un nombre g entre 1 et p tel que gq = 1 (mod p).
Tous ces nombres sont publics et peuvent tre partags par un groupe d utilisateurs.
La clef prive x est infrieure . La clef publique est y = gx mod q.
Pour signer un message A4, commencez par tirer un nombre alatoire k infrieur q
et premier avec q. Si q est premier, n importe quel k infrieur q convient. Calculez
dabord :
r = gk mod p

Lquation de signature gnralise devient maintenant :


ak = b + e x mod q

Les coefficients a, b et c sont prendre parmi une varit de termes. Chaque ligne du
tableau 20.4 correspond six possibilits (selon les six permutations de a,b,c).

Tab.

20.4

Permutations possibles de a,b,c (s est la signature et on pose r'


s
r'
M
5
1
r 'M
1
sM
r'A4
1
ir 's
r'A4
1
r 's
sA4

r mod q)

Pour vrifier la signature, le destinataire doit sassurer que :


r = gbyc mod p
Ceci sappelle lquation de vrification
Le tableau 20.5 donne les quations de signature et les quations de vrification cor
respondantes que lon peut obtenir uniquement avec la premire ligne du tableau 20.4

Chapitre 20

524

Algorithmes de signature numrique clef publique

sans tenir compte des . Cela fait six schmas de signature diffrents. En ajoutant
des signes ngatifs, on arrive un total de 20 "schmas. En utilisant les autres valeurs
possibles pour o, b et c, on obtient 120 schmas en tout.

a b

20.5 - Schmas de signature numrique base de logarithmes discrets


Equation de signature
(1) r'k - - s + fA x mod p
(2) r'k - - A4 + sx mod p
(3) sk = r' + A4a: mod p
(4) sk A4 + r'x mod p
(5) A4 k = s + r'x mod p
(6) M k = r' + sx mod p

Equation de vrification
rT -=
mod p
rT mod p
rs =-mod p
rs =: g M y r> mod p
rM
mod p
=
rM
mod p
=

gsyM
=gMys
gr'yM
gsyr'
</ys

E l G a m a l [520, 521] et le D SA [1174] sont essentiellement bass sur lquation (4).


Dautres schmas sont bass sur lquation (2) [28, 1631]. S C H N O R R [1401, 1403] est
troitement li lquation (5), c est aussi le cas d un autre schma [1188]. Une modi
fication de lquation (1) conduit au schma propos dans [1632]. Les autres quations
sont nouvelles.
Il y a plus. Vous pouvez transformer chacun de ces schmas la manire du D SA en
dfinissant r ainsi:
r = (gk mod p) mod q

Gardez la mme quation de signature, et modifiez lquation de vrification ainsi :


ui - o _16 mod q
U2 = o _1c mod q
r (gUly u2 mod p) mod q
(r mod q)a = gby c mod p.

Il existe deux possibilits dans cette veine [742, 743], que vous pouvez appliquez
chacun des 120 schmas, ce qui nous mne un total de 480 schmas de signature
numrique base de logarithmes discrets.
Mais attendez il y a plus. Des gnralisations et des variations supplmentaires per
mettent de crer plus de 13000 variantes (elles ne sont pas toutes trs efficaces)
[742, 743].
Un des intrts de R SA pour les signatures numriques est ce qui sappelle la r
cupration de message. En vrifiant une signature R SA , vous calculez A4. Vous
comparez alors le message A4 calcul et le message reu et vrifiez ainsi la validit
de la signature. Avec les schmas prcdents, vous ne pouvez pas rcuprer A4 quand
vous calculez la signature ; vous avez besoin d un candidat A4 que vous utilisez dans
lquation de vrification. Il se trouve quil est possible de construire une variante
rcupration de message pour tous les schmas de signature prcdents.
Pour signer, commencez par calculer
r mgk mod p,

20.5

525

O n g - S c h n o r r - S h a m ir

remplacez ensuite A4 par 1 dans lquation de signature. Vous pouvez alors construire
lquation de vrification qui permet de calculer A4 directement.
Vous pouvez faire de mme avec les schmas la manire D SA :
r = (mgk mod p) mod q

Toutes les variantes sont aussi sres les unes que les autres, il est donc sens de choisir
un schma qui facilite les calculs. C est le calcul des inverses qui ralentit le plus ces
schmas. Il se trouve que lun des schmas permet de calculer la fois lquation
de signature et lquation de vrification sans inverse et de rcuprer le message. Il
sappelle le schma P-N EW [1189].
r = mg~k mod p
s =r k r'x mod q

A4 est rcupr (et la signature est vrifie) ainsi :


A4 = gsyT r mod p

Certaines variantes permettent de signer deux ou trois blocs de message la fois [742] ;
dautres variantes peuvent servir pour les signatures en aveugle [743].
Ceci est un travail de recherche rem arquable. U n m od le cohrent p erm et d e dcrire
tous les diffrents schm as de signature num rique base de logarithm es discrets. A
mon avis, cela m et fin aux querelles d e brevets entre SCHNORR [1404] et DSA [898] :
DSA n est driv ni de SCHNORR, ni d e E l G a m a l . C e sont trois cas particuliers de
cette con stru ction gnrale, qui n est pas brevete.

20.5

OngSchnorrShamir

Ce schma de signature utilise des polynmes modulo n [1229, 1230]. Choisissez un


grand entier n (il nest pas ncessaire de connatre la factorisation de n). Ensuite
choisissez un nombre entier alatoire /c, tel que k e t n soient premiers entre eux. Calculez
h tel que :
h k ~ 2 mod n = (A;- 1 )2 mod n.
La clef publique est faite de h et n ; k est la clef prive.
Pour signer un message A4, engendrez premirement un nombre alatoire r tel que r
et n soient premiers entre eux. Ensuite calculez :
51 = 1/2 x (A4 jr + r) mod n
5 2 = k /2 x (A 4 /r r) mod n.
La paire Si et S 2 est la signature.
Pour vrifier une signature, confirmez que :
(S f + h x S2)

A4

(mod n).

La version du schma dcrite ici est base sur des polynmes quadratiques. Quand il
fut propos dans [1227], une rcompense de 100 $ tait offerte pour une cryptanalyse

Chapitre 20

526

Algorithmes de signature numrique clef publique

russie. Il a t prouv quil nest pas sr [1265, 22] mais les auteurs ne se sont pas
dcourags. Ils proposrent une version modifie base sur des polynmes cubiques qui
nest pas sre non plus [1265]. Les auteurs proposrent alors une version quartique qui
fut galement casse [527, 1265]. Une variante qui vite ces problmes est dcrite dans
[1143].

20.6

ESIGN

ESIGN est un schma de signature numrique conu par N T T J a p o n [1213, 585].


Daprs ces auteurs, il est au moins aussi sr et nettement plus rapide que le R SA et
le D SA, avec des longueurs de clef et de signature similaires.
La clef prive est une paire de grands nombres premiers p et q. La clef publique est n
tel que
n = p2 q.
H (x) est une fonction de hachage qui opre sur un message m de sorte que H (A4) soit
compris entre 0 et A4 II y a aussi un paramtre de scurit k qui sera dcrit plus loin.

1 Alice choisit un nombre alatoire x, tel que x soit infrieur pq.


2 Alice calcule:
w, le plus petit nombre plus grand que (H(m ) x k mod n)/pq
s = x + (( w /k x k~ x) mod p)pq.

3 Alice envoie s Bernard.


4 Pour vrifier la signature, Bernard calcule sk mod n. Il calcule aussi a, qui est
le plus petit nombre plus grand que le nombre de bits de n divis par 3. Si H(m)
est infrieur ou gal sk mod n, et si sk mod n est infrieur H (rn )+ 2 a, alors
la signature est considre valable.

Cet algorithme peut tre acclr par prcalcul. Ce prcalcul peut tre effectu tout
moment et na rien voir avec le message signer. Aprs avoir choisi x , Alice peut
scinder ltape 2 en deux tapes partielles. La premire peut tre prcalcule.
2 (a) Alice calcule :
u x k mod n
v = 1/(k x k~ l) mod p.

2 (b ) Alice calcule :
w le plus petit entier qui est plus grand que ( H (m) u)jpq
s = x + (wv mod p)pq.

Pour la taille des nombres gnralement utiliss, ce prcalcul acclre le processus de


signature par un facteur 10- Presque tout le travail difficile est fait pendant ltape
de prcalcul. Une prsentation des oprations d arithmtique modulaire qui peuvent
tre utilises pour acclrer lalgorithme ESIGN est donne dans [1627, 1626]. Cet
algorithme a galement t tendu pour marcher avec des courbes elliptiques [1214].

20.7

Automates cellulaires

527

Scurit dESIGN
Quand cet algorithme fut originellement propos, k valait 2 [1223]. Il fut alors rapide
ment cass par Ernie B r i c k e l l et John D e L a R E N T I S [265], qui ont ensuite tendu
leur attaque au cas k = 3. Une version modifie de lalgorithme [1211] fut casse par
S h a m i r [1212]. La variante propose par [1212] fut casse dans [1560]. ESIGN est le
reprsentant actuel de cette famille dalgorithmes. Une autre attaque nouvelle [974] ne
marche pas contre la variante dESIGN.
Les auteurs recommandent actuellement les valeurs suivantes pour k : 8, 16, 32, 64,
128, 256, 512 et 1024. Ils recommandent galement que p et q aient au moins 192 bits
chacun, ce qui donne une longueur d au moins 576 bits pour n. (Je pense que n devrait
tre deux fois plus long.) Avec ces paramtres, les auteurs font lhypothse quESlGN
est aussi sr que R SA ou R a b i n . Leurs analyses montrent des comparaisons de vitesse
avec R S A , E l G a m a l et D SA qui leur sont favorables [584],

Brevets
ESIGN est brevet aux tats-Unis [1216], au Canada (brevet n 255 784), en Angle
terre, en France, en Allemagne et en Italie. Toute personne dsireuse dobtenir une
licence d exploitation pour cet algorithme doit contacter: Intellectual Property
Department, NTT, 1-6 Uchisaiwai-cho, 1-chome, Chiyada-ku, 100 Japan.

20.7

Automates cellulaires

Une nouvelle ide originale, tudie par G u a M [666], est dutiliser des automates cellu
laires dans les cryptosystmes clef publique. Ce systme est encore bien trop nouveau
et na pas t tudi exhaustivement mais une analyse prliminaire suggre quil pour
rait avoir une faiblesse cryptographique similaire une faille rencontre dans dautres
cas [564]. Toutefois, cest un domaine de recherche prometteur. Le propre des auto
mates cellulaires est que, mme sils peuvent tre inverss, il est impossible de calculer
ltat prcdent dun tat arbitraire en renversant les rgles pour trouver le successeur.
Cela ressemble fortement une fonction sens unique brche secrte.

20.8

Les autres algorithmes clef publique

De nombreux autres algorithmes clef publique ont t proposs et casss au fil des
ans. Lalgorithme M a t S IJM O T O I m a i [1029] fut cass dans [453], L algorithme C a d e
fut propos la premire fois en 1985, cass en 1986 [774] et renforc la mme anne [290].
En plus de ces attaques, il existe des attaques gnrales pour dcomposer des polynmes
sur des corps finis [607]. Tout algorithme dont la scurit dpend de la composition
de polynmes sur des corps finis doit tre considr avec scepticisme, si ce nest mme
avec mfiance.
Lalgorithme Y a g i s a w a combine lexponentiation modulo p avec larithmtique mo
dulo p 1 [1625] ; il fut cass dans [260]. Un autre algorithme clef publique, propos
par T s u j i i , K u r o s a w a , I t o h , F u j i o k a et M a t s u m o t o [1556] nest, pas sr [959].
Un troisime systme, L u c c io M a z z o n e [1003], nest pas sr [719]. Un schma de
signature bas sur les permutations birationnelles [1432] a t cass le lendemain de sa

Chapitre 20

528

Algorithmes de signature mimtique clef publique

prsentation [385]. Tatsuaki O kam o to a plusieurs schmas de signature son actif:


lun d eux est prouv aussi difficile que le calcul des logarithmes discrets, et un autre
est prouv aussi difficile que le calcul des logarithmes discrets et la factorisation [1214].
D autes schmas similaires sont dcrits dans [710].
Gustavus S im m ons suggra d utiliser les J-algbres comme base pour des algorithmes
clef publique [1461, 152]. Cette ide fut abandonne aprs que des mthodes efficaces
de factorisation des polynmes furent inventes [963]. Des semi-groupes de polynmes
spciaux ont t galement tudis [1621, 973] mais jusqu prsent il nen est rien sorti.
Harald N ied e r r e it e r . a propos un algorithme clef publique bas sur des suites de
registres dcalage [1167]. Un autre est bas sur les mots de Lyndon [1482] et un autre
sur le calcul propositionnel [818]. Un algorithme clef publique rcent tire sa scurit
du problme de recouvrement de matrice [89]. Tatsuaki O k am o to et Kazuo O hta
comparent de nombreux algorithmes de signature numrique dans [1220].
Les perspectives de crer des algorithmes clef publique radicalement nouveaux et dif
frents semblent bien faibles. En 1988, D i f f i e remarqua que la plupart des algorithmes
clef publique sont bass sur lun des trois problmes difficiles suivants [490, 492] :
: tant donn un ensemble de nombres uniques,
trouver un sous-ensemble dont la somme est TV.

1. L e p r o b l m e d e s e m p ile m e n t s

2. L e c a lc u l d e lo g a r it h m e s d is c r e t s : Si p est un nombre premier et g et M


sont des entiers, trouver x tel que gx = M (mod p).
3. L a fa c t o r is a t io n : Si TV est le produit de deux nombres premiers :
a. factoriser TV,
b . tant donn les entiers M et C , trouver d tel que M d = C

(mod TV),

c. tant donn les entiers e et C, trouver M tel que M e = C

(mod TV),

d.

tant donn lentier x, dcider sil existe un entier y tel que x = y 2

(mod TV).

D aprs D iffie [490, 492], le problme du logarithme discret fut suggr par J. G ill ,
le problme de factorisation par K n u t h et le problme des em pilem ents par D iffie
lui-mme.
Cette troitesse des fondements mathmatiques de la cryptographie clef publique est
drangeante. Une perce pour le problme de la factorisation ou celui des logarithmes
discrets peut rendre des classes entires d algorithmes clef publique non srs. Une telle
perce a dj eu lieu pour le problme des empilements. D i f f i e remarque [490, 492]
que ce risque est attnu par deux facteurs :
Les oprations dont la cryptographie clef publique dpend actuelle
ment multiplication, exponentiation et factorisation sont toutes des
phnomnes arithmtiques fondamentaux. Elles ont t lobjet danalyses
mathmatiques intenses pendant des sicles, et lattention croissante qui a
rsult de leur utilisation dans les cryptosystmes clef publique a dans
lensemble renforc plutt que diminu notre confiance.
Notre capacit d effectuer des oprations arithmtiques sur des grands
nombres a augment continment et nous permet maintenant de raliser
nos systmes avec des nombres suffisamment grands pour ntre plus vul
nrables qu des perces foudroyantes en factorisation, en logarithmes ou
en extraction de racines.

20.8

Les autres algorithmes clef publique

529

Comme nous lavons vu, les algorithmes clef publique bass sur ces problmes ne sont
pas tous srs. La force de tout algorithme clef ne publique dpend pas seulement
la complexit calculatoire du problme sur lequel il est bas ; la difficult calculatoire
dun problme nimplique pas forcment un algorithme fort. Adi S h a m i r numre trois
raisons pour lesquelles il en est ainsi [1422] :
1. La thorie de la complexit traite en gnral des instances isoles de
problmes. Un cryptanalyste a en gnral rsoudre une grande quan
tit de problmes statistiquement relis
plusieurs textes chiffrs avec
la mme clef.
2. La complexit calculatoire d un problme est typiquement mesure par
son comportement en pire cas ou en cas moyen. Pour quun problme
soit utile un chiffrement, il doit tre difficile rsoudre dans presque
tous les cas.
3. Un problme arbitrairement difficile ne peut pas ncessairement tre
transform en cryptosystme, et il doit tre possible dinsrer une
brche secrte dans le problme de telle manire quil y ait un rac
courci grce celle-ci et seulement grce elle.

Chapitre 21

Schmas didentification
21.1

FeigeFiatShamir

Le schma dauthentification et de signature numrique dAmos F i a t et Adi S h a m i r


est dcrit dans [568, 569]. Uriel F e i g e , A. F i a t et A. S h a m i r ont transform lal
gorithme en un systme de preuve d identit divulgation nulle [546, 547]. C est le
systme de preuve d identit divulgation nulle le mieux connu.
Le 9 juillet 1986, les trois auteurs ont soumis une demande de brevet amricain [1433].
cause des applications militaires potentielles, la demande fut examine par les mili
taires. L Office des brevets amricain avait six mois pour rpondre par une autorisation
de divulgation. Le 6 janvier 1987, trois jours avant lexpiration du dlai, lOffice des
brevets et marques a interdit la divulgation la demande de larme. Us affirmrent
que ... la divulgation ou la publication des informations ce su jet... seraient nuisibles
la scurit nationale [amricaine] ... Lordre fut donn aux auteurs de notifier tous
les Amricains auxquels les rsultats de la recherche avaient t divulgus que toute
divulgation non autorise pouvait entraner un emprisonnement de deux ans et/ou une
amende de 10000 $. De plus, les auteurs devaient indiquer au commissaire de lOffice
des brevets et marques le nom de tous les ressortissants trangers qui linformation
avait t communique.
Ctait ridicule. Pendant toute la seconde moiti de 1986, les auteurs avaient prsent
leurs travaux des confrences en Isral, en Europe et aux Etats-Unis. Les auteurs
eux-mmes ntaient pas citoyens amricains; tout le travail de recherche avait t
effectu au W e i z m a n n I n s t i t u t e en Isral.
Le mot stait rpandu dans la communaut acadmique et la presse. Dans les deux
jours linterdiction de divulgation fut annule; SHAMIR et d autres croient que la NSA
a tir les ficelles de cette annulation bien quil ny ait eu aucun commentaire officiel.
Vous trouverez plus de dtails concernant cette aventure dans [947].

Schma didentification FeigeFiat-Shamir simplifi


Avant d mettre quelque clef prive que ce soit, larbitre choisit un module alatoire n
qui est le produit de deux grands nombres premiers. Dans la vie relle, n doit tre long
dau moins 512 bits et probablement plus prs des 1024 bits. Cet n peut tre partag

532

Chapitre 21

Schmas didentification

par un groupe de prouveurs1.


Pour engendrer la clef publique et la clef prive de Patricia, un arbitre de confiance
choisit un nombre v, tel que v soit un rsidu quadratique modulo n. En d autres termes,
choisissez v tel que x 2 = v (mod n) ait une solution et u-1 modulo n existe. C est la
clef publique. Ensuite, calculez le plus petit s tel que s = V v " 1 (mod n). Cest la clef
prive.
Le protocole didentification peut alors se drouler comme suit :
1 Patricia choisit un nombre alatoire r tel que r soit infrieur n. Elle calcule
ensuite x = r 2 mod n et envoie x Victor.
2 Victor envoie un bit alatoire b Patricia.
3 Si b = 0, Patricia envoie r Victor.
Si b = 1, Patricia envoie y = (r x s) mod n Victor.
4 Si b = 0, Victor vrifie que x = r 2 mod n, ce qui prouve que Patricia connat

/x .

Si 6 = 1 ,

Victor vrifie que x ( y 2 x u) mod n, ce qui prouve que Patricia

connat \fv~~1.

Ce protocole est une a ccr d ita tio n simple. Patricia et Victor rptent ce protocole
t fois, jusqu ce que Victor soit convaincu que Patricia connat s. Il sagit de la tech
nique couper-et-choisir . Si Patricia ne connat pas s, elle peut choisir r de manire

tromper Victor sil lui envoie un 0, ou elle peut choisir r de manire tromper Victor
sil lui envoie un 1. Mais elle ne peut pas faire les deux. Les chances de tromper Victor
une fois sont de 50 %. Les chances de le tromper t fois sont de 1 contre 2*.
Un autre moyen d attaquer le protocole serait pour Victor de se faire passer pour
Patricia. Il peut dmarrer le protocole avec un autre vrificateur, Valrie. A ltape 1,
au lieu de choisir un r alatoire, il pourrait juste rutiliser un vieil r quil a vu Patricia
utiliser. Toutefois, les chances que Valrie choisisse le mme b ltape 2 que celui
choisi par Victor dans le protocole avec Patricia sont de 1 contre 2. Donc, les chances
de tromper Valrie sont de 50 %. Les chances de la tromper t fois sont de 1 contre 2.
Pour que cela marche, il est impratif que Patricia ne rutilise pas un r. Si elle le faisait,
et si Victor lui envoyait lautre valeur de bit ltape 2, Victor aurait alors les deux
rponses de Patricia. Il ne lui resterait alors qu en collecter t pour se faire passer
pour Patricia.

Schma didentification FeigeFiatShamir


Dans leurs articles [546, 547], F e i g e , F i a t et S h a m i r montrent comment un montage
parallle peut augmenter le nombre d accrditations par rondes et rduire ainsi les
interactions entre Victor et Patricia.
Au dpart, engendrez n comme ci-dessus, c est--dire comme un produit de deux grands
nombres premiers. Pour engendrer les clefs publique et prive de Patricia, choisissez
dabord k nombres diffrents: Vi,V2,...,Vk, o Vi est un rsidu quadratique modulo n.
En d autres termes, choisissez Vi tel que x 2 = vt (mod n) ait une solution et vf 1 mod n
1.
Les ca lcu ls son t plus fa ciles si n est u n en tier d e B lu m , m ais c e n est p as ncessaire p o u r la
scurit.

21.1

F e ig e - F

ia t

533

S h a m ir

existe. Cette chane Vi,V2 ,.-,Vk est la clef publique. Ensuite calculez les plus petits Si
tels que s, = yjv ^ 1 (mod n). Cette chane Si,S2, -isfc est la clef prive.
Et le protocole se droule comme suit :
1 Patricia choisit un nombre alatoire r infrieur n. Ensuite, elle calcule x
r 2 mod n et envoie x Victor.
2 Victor envoie une chane alatoire binaire de k bits: bi,l>2 ,...,bk Patricia.
3 Patricia calcule y = r x (s ,1 x s? x x s*fc) mod n. Elle multiplie les valeurs
des Si entre elles sur la base de la chane binaire que Victor lui a envoye. Si
le premier bit de Victor est 1, alors si fait partie du produit, si le premier bit
de Victor est 0 alors si ne participe pas au produit. Elle envoie y Victor.

4 Victor vrifie que x = y 2 x (v*1 x v ^2 x ... x vh) mod n. Il multiplie les valeurs
des Si entre elles sur la base de la chane binaire. Si le premier bit est 1, s%
participe au produit ; si le premier bit est 0, s x ne participe pas au produit.

Patricia et Victor rptent ce protocole t fois jusqu ce que Victor soit certain que
Patricia connat Si,S2 ,,SkLes chances que Patricia puisse rouler Victor sont de 1 contre 2kt, o t est le nombre de
fois quils rptent le protocole. Les auteurs recommandent un rapport de probabilits
de 1 contre 220 et suggrent d utiliser k = 5 et t = 4. Si vous tes plus paranoaque,
augmentez ces nombres.

Un exemple
Voyons ce protocole en action sur des petits nombres.
Si n = 35 (les deux nombres premiers sont 5 et 7), les rsidus quadratiques possibles
sont :
1 : x 2 = 1 (mod 35) a comme solutions : x =
4 : x 2 = 4 (mod 35) a comme solutions : x =
9 : x 2 = 9 (mod 35) a comme solutions : x =
11: x 2 = 11 (mod 35) a comme solutions: x
14 : x 2 = 14 (mod 35) a comme solutions : x
15 : x 2 = 15 (mod 35) a comme solutions : x
16 : x 2 = 16 (mod 35) a comme solutions : x
21 : x 2 = 21 (mod 35) a comme solutions : x
25 : x 2 = 25 (mod 35) a comme solutions : x
29: x 2 = 29 (mod 35) a comme solutions: x
30 : x 2 = 30 (mod 35) a comme solutions : x

1,6,29 ou 34.
2,12,23 ou 33.
3,17,18 ou 32.
= 9,16,19 ou 26.
= 7 ou 28.
= 15 ou 20.
= 4,11,24 ou 31.
= 14 ou 21.
= 5 ou 30.
= 8,13,22 ou 27.
= 10 ou 25.

Les inverses modulo 35 et leurs racines carres sont :


V

1
4
9
11
16
29

v~*

1
9
4
16
11
29

s = \/v~l

1
3
2
4
9
8

Chapitre 21

534

Schmas didentification

Remarquez que 14,15,21,25 et 30 nont pas d inverses modulo 35, parce quils ne sont
pas premiers par rapport 35. Cela a un sens, puisquil doit y avoir (51) x'(71)/4 = 6
rsidus quadratiques modulo 35 (voir 11.3).
Ainsi, Patricia reoit la clef publique constitue de k = 4 valeurs : {4,11,16,29}. La clef
prive correspondante est {3,4,9,8}. Voici une ronde du protocole:
1 Patricia choisit le nombre alatoire r = 16, calcule 162 mod 35 = 11 et envoie
ce dernier Victor.

2 Victor envoie Patricia une chane binaire alatoire {1,1,0,1}.


3 Patricia calcule 16 x ((31) x (41) x (9) x (81)) mod 35 = 31 et envoie le rsultat
Victor.
4 Victor vrifie que 312 x ((41) x (111) x (16) x (291)) mod 35 = 11.
Patricia et Victor rptent le protocole, chaque fois avec un nombre r alatoire diffrent,
jusqu ce que Victor soit satisfait.
Avec des petites valeurs comme celles-ci, il ny a pas vraiment de scurit, Mais quand
n a 512 bits ou plus de long, Victor ne peut rien apprendre de la clef secrte de Patricia,
except le fait quelle la connat.

Amliort ions
Il est possible de cacher des informations d identification dans le protocole. Faites
lhypothse que / est une chane binaire reprsentant lidentification de Patricia: son
nom, son adresse, son numro de scurit sociale, sa taille de chapeau, sa limonade
prfre, etc. Utilisez une fonction de hachage s*3ns unique H {x) pour calculer H (I ,j )
o j est un petit nombre alatoire joint I. Trouvez un ensemble de plusieurs j tels
que H (I ,j) soit un rsidu quadratique modulo n. Ces j deviennent Vi,V2 ,-,V k- La clef
publique de Patricia est maintenant / et la liste des j . Elle envoie / et la liste des j
Victor avant ltape 1 du protocole et Victor engendre Vi,V2 ,---,Vk partir de H (I,j).
Ainsi, aprs que Victor ait termin avec succs le protocole avec Patricia, il est sr
que quelquun qui connat la factorisation du module a certifi lassociation entre I et
Patricia en lui donnant les racines carres des v1 drivs de I. (Voyez le paragraphe 5.2
concernant le contexte du protocole.)
Les auteurs, F e i g e , F i a t et S h a m i r incluent galement les remarques suivantes concer
nant la ralisation concrte [546, 547] :
Pour des fonctions de hachage non parfaites, il est conseill de rendre I
alatoire en joignant une longue chane alatoire R. Cette chane est choisie
par larbitre et rvle Victor avec I.
Dans des ralisations typiques, k doit tre compris entre 1 et 18. Des
valeurs plus grandes de k peuvent rduire le temps et la complexit des
communications en rduisant le nombre de rondes.
La valeur de n doit au moins avoir 512 bits.
Si tous les utilisateurs choisissent leur propre n et le publient dans un
fichier public de clefs, ils peuvent se passer dun arbitre. Toutefois, cette
variante similaire au R SA rend le schma nettement moins pratique.

21.1

Fe

ig e

F ia t - S

535

h a m ir

Schma de signature FiatShamir


Pour transformer ce schma didentification en un schma de signature, il suffit de
transformer Victor en une fonction de hachage. Le premier avantage du schma de
signature numrique F iat SHAMIR par rapport au R S A est quune signature typique
ne requiert que 1 % 4 % de multiplications modulaires. Il est donc nettement plus
rapide. Pour ce protocole, nous utiliserons les noms d Alice et Bernard.
La mise en place est la mme que pour le protocole didentification. Choisissez un entier
n produit de deux grands nombres premiers. Engendrez la clef publique vi,V2 ,...,Vk et
la clef prive si,s 2,...,sk telle que sx =

v f 1 ( mod n).

1 Alice choisit t nombres alatoires plus petits que n : r\,r2 ,...,rt et calcule
x 2,
xt tels que Xi = r\ mod n.

X\,

2 Alice calcule lempreinte de la juxtaposition du message et de la chane des Xi


pour engendrer le flux de bits: H (m ,x i,x 2 ,...,xt). Elle utilise les k x t bits de
cette chane comme valeurs de bij o i va de 1 t et j va de 1 k.
3 Alice calcule y i,y 2 ,...,yt tels que:
x (sj41 x s*12 x x sfcfc) mod n.

yi

Elle multiplie les valeurs des Si ensemble en fonction des valeurs alatoires hl3.
Si bu vaut 1, alors si fait partie du produit; si blt vaut 0, alors s i ne fait pas
partie du produit.
4 Alice envoie Bernard m, toutes les valeurs des bits bij et toutes les valeurs
des yi. Il a dj la clef publique dAlice: q,i;2 ,...,nfc.

5 Bernard calcule zi,z 2 l...,zt tels que:


Zi yf x (v\ %1 x v*2 2 x ... x

mod n.

Une fois de plus, Bernard effectue les multiplications en fonction des valeurs
des bij. Remarquez que les zt doivent tre gaux aux x.t.

6 Bernard vrifie que les premiers k x t bits de H(rn,zi,z 2 ,...,zt) sont les valeurs
b^ quAlice lui a envoyes.

Tout comme pour le schma didentification, la scurit de ce schma de signature


est proportionnelle 1/ 2 kt. Il dpend aussi de la difficult de factoriser n. F i a t et
S h a m i r indiquent quil est plus facile de commettre une fausse signature quand la
complexit de factoriser n est nettement infrieure 2kt. Et, cause des attaques des
anniversaires (voir 18.1), ils recommandent que k x t soit augment de 20 72 au
moins. Ils suggrent k = 9 et t 8.

Schma de signature FiatShamir amlior


Silvio M i c a l i et Adi S h a m i r ont amlior ie protocole F i a t - S h a m i r dans [1094], Ils
choisissent les k premiers nombres premiers pour v\,v2 ,,Vk- Donc,
q = 2,v2 = 3,^3 = 5, etc.

Chapitre 21

536

Schmas didentification

Cest la clef publique.


La clef prive Si,S2 ,---,Sk est une racine carre alatoire, dtermine par:
st = J v t 1

(mod n).

Dans cette version, tout le monde doit avoir un n diffrent. Cette modification rend la
vrification de signatures plus aise. Cela naffecte pas le temps requis pour engendrer
les signatures ni la scurit de ces signatures.

Autres amliorations
Il existe galement un schma d identification N participants bas sur lalgorithme
F i a t S h a m i r [268]. Deux autres amliorations du schma F i a t S h a m i r ont t pro
poses dans [1228]. D autres variantes sont dcrites dans [1370].

Schma didentification OhtaOkamoto


Ce protocole est une modification du F e i g e - F i a t S h a m i r , dont la scurit dpend
de la difficult de la factorisation [1207, 1208]. Les mmes auteurs ont galement dcrit
un schma de signature multiple (voir 23.1) par lequel un certain nombre de gens
peuvent signer un message squentiellement [1209]. Ce schma a t propos pour les
ralisations de cartes puce [852].

Brevets
F iA T - S h a m i r est brevet [1433]. Toute personne intresse par une licence dex
ploitation de lalgorithme doit contacter: Yeda Research and Development, The
Weizmann Institute of Science, Rehovot 76100, Isral.

21.2

GuillouQuisquater

F i a t S h a m i r fut le premier systme pratique de preuve d identit divulgation nulle.


Il minimisait les calculs requis pour les changes en augmentant le nombre d itrations
du protocole et le nombre d accrditations par itration. Pour certaines ralisations,
telles que les cartes puce, ce nest pas lidal. Les changes avec le monde extrieur
sont coteux et la place ncessaire pour stocker chaque accrditation peut rapidement
consommer les ressources restreintes de la carte puce.
G u i l l o u et Q u i s q u a t e r ont dvelopp un algorithme didentification divulgation
nulle plus adapt de telles situations [671, 1291]. Le nombre dchanges entre Patricia
et Victor et le nombre d accrditations en parallle pour chaque change sont tout
deux maintenus leur strict minimum : il ny a quun change d une accrditation pour
chaque preuve. La quantit de calcul ncessaire pour le schma G u i l l o u -Q U ISQ U A T E R
est, pour le mme niveau de scurit, suprieure d un facteur 3 celle requise pour le
schma F i a t - S h a m i r .
Tout comme le F i a t - S h a m i r , cet algorithme d identification peut tre transform en
un algorithme de signature numrique.

21.2

53 7

G u i l l o u - Q u is q u a t e r

Schma didentification GuillouQuisquater


Patricia est une carte puce qui veut prouver son identit Victor. L identit de
Patricia est un ensemble de rfrences : une chane de donnes contenant le nom de
la carte, la priode de validit, un numro de compte en banque, et toute autre in
formation que lapplication justifie. Cette chane de bits, appele J 2, est analogue
la clef publique. D autres informations publiques, partages par toutes les Patricia
qui pourraient utiliser cette application, sont un exposant v et un module n, o n est
le produit de deux nombres premiers secrets. La clef prive est B , calcule telle que
JBV = 1 (mod n).
Patricia envoie ses rfrences J Victor. Maintenant elle veut prouver Victor que
ces rfrences sont bien les siennes. Pour ce faire, elle doit convaincre Victor quelle
connat B. Voici le protocole:
1 Patricia choisit un nombre entier alatoire r tel que r soit compris entre 1 et
n 1. Elle calcule T = rv mod n et envoie celui-ci Victor.
2 Victor choisit un nombre, entier alatoire d tel que d soit entre 0 et v 1. Il
envoie d Patricia.

3 Patricia calcule D rB d mod n et lenvoie Victor.


4

Victor calcule T ' = D vJd mod n. Si T = T' (mod n)l authentification est
russie.

Les mathmatiques ne sont pas si compliques que cela :


T = D vJd = (rB d)v Jd = rvB dvJd = rv(J B v)d = rv ~ T

(mod n),

puisque que B a t construite pour satisfaire :


JBV - 1

(mod n).

Schma de signature GuillouQuisquater


Ce schma d identification peut tre converti en un schma de signature, galement
adapt aux cartes puce [672, 673].
La mise en place de la clef publique et celle de la clef prive sont les mmes que
prcdemment. Voici le protocole :
1 Alice choisit un nombre entier alatoire r, tel que r soit compris entre 1 et
n 1. Elle calcule T rv mod n.
2 Alice calcule d = H ( M ,T ), o M

*
2.

est le message signer et H (x) est une


fonction de hachage sens unique. La valeur d produite par la fonction de
hachage sens unique doit tre comprise entre 0 et v 1 [1291]. Si la valeur
produite par la fonction de hachage nest pas comprise dans cet intervalle, elle
doit tre rduite modulo v.

En fait, ces rfrences peuvent constituer une chane plus longue et, dans ce cas, la valeur de

J sera la valeur de lempreinte de l identit. C ette com plexit supplm entaire ne m odifie toutefois en

rien le protocole.

Chapitre 21

538

Schmas didentification

3 Alice calcule D = rB d mod n. La signature est constitue du message AA, des


deux valeurs calcules d et D et de ses rfrences J.

4 Bernard calcule T ' = D vJd mod n. H calcule ensuite d' = H(AA,T'). Sid = d',
Alice doit connatre B et sa signature est valide.

Multisignatures
Que se passe-t-il si plusieurs personnes veulent signer le mme document? Il y a une
solution facile chacune dentre elles signe sparment mais ce schma de signature
peut faire mieux que cela. Dans lexemple suivant, Alice et Bernard signent le mme
document et Christine vrifie les signatures, mais nimporte quel nombre de personnes
peuvent tre impliques dans le processus. Comme prcdemment, Alice et Bernard
ont leurs propres valeurs uniques J et B : Ja et Jb , et B a et B b - Les valeurs n et n
sont communes tout le monde dans le systme.
1 Alice choisit un nombre entier alatoire va tel que ta soit compris entre 1 et
n 1. Elle calcule Ta = r\ mod n et envoie Ta Bernard.
2 Bernard choisit un nombre entier alatoire r s tel que ru soit compris entre 1
et n l. Il calcule Tb = r g mod n et envoie Tb Alice.
3 Alice et Bernard calculent T = T aT b mod n
4 Alice et Bernard calculent d = H{AA,T), o Ad est le message signer et H(x)
une fonction de hachage sens unique. La valeur d produite par la fonction de
hachage sens unique doit tre comprise entre 0 et v 1 [722], Si la valeur
produite par la fonction de hachage nest pas comprise dans cet intervalle, elle
doit tre rduite modulo v.

5 Alice calcule D a =

ta B a

mod n.

6 Bernard calcule D b r s B g mod n.


7 Alice et Bernard calculent D = D a L>b mod n. La signature est constitue du
message AA, des deux valeurs calcules d et D , et de leurs rfrences tous les
deux, Ja et Jb -

8 Christine calcule J = Ja Jb mod n.


9 Christine calcule T ' D vJ d mod n. Elle calcule ensuite d' H{AA,T'). Si
d = d', alors la multisignature est valide.

Ce protocole peut tre tendu nimporte quel nombre de participants. Quand plu
sieurs personnes signent, ils multiplient tous les Tt individuels ltape 3 et leurs )f
individuels ltape 7. Pour vrifier une multisignature, il faut multiplier tous les J,
des signataires ltape 8. Soit les signatures sont toutes valides, soit il y en a au moins
une fausse.

21.3

Schnorr

Le schma d authentification e t de signature de Claus S c h n o r r [1401, 1403] tire sa


scurit de la difficult de calculer des logarithmes discrets. Pour engendrer une paire

21.3

539

S ch n orr

de clefs, choisissez deux nombres premiers p et q tels que q est un facteur premier de
p 1. Ensuite, choisissez un a qui ne soit pas gal 1 et tel que aq = 1 (mod p).
Tous ces nombres peuvent tre communs un groupe dutilisateurs et peuvent tre
librement publis.
Pour engendrer une paire clef publique clef prive particulire, choisissez un
nombre alatoire infrieur q. C est la clef prive s. Ensuite calculez v = a~s mod p.
Cest la clef pubque.

Protocole dauthentification
1 Patricia choisit un nombre alatoire r infrieur q et calcule x ar mod p.
C est l!ta.pe de prtraitement qui peut tre ralise bien longtemps avant que
Victor ne soit prsent. Patricia envoie x Victor.

2 Victor envoie Patricia un nombre alatoire e compris entre 0 et 2* 1 (je


parlerai de t plus loin).

3 Patricia calcule y = (r + s

e) mod q et envoie y Victor.

4 Victor vrifie que x ayve mod p.


La scurit est base sur le paramtre t. La difficult de casser lalgorithme est de
lordre de 2*. S c h n o r r recommande que p ait environ 512 bits et q environ 140 bits.
La valeur de t compatible avec ce niveau de scurit est t = 72, que S c h n o r r estime
assez sre.

Protocole de signature numrique


S c h n o r r peut aussi servir dans un protocole de signature dun message Ai. La paire
clef publique clef prive est la mme mais nous ajoutons maintenant une fonction
de hachage sens unique H {Ai).

1 Alice choisit un nombre alatoire r infrieur q et calcule x = ar mod p. Ce


calcul est ltape de prtraitement.

2 Alice joint le message x et calcule lempreinte du rsultat:


e = H(M,x).
Alice calcule y = (r + se) mod q. La signature est compose de e et y ; elle
envoie ces valeurs Bernard.

3 Bernard calcule z avve mod p. Il confirme ensuite que lempreinte du mes


sage joint z donne bien e :
e H(M,z).
Si tel est le cas, il considre la signature comme valide.

Dans son article,

Sch n o rr

cite les nouveauts suivantes de son algorithme :

La plupart des calculs pour la gnration de signature peuvent tre effec


tus lors dune tape de prtraitement, indpendante du message signer.
Ce calcul peut donc tre fait sur le temps d inoccupation du processeur

Chapitre 21

540

Schmas didentification

et il naffecte pas la vitesse de signature. Une attaque contre cette tape


de prtraitement est dcrite dans [447] mais je ne pense pas quelle soit
pratique.
niveau de scurit identique, la longueur des signatures est plus petite
p o u r S c h n o r r que p o u r

R SA . P a r exem ple, avec u n q de 140 bits, les

signatures n ont que 212 bits de long, m oins de la m oiti de la longueur des
signatures

R SA . L e s signatures S c h n o r r sont galement nettem ent plus

courtes que les signatures E

am al.

Bien sr les considrations pratiques amnent parfois abaisser encore le nombre de


bits ncessaires la scurit de certains schmas : par exemple un schma d identifica
tion o le tricheur doit effectuer une attaque en ligne en quelques secondes seulement
par rapport un schma de signature o le tricheur peut effectuer des annes de calcul
avant de montrer sa fausse signature.
Une modification de cet algorithme, dcrite dans [269] et ralise par Emie B r i c k e l l
et Kevin McCuRLEY, amliore sa scurit.

Brevets
est brevet aux tats-Unis [1404] et dans de nombreux autres pays. En 1993,
P K P a acquis les droits internationaux sur ce brevet (voir 25.5). Le brevet amricain
expire le 19 fvrier 2008.
Sch n o r r

21.4

Convertir un schma didentification


en un schma de signature numrique

Il y a une mthode gnrale pour transformer un schma d identification en un schma


de signature numrique : remplacez Victor par une fonction de hachage sens unique.
Le message nest pas hach avant dtre sign ; au lieu de cela, le hachage est incorpor
dans lalgorithme de signature. En principe, n importe quel schma didentification
permet de faire cela.

Chapitre 22

Algorithmes dchange de clefs


22.1

DiffieHellman

D i f f i e - H e l l m a n est le premier algorithme clef publique qui fut invent [494], Sa


scurit dpend de la difficult de calculer des logarithmes discrets sur un corps fini par
rapport la facilit de calcul d exponentielles dans le mme corps. D i f f i e H e l l m a n
peut tre utilis pour la distribution de clefs mais il ne peut pas tre utilis pour
chiffrer et dchiffrer des messages. Alice et Bernard peuvent utiliser cet algorithme
pour engendrer une clef secrte.
Les mathmatiques sont simples. Au dpart, Alice et Bernard se mettent daccord sur
deux grands entiers, n et g, de telle manire que g soit primitif par rapport n. Ces
deux entiers nont pas tre secrets ; Alice et Bernard peuvent convenir de ces nombres
sur un canal non sr. Ils peuvent mme tre communs un groupe dutisateurs. Peu
importe.
Le protocole se droule ainsi :

1 Alice choisit un grand nombre entier alatoire x et envoie Bernard le rsultat


du calcul:
X gx mod n.

2 Bernard choisit un grand nombre entier alatoire y et Alice le rsultat du


calcul :
Y = gv mod n.

3 Alice calcule:
k - Y mod n.
4 Bernard calcule :
k' X v mod n.

Les valeurs k et k' sont toutes deux gales gxy mod n. Personne ne peut en coutant
la communication calculer cette valeur; celui qui coute ne connat que n, g, X et
Y . moins quil ne puisse calculer le logarithme discret et retrouver x ou y, il ne
peut rsoudre le problme. Ainsi k est la clef secrte quAlice et Bernard ont calcule
indpendamment.

542

Chapitre 22

Algorithmes dchange de clefs

Le choix de g et n peut avoir un impact substantiel sur la scurit de ce systme. Le


nombre (n 1)/2 doit tre premier [1263]. Plus important, n doit tre grand, la scurit
du systme dpend de la difficult de factoriser des nombres de la taille de n. Et g doit
tre nimporte quelle racine primitive modulo n ; rien dempche de prendre la plus
petite valeur de g qui convient (cest gnralement un nombre un chiffre)1.

DiffieHellman avec trois participants et plus


Le protocole d change de clefs D i f f i e - H e l l m a n peut tre facilement tendu trois
personnes et plus. Alice, Bernard et Christine engendrent ensemble une clef secrte.
1 Alice choisit un grand nombre entier alatoire x et envoie X gx mod n
Bernard.

2 Bernard choisit un grand nombre entier alatoire y et envoie Y gy mod n


Christine.

3 Christine choisit un grand nombre entier alatoire y et envoie Z gz mod n


Alice.

4 Alice envoie Z' = Z x mod n Bernard.


5 Bernard envoie X ' = X v mod n Christine.
6 Christine envoie Y ' = Y z mod n Alice.
7 Alice calcule k = Y'x mod n.
8 Bernard calcule k = Z 'v mod n.
9 Christine calcule k = X ' z mod n.
La clef secrte, k, est gale gxyz mod n, et quiconque dautre coute la communication
ne peut calculer cette valeur. Le protocole peut tre aisment tendu quatre personnes
et plus ; il suffit dajouter les calculs des participants supplmentaires et les rondes de
calcul additionnelles.

Extension de DiffieHellman
Cet algorithme marche aussi dans les anneaux commutatifs [1263]. S h m u l e y et Kevin
ont tudi une variante de lalgorithme dans laquelle le module est un
nombre compos [1448, 1046]. V.S. M i l l e r et Neal K o b l i t z ont tendu lalgorithme
aux courbes elliptiques [1101, 868]. Taher E l G a m a l a utilis lide de base pour d
velopper un algorithme de chiffrement et de signature numrique (voir 19.6).
Cet algorithme marche galement dans le corps de Galois Z / 2 k [1448, 1046]. Certaines
ralisations suivent cette approche [884,1633,1634] parce que les calculs sont nettement
plus rapides. Toutefois, les calculs cryptanalytiques sont aussi nettement plus rapides
et il est donc important de choisir un corps assez grand pour assurer la scurit.
M cC urley

1.
En fa it, il n est p as n cessaire q u e g so it un e racin e p rim itiv e m o d u lo n , m ais q u e le so u s-g rou p e
m u ltip lic a tif q u il gn r m o d u lo n so it g ra n d .

22.1

D if f ie - H

ellm an

543

Hugues
Cette variante permet Alice de gnrer une clef et de lenvoyer Bernard [747].
1 Alice choisit un grand nombre alatoire x et gnre :
k = gx mod n.
2 Bernard choisit un grand nombre alatoire y et envoie Alice le rsultat du
cia,cul :
Y = gv mod n.

3 Alice envoi Bernard le rsultat du clacul:


X

Y x mod

n.

4 Bernard calcule:
z ~ j/-1 mod n
k' = X z mod n.

Si tout se passe bien, k = k'.


Lavantage de ce protocole par rapport D i f f i e - H e l l m a n est quil est possible de
calculer k avant toute interaction, et Alice peut chiffrer un message avant de contacter
Bernard. Elle peut lenvoyer plusieurs personnes, et interagir ensuite avec eux pour
changer individuellement la clef.

change de clefs sans changer de clef


lintrieur d une communaut d utilisateurs, chacun d eux pourrait publier une clef
publique X = gx mod n dans une base de donnes partage. Si Alice veut communiquer
avec Bernard, il lui suffit de consulter la clef publique de Bernard et de gnrer leur
clef secrte. Elle peut alors chiffrer un message avec cette clef et lenvoyer Bernard.
Bernard consultera alors la clef publique d Alice pour gnrer 1a, clef secrte et dchiffrer
le message.
Chaque paire dutilisateurs possde une unique clef secrte, et aucune communication
pralable nest ncessaire. Les clefs publiques doivent tre certifies pour empcher lat
taque consistant altrer la base de donnes et devraient tre changes rgulirement.
part cela, c est une ide assez astucieuse.

Brevets
Lalgorithme dchange de clefs D i f f i e - H e l l m a n est brevet aux Etats-Unis [720] et
au Canada [721], Un groupe appel P u b l i c K e y P a r t n e r s (P K P ) octroie des
licences d exploitation de ce brevet en mme temps que d autres brevets de cryptogra
phie clef publique (voir 25.5). Le brevet amricain expire le 29 avril 1997.

Chapitre 22

22.2

Algorithmes dchange de clefs

Protocole point point

L change de clefs suivant D i f f i e - H e l l m a n est vulnrable lattaque de lintercepteur. Un moyen de contourner ce problme est damener Bernard et Alice signer leurs
messages lun lautre [498].
Ce protocole fait lhypothse que Alice dtient un certificat de la clef publique de
Bernard et que Bernard dtient un certificat de la clef publique d Alice. Ces certificats
ont t signs par une autorit de confiance extrieure au protocole. Voici comment
Alice et Bernard gnrent une clef secrte k :
1 Alice gnre un nombre alatoire x et lenvoie Bernard.
2 Bernard gnre un nombre alatoire y. 17 calcule leur clef secrte k selon le
protocole D i f f i e - H e l l m a n . Il signe x et y et chiffre le rsultat avec k. Il
envoie le rsultat et y Alice:
y ,E k(SB {x,y)).

3 Alice calcule k son tour. Elle dchiffre le reste du message de Bernard et


vrifie sa signature. Elle envoie alors Bernard un message consistant de x et
y sign, puis chiffr avec leur clef partage :
E k(SA (x,y)).

4 Bernard dchiffre le message et vrifie la signature dAlice.

22.3

Protocole trois passes de Shamir

Ce protocole, invent par S h a m i r mais jamais publi, permet Alice et Bernard de


communiquer confidentiellement sans aucun change pralable de clefs secrtes ou de
clefs publiques [1014].
Il fait lhypothse de lexistence d un algorithme de chiffrement clef secrte qui est
commutatif, c est--dire:
EA (E B( M ) ) = E

(Ea (M )).

La clef secrte dAlice est A ; la clef secrte de Bernard est B. Alice veut envoyer un
message, A4, Bernard. Voici le protocole :
1 Alice chiffre A i avec sa clef secrte et envoie le texte chiffr Bernard
Ci = E a ( M ) .

2 Bernard chiffre Ci avec sa clef secrte et envoie le texte chiffr Alice


C2 = E b ( E a ( M ) ) .

3 Alice dchiffre C2 avec sa clef secrte et envoie le texte chiffr Bernard


C3 = D

(E b (Ea (A4))) = D

{Ea {E b {M ))) = E

{M ).

22.4

545

COM SET

4 Bernard, dchiffre C3 avec sa clef secrte pour finalement retrouver le texte du

message en clair.

Les masques jetables sont commutatifs et offrent la scurit parfaite mais ils ne peuvent
pas tre utiliss pour ce protocole. Avec la technique du masque jetable, les trois
messages seraient :
Cx =

M A

C2 = M e A B
C 3 = M 0 B.

Estelle, qui peut enregistrer ces trois messages quand ils transitent entre Alice et
Bernard, peut simplement les combiner par ou exclusif pour retrouver le message :
Ci

C 2 0 C 3 = ( M 0 A) ( M 0 A B ) ( M B ) = AA.

Manifestement, cela ne marche pas.


S h a m i r dcrit un algorithme de chiffrement qui est adapt ce protocole ; celui-ci est
similaire au R SA . Soit p un grand nombre premier tel que p 1 a un grand facteur
premier (afin d viter le calcul facile du logarithme discret modulo p). Choisissez une
clef de chiffrement e et une clef de dchiffrement d tout comme vous les choisiriez pour
le RSA. La clef de chiffrement e doit tre premire par rapport p 1. Calculez d en
utilisant lalgorithme dECLiDE de telle manire que de = 1 (mod p 1).
Pour chiffrer un message calculez :
C AAe mod p.
Pour dchiffrer un message calculez :
AA = Cd mod p.

D ne semble pas y avoir de moyen pour Estelle de retrouver le message AA sans devoir
calculer le logarithme discret mais, comme tant dautres choses en cryptographie clef
publique, cela na jamais t prouv.
Ce protocole offre quelque chose que le chiffrement clef publique simple noffre pas. Il
permet Alice damorcer une communication avec Bernard sans connatre aucunes de
ses clefs. Si Alice voulait utiliser un algorithme clef publique, elle devrait connatre
la clef publique de Bernard. Avec le protocole trois passes de S H A M I R , elle lui en
voie seulement un message chiffr. La mme chose avec un algorithme clef publique
ressemble ceci :
1 Alice demande Bernard (ou au C D C ) sa, clef publique.
2 Bernard (ou le CDCJ envoie Alice sa clef publique.
3 Alice chiffre AA avec la clef publique de Bernard et lui envoie le rsultat.
Le protocole de

22.4

Sham

ir

est vulnrable lattaque de lintercepteur.

COM SET

C O M S E T (pour COMmunications SETup ) est un protocole didentification mu


tuelle et dchange de clefs dvelopp pour le projet R IP E [1316] (voir 25.7). En

546

Chapitre 22

Algorithmes dchange de clefs

utilisant la cryptographie clef publique, il permet Alice et Bernard de sidentifier


lun lautre par eux-mmes et aussi dchanger une clef secrte.
Les principes mathmatiques sous-jacents C O M S E T sont bases sur le schma de
R a b in [1294] (voir 19.5). Le schma lui-mme a t propos lorigine dans [230].
Voyez [1316] pour plus de dtails.

22.5

change de clefs chiffr

Le protocole dchange de clefs chiffr (E K E pour Encrypted Key Exchange ) a


t conu par Steve B e l l o v i n et. Michael M e r r i t t [116]. Il offre la confidentialit et
lauthentification sur un rseau dordinateurs, en utilisant la fois la cryptographie
clef secrte et la cryptographie clef publique de faon originale : une clef secrte
partage est utilise pour chiffrer une clef publique engendre alatoirement.

Protocole EKE basique


Alice et Bernard (deux utilisateurs, un utilisateur et un ordinateur central, ou toute
autre combinaison) partagent un mot de passe commun P. En utilisant le protocole
suivant, ils peuvent sauthentifier lun lautre et engendrer une clef commune de
session, K .
1 Alice engendre une clef publique alatoire, K ' . Elle chiffre celle-ci laide dun
algorithme clef secrte et de la clef P : E p(K' ) . Elle envoie Bernard:
Alice, Ep(K').
2 Bernard connat P. Il dchiffre le message pour obtenir K ' . Ensuite, il engendre
une clef de session alatoire, K , et la chiffre avec la clef publique qu il vient de
recevoir dAlice et la clef secrte P :
E p (EK'(K)).
Il envoie le rsultat Alice.

3 Alice dchiffre le message pour obtenir K . Elle engendre une chane alatoire
R a et la chiffre avec K et envoie le rsultat Bernard:
E k ( R a ).
4 Bernard dchiffre le message pour obtenir Ra- Il engendre une autre chane

alatoire R p, chiffre les deux chanes avec K et envoie le rsultat Alice :


E k {R a ,R b )-

5 Alice dchiffre le message pour obtenir R a et R p. En faisant lhypothse que


la R a quelle, a reue de Bernard est la mme que celle quelle a engendre
ltape 3, elle chiffre R b avec K et lenvoie Bernard:
E r (R b )-

22.5

change de clefs chiffr


6 Bernard dchiffre le message pour obtenir R s - En faisant lhypothse que la
R b quil a reue dAlice est la mme que celle quil a engendre ltape 4, le
protocole est termin. Les deux participants peuvent communiquer en utilisant
la clef de session K .

ltape 3, Alice et Bernard connaissent tous deux K ' et K . K est la clef de session
et elle peut tre utilise pour chiffrer tous les autres messages entre Alice et Bernard.
Estelle, qui est entre Alice et Bernard, connat seulement Ep( K' ) , E p (E k '(K)) et
quelques messages chiffrs avec K. Dans dautres protocoles, Estelle peut essayer de
deviner P (les gens utilisent de mauvais mots de passe tout le temps et, si Estelle
est maligne, elle peut faire certains paris judicieux) et ensuite essayer ses paris. Dans
ce protocole, Estelle ne peut pas tester ses paris sans casser galement lalgorithme
clef publique. Et si K ' et K sont choisis alatoirement, cela peut tre un problme
insurmontable.
La portion dfi rponse du protocole, de ltape 3 ltape 6, valide le protocole.
Les tapes 3 5 prouvent Alice que Bernard connat K ; les tapes 4 6 prouvent
Bernard quAlice connat K . Lchange de datations du protocole K e r b e r o s accomplit
la mme chose.
EKE peut tre ralis grce plusieurs algorithmes clef publique : R SA , E l G a m a l ,
D iffie -H e l l m a n . Il y a des problmes de scurit dans les ralisations utilisant lal
gorithme des empilements (mis part les problmes inhrents cet algorithme) : la
distribution normale des messages de texte chiffr vient lencontre des bien-faits de

EKE.

Ralisation dEKE laide du RSA


Lalgorithme R S A semble tre le candidat idal pour cette application, mais il pose
quelques problmes subtils. Les auteurs recommandent de ne chiffrer que lexposant de
chiffrement ltape 1 et d envoyer le module en clair. Une explication du raisonnement
sous-jacent cette recommandation, ainsi que d autres subtilits lies lutilisation du
RSA sont dcrites dans [116].

Ralisation dEKE laide dElGamal


Raliser E K E laide dELGAMAL est vident, il y a mme une simplification du
protocole basique. En utilisant les notations du paragraphe 19.6, g et p font partie de
la clef publique et sont communs tous les utilisateurs. La clef prive est un nombre
alatoire r. La clef publique est gr mod p. Le message quAlice envoie Bernard
ltape 1 devient :
Alice, gr mod p.
Remarquez que cette clef publique na pas tre chiffre avec P. Ce nest pas vrai en
gnral mais c est vrai pour lalgorithme E l G a m a l . Les dtails sont donns dans [116].
Bernard choisit un nombre alatoire R (cest pour lalgorithme E l G a m a l et cest
indpendant des nombres alatoires choisis pour E K E ) et le message quil envoie
Alice ltape 2 devient :
Ep(gR mod p, KgRr mod p).

Voyez le paragraphe 19.6 pour les restrictions dans le choix des variables dELGAMAL.

Chapitre 22

548

Algorithmes dchange de clefs

Ralisation dEKE laide de Diffie-Hellman


Avec le protocole D iF F t E H e l l m a n , K est engendre automatiquement. Le protocole
final est encore plus simple. Une valeur pour g et n est choisie pour tous les utilisateurs
du rseau.
1 Alice choisit un nombre alatoire

ta

et envoie Bernard :

Alice, gTA mod n.


Avec D i f f i e - H

ellm an

, Alice na, pas chiffrer son premier message avec P.

2 Bernard choisit un nombre alatoire rg et calcule:


K = grAXrB mod n.
I

Il engendre une chane alatoire R g, puis calcule et envoie Alice:


E P(grB mod n),EK (RB).

3 Alice dchiffre la premire moiti du message de Bernard pour obtenir gTB mod
n. Ensuite, elle calcule K et utilise K pour dchiffrer R g . Elle engendre une
autre chane alatoire R a , chiffre les deux chanes avec K et envoie le rsultat
Bernard:
E k {R a ,R b )-

4 Bernard dchiffre le message pour obtenir R a et R g . En faisant l hypothse


que la valeur de Rg quil a reue dAlice est la mme que celle quil a envoye
Alice ltape 2, chiffre R a avec K et envoie le rsultat Alice:
E k (R a ).
5 Alice dchiffre le message pour obtenir R a - En faisant l hypothse que la valeur
de R a quelle a reue de Berna,rd est la mme que celle quelle a envoye
l tape S, le protocole est termin. Les deux participants peuvent communiquer
grce la clef de session K .

EKE renforc
B e l l o v i n et M e r r i t t suggrent une amlioration de la portion dfi - rponse du
protocole afin d viter une attaque possible si un cryptanalyste est entr en possession
dune vieille valeur de K .
Voyez le protocole de base EKE. A ltape 3, Alice engendre un autre nombre alatoire,
S a et envoie Bernard :

E k (R a ,Sa )

ltape 4, Bernard engendre un autre nombre alatoire S g et envoie Alice :


E k { R a ,R b ,Rg ) -

22.5

549

change de clefs chiffr

Alice et Bernard peuvent maintenant tous deux calculer la vraie clef de session S a ffi S p .
Cette nouvelle clef est utilise pour tous les futurs messages entre Alice et Bernard ; K
nest utilise que comme clef d change de clef.
Voyons maintenant le niveau de protection offert. Si Estelle entre en possession de S,
cela ne lui donne aucune information sur P car P nest jamais utilis pour chiffrer quoi
que ce soit qui conduise directement S. Une attaque cryptanalytique contre K nest
pas possible ; K est seulement utilise pour chiffrer des donnes alatoires et S nest
jamais chiffr seul.

EKE augment
Le protocole E K E prsente un srieux dfaut : les deux parties doivent possder P. La
plupart des systmes dauthentification mot de passe stockent une empreinte du mot
de passe de lutilisateur et non le mot de passe lui-mme (voir 3.2). Le protocole EKE
augment (A -E K E ) utilise une empreinte du mot de passe de lutilisateur comme clef
de surchiffrement dans la variante D i f f i e - H e l l m a n de EKE. L utilisateur envoie alors
un message supplmentaire bas sur le mot de passe originel, qui certifie lauthenticit
de la nouvelle clef de session choisie.
Voici comment cela fonctionne. Alice et Bernard veulent sidentifier lun lautre et
gnrer une clef de session commune. Ils se mettent d accord sur un schma de signature
numrique o tout nombre est susceptible de servir de clef prive, et o la clef publique
sobtient partir de la clef prive. E l G a m a l et R S A conviennent parfaitement. La
clef prive P ' sera le mot de passe dAlice ou seulement une empreinte de celui-ci.
1 Alice choisit un exposant alatoire

ta

et envoie :

Ep'{gTA m od n ).

2 Bernard, qui ne connat que P ' et ne peut pas en dduire P , choisit r& et
envoie :
Ep'(gTB mod n).

3 Alice et Bernard peuvent tovs les deux calculer la clef de session K =


gTAyrB moci n Finalement, Alice prouve quelle connat P lui mme, et pas
seulement P ', en envoyant :
E k (Sp (K)).

Bernard qui connat la fois K et P' peut dchiffrer et vrifier la signature. Seule
Alice a pu envoyer ce message puisquelle est la seule connatre F ; un intrus qui
obtiendrait une copie du fichier de mots de passe de Bernard peut essayer de deviner
P, mais ne peut pas signer la clef de session.
Le schma A -E K E ne fonctionne pas avec la variante clef publique de E K E puisque
lun des participants y choisit la clef et limpose lautre. Cela permet une attaque de
lintercepteur par un attaquant qui a intercept P.

Applications dEKE
B e l l o v i n et M e r r i t t suggrent que ce protocole peut tre utilis pour des tlphones
publics srs [116] :

Faisons lhypothse que des tlphones publics chiffrs sont installs.

550

Chapitre 22

Algorithmes dchange de clefs

Si quelquun veut utiliser lun de ces tlphones, un moyen dentrer de


linformation doit tre fourni. Les solutions conventionnelles ... ncessitent
que lappelant dispose d une clef physique, ce qui nest pas souhaitable
dans de nombreuses situations. E K E permet dutiliser un mot de passe
court entr par le clavier, mais utilise une clef de session nettement plus
longue pour lappel.
E K E serait aussi utile pour les tlphones cellulaires. La fraude a
t un problme dans lindustrie des tlphones cellulaires ; E K E permet
de sen prmunir (et dassurer la confidentialit de lappel) en rendant le
tlphone inutilisable si un P IN 2 na pas t entr. Comme le PIN nest
pas stock dans le tlphone, il nest pas possible d en rcuprer un partir
dun combin vol.
La force principale dE K E est que la cryptographie clef secrte et la cryptographie
clef publique sont utilises ensemble de faon se renforcer mutuellement :
D un point de vue gnral, EK E fonctionne comme un amplificateur
de confidentialit. En effet, il peut tre utilis pour renforcer des systmes
clef secrte et clef publique, comparativement faibles, quand ceux-ci sont
utiliss ensemble. Considrez, par exemple, la taille de clef ncessaire pour
garantir la scurit quand on utilise un change de clef exponentiel. Comme
L a M a c c h i a et O d l y z k o lont montr [945], mme des tailles de modules
que lon croyait sres ( savoir 192 bits) sont vulnrables une attaque qui
ne requiert que quelques minutes de temps dordinateur. Mais leur attaque
nest pas ralisable si lon doit dabord deviner un mot de passe avant de
lappliquer.
Rciproquement, la difficult de casser lchange de clef exponentiel
peut tre utilise pour empcher les paris sur les mots de passe. La faisa
bilit des attaques qui devinent les mots de passe dpend de la vitesse
laquelle on peut vrifier un pari. Si effectuer une telle vrification nces
site la rsolution d un change de clef exponentiel, le temps total, sinon la
difficult conceptuelle, augmente hors de proportion.
EKE est brevet [117].

22.6

Ngociation de clef fortifie

Ce schma a aussi pour but de protger la ngociation de clefs contre les mots de passe
faibles et les attaques de lintercepteur [48, 994]. Il utilise une fonction de hachage
sens unique de deux variables possdant une proprit trs spciale : elle offre beaucoup
de collisions sur la premire variable et en pratique aucune sur la seconde :
H'(x,y) = H(H(k,x) mod 2m,x )
o H{k,x) est fonction de hachage ordinaire applique h, k et x.

Alice et Bernard partagent un mot de passe secret P, et viennent juste dchanger une
clef de session K avec le protocole de D i f f i e - H e l l m a n . Ils utilisent P pour vrifier
2.

N ote du traducteur : PIN est labrviation de P e r s o n a l Id e n tific a tio n N u m b er pou r n u m ro

d id en tific a tio n p e r s o n n e l .

22.7

Distribution de clef de confrence et diffusion de secret

551

quils ont la mme clef de session (et quEstelle nest pas en train de tenter une attaque
de lintercepteur), sans dvoiler P Estelle.
1 Alice envoie Bernard
H' (P, K).

2 Bernard calcule H' (P, K) et compare son rsultat avec ce quil a reu. S ils sont
identiques, il envoie Alice
H ' ( H ( P , K ))

3 Alice calcule H' (H( P, K) ) et compare son rsultat avec ce quelle a reu.
Si Estelle tente lattaque de lintercepteur, elle utilise une clef K i avec Alice et une clef
K 2 avec Bernard. Pour tromper Bernard ltape 2, il faut quelle devine le mot de
passe et quelle envoie H'(P,K-i) Bernard. Avec une fonction de hachage classique,
elle peut essayer les mots de passe usuels pour deviner le bon et russir infiltrer le
protocole. Mais avec cette fonction de hachage, il existe beaucoup de mots de passe
susceptibles de produire la mme valeur quand ils sont hachs avec K\. Aussi, quand
elle trouve un mot de passe qui convient, elle a de grande chances de ne pas avoir le
bon, et Bernard ne se laissera pas duper.

22.7

Distribution de clef de confrence et


diffusion de secret

Alice veut diffuser un message A4 partir d un seul metteur. Toutefois, elle ne veut
pas quil soit intelligible pour tous les auditeurs. En fait, elle souhaite que seul un
ensemble restreint dauditeurs puissent tre en mesure de reconstruire A4. Pour toute
autre personne, cela doit tre du charabia.
Alice peut partager une clef diffrente (secrte ou publique) avec chaque auditeur. Elle
chiffre le message avec une clef alatoire K . Ensuite, pour chaque auditeur choisi, elle
chiffre une copie de K avec la clef partage avec lauditeur. Finalement, elle diffuse le
message chiffr et toutes les copies de K chiffres. Bernard, qui coute, soit essaie de
dchiffrer toutes les K chiffres avec sa clef secrte et cherche un rsultat correct ; soit
cherche son nom suivi de la clef chiffre, si Alice ne se proccupe pas du fait que lon
puisse savoir qui elle diffuse le message. La cryptographie clefs multiples convient.
Une autre mthode est suggre dans [356]. Au dpart, chaque auditeur partage une
clef secrte avec Alice, celle-ci tant plus grande que tout message chiffr diffus. Toutes
les clefs doivent tre deux deux premires entre elles. Elle chiffre le message laide
dune clef alatoire K . Ensuite, elle calcule un entier R tel que R soit congru K
modulo chaque clef secrte autorise lire le message, et congru 0 modulo chaque
clef secrte non autorise.
Par exemple, si Alice veut envoyer le message Bernard, Christine et Etienne mais
pas David et Francis, elle chiffre le message avec K et calcule ensuite R tel que :
R = K
(mod K b )
R = K
(mod K c )
R = 0 (mod K d )

552

Chapitre 22
R = K
R = 0

Algorithmes dchange de clefs

(mod K e )
(mod K f )-

C est un problme d algbre facile, quAlice peut certainement rsoudre. Quand les
auditeurs reoivent la transmission, ils calculent la clef reue modulo leur clef secrte.
Sils sont autoriss lire le message, ils rcuprent la clef K . Sinon, ils ne rcuprent
rien du tout.
Une troisime faon d oprer, en utilisant un schma seuil (voir 3.7) est suggre par
Shimshon B e r k o v i t z dans [148]. Comme pour les autres, chaque auditeur potentiel
reoit une clef secrte. Cette clef est une part dans un schma seuil qui nest pas
encore mis en place. Alice garde quelques clefs secrtes pour elle-mme afin de rajouter
un peu de caractre alatoire au systme. Faisons lhypothse quil y a A; personnes qui
coutent.
Alors pour diffuser A4, Alice chiffre A4 avec la clef K et fait ce qui suit :
1 Alice choisit un nombre alatoire j . Ce nombre sert cacher combien daudi
teurs sont viss par le message. Il na pas tre trs grand; il peut tre mme
aussi petit que 0 .

2 Alice cre un schma seuilfk -f j + 1 , 2k + j 4-1) avec :


K comme clef secrte ;
les clefs secrtes des auditeurs viss comme parts ;
les clefs secrtes des auditeurs non viss ne sont pas des parts ;
j parts choisies alatoirement, diffrentes de toutes les clefs secrtes.

3 Alice met k + j parts choisies alatoirement, aucune d entre elles ntant une
part dcrite ltape 2 .
4 Tous les auditeurs qui reoivent l mission ajoutent leur part aux k + j parts

quils ont reues. Si l adjonction de leur part leur permet de calculer le secret,
ils obtiennent la clef. Sinon, ils ne lont pas.

Une autre approche est dcrite dans [8 8 6 , 885, 1203]. Pour une autre approche encore,
consultez [1009].

Distribution de clef de confrence


Ce protocole permet un groupe de n utilisateurs de se mettre daccord sur une clef
secrte travers un rseau de communication peu sr. Le groupe partage deux grands
nombres premiers p et q, et un gnrateur de mme taille que q.
1 L utilisateur i, o i varie de 1 n , choisit un nombre alatoire r, infrieur q
et diffuse:
z, = gr' mod p.
2

Chaque utilisateur vrifie que z j = 1

(mod p) pour tout j entre 1 et n.

3 L utilisateur i diffuse :

X; = {z1+1/Z i-i)T' mod p.

22.7

Distribution de clef de confrence et diffusion de secret

553

4 L utilisateur i calcule :
K =

i ) nr* x a;

-1

x x Xi- 2 mod p

Tous les indices des calculs du protocole, i,i l,i 2 , . . . ,i + 1, sont prendre modulo
n. A la fin du protocole, tous les utilisateurs honntes obtiennent le mme K . Personne
dautre napprend quoi que ce soit. Cependant, ce protocole est vulnrable lattaque
de lintercepteur. Un autre protocole, moins beau que celui-ci, est dcrit dans [759].

Tatebayashi-Matsuzaki-Newman
Ce protocole de distribution de clef convient aux rseaux [1525]. Alice veut gnrer une
clef de session avec Bernard grce Ivan, le C D C . Tous les participants connaissent la
clef publique n de Ivan. Ivan connat les deux grands facteurs premiers de n, et peut
donc facilement calculer des racines cubiques modulo n. Une grande partie des dtails
est laisse de ct, mais lide est l.
1 Alice choisit un nombre alatoire

ta

et envoie Ivan :

r\ mod n.
2

Ivan informe Bernard que quelquun veut changer une clef avec lui.

3 Bernard choisit un nombre alatoire r s et envoie Ivan:


rB mod n.

4 Ivan utilise sa clef prive pour retrouver


ta

ta

et r s , et envoie Alice:

r B.

5 Alice calcule
(rA <$rB) r A = r B.
Elle utilise rB pour communiquer en scurit avec Bernard.

Ce protocole parat acceptable, mais il possde un horrible dfaut. Christine peut


couter ltape 3 et utiliser cette information pour retrouver rB avec laide dun
utilisateur complice (David), et dun Ivan peu suspicieux [1476].
1 Christine choisit un nombre alatoire r c et envoie Ivan :
r%r% mod n.

2 Ivan informe David que quelqu un veut changer une clef avec lui.
3 David choisit un nombre alatoire ru et envoie Ivan:
r\) mod n.

4 Ivan utilise sa clef prive pour retrouver rB et ce quil prend pour r c , et envoie
Christine:

(rBrc m od n) ru-

Chapitre 22

554

Algorithmes dchange de clefs

5 David envoie ru Christine.


6

Christine utilise r c et ru pour retrouver r s - Elle utilise r# pour espionner


Alice et Bernard.

Ce nest pas acceptable.

Chapitre 23

Algorithmes spciaux pour


protocoles
23.1

Cryptographie clef publique clefs


multiples

Ceci est une gnralisation du R S A (voir 19.3 [220, 215]. Le module n est le produit
de deux nombres premiers p et q. Toutefois, au lieu de choisir e et d tels que e x d = 1
(mod (p - 1 ) x (q 1 )), choisissez t clefs kz telles que :
ki x /c2 x ... x

(mod (p 1 ) x (q 1 )).

Comme :
jV ffc,xfc2 x ...x k t

ceci est un schma clefs multiples tel que dcrit dans le paragraphe 3.5.
Si, par exemple, il y a 5 clefs, un message chiffr avec kz et k^ peut tre dchiffr avec
ki, k'2 et k/i i
C = M k3* ks mod n
M = c kixk2 xk4 m o d n

Cela sert pour les signatures multiples. Imaginez la situation o Alice et Bernard
doivent tous les deux signer un document pour le rendre valide. Munissez les de trois
clefs : Ki , K 2 et A 3 . Les deux premires sont destines Alice et Bernard, une chacun,
et la troisime est rendue publique.
1 Alice signe A4 et envoie Bernard :
A4' = M Kl mod n.

2 Bernard peut retrouver A4 partir de A4' :


A4 A4'K2XKs mod n.

556

Chapitre 23

Algorithmes spciaux pour protocoles

3 Il peut aussi ajouter sa signature :


A i " = AA'k 2 mod n.

4 Tout le monde peut vrifier la signature avec la clef publique :


A i = A i " Ks mod n.

Notez quune personne de confiance extrieure est ncessaire la mise en place du


systme et la distribution des clefs. Un autre schma prsentant le mme problme
est dcrit dans [482]. Un autre encore se trouve dans [697, 831, 701], mais la vrification
y demande un travail proportionnel au nombre de signataires. Des schmas plus rcents
[223, 1209], bass sur les schmas de preuve divulgation nulle vient bout des dfauts
des systmes prcdents.

23.2

Algorithmes de partage de secret

Plus tt, au paragraphe 3.7, j ai dcrit lide sous-jacente aux schmas de partage de
secret. Les quatre diffrents algorithmes qui suivent sont tous des cas particuliers dun
schma thorique gnral [883].

Schma du polynme dinterpolation de L a g r a n g e


Adi S h a m ir utilise des quations polynomiales sur un corps fini pour construire un
schma seuil [1421]. Tout dabord, choisissez un nombre premier p qui est plus grand
que le nombre de parts possibles et plus grand que le plus grand secret possible. Pour
partager un secret, engendrez un polynme arbitraire de degr m 1. Par exemple,
pour crer un schma seuil (3,n) (trois parts sont ncessaires pour reconstruire Ai),
engendrez un polynme quadratique :
F(x) = (ax2 + bx + Ai) mod p,

o p est un nombre premier plus grand que nimporte quel coefficient. Les coefficients
a et b sont choisis alatoirement ; ils sont tenus secrets et jets aprs que les parts aient
t distribues. A i est le message. Le nombre premier doit tre rendu public.
Les parts sont obtenues en valuant le polynme en n points diffrents :
kt = F ( x t).

En d autres termes, la premire part pourrait tre la valeur du polynme valu en


x 1, la deuxime part pourrait tre la valeur du polynme valu en x = 2, etc.
Comme le polynme quadratique a trois coefficients inconnus, a, b et Ai, nimporte
quel ensemble de trois parts peut tre utilis pour construire trois quations ; lalgbre
linaire peut tre utilise pour retrouver Ai. Deux parts ne suffisent pas. Une part ne
suffit pas. Quatre ou cinq parts sont redondantes.
Par exemple, supposons que A i vaut 11 Pour construire un schma seuil (3,5), dans
lequel trois personnes parmi cinq peuvent reconstruire Ai, engendrez une quation
quadratique (7 et 8 ont t choisis alatoirement) :
F(x) = (7a;2 + 8a; + 11) m od 13.

23.2

Algorithmes de partage de secret

557

Les cinq parts sont :


fcj = F ( l ) = 7 + 8 + l l = 0 (mod 13)
fc2 = F (2) = 2 8 + 1 6 + 11 = 3 (mod 13)
fc3 = F ( 3 ) = 63 + 24 + l l = 7 (mod 13)
k4 = F ( 4 ) = 112 + 3 2 + 11 = 12 (mod 13)
fc5 = F( 5) = 175 + 40 + 11 = 5 (mod 13).
Pour reconstruire A4 partir de 3 parts, par exemple, ta, ta et k5, il faut rsoudre le
jeu dquations linaires :
a x 2 2 + f cx2 + M = 3
a x 3 2 + 6 x 3 + A4 = 7
a x 5 2+ 6 x 5 + M = 5

(mod 13)
(mod 13)
(mod 13).

La solution sera a = 7, b = 8 et A4 = II. Ainsi, on a retrouv A4.


Ce schma de partage peut tre facilement ralis avec de grands nombres. Si vous vou
lez diviser un message en 30 parts gales de telle manire que 6 dentre elles quelconques
permettent ensemble de reconstruire le message, donnez chacune des 30 personnes le
rsultat de lvaluation du polynme de degr 5 :
F(x) = (ax 6 + bx5 + ex4 + dx3 + ex 2 -f f x + A4) mod p.

Six personnes peuvent calculer les six inconnues (y compris A4) ; cinq personnes ne
peuvent rien apprendre de A4.
Laspect le plus poustouflant du partage de secret est que si les coefficients sont choisis
alatoirement, cinq personnes disposant dune puissance de calcul infinie ne peuvent
rien apprendre du message part sa longueur (que, de toute faon, ils connaissent tous).
Cest aussi sr quun masque jetable ; une tentative de recherche exhaustive (cest-dire, essayer toutes les combinaisons possible de six parts) rvlerait que tout message
concevable pourrait tre le secret. C est vrai pour les quatre schmas de partage de
secret prsents ici.

Schma vectoriel
George B l a k l e y a invent un schma qui utilise des points dans lespace [189]. Le
message est dfini comme un point dans un espace m dimensions. Chaque part est
lquation d un hyperplan de m 1 dimensions qui inclut ce point. L intersection de
nimporte quel ensemble de m de ces hyperplans dtermine exactement ce point.
Par exemple, si trois parts sont ncessaires pour reconstruire le message, alors c est un
point dans un espace trois dimensions. Chaque part est un plan diffrent. Avec une
part, vous savez que le point est quelque part sur le plan. Avec deux parts, vous savez
que le point est quelque part sur la droite dintersection des deux plans. Avec trois
parts, vous pouvez dterminer le point exactement : c est lintersection des trois plans.

AsmuthBloom
Ce schma utilise des nombres premiers [70]. Pour un schma seuil-(m,n), choisissez
un grand nombre premier p plus grand que A4. Ensuite choisissez n nombres infrieurs
kp, dj, d2 , ..., dn tels que:
1. les valeurs des di soient en ordre croissant ; di < dL+i ;

558

Chapitre 23

Algorithmes spciaux pour protocoles

2. chaque di soit premier par rapport tous les autres d; ;


3. di x d2 x ... X dm > p X dnm + 2 ^

m +3 ^ ^ ^n*

Pour distribuer les parts, choisissez une valeur alatoire r et calculez :


A4' = A i + r p .

Les parts sont donnes par :


ki = A4 1 mod d,.

Tout ensemble de m parts peut tre utilis pour reconstruire A i en utilisant le thorme
du reste chinois, mais m 1 parts ne le permettent pas. Voyez [70] pour les dtails.

KarninG reeneHellman
Le schma de K a r n in , G r e e n e et H e l l m a n utilise la multiplication matricielle [819].
Choisissez n + 1 vecteurs m dimensions Vo, Vi, ..., Vn, tels que toute matrice m x rri
forme partir de ces vecteurs ait un rang m. Le vecteur U est le vecteur ligne de
dimension m.
A4, est le produit matriciel U - Vo- Les parts sont donnes par les produits matriciels
U Vi, o i varie de 1 n.
Tout ensemble de m parts peut tre utilis pour rsoudre le systme de m x m quations
linaires o les inconnues sont les coefficients de U. Connaissant 17, on peut calculer
U Vq. Tout ensemble de m 1 parts ne permet pas de rsoudre le systme dquations
linaires et ne permet donc pas de retrouver le secret.

Schmas seuil avancs


Les exemples prcdents illustrent seulement les schmas seuil les plus simples : di
viser un secret en n parts de telle manire que m parts puissent tre utilises pour
reconstruire le secret. Ces algorithmes peuvent tre utiliss pour construire des sch
mas bien plus compliqus. Les exemples suivants utiliseront lalgorithme de S h a m ir ,
bien que tout autre algorithme dcrit ci-dessus puisse convenir.
Pour crer un schma pour lequel une personne est plus importante que les autres,
donnez plus de parts cette personne. Supposons quil faille avoir 5 parts pour recons
truire le secret. Si une personne a trois parts diffrentes tandis que toutes les autres
nen ont quune alors cette personne et deux autres peuvent reconstruire le secret. Sans
cette personne particulire, il faut cinq personnes pour reconstruire le secret.
Deux personnes ou plus peuvent recevoir plusieurs parts. Chaque personne diffrente
peut recevoir un nombre diffrent de parts. Peu importe la faon dont les parts sont
distribues, rn d entre elles quelconques peuvent tre utilises pour reconstruire le se
cret. Quelquun qui a m 1 parts, que ce soit une personne ou une assemble, ne peut
pas le reconstruire.
Dans dautres types de schmas, imaginez un scnario dans lequel il y a deux dlgations
hostiles. Vous pouvez partager un secret de telle manire que deux personnes parmi
les sept de la Dlgation A et trois personnes parmi les 12 de la Dlgation B soient
ncessaires pour reconstruire le secret- Construisez un polynme de degr 3 qui soit
le produit dun polynme linaire et. dun polynme quadratique. Donnez chaque
membre de la Dlgation A une part qui est le rsultat d une valuation du polynme

23.2

Algorithmes de partage de secret

559

linaire, et donnez chaque membre de la Dlgation B une part qui est le rsultat
dune valuation du polynme quadratique.
Deux parts quelconques de la Dlgation A peuvent tre utilises pour reconstruire
le polynme linaire mais, quel que soit le nombre de parts dont dispose le groupe,
personne ne peut obtenir la moindre information sur le secret. La mme chose est vraie
pour la Dlgation B : ils peuvent mettre trois parts en commun pour reconstruire le po
lynme quadratique, mais ils ne peuvent pas obtenir la moindre information ncessaire
pour reconstruire le secret. Ce nest que si les dlgations mettent en commun leurs
polynmes que ceux-ci peuvent tre multiplis entre eux pour reconstruire le secret.
En gnral, tout type de schma de partage qui peut tre imagin peut tre ralis.
Tout ce que vous avez faire, c est trouver un systme dquations qui correspondent
au schma particulier choisi. D excellents articles concernant les schmas de partage
de secret gnraliss sont dans [1468, 1469, 1470].

Partage de secret avec des tricheurs


Cet algorithme modifie le schma seuil-(m,n) standard pour dtecter les tri
cheurs [1537]. Cela marche avec nimporte quel schma, mais je vais lillustrer en
utilisant le schma de L a g r a n g e .
Choisissez un nombre premier p plus grand que n et plus grand que :

(s l)(ra l ) / e + m,

o s est le secret le plus grand possible et e est la probabilit de tricher avec succs.
Vous pouvez rendre e aussi petit que vous le voulez ; cela ne fait que rendre les calculs
plus complexes. Construisez vos parts comme avant, sauf quau lieu d utiliser 1,2,3,...,n
pour les Xi, vous choisirez des nombres alatoires entre 1 et p 1 pour les Xi.
Maintenant si Martin sintroduit subrepticement dans la runion de reconstruction
du secret avec sa fausse part, celle-ci a une forte probabilit de ne pas tre valide.
Un secret impossible est, bien sr, un secret contrefait. Voyez [1537] pour les dtails
mathmatiques.
Malheureusement, au moment o Martin est confondu comme tricheur, il apprend
quand mme le secret (en faisant lhypothse quil y a m autres parts valides). Un
autre protocole, dcrit dans [1537, 987], vite cela. Lide de base est davoir une suite
de k secrets telle quaucun des participants ne sache davance quel est le bon secret.
Chaque secret est plus grand que le prcdent, sauf pour le vrai secret. Les participants
combinent leurs parts pour engendrer les secrets les uns aprs les autres, jusqu ce
quils crent un secret qui soit infrieur au secret prcdent. C est le bon.
Ce schma dvoilera les tricheurs tt dans le processus, avant que le vrai secret ne soit
rvl. Il y a des complications quand les participants dvoilent leurs parts une par une ;
voyez les articles pour les dtails. D autres articles sur la dtection et les prventions
de la tricherie dans les schmas seuil sont dans [359, 124, 274],

Chapitre 23

560

23.3

Algorithmes spciaux pour protocoles

Canal subliminal

OngSchnorrShamir
Ce canal subliminal (voir 4.2), conu par Gustavus S im m o n s [1464, 1465, 1467],
utilise le schma d identification O n g - S c h n o r r - S h a m ir (voir 20.5). Comme dans
le schma original, lexpditeur (Alice) choisit un module public n et une clef prive
k telle que n et k soient premiers entre eux. Contrairement au schma original, k est
partag entre Alice et Bernard, le destinataire du message subliminal.
La clef publique est calcule de la mme faon :
h = k ~ 2 mod n.

Si Alice veut envoyer un message subliminal A4 au moyen du message inoffensif A4',


elle vrifie d abord que A4' et n sont premiers entre eux et que A4 et n sont premiers
entre eux.
Alice calcule :
51 = 1/2 x {AA' f A4 + M ) mod n
5 2 = k /2 x {A4'/A i - A4) mod n.

La paire 5 j et S 2 est la fois la signature du schma O n g - S c h n o r r -S h a m ir tradi


tionnel et le porteur du message subliminal.
Gatien, le gardien de prison, peut vrifier lauthenticit du message comme dcrit par
le schma de signature O n g -Sc h n o r r S h a m ir mais Bernard peut faire mieux. Il
peut vrifier lauthenticit du message (il est toujours possible que Gatien introduise
ses propres messages). Il peut vrifier que:
(Sf S ^/k2) = A4'

(mod n).

Si le message est authentique, le destinataire peut rcuprer le message subliminal en


utilisant la formule :
AA = M '/{ S i + S i k - 1) mod n.
C ela m arche, mais rappelez-vou s que le schm a O n g - S c h n o r r SHAMIR a t cass.

ElGamal
Le deuxime canal subliminal de S im m o n s [1465], dcrit dans [1412, 1477], est bas
sur le schma de signature E l G a m a l (voir 19.6).
La gnration de clef est la mme que pour le schma de signature E l G a m a l de base.
Choisissez dabord un nombre premier p et deux nombres alatoires g et r tels que g
et r soient tous deux infrieurs p. Ensuite calculez :
K

gr m o d p.

La clef publique est constitue de K , g et p. La clef prive est r. En dehors dAlice,


Bernard connat aussi r ; c est la clef qui est utilise pour envoyer et lire le message
subliminal, en plus d tre la clef utilise pour signer le message inoffensif.

23.3

561

Canal subliminal

Pour envoyer un message subliminal A4, en utilisant un message inoffensif A4', A4 , A4


et p doivent tre premiers entre eux deux deux, et AA et p 1 doivent tre premiers
entre eux. Alice calcule :
X = gM m od p
et rsout l q u ation suivante par ra p p ort F ( l aide de l algoritlune d EuCLlDE) :

A4' = (r X + M Y ) mod (p - 1).

Comme dans le schma E l G a m a l de base, la signature est la paire X et Y .


Gatien peut vrifier la signature E l G a m a l . Il vrifie que :
K x X Y mod p = gM

(mod p).

Bernard peut reconstruire le message subliminal. Il vrifie tout dabord que :


(gr)x X Y mod p = gM

(mod p).

Si tel est le cas, il accepte alors le message comme licite (ce nest pas un message de
Gatien).
Ensuite, pour reconstruire A4, il calcule:
A4 Y ~ 1 (A4' r X ) mod (p 1).

Par exemple, soit p 11 et g = 2. La, clef prive r choisie vaut 8. Cela signifie que la clef
publique, que Gatien utilise pour vrifier la signature, vaut gr mod p = 28 mod 11 = 3.
Pour envoyer le message subliminal, A4 = 9, en utilisant le message inoffensif A4' = 5,
Alice vrifie que 9 et 11 sont premiers entre eux et que 5 et 11 sont premiers entre eux.
Elle vrifie galement que 9 et 11 1 sont premiers entre eux. Ils le sont, donc elle
calcule :
X = gM mod p = 29 mod 11 - 6.

Ensuite, elle rsout lquation suivante par rapport Y :


5 = ( 8 x 6 + 9 x F ) mod 10.
Ce qui donne F = 3, donc la signature est constitue de la paire: X et F : 6 et 3.
Bernard vrifie que :
( gr)x X Y mod p = gM ' (mod p)
(28)663 mod 11 = 25 (mod 11).
Tel est le cas, donc il rcupre le message subliminal en calculant :
A4

Y ~ 1 (A4' r X ) mod (p 1) = 3"_1(5 8 x 6 ) mod 10

( 7 x 7 ) mod 10 49 mod 10 = 9.

Chapitre 23

562

Algorithmes spciaux pour protocoles

ESIGN
Un canal subliminal peut tre ajout ESIGN [1467] (voir 20.6).
Pour ESIGN, la clef prive est une paire de grands nombres premiers, p et q, et la clef
publique est n = p 2 q. Avec un canal subliminal, la clef prive est constitue de trois
nombres premiers p, q et r, et la clef publique n est telle que :
n p 2 qr.

La variable r est linformation supplmentaire dont Bernard a besoin pour lire le mes
sage subliminal.
Pour signer un message normal, Alice choisit d abord un nombre alatoire x infrieur
pqr et calcule :
w, qui est le plus petit entier plus grand que ( H (m ) x k m od n)/pqr
s x + (( w /k x k~ *) mod p)pqr .
H (m ) est lempreinte du message; k est le paramtre de scurit. La valeur s est la
signature.
Pour vrifier la signature, Bernard calcule sk mod n. Il calcule aussi a, le plus petit
entier plus grand que le nombre de bits de n divis par 3. Si H(m ) est plus petit ou
gal sk mod n, et si sk mod n est plus petit que H (m ) + 2 , alors la signature est
considre comme valide
Pour envoyer un message subliminal AA en utilisant un message inoffensif A4', Alice
calcule s en utilisant A4 au lieu de H(m ). Cela signifie que le message doit tre plus
petit que p 2qr. Elle choisit ensuite une valeur alatoire u et elle calcule :
x' A4' + ur.

Ensuite, elle utilise cette valeur x' comme le nombre alatoire x pour signer A4'.
Cette deuxime valeur de s est envoye comme la signature.
Gatien vrifie que s (le deuxime s) est une signature valide de AA'.
Bernard peut aussi vrifier lauthenticit du message de la mme manire. Mais comme
il connat galement r, il peut calculer :
s = x' + ypqr A4 + ur + ypqr = A4

(mod r).

Cette ralisation dun canal subliminal est bien meilleure que les deux prcdentes.
Dans les ralisation de O n g - S c h n o r r S h a m ir et dans E l G a m a l , Bernard dispose de
la clef prive dAlice. En dehors du fait que Bernard peut lire les messages subliminaux
dAlice, il peut aussi se faire passer pour Alice et signer des documents sa place. Alice
ne peut rien y faire ; sa confiance en Bernard est ncessaire pour mettre en place ce
canal subliminal.
Le schma ESIGN ne prsente pas de ce dfaut. La clef prive dAlice est lensemble
des trois nombres premiers p, q et r. La clef secrte de Bernard est seulement constitue
de r. Il connat n = p2 qr, mais pour rcuprer p et q, il doit factoriser ce nombre. Si
les nombres premiers sont assez grands, Bernard a autant de difficult se faire passer
pour Alice que Gatien, ou que toute autre personne.

23.3

Canal subliminal

563

DSA
Il y a aussi un canal subliminal dans le D SA (voir 20.1) [1475, 1478, 1477]. En fait,
il y en a plusieurs. Le canal subliminal le plus simple comprend le choix de k, qui est
cens tre un nombre alatoire de 160 bits. Toutefois, si Alice choisit un k particulier,
alors Bernard, qui connat galement la clef prive d Ace, peut reconstruire k. Alice
peut envoyer Bernard un message subliminal de 160 bits dans chaque signature
DSA. Toute autre personne peut seulement vrifier la signature. Ce nest pas si simple.
Puisque k doit tre alatoire, Alice et Bernard doivent partager un masque jetable et
chiffrer le message subliminal avec le masque jetable pour engendrer k.
Il existe des canaux subliminaux dans le D SA qui ne ncessitent pas que Bernard
connaisse la clef prive dAlice. Ils impliquent galement le choix de valeurs particu
lires pour k mais ils ne permettent pas de transmettre 160 bits d information. Le
schma suivant, prsent dans [1475, 1478], permet Alice et Bernard dchanger un
bit dinformation subliminale par message sign :
1 Alice et Bernard se mettent daccord sur un nombre premier alatoire P (dif
frent du paramtre p du schma de signature). C est leur clef secrte pour le
canal subliminal.

2 Alice signe un message inojfensif A i . Si elle veut envoyer Bernard un bit


subliminal 1, elle s assure que le paramtre r de la signature soit un rsidu
quadratique modulo P. Si elle veut lui envoyer un bit subliminal 0, elle s as
sure que le paramtre r ne soit pas un rsidu quadratique modulo P. Elle ralise
cela en signant le message avec des valeurs alatoires de k jusqu ce quelle
obtienne une signature o r a la bonne proprit. Comme les rsidus quadra
tiques et les rsidus non quadratiques sont quiprobnbles, cela ne sera pas trop
difficile.

3 Alice envoie le message sign Bernard.


4 Bernard vrifie la signature pour s assurer de l authenticit du message.
Ensuite, il vrifie si r est un rsidu quadratique ou non modulo P et rcupre
ainsi le bit subliminal.

Il existe des moyens denvoyer plusieurs bits par cette mthode qui implique le fait de
rendre r rsidu quadratique ou non dun ensemble de paramtres. Voyez [1475, 1478]
pour plus de dtails.
Ce schma peut tre facilement tendu pour envoyer plusieurs bits subliminaux par
signature. Si Alice et Bernard se mettent daccord sur deux nombres premiers P et
Q, Alice peut envoyer deux bits en choisissant un k alatoire tel que r soit un rsidu
quadratique ou non modulo P et tel que r soit un rsidu quadratique ou non modulo
Q. Une valeur alatoire de k a 25 % de chances de produire un r de la bonne forme.
Voici comment Martin, un ralisateur peu scrupuleux du DSS, peut arranger la fuite
de 10 bits de la clef prive d Alice par document quAlice signe :
1 Martin met sa ralisation du DSS dans une puce VLSI rsistante linvestiga
tion en sorte que personne ne puisse en examiner le fonctionnement. Il cre un
canal subliminal de 14 bits dans sa ralisation du DSS. Pour ce faire, il choisit
14 nombres premiers, et la puce choisit la valeur k telle que r soit ou ne soit

Chapitre 23

564

Algorithmes spciaux pour protocoles

pas un rsidu quadratique modulo chacun des nombres premiers en fonction du


message subliminal.

2 Martin distribue ses puces Alice, Bernard, et toute autre personne qui en
veut.

3 Alice signe un message normalement en utilisant sa clef prive de 160 bits y.


4 La puce choisit alatoirement un bloc de 10 bits de y : les premiers 10 bits, le
second groupe de 10 bits, etc. Comme il y a 16 blocs possibles de 10 bits, un
nombre de 4 bits permet didentifier de quel bloc il s agit. Cet identificateur de
4 bits plus les 10 bits de la clef forment le message subliminal de 14 bits.

5 La puce essaie des valeurs alatoires de k jusqu ce quelle en trouve une


avec les bonnes proprits de rsidus quadratiques pour envoyer le message
subliminal. Les chances quun k soit correct sont de 1 contre 16384. En faisant
lhypothse que la puce peut tester 10000 valeurs k par seconde, cela prendra
moins de 2 secondes pour en trouver une. Ce calcul nimplique pas le message
et peut tre effectu hors ligne, avant quAlice ne veuille signer un message.

6 La puce signe le message normalement en utilisant la valeur k choisie


ltape 5.
7 Alice envoie sa signature numrique Bernard ou la publie sur le rseau ou
par tout autre moyen.

8 Martin rcupre r et, comme il connat les 14 nombres premiers, il dchiffre le


message subliminal.

Ce qui est effrayant, c est que mme si Alice sait que cela se produit, elle ne peut pas
le prouver. Tant que les 14 nombres premiers restent secrets, Martin est labri.

Comment boucher le canal subliminal du DSA


Lexistence du canal repose sur le fait quAlice peut choisir k pour envoyer le message
subliminal. Pour boucher le canal, il ne faut interdire Alice de choisir k. Il faut aussi
linterdire tout autre personne, qui pourrait imiter la signature d Alice si elle pouvait
choisir k. La seule solution consiste amener Alice gnrer k conjointement avec une
autre personne, appelons la Bernard, sans quAlice puisse contrler un seul bit de k et
sans que Bernard puisse connatre un seul bit de k. A la fin du protocole, Bernard doit
pouvoir vrifier quAlice a bien utilis le k quils ont gnr ensemble.
Voici le protocole [1474, 1476, 1477] :
1 Alice choisit k' et envoie Bernard :
u = gk mod p

2 Bernard choisit k" et l envoie Alice.


3 A lice calcule k k'k" mod (p 1). Elle utilise k pour signer son message M
avec le D SA et envoie Bernard la signature: r et s.
4 Bernard vrifie que
(( uk mod p) mod q) = r.
Si c est le cas, il sait que k a servi signer AA.

23.f

Signatures numriques incontestables

565

Aprs ltape 4, Bernard sait que r ne contient aucune information subliminale. Sil
sert de personne de confiance, il peut certifier que la signature d Alice ne contient pas
de message subliminal. Les autres doivent croire ce certificat; Bernard ne peut pas
prouver ce fait une troisime personne avec une transscription du protocole.
Cela donne un rsultat surprenant : si Bernard le veut, il peut utiliser ce protocole
pour crer son propre canal subliminal. Bernard peut insrer un message subliminal
dans une des signature d Alice en choisissant un k vrifiant certaines caractristiques.
Quand S im m o n s a dcouvert cela, il la appel le canal du coucou . Les dtails du
fonctionnement du canal du coucou, et un protocole trois passes de gnration de k,
qui lvite, sont dcrits dans [1479, 1477].

Autres schmas
Il existe un autre schma de signature dans lequel on peut cacher un canal sublimi
nal [1464, 1467,1411]. Un protocole pour cacher un canal subliminal dans les protocoles
F ia t - S h a m ir et F ia t - F e ig e - S h a m ir , ainsi que les abus possibles laide de ce canal
sont dcrits dans [483]

23.4

Signatures numriques incontestables

Cet algorithme de signature incontestable (voir 4.3) est d David C h a u m [338, 332].
Au dpart, un grand nombre premier p et un lment primitif g sont rendus publics
et utiliss par un groupe de signataires. Alice a une clef prive x et une clef publique
gx mod p.
Pour signer un message, Alice calcule z m x mod p. C est tout ce quelle doit faire.
La vrification est un petit peu plus complique :
1 Bernard choisit deux nombres alatoires a et b tous deux infrieurs p et envoie
Alice :
c = za(gx)h mod p.

2 Alice calcule a:-1 mod (p 1) et envoie Bernard:


d cx

mod p.

3 Bernard vrifie que :


d ~ magb

(mod p).

Si tel est le cas, il accepte la signature comme valide.

Imaginez quAlice et Bernard ayant effectu ce protocole, Bernard est convaincu


quAlice a sign le document et il veut en convaincre Christine. Il montre Christine
une transcription du protocole. David veut convaincre Christine que quelquun d autre
a sign ce document. Il cre une fausse transcription du protocole. Il engendre le mes
sage de ltape 1 . Ensuite, il effectue les calculs de ltape 3 pour engendrer d et la
fausse transmission venant de lautre personne ltape 2. Enfin, il cre le message de
ltape 2. Pour Christine, les transcriptions de Bernard et de David sont toutes deux
identiques. Elle ne peut pas tre convaincue de la validit de la signature, moins
deffectuer le protocole par elle-mme.

Chapitre 23

566

Algorithmes spciaux pour protocoles

Bien sr, si elle avait regard par dessus lpaule de Bernard pendant lexcution du
protocole, elle aurait t convaincue. Christine doit voir les tapes excutes dans le
bon ordre, tout comme Bernard.
Il peut y avoir un problme avec ce protocole de signature, mais je ne connais aucun
dtail. Je vous prie de consulter la littrature avant de lutiliser.
Un autre protocole offre non seulement le moyen pour Alice de convaincre Bernard
de la validit de sa signature, mais il permet aussi Alice de convaincre Bernard que
sa signature nest pas valide si tel est le cas, et ce laide d un protocole interactif
divulgation nulle [335].
Tout comme pour le protocole prcdent, un grand nombre premier p et un lment
primitif g sont rendus publics et utiliss par un groupe de signataires. Alice dispose
dune clef prive x et d une clef publique gx mod p. Pour signer un message Alice
calcule z = m mod p.
Pour vrifier la signature :
1 Bernard choisit deux nombres alatoires a et b tous deux infrieurs p et envoie
Alice:
c - m agb m od p.

2 Alice choisit un nombre alatoire q infrieur p, calcule et envoie Bernard:


si = ( e x gq) mod p ,

S2 (c x gq) mod p.

3 Bernard envoie a et b Alice afin qu elle puisse vrifier qu il na pas trich

ltape 1 .

4 Alice envoie q Bernard, de telle manire quil puisse utiliser m x et recons


truire S\ et S2 - Si:
Si ( e x gq) m od p
s2 = ((<?) 6 + 9 x za) mod p ,
alors la signature est valide.

Alice peut galement dsavouer sa signature z pour un message m. Voyez [335] pour
les dtails.
Dautres protocoles de signatures incontestables sont dcrits dans [586, 348]. Lein H a r n
et Shoubao Y a n g ont propos un schma de signature incontestable en groupe [701].

Signatures incontestables convertibles


Un algorithme pour une s i g n a t u r e i n c o n t e s t a b l e c o n v e r t i b l e , qui peut tre vrifie,
dsavoue et galement convertie en signature numrique conventionnelle est donn
par [216]. Il est bas sur lalgorithme de signature numrique E l G a m a l .
Tout comme pour E l G a m a l , choisissez deux nombres premiers p e t q tels que q divise
p 1. Maintenant, vous devez crer un nombre g infrieur q. Choisissez un nombre
alatoire h entre 2 et p 1 , puis calculez :
g = h{p~ 1)' q mod p.

Si g vaut 1, choisissez un autre nombre alatoire h. Sinon, gardez le g obtenu.

23.5

Signatures numriques vrificateur ddi

567

La clef prive est compose de deux nombres alatoires diffrents x et z, tous deux
infrieurs q. La clef publique est constitue de p, q, g, y et u, o :
y = gx mod p,
u = gz mod p.

Pour calculer la signature incontestable convertible du message m (qui est en fait


lempreinte dun message), choisissez dabord un nombre alatoire t entre 1 et q 1.
Ensuite, calculez :
T = (fi mod p
et
m ' = T tzm mod q.
Maintenant, calculez la signature E l G a m a l standard de m'. Choisissez un nombre
alatoire R infrieur (p 1) et premier par rapport p 1. Ensuite calculez r =
gR mod p et utilisez lalgorithme d EuCLlDE tendu pour calculer s tel que :
m ' = (rx + Rs)

(mod q).

La signature est constitue de la signature E l G a m a l (r,s) et de T.


Voici comment Alice vrifie la signature de Bernard :
1 Bernard engendre deux nombres alatoires a et b. Il calcule c = T Tmagb mod p
et envoie le rsultat Alice.
2

Alice engendre un nombre alatoire k et calcule hi = cgk mod p et h-2 = h\ mod


p puis les envoie tous deux Bernard.

3 Bernard envoie a et b Alice.


4 Alice vrifie que c = T Tmagh mod p. Elle envoie k Bernard.

5 Bernard vrifie que h\ = T Jrnagb 1k mod p et que h2 = yrarsauh+k mod p.


Alice peut convertir toutes ses signatures incontestables en signatures normales, en
publiant z. Maintenant tout le monde peut vrifier sa signature sans son aide.
Les schmas de signature incontestable combins avec les schmas de partage de secret
permettent de crer des s i g n a t u r e s i n c o n t e s t a b l e s c o n v e r t i b l e s r p a r t i e s [1245].
Une personne peut signer des messages et ensuite rpartir la capacit de vrifier si
la signature est valide. Elle peut, par exemple, rendre ncessaire la coopration de
trois personnes parmi cinq pour convaincre Bernard que la signature est valide. Des
amliorations de cette notion permettent de se passer de la participation dune autorit
de confiance [701, 1371],

23.5

Signatures numriques vrificateur


ddi

Voici comment il est possible quAlice signe un message et Bernard le vrifie, de sorte
que Christine puisse prouver plus tard David la validit de 1a, signature d Alice (voir
4.4) [337].

Chapitre 23

568

Algorithmes spciaux pour protocoles

Tout dabord, un grand nombre premier p et un lment primitif g sont rendus publics
et utiliss par un groupe dutilisateurs. Le produit n de deux nombres premiers est aussi
rendu public. Christine possde une clef prive z et une clef publique h = gx mod p.
Dans le protocole qui suit, Alice peut signer A4 en convaincant Bernard de la validit
de celle-ci, mais sans quil puisse lui-mme convaincre une troisime personne de ce
fait.
1 Alice choisit un nombre alatoire x et calcule :
a = g mod p
b = hx mod p.
Elle calcule lempreinte H {Ai) de
calcule alors:

Ai et celle de a et b juxtaposs, H{a,b). Elle

j = {H ( Ai) H (o , 6 ) ) 1 / 3 mod n,
et envoie a, b et j Bernard.

2 Bernard choisit deux nombres alatoires s et t infrieurs p et envoie Alice :


c = gshf mod p.

3 Alice choisit un nombre alatoire q infrieur p et envoie Bernard :


d = gq mod p
e = (cd)x mod p.

4 Bernard envoie s et t Alice.


5 Alice vrifie si
gshl = c

(mod p),

et envoie q Bernard.
6

Bernard vrifie si
d ~ g q (mod p)
e /a 9 = asbt (mod p)
H { Ai) H(a,b) = j 1 / 3

(mod n).

Si les trois quivalences sont vraies, il est convaincu de lauthenticit de la


signature.

Bernard ne pourra pas convaincre David de lauthenticit de la signature dAlice avec


une transcription de la preuve ci-dessus; mais David peut mener un protocole avec
Christine, le vrificateur ddi dAlice. Voici comment Christine convaint David de la
validit de la signature constitue de a et b :
1 David choisit deux nombres alatoires u et v infrieurs p et envoie
Christine :

k guav m od p.

23.6

569

Calcul avec donnes chiffres


2 Christine choisit un nombre alatoire w infrieur p et envoie David :
l gw mod p
y - ( kl)z m od p.

3 David envoie u et v Christine.


4 Christine vrifie si

(mod p).

guav = k

Elle envoie ensuite w David.

5 David vrifie si
gw = 1

(mod p) y /h w = hubv

(mod p).

Si les deux quivalences sont vraies, il est convaincu de Vauthenticit de la


signature.

Dans un autre protocole, Christine peut convertir le protocole de signature vrifica


teur ddi en un protocole de signature numrique conventionnel. Consultez [337] pour
les dtails.

23.6

Calcul avec donnes chiffres

Le problme du logarithme discret


Il y a un grand nombre premier p et un gnrateur g. Alice dispose d une valeur
particulire pour x et veut connatre e tel que :
ge = x

(mod p).

Ceci est normalement un problme difficile et Alice n a pas la puissance de calcul n


cessaire pour trouver le rsultat. Bernard dispose de la puissance de calcul ncessaire
disons quil travaille pour le gouvernement, par exemple, ou dans une grande or
ganisation informatique. Voici comment Alice peut lui laisser faire les calculs sans lui
rvler x [549, 8 ] :
1 Alice choisit un nombre alatoire r infrieur p.
2

Elle calcule:
x' = xgr mod p.

3 Elle demande Bernard de rsoudre :


ge = x'

(mod p).

4 Bernard calcule e1 et lenvoie Alice.


5 Alice retrouve e en calculant:
e = (e1 r) mod (p 1 ).

Il existe des protocoles similaires pour le problme des rsidus quadratiques et pour le
problme des racines primitives [7, 8 ]. (Voyez aussi 4.8.)

Chapitre 23

570

23.7

Algorithmes spciaux pour protocoles

Pile ou face quitable

Le protocole suivant permet Alice et Bernard de jouer pile ou face via un rseau de
communication (voir 4.9) [201]. C est un exemple du lancement d une pice dans un
puits (voir 4.10). En premier lieu, seul Bernard connat le rsultat du lancer et il le
dit Alice. Plus tard, Alice peut vrifier que Bernard lui a indiqu une valeur correcte
du rsultat du lancer.

Pile ou face laide de racines carres


Sous-protocole de tirage pile ou face :

1 Alice choisit deux grands nombres premiers p et q et envoie leur produit n


Bernard.

2 Bernard choisit un nombre entier positif alatoire r infrieur ou gal n/2,


puis calcule:
z = r 2 mod n
et envoie z Alice.

3 Alice calcule les quatre racines carres de z modulo n. Elle peut le faire parce
quelle connat la factorisation de n. Appelons les + x , x , + y et y. Appelons
x' le plus petit des deux nombres :
x mod n
x m od n.

De mme, appelons y' le plus petit des deux nombres :


y mod n
y mod n.

Remarquez que r est soit gal x' soit y1.

4 Alice parie sur r x' ou r = y' et envoie son pari Bernard.


5 Si le pari dAlice est correct, le rsultat du lancer est face , si son pari est
faux, le rsultat du lancer est pile . Bernard annonce le rsultat du lancer.
Sous-protocole de vrification :
6

Bernard envoie r Alice.

Alice na aucun moyen de connatre r et son pari est rel. ltape 4, elle ne donne
Bernard que 1 bit de son pari (un bit o x' et y' diffrent) pour viter quil nait la
fois x' et y'. Si Bernard avait les deux nombres, il pourrait changer r aprs ltape 4.

23.7

571

Pile ou face quitable

Pile ou face laide de lexponentiation modulo p


Lexponentiation modulo un nombre premier p est utilise comme fonction sens
unique dans le protocole suivant [1317].
Sous-protocole de tirage pile ou face :
1 Alice choisit un nombre premier p de telle manire que la factorisation de p 1
soit connue et contienne au moins un grand nombre premier.

2 Bernard choisit deux lments primitifs h et t dans Z /p . Il les envoie Alice.


3 Alice vrifie que h et t sont primitifs et choisit un nombre alatoire x premier
par rapport p 1. Elle calcule ensuite lune des deux valeurs :
y = hx m od p

ou

y tx mod p.

Elle envoie y Bernard.


4 Bernard parie si y est une fonction de h ou de t et envoie son pari Alice.
5 Si le pari de Bernard est correct, le rsultat du lancer est face . Si le pari

de Bernard est faux, le rsultat du lancer est pile . Alice annonce le rsultat
du lancer.

Sous-protocole de vrification :
6

Alice rvle x Bernard qui calcule hx mod p et tx mod p la fois pour vrifier
qu 'Alice a jou honntement et pour vrifier le rsultat du lancer. Il vrifie aussi
que x et p 1 sont premier entre eux.

Pour tricher, Alice doit trouver deux entiers x et x' tels que hx = tx'
connaissait de telles valeurs, elle pourrait calculer :
logt h x 'x ^ 1 mod (p 1 )

et

log^ t = xx

(mod p). Si elle

Ce sont des problmes difficiles.


Alice serait capable de faire cela si elle connaissait logt h mais cest Bernard qui a choisi
h et t h ltape 2. Alice na pas d autre recours que d essayer de calculer le logarithme
discret. Alice pourrait aussi tenter de tricher en choisissant un x qui ne soit pas premier
par rapport p 1 mais Bernard le dtecterait ltape 6 .
Bernard peut tricher si h et t ne sont pas primitifs dans Z /p mais Alice peut facilement
le vrifier aprs ltape 2 , car elle connat la factorisation en nombres premiers de p 1 .
Lavantage de ce protocole est que si Alice et Bernard veulent jouer plusieurs fois pile
ou face, ils peuvent utiliser les mmes valeurs de p, h et t. Alice doit juste engendrer
un nouvel x et le protocole continue partir de ltape 3.

Pile ou face laide dentiers de B lum


Les entiers de B l u m peuvent tre utiliss pour un protocole de tirage pile ou face :
1 Alice engendre un entier de B lu m n, un nombre alatoire x premier par rapport
n , x o = x 2 mod n et x i = x 2 mod n. Elle envoie n et x\ Bernard.
2 Bernard parie sur la parit de

xq.

572

Chapitre 23

Algorithmes spciaux pour protocoles

3 Alice envoie x et xq Bernard.

4 Bernard vrifie que n est bien un entier de B l u m 1, et il vrifie que xq =

x 2 mod n et que X\ = x\ mod n. Si toutes les vrifications sont correctes et si


son pari est correct, Bernard gagne le jeu.

Il est crucial que n soit un entier de B l u m . Sinon, Alice pourrait trouver un x'q tel
que x'o 2 mod n xq2 mod n = aq, o x'q est galement un rsidu quadratique. Si Xq
tait pair et x '0 impair (ou vice versa), Alice pourrait tricher librement.

23.8 Accumulateurs sens unique


Il existe une fonctin d accumulateur sens unique simple (voir 4.12) [126] :
A(xi,y) = z f - i mod n

o n est le produit de deux nombres premiers.


Les nombres n et o doivent tre choisis lavance dun commun accord.
Laccumulation de y \, ?/2 et jfy est alors donne par :
((xq 1 mod n )V2 mod n)ya m od n
Ce calcul dpend de lordre de j/i, ?y2 et 2/3 .

23.9

Divulgation tout ou rien de secrets

Ce protocole permet plusieurs participants (deux participants au moins sont nces


saires pour que le protocole marche) d acheter des secrets individuels un seul et mme
vendeur (voir 4.13) [1376, 1181]. Tout d abord, voici la dfinition. Prenez deux chanes
de bits x et y. L i n d e x d e b i t s i d e n t i q u e s (abrg IBI) de a: et y est compos des
indices i de bits tels que le ie bit de x soit gal au ie bit de y.
Par exemple :
x = 110101001011
y = 101010000110

IBI(a;,t/) = { 1 ,4 ,5 ,1 1 }. (Nous lisons les bits de droite gauche avec lindice


le plus droite valant 0 .)
Voici maintenant le protocole. Alice est le vendeur. Bernard et Christine sont les ache
teurs. Alice dispose de k secrets de n bits : S i, S2, ..., S*. Bernard veut acheter le secret
Sb et Christine veut acheter le secret Sc.
1 Alice engendre un paire clef prive-clef publique et donne la clef publique
Bernard (mais pas Christine).
Alice engendre une autre paire clef prive-clef publique et donne la clef
publique Christine (mais pas Bernard).
1.
A lice doit donner Bernard les facteurs d e n ou excuter un p rotocole divulgation nulle pou r
le convaincre qu il s agit bien d un entier de B lu m .

23.9

Divulgation tout ou rien de secrets

573

2 Bernard engendre k nombres alatoires de n bits, B i, D2, ..., B k et les com


munique Christine.
Christine engendre k nombres alatoires de n bits, Ci, C 2 , , Ck et les com
munique Bernard.

3 Bernard chiffre Cb (rappelez-vous que Sb est le secret quil veut acheter) avec
la clef publique dAlice. Il calcule ZTBI de Cb et du rsultat du chiffrement quil
vient juste d effectuer. Il envoie cet IBI Christine.
Christine chiffre B c (rappelez-vous que Sc est le secret quelle veut acheter) avec
la clef publique dAlice. Elle calcule /TB [ de B c et du rsultat du chiffrement
quelle vient juste deffectuer. Elle envoie cet IBI Bernard.

4 Bernard prend chacun des nombres de n bits B lr B 2, ..., Bk et remplace chaque


bit qui nest pas dans ZTBI quil a reu de Christine par son complment. Il
envoie Alice cette nouvelle liste de nombres de n bits B \ , B ' 2 , , B'kChristine prend chacun des nombres den bits C i, C2, ..., Ck et remplace chaque
bit qui nest pas dans ZTBI quelle a reu de Bernard par son complment. Elle
envoie Alice cette nouvelle liste de nombres de n bits C 'i, C ' 2 ,
C'k-

5 Alice dchiffre tous les C'i avec sa clef prive associe la clef publique quelle
a donne Bernard, ce qui lui donne k nombres de n bits: C " C " 2, ..., C"kElle calcule Si C "i pour i = 1 k et envoie les rsultats Bernard.
Alice dchiffre tous les B'i avec sa clef prive associe la clef publique quelle
a donne Christine, ce qui lui donne k nombres de n bits: B " 1 , B " 2 ,
B " k Elle calcule Si B "i pour i 1 fc et envoie les rsultats Christine.

6 Bernard calcule Sb en combinant par ou exclusif Cb avec le be nombre quil a


reu dAlice.
Christine calcule Sc en combinant par ou exclusif B c avec le ce nombre quelle
a reu dAlice.

Cest assez compliqu. Un exemple va clarifier tout a.


Alice a les 8 secrets suivants de 12 bits : Si = 1990, S2 = 471, S 3 = 3860, S 4 = 1487,
S5 2235, S 6 = 3751, S 7 = 2546 et S8 = 4043. Bernard veut acheter S 7 et Christine
veut acheter S2.
1 Alice utilise lalgorithme R SA .
La paire de clefs quelle va utiliser avec Bernard est n = 7387, e = 5145 et
d = 777.
La paire de clefs quelle va utiliser avec Christine est n = 2747, e = 1421 et
d = 2261. Elle donne Bernard et Christine leur clef publique respective.

2 Bernard engendre 8 nombres alatoires de 12 bits: Bi = 743, B2 = 1988,


3 = 4001, S 4 = 2942, 5 = 3421, 6 = 2210, 7 = 2306 et 8 = 222 'et les
communique Christine.
Christine engendre 8 nombres alatoires de 12 bits: Ci 1708, C 2 = 711,
C 3 = 1969, C4 = 3112, C 5 = 4014, C 6 = 2308, C 7 = 2212 et C 8 = 222 et les
communique Bernard.

Chapitre 23

Algorithmes spciaux pour protocoles

3 Bernard veut acheter S 7 et donc il chiffre C 7 avec la clef publique quAlice lui
a donne:

22125145 m o d 7387 = 5928.


Maintenant :

2212 = OIOOOIOIOOIOO
5928 = 1011100101000.
Et donc /I B I de ces deux nombres est {0,1,4,5,6}. E lenvoie Christine.
Christine veut acheter S2 , donc elle chiffre B 2 avec la clef publique quAlice
lui a donne et calcule l IB I de B 2 avec le rsultat du chiffrement. Elle envoie
{0,1, 2,6,9,10} Bernard.

4 Bernard prend B\, B2, ..., Bg et remplace chaque bit dont lindice nest pas
dans {0,1,2,6,9,10} par son complment. Par exemple :
B 2 = 111111000100 = 1988
B '2 = 011001111100 = 1660.
E envoie B \ , B '2, ..., B'g Alice.
Christine prend C i, C2, ..., Cg et remplace chaque bit dont lindice nest pas
dans {0,1,4,5,6} par son complment. Par exemple:
C 7 = OIOOOIOIOOIOO = 2212
C '7 = 1011100101000 = 5928.
Elle envoie C \ , C '2, ..., C'g Alice.

5 Alice dchiffre tous les C \ avec la clef prive associe Bernard et combine les
rsultats par ou exclusif avec les S ,. Par exemple pour i = 7 :
5928777 m o d 7387 = 2212

; 2546 2212 = 342.

Elle envoie le rsultat Bernard.


Alice dchiffre tous les B'i avec la clef prive associe Christine et combine
les rsultats par ou exclusif avec les S ,. Par exemple pour i = 2 :

16602261 m o d 2747 = 1988

; 471 1988 = 1555.

Elle envoie le rsultat Christine.

6 Bernard calcule S7 en combinant par ou exclusif C 7 et le I e nombre quil a


reu dAlice:

2212 342 = 2546.


Christine calcule S 2 en combinant par ou exclusif B 2 et le 2e nombre quelle
a reu dAlice:

1988 1555 = 471.

23.10

Cryptosystmes quitables et sret intgre

575

Ce protocole marche pour nimporte quel nombre d acheteurs. Si Bernard, Christine et


David veulent acheter des secrets, Alice donne chaque acheteur deux clefs publiques,
une pour chacun des deux autres. Chaque acheteur reoit un ensemble de nombres
de la part de chaque autre acheteur. Ensuite, ils terminent le protocole avec Alice
pour chacun de leurs ensembles de nombres et ils combinent par ou exclusif tous les
rsultats fournis par Alice pour reconstruire leur secret. Plus de dtails sont donns
dans [1376, 1181].
Malheureusement, un couple de participants malhonntes peut tricher. Alice et
Christine, en salliant, peuvent facilement deviner le secret que Bernard est en train
dacheter: si elles connaissent lIBI de Cb et lalgorithme de chiffrement de Bernard,
elles peuvent trouver le b produisant le bon IBI. De plus, Bernard et Christine, en
travaillant ensemble, peuvent facilement tous les secrets d Alice.
Si vous supposez les participants honntes, voici un protocole plus facile [393] :
1 Alice chiffre tous les secrets avec R S A et les envoie Bernard:
Ci Sf mod n.

2 Bernard choisit son secret Cb, tire un nombre alatoire, et envoie Alice :
C Cbre mod n.

3 Alice envoie Bernard:


AA' C'd mod n.

4 Bernard calcule:
Sb = A4V-1 inod n.

Si les participants risquent dtre malhonntes, Bernard peut faire une preuve divul
gation de sa connaissance d un nombre r tel que C' Cbre mod n et garder b secret
jusqu ce quAlice lui donne AA' ltape 3 [249].

23.10

Cryptosystmes quitables et s
ret intgre

Diffie-Hellman quitable
Les cryptosystmes quitables permet de raliser le dpt de clefs en logiciel (voir
4.14). Cet exemple est d Silvio M i c a l i [1091, 1090]. Il est brevet [1092, 1093].
Dans le schma de base D i f f i e - H e l l m a n , un groupe d utilisateurs partage un nombre
premier p et un gnrateur g. La clef prive d Alice est s et sa clef publique est t
gs mod p.
Voici comment rendre D i f f i e - H e l l m a n quitable (cet exemple utilise 5 dpositaires) :
1 Alice choisit 5 nombres entiers S\, S2 , 3 ,

et .se, chacun infrieur p. La

clef prive dAlice est donne par :

s = (si + s2 + s3 + 54 + Sb) m od p

Chapitre 23

576

Algorithmes spciaux pour protocoles

et sa clef publique est:


t = gs mod p.
Alice calcule galement:

t, = g s* mod p pour i = 1 5.
Les parts publiques dAlice sont les tt et les parts prives sont les s,.

2 Alice envoie une part prive et la part publique correspondante chaque dpo
sitaire. Par exemple, elle envoie Si et t\ au dpositaire n 1. Elle envoie t au
CDC.
3 Chaque dpositaire vrifie que:
U = gSx mod p.
Si tel est le cas, le dpositaire signe tt et envoie le rsultat au C D C . Le dpo
sitaire stocke st dans un endroit sr.

4 Aprs avoir reu les 5 parts publiques, le C D C vrifie que :


t = (ti x t2 x t3 x t4 x t5) mod p.
Si tel est le cas, le C D C approuve la clef publique.

ce point, le C D C sait que chaque dpositaire a une part valide et quils peuvent
reconstruire la clef prive si ncessaire. Toutefois, ni le C D C , ni quatre des cinq dpo
sitaires, travaillant ensemble, ne peuvent reconstruire la clef prive d Alice.
L article de M icali [1091, 1090] contient galement une procdure pour rendre le R S A
quitable et pour combiner un schma seuil avec un cryptosystme quitable, tel que
m dpositaires parmi n peuvent reconstruire la clef prive.

Diffie-Hellman sret intgre


Tout comme dans le protocole prcdent, un groupe d utilisateurs partage un nombre
premier p et un gnrateur g. La clef prive dAlice est s, sa clef publique est t =
gs mod p.
1 Le C D C choisit un nombre alatoire B entre 0 etp 2, et le met en gage selon
un protocole de mise en gage (voir 4-9).
2 Alice choisit un nombre alatoire A entre 0 et p 2. Elle envoie gA mod p au
CDC.
3 Alice partage A entre les dpositaires en utilisant un schma de secret rparti
vrifiable (voir 3.7).
4 Le C D C rvle B Alice.
5 Alice vrifie la mise en gage de ltape

1 . Elle prend alors pour clef publique :

t = gAgB mod p,
et pour clef prive :

s = (A + B) m od (p 1).

2S.11

Preuves divulgation nulle

577

Les dpositaires peuvent reconstruire A. Comme le C D C connat B , cest assez pour


reconstruire s. De plus, Alice ne peut se servir daucun canal subliminal pour envoyer
des informations non autorises. Ce protocole, qui est dcrit dans [957, 834], est en
cours de brevetage.

23.11

Preuves divulgation nulle

Preuve divulgation nulle de logarithmes discrets


Patricia veut prouver Victor quelle connat un x qui satisfait :
Ax = B

(mod p)

o p est un nombre premier et x est premier par rapport p 1. Les nombres A, B et


p sont publics, et x est secret. Voici comment Patricia peut prouver quelle connat x
sans le rvler (voir 5.1) [343, 342] :
1 Patricia engendre t nombres alatoires r i ,r 2 , ..., rt o tous les r, sont infrieurs
p 1 .
2 Patricia calcule hi = Ar mod p pour toutes les valeurs de i et envoie ceux-ci
Victor.
3 Patricia et Victor excutent un protocole de jeu pile ou face pour engendrer
t bits : bi , 6 2 ,..., ht4 Pour tous les t bits, Patricia excute l une des actions :
a . si bi =

0, Patricia envoie ri Victor ;

h. si bi = 1, Patricia envoie Victor Si


plus petite valeur telle que bj 1.

(r*

rf) mod (p 1),

5 Pour tous les t bits, Victor vrifie lune des deux relations:

a. si bi 0, il vrifie que A r' = hi

(mod p) ;

b .si bi = 1, il vrifie que A 3* = h^hj1

(mod p).

6 Patricia envoie Z Victor, o :


Z = (x rj) mod (p 1).

7 Victor vrifie que :


A z = BhJ 1

(mod p).

La probabilit que Patricia puisse tricher est de 2 ~l.

o j est la

Chapitre 23

578

Algorithmes spciaux pour protocoles

Preuve divulgation nulle de la capacit casser le RSA


Alice connat la clef prive de Christine. Peut-tre a-t-elle cass le R S A ; peut-tre
a-t-elle pntr par effraction dans la maison de Christine pour voler la clef. Alice veut
convaincre Bernard quelle connat la clef de Christine. Toutefois, elle ne veut pas dire
Bernard la valeur de cette clef, ni mme dchiffrer un des messages de Christine
pour Bernard. Voici un protocole de preuve divulgation nulle par lequel Alice peut
convaincre Bernard quelle connat la clef prive de Christine [888].
La clef publique de Christine est e. Sa clef prive est d. Le module R SA est n.
1 Alice et Bernard se mettent daccord sur une paire alatoire k et m telle que:
km = e

(mod n).

Il doivent choisir les nombres alatoirement, en utilisant un protocole de jeu


pile ou face pour engendrer k et ensuite calculer m. Si k et m sont tous deux
plus grands que 3, le protocole continue. Sinon, il faut faire un nouveau choix.

2 Alice et Bernard engendrent un texte chiffr alatoire C. Une fois de plus ils
doivent utiliser un protocole de jeu pile ou face.

3 Alice, en utilisant la clef prive de Christine, calcule :


A i Cd mod n.
Ensuite elle calcule:
X = Adk mod n
et envoie X Bernard.

4 Bernard vrifie que X rn mod n C. Si tel est le cas, il croit Alice.


Un protocole similaire peut tre utilis pour dmontrer la capacit casser le problme
du logarithme discret [502].

Preuve divulgation nulle que n est un entier de B l u m


Il nexiste aucune preuve divulgation nulle vraiment pratique de n = pq avec p et q
premiers et congrus 3 modulo 4. Mais si vous tolrez que n soit de la forme pTqs, o
r et s sont impairs, alors les proprits qui rendent les entiers de B l u m intressants
en cryptographie tiennent toujours, et il existe une preuve divulgation que n est de
cette forme.
Supposez quAlice connaisse la factorisation dun tel entier n. Voici comment ellepeut
prouver Bernard que n est de cette forme [1561].
1 Alice envoie Bernard un nombre dont le symbole de Jacobi vaut 1 modulo n.
2 Alice et Bernard se mettent daccord sur des bits alatoires: b\J>2 , . . . ,bk3 Ah et Bernard se mettent daccord sur des nombres alatoires: Xi,X2 , ,Xk4 Pour tout i entre 1 et k, Alice envoie Bernard la racine carre modulo n dun
des quatres nombres suivants: x t, Xi, uxi, uxi. Le symbole de Jacobi de la
racine carre doit valoir bi.

Alice a une chance sur 2fe de russir tricher.

23.12

579

Signatures en aveugle

23.12

Signatures en aveugle

La notion de signatures en aveugle (voir 5.3) a t invente par David C h a u m [322]


qui a galement invent leur premire ralisation [322]. Il utilise lalgorithme R SA .
Bernard a une clef publique e, une clef prive d et un module public n. Alice veut que
Bernard signe un message m en aveugle.
1 Alice choisit une valeur alatoire k comprise entre 1 et n. Ensuite elle camoufle
m en calculant:
t = mke mod n.

2 Bernard signe t :
td -- (mke)d mod n.
3 Alice retire le facteur de camouflage de td en calculant :
s = td/k mod n.

4 Et le rsultat est:
s = m d mod n.
Cela peut tre aisment montr grce :
td = ( mke)d = m dk {mod n), et donc = m d x ~ md
k
k

(m od n).

C h a u m a invent une fam ille d algorithm es de signatures en aveugle plus com pliqus
dans

[326, 325]. Ces signatures sont plus com pliques construire, m ais elles sont plus

malables.

23.13

Transfert inconscient

Dans ce protocole, d R a b i n [1298], Alice a 50 % de chances denvoyer Bernard


deux nombres premiers p et q. Alice ne saura pas si le transfert a russi ou non (voir
5 .5 ) 2.

1 Alice envoie Bernard le produit des deux nombres premiers : n = pq.


2 Bernard choisit un nombre alatoire x infrieur n tel que x soit premier par
rapport n. Il envoie Alice :
a = x 2 m o d n.

3 Alice qui connat p et q, calcule les quatre racines de a : x, n x, y et n y.


Elle choisit lune de ces racines alatoirement et lenvoie Bernard.

4 Si Bernard reoit y ou n y, il peut calculer le plus grand commun diviseur de


x + y et n qui est soit p soit q. Ensuite, bien sr n /p = q .
Si Bernard reoit x ou n x , il ne peut rien calculer.
2.
Ce protocole peut servir envoyer avec 50
une clef prive RSA.

% de chances nimporte quel message, si p et q rvlent

Chapitre 23

580

Algorithmes spciaux pour protocoles

Ce protocole prsente ventuellement une faiblesse : il se peut que Bernard puisse cal
culer un nombre a tel quune racine carre de a permette de factoriser n dans tous les
cas.

23.14

Calcul rparti sr

Le protocole suivant est dcrit dans [1375]. Alice connat un entier i ; Bernard connat
lentier j . Alice et Bernard, ensemble, veulent savoir si i < j ou si i > j , mais ni Alice
ni Bernard ne veulent rvler leur entier lautre. Ce cas spcial de calcul rparti sr
(voir 6.2) est parfois connu sous le nom de p ro b l m e d u m illionnaire d e Y ao
[1629],
Pour cet exemple, faites lhypothse que i et j sont compris dans lintervalle de 1
100. Bernard a une clef publique et une clef prive.
1 Alice choisit un grand nombre alatoire x et le chiffre avec la clef publique de
Bernard :
c

{x

).

2 Alice calcule c i et envoie le rsultat Bernard.


3 Bernard calcule les 100 nombres suivants:
Vu D b (c i + u), pour 1 < u < 100.
D b est lalgorithme de dchiffrement avec la clef prive de Bernard.
Il choisit un grand nombre premier3 p. Il calcule ensuite les 100 nombres sui
vants :
zu = (yu mod p), pour 1 < u < 100.
Il vrifie ensuite que pour tout u / v :

I zu

zv | ^ 2

et pour tout u :

0 < zu < p - 1.
Si ce nest pas vrai, Bernard choisit un autre nombre premier et essaie nou
veau.

4 Bernard envoie Alice la suite de nombres dans lordre exact suivant:


Zi, Z2 ,

Zj,Zj+1 + 1, Zj+ 2 + 1, .-.,ZlOO + l ,p

5 Alice vrifie si le i e nombre de la suite est congru x modulo p. Si tel est le


cas, elle conclut que i < j , sinon elle conclut que i > j .

6 Alice indique sa conclusion Bernard.


3.
La taille de p doit tre un petit peu plus petite que celle de
Alice peut facilement lui indiquer sa taille.

x. Bernard ne connat pas x mais

23.14

581

Calcul rparti sr

Toutes les vrifications que Bernard doit effectuer ltape 3 servent garantir quau
cun nombre napparaisse deux fois dans la suite engendre ltape 4. Sinon, si za = Zb,
Alice saurait que a < j < b .
Le dfaut de ce protocole est quAlice apprend le rsultat du calcul avant que Bernard
ne lapprenne. Rien ne lempche de complter le protocole jusqu ltape 5 et densuite
refuser de dire le rsultat Bernard ltape 6. Elle peut mme mentir Bernard
ltape 6.

Exemple du protocole
Faites lhypothse que le R SA est lalgorithme clef publique utilis. La clef publique
de Bernard est 7 et sa clef prive est 23 ; n = 55. La valeur secrte i d Alice vaut 4 ; la
valeur secrte j de Bernard4 vaut 2.
39et c

E B(3 9)= 19.

Alice choisit x

Alice calcule r i = 19 4 = 15.Elle envoie 15 Bernard.

3 Bernard calcule les 4 nombres suivants :


tn = D b { 15 +
jb = >s(15 +
y3 = s (15 +
y4 = D B(15 +

1)
2)
3)
4)

=
=
=
=

26
18
2
39.

Il choisit un grand p = 31 et calcule :


zi
z2
Z3
Z4

= 26 mod 31 = 26
= 18 mod 31 = 18
= 2 mod 31 = 2
= 39 mod 31 8.

Il fait toutes les vrifications et confirme que la suite est correcte.

4 Bernard envoie Alice la suite de nombres suivante dans lordre exact:


26,18,2 + 1,8 +- 1,31 = 26,18,3,9,31.
5 Alice vrifie si le 4e nombre de la suite est congru x modulo p Comme 9 ^ 39
(mod 31), alors i > j .
6 Alice indique le rsultat Bernard.
Ce protocole peut servir construire des protocoles bien plus compliqus. Un groupe
de gens peut effectuer une vente aux enchres secrte sur un rseau dordinateurs. Ils
instaurent un anneau logique entre eux, et dterminent grce des comparaisons deux
deux celui qui offre le plus haut prix. Pour empcher les gens de changer leur offre
au milieu des enchres, une sorte de protocole de mise en gage peut tre utilise. Sil
sagit denchres au rabais, celui qui a fait la meilleure offre remporte lobjet pour ce
prix. Sil sagit d enchres langlaise, alors il remporte lobjet pour le deuxime prix
le plus lv5. Des ides similaires sappliquent aux marchandages, aux ngociations
et larbitrage.
4. Faites l hypothse que seules les valeurs 1, 2, 3 et 4 sont possibles pou r i et j .
5. C eci peut tre dterminer par une seconde ronde de com paraisons deux deux.

582

Chapitre 23

23.15

Algorithmes spciaux pour protocoles

Chiffrement probabiliste

La notion de c h if f r e m e n t p r o b a b i lis t e a t invente par Shafi G o l d w a s s e r et Silvio


MlCALi [626]. Bien que la thorie fasse de ce cryptosystme le plus sr que lon ait
invent, sa premire ralisation ntait pas pratique [627]. La plupart des ralisations
rcentes ont chang cela.
Lobjet du chiffrement probabiliste est d liminer la dernire petite fuite dinformation
qui peut se produire grce la cryptographie clef publique. Comme les cryptanalystes
peuvent toujours chiffrer des messages alatoires avec la clef publique, ils peuvent
obtenir de linformation. En faisant lhypothse quils ont le texte chiffr C = E k (.M)
et quils essaient de retrouver le texte en clair A4, ils peuvent choisir un message au
hasard A4', le chiffrer: C' E k (AA'). Si C = C, alors ils ont devin le bon texte en
clair. Si lgalit nest pas vrifie, ils nont qu parier nouveau.
De plus, il ny a pas d information partielle concernant le message original qui transpire.
Avec la cryptographie clef publique, les cryptanalystes peuvent parfois apprendre
certaines choses concernant les bits : le ou exclusif des bits 5, 17 et 39 est 1 , etc.
Avec le chiffrement probabiliste, mme ce type d information demeure cach.
Cela napporte pas beaucoup d information, mais il y a des problmes potentiels per
mettre aux cryptanalystes de chiffrer des messages alatoires avec votre clef publique.
Quelques informations peuvent fuir vers les cryptanalystes chaque fois quils chiffrent
un message. Personne ne sait vraiment combien.
Le chiffrement probabiliste essaie d liminer cette fuite dinformation. Le but est quau
cun calcul sur le texte chiffr ou quaucun autre texte en clair dessai, ne donne au
cryptanalyste la moindre information concernant le texte en clair correspondant.
Dans le cadre du chiffrement probabiliste, lalgorithme de chiffrement est probabiliste
plutt que dterministe. En dautres termes, il existe un grand nombre de textes chiffrs
qui correspondent un texte en clair donn, et ce texte chiffr particulier utilis dans
nimporte quel chiffrement est choisi alatoirement. Tous ces textes chiffrs donnent au
dchiffrement le mme texte en clair.
Ci

= E k (A 4 ),C 2 = E k(A 4),C s = E j i ( A 4 ) , ..., C t - Ek{A 4)

A4 = D k (Ci ) , M = D k {C2), A4 = D K (C3), ...,M = D K (Ct)

Avec le chiffrement probabiliste, les cryptanalystes ne peuvent plus chiffrer des textes
en clair alatoires pour trouver le bon. Pour illustrer, faites lhypothse que les crypta
nalystes ont le texte chiffr Ct = E k (AA). Mme sils devinent A4 correctement, quand
ils calculent E k (A4), le rsultat sera un C compltement diffrent: C3. Ils ne peuvent
pas comparer Ct et Cj donc ils ne peuvent pas savoir sils ont devin correctement le
texte en clair.
Cest quelque chose d tonnamment sduisant. Mme si les cryptanalystes ont la fois
la clef publique de chiffrement, le texte en clair et le texte chiffr, ils ne peuvent pas
prouver que le texte chiffr est bien le chiffrement du texte en clair sans disposer de
la clef prive de dchiffrement. Mme sils essaient une recherche exhaustive, ils ne
peuvent que prouver que tout texte en clair concevable est un texte en clair possible.
En utilisant ce type de schma, le texte chiffr sera toujours plus long que le texte en
clair. Vous ne pouvez pas lviter ; c est le rsultat du fait que plusieurs textes chiffrs
correspondent un seul et mme texte en clair. Le premier schma de chiffrement

23.15

Chiffrement probabiliste

583

probabiliste [627] donnait un texte chiffr tellement plus long que le texte en clair quil
ntait pas utilisable en pratique.
Toutefois, il existe une ralisation efficace du chiffrement probabiliste due Manuel
B l u m et Shaf G o l d w a s s e r , utilisant le gnrateur de bits alatoires B l u m B l u m
S h u b (B B S) dcrit dans le paragraphe 17.9 [205].
Le gnrateur BBS est bas sur la thorie des rsidus quadratiques. En termes simples,
il y a deux nombres premiers p et q qui sont congrus 3 modulo 4. C est la clef prive.
Leur produit p x q = n constitue la clef publique6.
Pour chiffrer un message A i, choisissez dabord un x alatoire, premier par rapport
n. Ensuite calculez :
xo = x 2 mod n.
Utilisez xo comme germe pour le gnrateur pseudo-alatoire de bits BBS et combinez
Ai par ou exclusif 1 bit la fois avec la sortie du gnrateur. Le gnrateur produit
des bits bi (le bit de poids faible de X , o X j X i _ i mod n ) , et on a :
M = A i i ,M 2 ,A i 3 ,, M t
C = A ii b i,A i 2 b2 ,A iz 83, ...,A it ffi bt
o t est la longueur du texte en clair.

Joignez la dernire valeur calcule x< la fin du message et vous avez fini.
Le seul moyen de dchiffrer le message est de retrouver x 0 et ensuite de mettre en
place le mme gnrateur BBS pour le combiner par ou exclusif avec le texte chiffr.
Comme le gnrateur BBS est sr gauche, la valeur de x t nest d aucune utilit pour
le cryptanalyste. Seul quelquun qui connat p et q peut dchiffrer le message.
Lalgorithme en C pour retrouver xo partir de x t est donn par :
/*

modexp (x , y , z ) l v e x

la puissance y modulo z .

in t xO ( i n t p , in t q , in t n , in t t ,
f
in t a, b , u, v , w, z ;

*/

in t x t)

/ * on s a it d j que p g cd (p , q) == 1 * /
(v o id )e u clid e _ e te n d u (p , q , &a, &b) ;
u = modexp ( ( p + l ) /4 , t , p - 1 ) ;
v = modexp ( ( q + l ) / 4 , t , q - 1 ) ;
w = modexp ( x t % p , u , p ) ;
z = modexp ( xt % q , v , q ) ;
retu rn (b*q*w + a*p*z) % n;
>
Une fois que vous avez Xo, le dchiffrement est facile. Mettez en place un gnrateur
BBS et combinez par ou exclusif sa sortie avec le texte chiffr.
Vous pouvez rendre ce schma encore plus rapide en utilisant tous les bits srs de
x,, pas seulement le bit de poids faible. En utilisant cette amlioration, le chiffrement
probabiliste B l u m - G o l d w a s s e r est plus rapide que le R S A et il empche la fuite de
6. Faites attention vos p et , car la scurit de ce schm a dpend de la difficult de factoriser n .

584

Chapitre 23

Algorithmes spciaux pour protocoles

toute information partielle concernant le texte en clair. Vous pouvez galement prouver
que la difficult de casser ce schma est la mme que la difficult de factoriser n.
Cependant, ce schma n est pas sr du tout contre une attaque texte chiffr choisi.
A partir du bit le moins significatif des bons rsidus quadratiques, il est possible de
calculer la racine carre de nimporte quel rsidu quadratique. Si vous le pouvez, alors
vous pouvez factoriser. Pour les dtails consultez [1572, 1573, 36, 37].

23.16

Cryptographie quantique

La cryptographie quantique prend sa source lincertitude naturelle du monde quan


tique. Grce elle, vous pouvez crer des canaux de communication quil est impossible
d espionner sans perturber la transmission. Les lois de la physique garantissent la s
curit de ce canal mme si les espions peuvent faire ce quils veulent, mme sils
disposent d une puissance de calcul illimite, mme si P = N P . Charles B e n n e t t
et Gilles B r a s s a r d ont pouss cette ide aussi loin quils ont pu, en dcrivant une
distribution de clefs quantique, le jeu pile ou face quantique, la mise en gage de bits
quantiques. Leurs travaux sont dcrits dans [138, 139, 133, 135, 134, 143, 136, 398,
144, 396, 247, 519, 142, 140, 248, 397, 400]. Le meilleur aperu de la cryptographie
quantique est donn par [141] ; [1653] est un bon survol vulgaris. Une bibliographie
complte de cryptographie quantique est donne dans [241].
Cela aurait pu rester la frontire doucement dlirante de la cryptographie, mais
B e n n e t t et B r a s s a r d lont srieusement dvelopp et ils ont construit un prototype
qui fonctionne [137, 131, 132], Maintenant, nous avons la cryptographie quantique
exprimentale.

Asseyez-vous, prenez quelque chose boire et dtendez-vous. Je vais vous expliquer de


quoi il sagit.
D aprs la mcanique quantique, les particules ne sont pas localises. Elles sont en
plusieurs endroits la fois avec des probabilits dtre en ces diffrents endroits si
quelquun les cherche. Toutefois, ce n est pas avant que le scientifique arrive et quil
mesure la particule que celle-ci seffondre en un seul endroit. Mais vous ne pouvez
pas mesurer tous les aspects dune particule en mme temps : la position et la vitesse,
par exemple. Si vous mesurez lune de ces deux quantits, lacte mme de la mesure
dtruit toute possibilit de mesurer lautre quantit. Il y une incertitude fondamentale
dans le monde quantique, et il ny a pas moyen de lviter.
Cette incertitude peut tre utilise pour engendrer une clef secrte Les photons vibrent
pendant leur dplacement. Cette vibration a une certaine direction : de haut en bas,
de gauche droite ou, plus probablement, suivant un certain angle. La lumire solaire
normale n est pas polarise : les photons vibrent dans toutes les directions possibles.
Quand un grand groupe de photons vibrent tous dans la mme direction, ils sont p o
lariss. Les filtres polarisation ne laissent passer que les photons qui sont polariss
dans une certaine direction ; ils arrtent tout le reste. Par exemple, un filtre polarisa
tion horizontale ne laissera passer que les photons polariss horizontalement. Tournez
le filtre de 90 et seuls les photons polariss verticalement passeront.
Faisons lhypothse que vous avez une impulsion de photons polariss horizontalement.
Sils essaient de traverser un filtre polarisation horizontale, ils passent tous. Tournez
lentement ce filtre vers la position 90 ; le nombre de photons qui passent devient de
plus en plus petit, jusqu ce quil ny en ait plus un seul qui passe. C est contraire

23.16

Cryptographie quantique

585

lintuition. Vous vous attendriez ce que tourner le filtre ne serait-ce quun petit peu
bloque tous les photons, puisquils sont polariss horizontalement. Ce raisonnement
serait sens dans notre monde, mais il ne lest pas dans celui de la mcanique quantique.
Chaque particule a une probabilit de changer brusquement sa polarisation pour tre
en accord avec lorientation du filtre. Si langle est un petit peu diflrent, il y a une
bonne probabilit. Si langle est de 90, la probabilit est 0. Si langle est de 45, la
probabilit est de 50 %.
La polarisation peut tre mesure dans nimporte quelle base : deux axes angle droit.
Par exemple, la base rectiligne est compose des axes horizontal et vertical, la base
diagonale des deux diagonales. Si une impulsion de photon est polarise et si vous la
mesurez dans la mme base, vous apprenez quelle est la polarisation. Si vous la mesurez
dans une mauvaise base, vous obtenez un rsultat alatoire. Nous allons utiliser cette
proprit pour engendrer la clef secrte :
1 Alice envoie Bernard un train dimpulsions de photons polariss. Chaque im
pulsion est polarise alatoirement dans une des quatre directions : horizontale
( ~ ) , verticale ( I ), oblique gauche ( ^ ) , oblique droite ( ^ )
Par exemple, Alice envoie Bernard:
J

------- \

"

2 Bernard a un dtecteur de polarisation. Il peut positionner ce dtecteur pour


mesurer des polarisations verticales et horizontales & ) ou peut le positionner
pour mesurer des polarisations obliques ( X
/ / ne peut, pas faire les deux;
la mcanique quantique ne le laisserait pas faire. Mesurer une direction de
polarisation dtruit toute possibilit de mesurer lautre. Il positionne donc son
dtecteur alatoirement, par exemple :

x-l*'fxxx + x-f-f
partir de l, quand Bernard positionne son dtecteur correctement, il enre
gistre la bonne rponse. S il positionne son dtecteur pour mesurer une pola
risation verticale ou horizontale et que limpulsion est polarise soit horizon
talement soit verticalement, il apprendra de quelle faon Alice a polaris cette
impulsion. S il positionne mal son dtecteur, il obtiendra un rsultat alatoire.
Il ne pourra pas distinguer les cas o il a le bon rsultat de ceux pour lesquels il
obtient un rsultat alatoire. Dans cet exemple, il pourrait obtenir le rsultat :

y 1

3 Bernard indique Alice, par un canal de communication non sr, quels posi
tionnements il a utiliss.

4 Alice indique Bernard quels sont les positionnements corrects. Dans notre
exemple, le dtecteur tait correctement positionn pour les impulsions 2, 6, 7
et 9.

Chapitre 23

586

Algorithmes spciaux pour protocoles

5 Alice et Bernard gardent uniquement les valeurs de polarisations correctement


mesures. Dans notre exemple, ils gardent:

1& & & / & ~ &

En utilisant un code convenu au pralable,


de leur ct ces polarisations en bits. Par
droite pourraient reprsenter 1, et
pourraient reprsenter D. Dans le contexte

Alice et Bernard, traduisent chacun


exemple, horizontal et oblique
vertical et oblique gauche
de notre exemple, ils ont tous deux:

0 0 11.

Ainsi, Alice et Bernard ont engendr 4 bits. Ils peuvent en engendrer autant quils
veulent en utilisant ce systme. En moyenne, Bernard devinera le bon positionnement
dans 50 % des cas et Alice devra donc envoyer 2 x n photons pour engendrer n bits.
Ils peuvent utiliser ces bits comme clef secrte pour un algorithme cryptographique
conventionnel, ou bien ils peuvent se garantir une confidentialit absolue en engendrant
suffisamment de bits pour un masque jetable.
Sils utilisent ce systme, Estelle ne peut pas les espionner. Si elle essaie de dtecter les
impulsions quand elles passent, Bernard le dtectera. Son seul espoir est de capturer
et mesurer les impulsions et ensuite d essayer denvoyer des impulsions identiques
Bernard. Mais tout comme Bernard, elle doit deviner quel type de polarisation mesurer ;
et tout comme Bernard, elle se trompera en moyenne une fois sur deux. Elle ne peut
pas viter d envoyer des impulsions errones Bernard.
Si Estelle fait cela, Alice et Bernard auront des chanes de bits diffrentes. Cest pour
quoi ils terminent le protocole de la manire suivante :
6 Alice et Bernard comparent quelques bits de leurs chanes. S il y a des dis
cordances, ils savent quune oreille indiscrte pollue la ligne. S il ny a pas de
discordances, ils jettent les bits utiliss pour la comparaison et utilisent ceux
qui restent.

Il existe des amliorations de ce protocole qui permettent Alice et Bernard dutiliser


leurs bits mme si Estelle coute [143,144,199]. Ils pourraient ne comparer que la parit
de certains sous-ensembles de bits. Sil ny a aucune discordance, ils nont besoin de jeter
quun bit par sous-ensemble. Cela permet de dtecter les coutes avec une prababilit
de 50 % seulement, mais sils le font avec n sous-ensemble, Estelle na quune chance
sur 2 dcouter la ligne sans se faire dtecter.
Il ny a rien qui puisse ressembler lcoute passive dans le monde quantique. Si Estelle
essaye de rcuprer tous les bits, elle perturbera forcment les communications.
B e n n e t t et B r a s s a r d ont un prototype qui fonctionne. La dernire fois que j en ai
entendu parl, des gens de B r i t i s h T e l e c o m transmettaient des bits sur un lien en
fibre optique de 10 kilomtres de long [280, 1255, 1541]. On croit rver!

Quatrime partie
Le monde rel

Chapitre 24

Exemples de ralisation
Concevoir des protocoles et des algorithmes est une chose, mais les raliser dans des
systmes oprationnels en est une autre. En thorie, la thorie et la pratique sont
identiques ; en pratique, elles sont diffrentes. Souvent des ides intressantes sur papier
ne marchent pas dans la pratique. Les exigences sont peut-tre trop restrictives ; le
protocole est peut-tre trop lent. Le chapitre 10 traite de quelques dbouchs relatifs
lutilisation de la cryptographie ; ce chapitre donne des exemples pratiques de ce qui
se fait.

24.1

Protocole IBM de gestion de clefs se


crtes

A la fin des annes 70, IBM a conu un systme complet de gestion de clefs pour la
scurit des communications et des fichiers dans un rseau informatique, qui nutilise
que la cryptographie clef secrte [517, 1032]. Ce protocole est moins important au
niveau de son fonctionnement quau niveau de sa philosophie gnrale : En automatisant
la gnration, la distribution, linstallation, le stockage, le changement et la destruction
des clefs, le protocole a beaucoup progress pour assurer la scurit des algorithmes
cryptographiques sous-jacents.
Ce protocole procure trois choses: communications sres entre un serveur et divers
terminaux, stockage sr de fichiers sur le serveur et communications sres entre les
serveurs. Ce protocole n offre pas vraiment la possibilit de communications directes
de terminal terminal bien quil puisse tre modifi dans ce but.
Chaque serveur dans le rseau est raccord un dispositif cryptographique qui ralise
tous les chiffrements et les dchiffrements. Chaque serveur a une clef matresse KMo
et deux variantes K M i et K M 2 , toutes deux sont des variantes simples de KMo- Ces
clefs sont utilises pour chiffrer d autres clefs et pour engendrer de nouvelles clefs.
Chaque terminal a une clef terminal matresse K M T qui est utilise pour changer
des clefs avec d autres terminaux.
Le serveur stocke K M T chiffr avec K M i. Toutes les autres clefs, dont celles utilises
pour chiffrer les fichiers de clefs (appels K N F ), sont stockes chiffres avec K M 2. La
clef matresse K M 0 est stocke dans un module de scurit sans fuite. Actuellement, ce

Chapitre 24

590

Exemples de ralisation

pourrait tre une clef R O M ou une carte magntique, ou bien une entre dactylogra
phie par lutilisateur (probablement sous forme dun texte qui serait ensuite broy
pour obtenir une clef). K M j et K M 2 ne sont stockes nulle part dans le systme,
mais elles sont calcules partir de KM o chaque fois quelles sont ncessaires. Les
clefs de session, pour les communications entre serveurs, sont engendres par un pro
cessus pseudo-alatoire par le serveur. Les clefs utilises pour chiffrer les fichiers pour
archivage (K N F ) sont engendres de la mme manire.
Le cur du protocole est un module rsistant linvestigation appel mcanisme
cryptographique. Du ct du serveur comme du ct du terminal, tous les chiffre
ments et les dchiffrements sont raliss par ce mcanisme cryptographique. Les clefs
les plus importantes, celles qui sont utilises pour engendrer les clefs de chiffrement,
sont stockes dans ce module. Ces clefs ne peuvent jamais tre lues une fois quelles sont
stockes. Et elles sont lies une utilisation : une clef affecte une tche ne peut pas
tre accidentellement utilise pour autre chose. Ce concept de vecteurs de contrle
de clefs est probablement la contribution la plus significative de ce systme. Donald
D a v i e s et William P r i c e dcrivent en dtail ce protocole de gestion de clefs [435],

Une variante
Une variante de ce schma avec clefs matresses et clefs de session est dcrite dans [1485].
Il est construit autour des nuds du rseau avec des mcanismes de dpt de clefs qui
peuvent desservir des terminaux. Il est conu pour :
protger les communications entre nimporte quelle paire dutilisateurs des ter
minaux ;
- protger les communications laide de courrier lectronique chiffr ;
- protger des fichiers personnels ;
- permettre de raliser des signatures numriques.
Pour les communications et les transferts de fichiers entre utilisateurs, le schma utilise
des clefs engendres par le mcanisme de dpt et envoyes aux utilisateurs chiffres
avec une clef matresse. Lidentit des utilisateurs est incorpore la clef pour quil
soit possible de prouver quune clef de session a t utilise par une paire particulire
dutilisateurs. Ce mcanisme de dpt de clefs est central tout le systme. Bien
que ce systme nutilise pas la cryptographie clef publique, il offre des possibilits de
signature numrique : une clef ne peut tre originaire que dune seule source et elle ne
peut tre lue que par un seul destinataire donn.

24.2

M ITRENET

Lune des premires ralisations de la cryptographie clef publique tait le systme ex


primental M E M O (pour M ITRE Encrypted Mail Office ). M IT R E est un contrac
tant du Dpartement de la Dfense amricaine un groupe de rflexion gouverne
mental et un ensemble de personnes intelligentes. M E M O tait un systme de courrier

24-3

R N IS

591

lectronique sr destin aux utilisateurs du rseau M IT R E N E T , utilisant la cryp


tographie clef publique pour lchange des clefs et le DES pour le chiffrement des
fichiers.
Dans le systme M E M O , toutes les clefs publiques sont stockes dans un centre
de distribution de clefs publiques , qui forme un nud part du rseau. Elles sont
stockes dans une E P R O M , pour viter que quiconque ne les modifie. Les clefs prives
sont engendres par les utilisateurs ou par le systme.
Pour quun utilisateur puisse envoyer des messages en toute scurit, le systme tablit
en premier lieu un lien de communication sr avec le centre de distribution de clefs
publiques . Lutilisateur demande un fichier avec toutes les clefs publiques auprs
du centre . Si lutilisateur russit un test d identification en utilisant sa clef prive
individuelle, le centre envoie cette liste sa station de travail. Cette liste est chiffre
laide du DES pour garantir lintgrit du fichier.
Le processus utilise le DES pour chiffrer les messages. Le systme engendre une clef
DES alatoire pour le chiffrement des fichiers ; lutilisateur chiffre le fichier avec cette
clef DES et il chiffre la clef DES avec la clef publique du destinataire. Le fichier chiffr
par le DES et la clef chiffre par la clef publique sont tous deux envoys au destinataire.
M EM O tient compte du problme de la perte des clefs. Il tient galement compte de
la vrification de lintgrit des messages en utilisant des sommes de contrles. Il ny a
pas de mcanisme dauthentification inclus dans le systme.
On a montr que la ralisation particulire de cryptographie clef publique utilise
dans ce systme lchange de clef D i f f i e - H e l l m a n bas sur Z j 2127 ntait
pas sre avant mme que le systme ne soit ralis (voir 11.6), bien quil soit facile
de modifier le systme pour utiliser des nombres plus grands. M E M O tait destin
principalement des fins exprimentales et n a jamais t rendu oprationnel sur le
vrai systme M IT R E N E T .

24.3

RNIS

R e s e a r c h a dvelopp un prototype de tlphone terminal RNIS


sr (pour Rseau numrique intgration de services *) [497, 1201, 491, 498]2. La
version tlphone na pas dpass le stade de prototype. Le produit final tait le Paquet
de scurisation des donnes ( Packet Data Security Overlay ). Le terminal utilise
lchange de clefs D i f f i e H e l l m a n , les signatures numriques R SA et le chiffrement
des donnes par le DES ; il peut recevoir et mettre la voix et les donnes 64 kilo-bits
par seconde.
B e ll-N o r th e r n

Clefs
Une paire clef publique-clef prive long terme est incorpore dans le tlphone.
La clef prive est stocke dans une zone du tlphone rsistante linvestigation. La
clef publique est utilise comme identification du tlphone. Ces clefs font partie du
tlphone et ne peuvent tre altres en aucune faon.
De plus, deux autres clefs publiques sont stockes dans le tlphone. Lune de ces clefs
est la clef publique du propritaire, qui est utilise pour authentifier les commandes
1. N ote du traducteu r: en anglais on parlera d ISDN p ou r In teg ra ted S e r v ic e s D ig ita l N etw o rk .
2. N ote d u traducteur : il est com m ercialis en France sous le n om de NUMERIS.

Chapitre 24

592

Exemples de ralisation

faites par le propritaire et peut tre change par une commande signe par le propri
taire. De cette faon, un propritaire peut cder son tlphone quelquun dautre.
La clef publique du rseau est aussi stocke dans le tlphone. Cette clef est utilise
pour authentifier les commandes envoyes par le dispositif de gestion de clefs du rseau
et pour authentifier les appels des utilisateurs sur le rseau. Cette clef peut galement
tre change par une commande signe par le propritaire. Cela permet au propritaire
de faire passer son tlphone dun rseau un autre.
Ces clefs sont considres comme des clefs long terme : elles ne sont changes que
rarement, ou mme jamais. Une paire clef prive-clef publique court terme est
aussi stocke dans le tlphone. Cette paire est encapsule dans un certificat sign par le
dispositif de gestion des clefs. Quand deux tlphones tablissent une communication,
ils changent leurs certificats. La clef publique du rseau authentifie ces certificats.
Cette procdure dchange et vrification de certificats ne permet que ltablissement
dune communication sre de poste poste. Pour tablir une communication sre de
personne personne, le protocole a une tape supplmentaire. La clef prive du propri
taire est stocke dans une clef matrielle d amorce qui est insre par le propritaire
dans le tlphone. Cette clef damorce contient la clef prive du propritaire, chiffre
laide d un mot de passe connu de lui seul (et non par le tlphone, ni par le dispositif
de gestion des clefs du rseau, ni quiconque autre). Elle contient galement un certi
ficat sign par le dispositif de gestion des clefs du rseau ; ce certificat contient la clef
publique du propritaire et certaines informations le concernant (nom, socit, profes
sion, niveau daccs linformation confidentielle, garniture favorite de pizzas, tendance
sexuelle, etc.). Ce certificat est galement chiffr. Pour dchiffrer ces informations et
les entrer dans le tlphone, le propritaire entre son mot de passe secret laide du
clavier du tlphone. Aprs que le tlphone a utilis les informations pour tablir la
communication, il les efface une fois que le propritaire a retir sa clef d amorce.
Le tlphone stocke galement un ensemble de certificats du dispositif de gestion des
clefs du rseau. Ces certificats autorisent des utilisateurs particuliers utiliser certains
des particuliers.

Appel
Un appel dAlice vers Bernard se droule comme suit :
1 Alice insre sa clef damorce dans le tlphone et elle entre son mot. de passe.
2 Le tlphone interroge la clef d amorce pour dterminer lidentit dAlice et lui
donne la tonalit.

3 Le tlphone vrifie son ensemble de certificats pour vrifier que cet utilisateur
particulier est autoris utiliser ce tlphone particulier.

4 Alice forme le numro; le tlphone tablit lappel.


5 Les deux tlphones utilisent un protocole d change de clefs par cryptographie
clef publique pour engendrer une clef de session unique et alatoire. Toutes
les tapes suivantes du protocole seront chiffres laide de cette clef.

6 Le tlphone d Alice transmet son certificat et lauthentification de l utilisateur.


7 Le tlphone de Bernard vrifie l authenticit des signatures du certificat et de
lauthentification de l utilisateur en utilisant la clef publique du rseau.

244

S T U -III

593

8 Le tlphone de Bernard amorce une suite de dfis -rponses . Il demande des


rponses signes en temps rel des dfis dpendant du temps3. Une rponse
doit tre signe avec la clef prive du tlphone dAlice et lautre doit tre signe
avec la clef prive dAlice.

9 Le tlphone de Bernard sonne, moins quil ne soit dj en ligne.


10 S il est la maison, Bernard insre sa clef damorce dans le tlphone. Son
tlphone interroge la clef damorce et vrifie le certificat de Bernard comme
aux tapes 2 et S.

11 Le tlphone de Bernard transmet son certificat et lauthentification de l utili


sateur.

12 Le tlphone vrifie lauthenticit des signatures de Bernard comme ltape 7


et dbute une suite de dfis -rponses comme ltape 8.
13 Les deux tlphones affichent lidentit de lautre utilisateur et de lautre tl
phone sur leur cran.

14 La conversation confidentielle commence.


15 Quand lun des participants raccroche, la clef de session est efface, ainsi que
les certificats que le tlphone de Bernard a reus du tlphone dAlice et les
certificats du tlphone dAlice reus du tlphone de Bernard.

Une nouvelle clef DES est utilise pour chaque appel. Elle nexiste que dans chacun des
deux tlphones pour la dure de lappel et est dtruite immdiatement aprs la fin de
la conversation. Si un adversaire capture un ou les deux tlphones impliqus dans une
communication, il ne sera pas capable de dchiffrer la moindre communication passe
entre ces deux tlphones.

24.4

ST U -III

Le STU (pour Secure Tlphon Unit ) est un tlphone sr conu par la NSA. Ce
terminal a peu prs lallure et la taille d un tlphone normal et peut servir comme
tel. Les tlphones sont aussi inviolables, assez pour ne pas tre classs sils nont pas
de clef. Ils ont aussi un port de donnes et peuvent protger le trafic entre modems
ainsi que les communications vocales [1140].
Whitfield D i f f i e parle du STU - III dans [492] :
Pour appeler avec le S T U -III, il suffit dappeler normalement un autre
poste S T U -III, puis dinsrer la clef contenant une variable cryptogra
phique et d appuyer sur le bouton scurit . Aprs une attente d environ
15 secondes pour rglage cryptographique, chaque tlphone affiche des in
formations concernant lidentit et lautorisation de lautre partie, puis la
conversation peut commencer.
Fait sans prcdent, Walter D e e l e y , directeur de la scurit des commu
nications la N SA, a annonc le S T U -III ou le systme future de sret
vocale lors d un entretien avec The New York Times [286]. Lobjectif initial
3. C e qui vite q u un adversaire puisseYitiliser des rponses fournies lors d un change prcdent.

Chapitre 24

Exemples de ralisation

de ce nouveau systme tait de protger les communications vocales et les


transmissions de donnes basse vitesse pour le Dpartement amricain
de la Dfense et ses fournisseurs. Larticle ne rvlait rien propos de son
fonctionnement, mais par la suite, des fuites ont lev le voile. Le nouveau
systme allait utiliser la cryptographie clef publique.
La nouvelle approche de la gestion de clefs avait t remarque plus tt
dans [72] et un article parlait de tlphones reprogramms une fois par
an par une liaison tlphonique sre , une tournure de phrase qui sug
gre lutilisation d un protocole de passage de certificat, similaire celui
dcrit dans le paragraphe 24.3, qui minimise le besoin de communications
entre les tlphones et le centre de gestion de clefs. De rcents rapports ne
se sont pas fait attendre, parlant dun systme de gestion de clefs appel
F IR E F L Y qui [1353] est issu de la technologie de clef publique et est
utilis pour tablir une paire de clefs de chiffrement de trafic . Cette des
cription et ce tmoignage soumis au Congrs amricain par Lee N e u w i r t i i
de C y l i n k [1164] suggrent une combinaison dchange de clefs et de certi
ficats similaire celle utilise par le tlphone sr ISDN, et il est plausible
que F IR E F L Y soit aussi bas sur le calcul de puissances modulo n.
Les S T U -III sont fabriqus par A T & T et GE. Entre 300000 et 400000 units ont
t mises en ligne en 1994. Une nouvelle version, lquipement terminal sr (ST E pour
Secure Terminal Equipment ), fonctionnera sur les lignes ISDN.

24.5

Kerberos

K e r b e r o s est un protocole d authentification tierce personne de confiance conu


pour les rseaux T C P /I P . Un service K e r b e r o s , rsidant dans le rseau, agit comme
un arbitre de confiance. K e r b e r o s offre lauthentification sre en rseau en permettant
une personne daccder diffrentes machines dans le rseau. K e r b e r o s est bas
sur la cryptographie clef secrte (le DES dans le cas de la ralisation concrte de
K e r b e r o s , mais tout autre algorithme pourrait tre utilis) ; K e r b e r o s partage une
clef secrte diffrente avec chaque entit du rseau et la connaissance de cette clef
secrte tient lieu de preuve didentit.
K e r b e r o s a initialement t dvelopp au M IT dans le cadre du projet A t h e n a .
Le modle de K e r b e r o s est bas sur le protocole tierce personne de confiance
de N e e d h a m et S c h r o e d e r (voir 3.3) [1159J. La version originale de K e r b e r o s ,
V e r s i o n 4, a t spcifie dans [1100, 1503]4. La V e r s i o n 5, construite par modi
fication partir de la V e r s i o n 4, a t spcifie dans [877, 1417, 878], La meilleure
vue densemble de K e r b e r o s est [1163]. D autres articles dtudes sont [1389, 1500]
et deux bons articles dcrivant lutilisation concrte de K e r b e r o s sont [781, 782].

Le modle de Kerberos
Le protocole de base de K e r b e r o s est esquiss dans le paragraphe 3.3. Dans le modle
de K e r b e r o s il y a des entits des clients et des serveurs rsidant dans le rseau.
4. Les versions 1 3 taient des versions de dveloppem ent interne.

2 f.5

595

K erb eros

Les clients peuvent tre des utilisateurs, mais peuvent galement tre des programmes
indpendants qui doivent faire certaines choses : tl-charger des fichiers, envoyer des
messages, accder des bases de donnes, accder des imprimantes, obtenir des
privilges administratifs, etc.
K er ber o s tient une base de donnes des clients et de leurs clefs secrtes. Pour un
utilisateur humain, la clef secrte est un mot de passe chiffr. Les services du rseau
ncessitant une authentification, ainsi que les clients qui dsirent utiliser ces services,
enregistrent leur clef secrte auprs de K e r b e r o s .
Comme K er ber o s connat la clef secrte de tout le monde, il peut crer des messages
pour convaincre une entit de lidentit dune autre entit. K er ber o s cre galement
des clefs d e session qui sont donnes au client et au serveur (ou aux deux clients)
et personne d autre. Une clef de session est utilise pour chiffrer les messages entre
deux participants, ensuite elle est dtruite.
K er ber o s utilise DES pour le chiffrement. La V ersio n 4 fournit un mode nonstandard pour lauthentification. Ce mode est faible : il ne dtecte pas certains change
ments apports au texte chiffr (voir 9.10). La VERSION 5 de utilise le mode C B C .

Fonctionnement de Kerberos
Cette section dcrit KERBEROS V e r sio n 5. Je soulignerai plus loin les diffrences entre
la V ersion 4 et la V ersio n 5. Le protocole K er b e r o s est simple (voir la figure 24.1).
Un client demande K er b e r o s un ticket pour le serv ice d e d liv ra n ce d e tickets
(ticket S D T ) 5. Ce ticket, appel ticket dobtention de ticket (T O T ) 6, est envoy
au client, chiffr avec la clef secrte du client. Pour utiliser un serveur particulier, le
client demande un ticket pour ce serveur au SD T. En faisant lhypothse que tout
est en ordre, le S D T envoie au client le ticket demand. Le client prsente alors ce
ticket avec un authentifiant au serveur du service dsir. Si rien ne cloche avec les
accrditations du client, le serveur laisse le client accder au service.

( Kerberos]

1 \ V

-----

Client ]-

F ig .

SDT

'

1. Requte pour un T O T
2. T O T
3. Requte pour un ticket de service
4. Ticket de service
5. Requte pour le service

Serveur ]

24.1 - Etapes dauthentification

K e rb e ro s

5. N ote du traducteur : en anglais, un tel service est appel T ic k e t-G r a n tin g S er v ic e (T G S ).


6. N ote du traducteur : en anglais, un tel ticket est appel T G T pou r T ic k e t-G r a n tin g T ic k e t .

Chapitre 24

596

Exemples de ralisation

Accrditations
K e r b e r o s utilise deux types d accrditations : les t ic k e t s et les a u t h e n t if ia n t s 7. Un
ticket est utilis pour passer au serveur, de manire sre, lidentit du client qui le
ticket a t mis. Il contient galement des informations que le serveur peut utiliser
pour sassurer que le client qui utilise le ticket est bien celui qui le ticket a t dlivr.
Un authentifiant est une accrditation supplmentaire prsente avec le ticket.

ab

24.1 - Tableau des abrviations utilises par K

c
s
a
v
t
Kx

Un ticket K

client

=
=
=
=
=

T x ,y

=
=
=

A x ,y

K x,y
{m }K x

erberos

erbero s

serveur
adresse rseau du client
temps de dbut et de fin de validit dun ticket
datation
clef secrte de x
clef de session pour x et y
m chiffr avec la clef secrte de x
ticket de x pour utiliser y
authentifiant de x pour y

ressemble ceci :
Tc.s ~ 5, { c , g , v , K CjS)./y s -

Un ticket est valable pour un seul serveur et un seul client. Il contient le nom du client
et son adresse rseau, le nom du serveur, une datation et une clef de session. Cette
information est chiffre avec la clef secrte du serveur. Une fois que le client obtient ce
ticket, il peut lutiliser plusieurs fois pour accder au serveur, jusqu ce que le ticket
expire. Le client ne peut pas dchiffrer le ticket (il ne connat pas la clef secrte du
serveur), mais il peut le prsenter au serveur sous sa forme chiffre. Personne ne peut
espionner le rseau pour lire ou modifier les tickets qui passent.
Un authentifiant K e r b e r o s ressemble ceci :
A Cfs ( c tj clef)K c,s

Le client lengendre chaque fois quil veut utiliser un service du serveur. Lauthentifiant
contient le nom du client, une datation et une clef de session supplmentaire optionnelle,
tous chiffrs avec la clef de session partags par le client et le serveur. Contrairement
un ticket, il ne peut tre utilis quune fois. Toutefois, comme un client peut engendrer
les authentifiants suivant ses besoins (il connat la clef secrte partage), ce nest pas
un problme.
Lauthentifiant sert deux choses. Primo, il contient du texte en clair chiffr avec la
clef de session. Cela prouve quil connat galement la clef. Mais, ce qui est tout aussi
important, le texte en clair scell contient une datation. Un espion qui enregistre le
ticket et lauthentifiant ne peut pas les rejouer deux jours aprs.
7.
Le reste ce cette section utilise les notations utilises dans les docum ents K erberos voir le
tableau 24.1.

24.5

K erberos

597

Messages de Kerberos Version 5


Le K erberos V ersion 5 a cinq messages:
1. Client vers K e r b e r o s : c,sdt.
2. K erberos vers le client : { K CiSdt} K c,{TCiSdt} K sdt.
3. Client vers le S D T : { A c,a} K c<sdt, {Tc,sdt}Ksdt,s4. SD T vers le client : { K CtS} K CiSdt, {T C,S} K S.
5. Client vers le serveur: { A c>B}fCiS, {Tc s} K s

Ces messages vont maintenant tre dvelopp en dtails.

Obtention du premier ticket


Le client dispose dune information qui prouve son identit : son mot de passe. Il est
clair que nous ne voulons pas que le client envoie son mot de passe sur le rseau. Le
protocole K erberos minimise les chances que ce mot de passe soit compromis, tout
en empchant un utilisateur de sidentifier correctement sil ne connat pas son mot de
passe.
Le client envoie un message contenant le nom de lutilisateur et le nom de son ser
veur SD T au serveur d authentification K erberos 8. En ralit, lutilisateur entre
probablement juste son nom dans le systme, et le programme de connexion envoie la
requte.
Le serveur d authentification K erberos cherche le client dans sa base de donnes. Si
le client est dans la base de donnes, K erberos engendre une clef de session qui doit
tre utilise entre le client et le SD T. C est ce qui est appel un t ic k e t d o b t e n t io n
d e t ic k e t (T O T ). K erberos chiffre la clef de session avec 1a. clef secrte du client.
Ensuite il cre un T O T pour le client, afin que celui-ci puisse sauthentifier au S D T et
chiffre ce dernier ticket laide de la clef secrte du SD T. Le serveur dauthentification
envoie les deux messages chiffrs au client.
Le client dchiffre alors le premier message et rcupre la clef de session. La clef secrte
tant une empreinte obtenue par hachage sens unique de son mot de passe, un utilisa
teur lgitime naura donc aucun problme effectuer ce dchiffrement. Si lutilisateur
tait un imposteur, il ne connatrait pas le bon mot de passe et il ne pourrait donc pas
dchiffrer la rponse du serveur dauthentification K erberos . Laccs serait refus et
le client ne pourrait pas obtenir le ticket ou la clef de session.
Le client garde le T O T et la clef de session et il efface le mot de passe et lempreinte
obtenue par hachage sens unique. Ces informations sont effaces pour minimiser les
confusions possibles. Si un adversaire arrivait avoir une copie de la mmoire centrale
du client, il ne trouverait que le T O T et la clef de session. Ce sont des morceaux
dinformation qui ont de la valeur mais seulement durant la dure de vie du T O T .
Aprs expiration du T O T , ils nauront plus d utilit.
Le client peut alors prouver son identit au S D T pendant la dure de vie du T O T .
8. Il peu t y avoir de nom breux serveurs S D T .

598

Chapitre 24

Exemples de ralisation

Obtention de tickets pour un service


Un client doit obtenir un nouveau ticket pour chaque service quil dsire utiliser. Le
S D T dlivre des tickets pour un seul serveur la fois.
Quand un client a besoin dun nouveau ticket, il envoie sa requte au S D T 9.
Quand le S D T reoit la requte, il dchiffre le T O T avec sa clef secrte. Ensuite il
utilise la clef de session incluse dans le T O T pour dchiffrer lauthentifiant. Enfin, il
compare les informations de lauthentifiant avec les informations dans le ticket, ladresse
rseau du client avec ladresse d o la requte a t envoye et la datation avec le temps
courant. Si tout concorde, il autorise lexcution de la requte.
La vrification des datations est base sur lhypothse que toutes les machines ont
synchronis leurs horloges, du moins quelques minutes prs. Si la datation de la
requte est trop lointaine dans le futur ou dans le pass, le S D T considre cette requte
comme une ancienne requte rejoue. Le S D T doit galement garder la trace de tous
les authentifiants actifs, car des requtes passes peuvent avoir des des datations encore
valides. Une requte reue avec le mme ticket et la mme datation quune autre requte
dj reue peut tre ignore
Le S D T rpond une requte valide en envoyant un ticket valide au client que ce
dernier pourra prsenter au serveur. Le S D T cre aussi une nouvelle clef de session
pour le client et le serveur, chiffre avec la clef de session partage par le client et le
SD T. Ces deux messages sont alors renvoys au client. Celui-ci dchiffre le message et
extrait la clef de session.

Demande dun service


Maintenant, le client est prt sauthentifier auprs du serveur. Il cre un message
trs similaire celui quil a envoy au S D T (ce qui est logique puisque le SD T est un
service).
Le client cre un authentifiant qui contient son nom et son adresse sur le rseau ainsi
quune datation, le tout chiffr avec la clef de session entre le client et le serveur
engendre par le SD T . La requte contient le ticket reu de K e r b e r o s (dj chiffr
avec la clef secrte du serveur) et lauthentifiant chiffr.
Le serveur dchiffre et vrifie le ticket et lauthentifiant, comme dcrit ci-dessus, et
vrifie galement ladresse du client et la datation. Si tout concorde, le serveur sait,
daprs K E R B E R O S , que le client est bien celui quil prtend tre.
Pour des applications qui ncessitent lauthentification mutuelle, le serveur envoie au
client un message en retour qui contient la datation, chiffr avec la clef de session. Ceci
prouve que le serveur connaissait la clef secrte du client et quil a pu dchiffrer le
ticket et donc lauthentifiant.
Le client et le serveur chiffrent les futurs messages avec la clef partage, sils le dsirent.
Comme eux seuls partagent cette clef, ils peuvent tous deux faire lhypothse quun
message rcemment reu et chiffr avec cette clef a bien pour origine lautre participant.

Kerberos Version 4
La section prcdente a dcrit K e r b e r o s V e r s i o n 5. K e r b e r o s V e r s i o n 4 dif
fre lgrement quant au contenu des messages et la construction des tickets et des
9. Dans la ralit, le program m e peut faire cela autom atiquem ent et ce sera invisible l utilisateur.

24-5

599

K erberos

authentifiants.
Dans K erberos V ersion 4, les cinq messages ressemblent ceci :
1. Client vers K e r b e r o s : c , s d t .
2. K erberos vers le client: { K c<sdt, {Tc>sdt] K sdt} K c.

3. Client vers le S D T : {A c,s} K c,sdt, {TCtSdt} K sdt, s.


4. S D T vers le client: { K CjS,{T c s } K s} K C7sdt.
5. Client vers le serveur: { A C^ } K CS, {TCjS} i f 8
T vs { s , r ,(7, ( 1. /
A . Cls ~

1/ \s

{c,u,t}/C)S.

Les messages 1, 3 et 5 sont identiques. Le double chiffrement des tickets pour les
messages 2 et 4 a t retir dans la VERSION 5. Les tickets de la VERSION 5 offrent la
possibilit davoir des adresses multiples et ils remplacent le champs life , 1, par un
temps de dbut et de fin de validit du ticket. Lauthentifiant de la V ersion 5 offre la
possibilit d inclure une clef additionnelle.

Scurit de Kerberos
Steve B ellovin et Michael M erritt dcrivent diverses vulnrabilits potentielles de
K erberos au niveau de la scurit [115]. Bien que cet article ait t crit pour les
protocoles de laVERSlON 4, nombre de leurs commentaires sappliquent galement la
V ersion 5.
Il serait possible dengranger des anciens authentifiants et de les rejouer. Bien que les
datations soient supposes viter cela, les messages peuvent tre rejous pendant la
dure de vie du ticket. Les serveurs sont supposs stocker les tickets valides pour viter
que des messages soient rejous, mais ce nest pas toujours possible. De plus, la dure
de vie du ticket peut tre longue ; huit heures est la moyenne.
Les authentifiants dpendent du fait que toutes les horloges du rseau sont plus ou
moins synchronises. Si lon peut tromper un ordinateur quant lheure relle, alors
un ancien authentifiant peut tre rejou sans problme. La plupart des protocoles de
maintien du temps en rseau ne sont pas srs, ce qui peut donc tre un dfaut srieux.
K erberos est aussi vulnrable aux attaques de paris de mots de passe. Un intrus
peut collectionner les tickets et ensuite essayer de les dchiffrer. Rappelez-vous que
lutilisateur moyen ne choisit gnralement pas des bons mots de passe. Si Martin
collecte suffisamment de tickets, ses chances de retrouver le mot de passe sont bonnes.
L attaque, la plus srieuse peut-tre, implique un logiciel malicieux. Le protocole K erb
eros repose sur le fait que le logiciel K erberos est digne de confiance. Rien nempche
Martin de remplacer subrepticement tous les logiciels K erberos clients par une ver
sion qui non seulement ralise les protocoles K erberos mais galement enregistre les
mots de passe. C est un dfaut commun tous les logiciels cryptographiques qui sont
excuts sur un ordinateur peu sr, mais lutilisation rpandue de K erberos dans
ces environnements en fait une cible particulirement attrayante. Des amliorations de
K erberos sont ltude, comprenant une ralisation de cryptographie clef publique
et une interface carte puce pour la gestion de clef.

Chapitre 24

600

Exemples de ralisation

Licences
K e r b e r o s nest pas dans le domaine public, mais le code du M IT est disponible
gratuitement . Dans les faits, utiliser ce code dans un environnement U N IX oprationnel
est une toute autre histoire. De nombreux magasins vendent des versions de K e r b e r o s ,
mais vous pouvez obtenir une bonne version gratuite auprs de Cygnus Support, 814
University Ave., Palo Alto, CA, 94301 ; (415) 322-3811 ; fax: (415) 322-3270.

24.6

KryptoKnight

K r y p t o K n i g h t (subtil, n o n ? )10 est un systme d authentification et de distribution


de clef conu par IBM . C est un protocole clef secrte qui utilise soit le DES en
mode C B C (voir 9.3), soit une version modifie de M D5 (voir 18.5).
K r y p t o K n i g h t offre quatre services de scurit :
- l a uthentification de l utilisateur (appele Single Sign-On

) ;

- l a uthentification deux particip ants ;


la distrib u tion de clefs ;

- lauthentification de lorigine et du contenu des donnes.


Du point de vue de lutilisateur, K
quand mme quelques diffrences :
- K

rypto

n ig h t

rypto

n ig h t

est similaire K

erberos.

Il y a

utilise une fonction de hachage po ur l identification et le chif

frement des tickets ;


K

rypto

crs p o u r

n ig h t

ne repose pas sur des horloges synchronises ; il utilise des mots

l occasion p o u r les challenges (voir 3.3) ;

- Si Alice veut communiquer avec Bernard, K r y p t o K n i g h t donne la possibi


lit Alice denvoyer un message Bernard, et Bernard dinitier le protocole
d change de clefs.
K r y p t o K n i g h t a des tickets et des authentifiants, tout comme K e r b e r o s . Il a des
SD T , mais il les appelle des serveurs dauthentification. Les concepteurs de K r y p t o
K n i g h t ont fait des efforts considrables pour rduire le nombre de messages, leurs
longueurs ainsi que le volume de chiffrement. Pour plus d informations concernant
K r y p t o K n i g h t , lisez [1116, 180, 182, 181].

24.7

SESAME

SESAM E (pour Secure European System for Applications in a Multivendor Environ


ment ) est un projet de scurit de la communaut europenne, financ 50 pourcent
par R A C E (voir paragraphe 25.7), dont lobjectif principal est la production de tech
nologie pour lauthentification des utilisateurs avec distribution du contrle daccs.
10. N ote du traducteur : en anglais, K ryptoK n ight se prononce com m e K ryptonite.

2f.8

Architecture cryptographique commune d T B M

601

Cest un peu une version europenne de K e r b e r o s . Cest un projet en deux parties :


la premire est un prototype de base de larchitecture, et la deuxime est un ensemble
de projets commerciaux. Les trois entreprises les plus influents dans le dveloppement
sont ICL au Royaume-Uni, S i e m e n s en Allemagne et B u l l en France.
SESAM E est mi systme d authentification et d change de clefs [365, 1258, 798,
1051]. Il utilise le protocole de Needham-Schroeder, avec cryptographie clef publique
pour communiquer entre diffrents domaines sensibles. Le systme prsente de srieux
dfauts plusieurs niveaux. Au lieu d utiliser un vrai algorithme de chiffrement, ils
combinent par ou exclusif avec une clef de 64 bits. Pire encore, ils combinent par ou
exclusif en mode C B C , ce qui ne chiffre que la moiti du texte en clair. Pour leur
dfense, ils voulaient utiliser le DES mais le gouvernement franais a contest ; ils
ont valid le code avec DES mais lont ensuite retir en esprant que les personnes le
rajouteraient- Tout cela ne m impressionne gure.
Lauthentification dans SE SA M E est une fonction sur le premier bloc d im message,
pas sur le message entier. Ceci a pour effet dauthentifier Monsieur , et non pas
le corps d une lettre. La gnration de clefs consiste en deux appels vers la fonction
rand dU N IX, qui nest pas trs alatoire. SE SAM E utilise crc32 et MD5 en tant que
fonctions de hachage sens unique. Bien sr, SE SA M E est vulnrable

24.8

Architecture
mune dIBM

cryptographique

com

Larchitecture cryptographique commune (C C A pour Common Cryptographie Archi


tecture ) a t conue et dveloppe par IBM afin de fournir des primitives cryptogra
phiques pour la confidentialit, lintgrit, la gestion des clefs et des codes personnels
(PIN pour Personal Identification Number ) [753, 784, 1035, 1036, 951, 754]. Les
clefs sont gres par les vecteurs de contrle VC (voir 8.5). Chaque clef a un VC com
bin par ou exclusif et nest jamais spare du vecteur sauf lintrieur d un matriel
sr. Le VC est une structure de donnes fournissant une comprhension intuitive des
privilges associs une clef particulire.
Les bits individuels du VC ont des significations spcifiques pour utiliser et manier
chaque clef gre par la C C A . Le VC est transport avec la clef chiffre dans des
structures de donnes appeles bons de clefs. Les bons de clef interne sont utiliss pour
exporter et importer des clefs chiffres entre systmes. Les clefs dans les bons de clef
externe sont chiffres par les clefs de chiffrement de clefs (K E K pour Key-encrypting
keys ). Ces K E K sont gres dans les bons de clef interne. Les clefs sont spares
selon leurs usages autoriss.
La longueur de clef est aussi prcise et respecte en utilisant les bits du VC. Les
clefs de longueur simple ont 56 bits et sont utilises pour des fonctions telles que
la confidentialit et lauthentification de messages. Les clefs de longueur double ont
112 bits et sont utilises pour la gestion des clefs, les fonctions PIN et autres tches
spciales. Les clefs peuvent tre soit doubles uniquement , dans ce cas les deux
moitis gauche et droite de la clef doivent tre diffrentes, soit doubles , et les
moitis peuvent tre gales par chance, soit simples reproduites , alors les moitis
gauches et droites sont gales, soit simples et contiennent 56 bits. Les fonctions
de la C C A spcifient le matriel utiliser avec certains types de clefs pour quelques

602

Chapitre 24

Exemples de ralisation

oprations.
Le VC est vrifi dans un processeur sr: il doit tre en conformit avec les lois au
torises par la C C A pour chaque fonction C C A . Si le VC passe le test, une variante
de la K E K ou M K est obtenue par la combinaison par ou exclusif de la K E K ou M K
avec le VC, et la clef du texte en clair est disponible pour une utilisation interne avec
la fonction C C A . Quand les nouvelles clefs sont gnres, le VC prcise les utilisations
possibles de la clef gnre. Ces combinaisons de types de clefs qui pourraient tre
utilises pour attaquer le systme ne sont pas gnres ou importes dans un systme
compatible C C A .
La C C A utilise une combinaison de cryptographie clef publique et clef secrte
pour la distribution des clefs. Le K D C partage une clef matresse secrte avec chaque
utilisateur et chiffre les clefs de sance avec cette clef matresse. Les clefs matresses
sont distribues en utilisant la cryptographie clef publique.
Les concepteurs du systme ont choisi une approche hybride pour deux raisons. La
premire est la performance. La cryptographie clef publique est informatiquement
intense ; si les clefs de sance sont distribues en utilisant la cryptographie clef pu
blique, une erreur systme peut intervenir. La seconde est la compatibilit rcurrente ;
ce systme peut tre recouvert par des schmas clef secrte avec une interruption
minimum.
Les systmes C C A sont conus pour tre interoprables. Pour les systmes non compa
tibles C C A , une fonction de traduction de vecteur de contrle (C V X L T pour Control
Vector Translate ) permet de passer les clefs entre les deux systmes. Linitialisation
de la fonction C V X L T exige un double contrle. Les deux parties doivent rgler les
tables de traduction de faon indpendante. Un tel double contrle garantit un haut
niveau dassurance concernant lintgrit et le pdigr de toute clef introduite dans le
systme.
Une clef de type D A T A est fournie pour la compatibilit avec dautres systmes. Une
clef D A TA est stocke avec un VC qui lidentifie comme tant bien une clef DATA.
Les clefs D A TA sont d une utilisation trs large et doivent donc tre considres avec
suspicion et utilises avec prudence. Les clefs D ATA ne devraient pas tre utilises
dans les fonctions de gestion de clefs.
Le C D M F (pour Commercial Data Maskmg Facility ) fournit une version exportable
de C C A . Elle a une caractristique spciale qui rduit les clefs DES 40 bits pour
lexport (voir 15.5) [785].

24.9

Environnement dauthentification ISO

La cryptographie clef publique a t recommand pour lenvironnement dauthenti


fication ISO, connu aussi sous lappellation protocoles X .509 [309]. Cet environ
nement offre lauthentification travers plusieurs rseaux. Bien quaucun algorithme
particulier ne soit spcifi ni pour la scurit ni pour lauthentification, la spcification
recommande le R SA .. Il y a toutefois des amnagements pour permettre lutilisation
de multiples algorithmes et fonctions de hachage. Le protocole X .509 a t introduit
pour la premire fois en 1988. Aprs utilisation par le public, il a t rvis en 1993
pour corriger des problmes de scurit [1106, 752],

2Jt.9

Environnement dauthentification IS O

603

Certificats
La partie la plus importante du protocole X .509 est sa structure pour les certificats
clefs publiques. Chaque utilisateur a un nom distinct. Une a u to rit de certifica tion
(C A pour Certification Authority ) fiable assigne un nom unique chaque utilisateur
et met un certificat sign contenant le nom et la clef publique de lutilisateur. La
figure 24.2 montre un certificat X .509 [309],
Version
Numro de srie
Identificateur de lalgorithme :
Algorithme
Paramtres
Dlivreur
Priode de validit :
Pas avant ...
Pas aprs ...
Sujet
Clef publique du sujet :
Algorithme
Paramtres
Clef publique
Signature

F i g . 24.2 - Un certificat X.509

Le champ de la version identifie le format du certificat. Le numro de srie est unique


dans la C A . Le champ suivant identifie lalgorithme utilis pour signer le certificat,
ainsi que tous les paramtres ncessaires. Lautorit qui dlivre est la C A . La priode
de validit est une paire de dates entre lesquelles le certificat est valide. Le sujet est
le nom de lutilisateur. Linformation de clef publique du sujet comprend le nom de
lalgorithme, tous les paramtres ncessaires et la clef publique. Le dernier champ est
la signature de lentre la C A .
Si Alice veut communiquer avec Bernard, elle doit dabord trouver son certificat dans
une base de donnes. Puis elle vrifie son authenticit. Sils utilisent tous deux la
mme C A , cest facile. Alice vrifie simplement la signature de la C A sur le certificat
de Bernard.
Sils utilisent des C A diffrentes, c est plus compliqu. Imaginez une structure arbo
rescente, avec des C A diffrentes qui certifient d autres C A et d autres utilisateurs.
Au sommet, il y a une C A matresse. Chaque C A a un certificat sign par la C A
suprieure, ainsi que par la C A infrieure. Alice utilise ces certificats pour vrifier le
certificat de Bernard.
La figure 24.3 illustre cela. Le certificat dAlice est certifi par lC A ^ ; celui de Bernard
par lC A ii. Alice connait la clef publique de IC A a- LC A c a un certificat sign par
IC A a , aussi Alice peut le vrifier. LCA o a un certificat sign par lC A c . LC A /j a un
certificat sign par l C A p- Le certificat de Bernard est sign par lC A g . En remontant
larborescence jusqu un point de commun, dans ce cas IC A d , puis en la redescendant

Chapitre 24

604

Exemples de ralisation

jusqu Bernard, Alice peut vrifier le certificat de Bernard.

ig .

24.3 - Exemple de hirarchie de certification

Les certificats peuvent tre stocks dans des bases de donnes sur le rseau. Les uti
lisateurs peuvent se les envoyer. Quand un certificat expire, il doit tre retir de tous
les rpertoires publics. Toutefois, la C A mettrice doit garder une copie du certificat.
Elle sera ncessaire pour rsoudre tout conflit ultrieur qui pourrait se produire.
Les certificats peuvent aussi tre rvoqus, soit parce que la clef de lutilisateur a t
compromise, la clef de la C A a t compromise, soit parce que la C A ne veut plus
certifier lutilisateur. Chaque C A doit garder une liste des certificats rvoqus mais
non expirs. Quand Alice reoit un nouveau certificat, elle devrait vrifier quil na pas
t rvoqu. Elle peut consulter une base de donnes sur le rseau de clefs rvoques,
mais plus probablement, elle consultera plutt une liste en mmoire cache locale de
clefs rvoques. Il y a srement des abus ce systme ; la rvocation de clef en est la
partie la plus faible.

Les protocoles dauthentification


Alice veut communiquer avec Bernard. D abord, elle consulte une base de donnes et
elle obtient ce que lon appelle un chemin de certification d Alice Bernard ainsi
que la clef publique de Bernard. A partir de l, Alice peut dmarrer un protocole
d authentification uni-, bi- ou tri-directionnel.
Le protocole unidirectionnel est une communication simple entre Alice et Bernard. Il
tablit lidentit d Alice et de Bernard ainsi que lintgrit de toutes les informations
qui transitent entre Alice et Bernard. Il empche galement les attaques par blocs
rejous pendant la communication.
Le protocole bidirectionnel ajoute une rponse de Bernard. Il tablit que Bernard, et
non un imposteur, a envoy la rponse. Il garantit galement la confidentialit des deux
communications et il empche les attaques par blocs rejous.

24-9

Environnement dauthentification IS O

605

Les protocoles uni- et bi-directionnels utilisent tous deux des datations. Un protocole
tridirectionnel ajoute un message supplmentaire entre Alice et Bernard, qui permet
de se passer de datations (et donc dheure authentifie).
Le protocole unidirectionnel est donn par :
1 Alice engendre un nombre alatoire R a 2 Alice construit un message, A4 = (TA,RA,Is,d ) o Ta est la datation dAlice,
I b est lidentit de Bernard et d est une donne arbitraire. Les donnes peuvent,
par scurit, tre chiffres avec la clef publique de Bernard E b -

3 Alice envoie (C a ,D a (A4)) Bernard (C a est le certificat dAlice; D a est le


point commun dans larborescence).

4 Bernard vrifie C a et obtient E a - Il vrifie que ces clefs nont pas expir. (E a
est la clef publique dAlice.)

5 Bernard utilise E

a pour chiffrer D a (A4). Il vrifie la signature dAlice et lin


tgrit des donnes signes.

6 Bernard vrifie l exactitude de I b dans A4.


7 Bernard vrifie Ta dans A4 et ainsi s assure que le message est dactualit.

8 Optionnellement, Bernard peut chercher la partie R a de A4 dans une base de


donnes danciens nombres alatoires pour vrifier que ce message nest pas un
ancien message rejou.

Le protocole bidirectionnel est constitu du protocole unidirectionnel, puis d un pro


tocole unidirectionnel similaire de Bernard vers Alice. Aprs lexcution des tapes 1
8 du protocole unidirectionnel, le protocole bidirectionnel continue ainsi :
9 Bernard engendre un autre nombre alatoire R b 10 Bernard construit un message AA' = (Tb ,Rb ,I a ,R a ,(I),

o T b est la datation
de Bernard, I a est lidentit dAlice et d est une donne arbitraire. Par scurit,
les donnes peuvent tre chiffres avec la clef publique dAlice E a - R a est le
nombre alatoire engendr par Alice ltape 1.

11 Bernard envoie D b (AA') Alice.


12 Alice utilise E

b pour dchiffrer D b {AA'). Elle vrifie la signature de Bernard


et lintgrit des informations signes.

13 Alice vrifie lexactitude de 1a extraite de AA'.


14 Alice vrifie la datation Tb de A4' et s assure que le message est dactualit.
15 Optionnellement, Alice peut vrifier R b de A4' pour s assurer que ce nest pas
un vieux message rejou.

Le protocole tridirectionnel fait la mme chose que le protocole bidirectionnel, mais


sans les datations. Les tapes 1 15 sont identiques celles du protocole bidirectionnel
avec Ta = Tb 0.
16 Alice compare le R a quelle a reu au R a quelle a envoy Bernard ltape
3.

606

Chapitre 24

17 Alice envoie

( R b

Exemples de ralisation

Bernard.

18 Bernard utilise E a pour dchiffrer D a (R b )- Cela permet de contrler la signa


ture dAlice et lintgrit des donnes signes.

19 Bernard compare le R b reu au R b quil a envoy Alice ltape 10.

24.10

Privacy-Enhanced Mail (PEM)

P E M est le standard

I n t e r n e t de Privacy-Enhanced Mail adopt par l Internet


Architecture Board (IA B ) pour offrir du courrier lectronique sr travers le rseau
I n t e r n e t . Il a initialement t conu par le groupe Privacy and Security Research
Group (P S R G ) de l Internet Resources Task Force (IR T F ) et a ensuite t pass
au groupe PEM Research Group de l Internet Engineering Task Force (IE TF).

Les protocoles PE M offrent le chiffrement, lauthentification, lintgrit des messages


et la gestion des clefs.
Les protocoles P E M complets ont t initialement dcrits dans une srie de R F C (pour
Requests For Comments ) dans [988] et ensuite rviss dans [989]. Une troisime
rvision des protocoles [990, 825, 991] est rsume dans [184, 185]. Les protocoles ont
t modifis et amliors, et les protocoles rsultants sont dtaills dans une autre srie
de R F C [992, 827, 83, 812]. Un autre article de Matthew B lS H O P [186] dtaille ces
changements. Des rapports de tentatives d applications du P E M sont dans [601, 1509,
1526, 81, 355, 1368, 1369]. Voir aussi [1398].
P E M est un standard global. Les procdures et les protocoles P E M sont conus pour
tre compatibles avec une large gamme d approches de gestion de clefs, y compris les
deux schmas clef secrte et clef publique pour chiffrer des clefs de chiffrement
de donnes. La cryptographie clef secrte est utilise pour le chiffrement du texte
des messages. Des algorithmes de hachage cryptographique sont utiliss pour garantir
lintgrit des messages. D autres documents supportent les mcanismes de gestion de
clefs utilisant des certificats clef publique ; les algorithmes, les modes et les identifi
cateurs associs ; et les dtails concernant les formats papier et lectronique ainsi que
les procdures d infrastructure de la gestion des clefs ncessaires pour supporter ces
services.
PE M nest prvu que pour certains algorithmes, mais accepte diffrentes suites d al
gorithmes que nous prciserons plus tard. Les messages sont chiffrs avec le DES en
mode C B C . Lauthentification est fournie par ce que lon appelle Contrle d intgrit
de Messages (C IM ) et utilise soit M D2 soit M D5 La gestion de clefs laide de
clefs secrtes peut utiliser soit le DES en mode E C B soit le DES triple, avec deux
clefs (appel le mode E D E ). P E M supporte aussi les certificats clef publique pour
la gestion des clefs en utilisant lalgorithme R SA (avec une clef dau plus 1024 bits)
et la structure standard de certificat X.509.
La cryptographie de bout en bout offre trois services confidentialit renforce :
la confidentialit, lauthentification, lintgrit des messages. Il ny a pas de requis
spciaux imposs au systme de courrier lectronique. P E M peut tre incorpor slec
tivement, par site ou par utilisateur, sans affecter le reste du rseau.

2^.10

Privacy-Enhanced Mail ( P E M )

607

Documents PEM
Les spcifications du PE M proviennent de quatre documents :
RFC
1421, P a r t
I, M e s s a g e
E n c r y p tio n
and
A u th e n tic a tio n
PROCEDURES. C e d ocu m en t dfinit le chiffrem ent des messages et les procdures
d authentification ncessaires p o u r offrir sur P I n t e r n e t des services de courrier
lectroniqu e confidentialit renforce.

- R F C 1422, P a r t II, C e r t i f i c a t e - B a s e d K e y M a n a g e m e n t . Ce document


dfinit larchitecture et linfrastructure de la gestion de clefs bases sur des tech
niques de certification clef publique afin doffrir des informations sur les clefs
aux expditeurs et aux destinataires de messages.
- R F C 1423, P a r t I I I , A l g o r i t h m s , M o d e s , I d e n t i f i e r s . Ce document four
nit les dfinitions, les formats, les rfrences et les citations pour les algorithmes
cryptographiques, les modes d utilisation, ainsi que les identificateurs et para
mtres associs.
- R F C 1424, P a r t IV , K e y C e r t i f i c a t i o n a n d R e l a t e d S e r v i c e s . Ce docu
ment dcrit trois types de services pour le support de P E M : la certification de
clef, le stockage de la liste des certificats rvoqus (C R L ) et laccs cette liste.

Les certificats
PEM est compatible avec lenvironnement dauthentification dcrit dans [309] ; voir
aussi [828].PE M est une sur-couche de X .509 ; il tablit les procdures et les conven
tions pour une infrastructure de gestion de clefs utiliser avec P E M et, dans le futur,
avec d autres protocoles ( la fois des suites T C P /I P et ISO).
Linfrastructure de gestion de clefs instaure une seule source pour toutes les certifi
cations sur P I n t e r n e t . L Internet Policy Registration Authority (IP R A ) dict
tous les rglements qui sappliquent aux certifications dans la hirarchie. A partir de
la racine IP R A on trouve les Policy Certification Authorities (P C A ), dont cha
cune instaure et publie ses rglements pour lenregistrement des utilisateurs ou des
organisations. Chaque P C A est certifie par lIP R A . En dessous des P C A , les C A
certifient les utilisateurs et les entits subordonnes aux organisations (tels que les d
partements, bureaux, filiales). Initialement, la majorit des utilisateurs sont supposs
tre enregistrs au sein dune organisation.
Certaines P C A sont censes offrir la certification pour les utilisateurs qui ne font pas
partie dune organisation. Pour les utilisateurs qui veulent prserver leur anonymat tout
en ayant accs aux avantages du courrier confidentialit renforce de PE M , une ou
plusieurs P C A sont prvues pour tablir les rglements qui permettent lenregistrement
dutilisateurs ne voulant pas divulguer leur identit.

Messages PEM
Le cur dun message P E M est son format. La figure 24.4 montre un message chiffr en
utilisant la gestion de clefs clef secrte ; la figure 24.5 montre un message authentifi

Chapitre 24

608

Exemples de ralisation

BEGIN PRIVACY-ENHANCED MESSAGE----Proc-Type: 4,ENCRYPTED


Content-Domain: RFC822
DEK-Info: D E S - C B C ,F8143EDE5960C597
Originator-ID-Symmetric: linn@zendia.enet.dec.c o m ,,
Recipient-ID-Symmetric: linn@zendia.enet.dec.com,ptf-kmc,3
K e y - I n f o : D E S - E C B ,R S A - M D 2 ,9FD3AAD2F2691B9A,B70665BB9BF7CBCDA60195DB94F727D3
Recipient-ID-Symmetric: pem-dev@tis.com,ptf-kmc,4
K e y - I n f o : D E S - E C B ,RS A - M D 2 ,161A3F75DC82EF26,E2EF532C65CBCFF79F83A2658132DB47

LLrHB0eJzyhP+/fSStdW8okeEnv47jxe7SJ/iN72ohNcUk2jHEUSoHlnvNSIWL9M
8tEjmF/zxB+bATMtPjCUWbz8Lr9wloXIkjHUlBLpvXR0UrUzYbkNpk0agV2IzUpk
J6UiRRGcDSvzrsoK+oNvqu6z7Xs5Xfz5rDqUcMlKlZ6720dcBWGGsDLpTpSCnpot
dXd/H5LMDWnonNvPCwQUHt==
END PRIVACY-ENHANCED MESSAGE-----

ig

24.4 - Exemple de message encapsul ( clef secrte)

et chiffr utilisant la gestion de clefs clef publique et la figure 24.6 montre un message
authentifi mais non chiffr qui utilise la gestion de clefs clef publique.
Le premier champ est Proc-Type qui identifie le type de traitement effectu sur le
message. Il y a trois types possibles de messages. Lidentificateur ENCRYPTED signifie
que le message est chiffr et sign. Les identificateurs MIC-ONLY et MIC-CLEAR
indiquerait que le message est sign mais non chiffr. Les messages MIC-CLEAR
ne sont pas encods et ils peuvent tre lus par des logiciels non-PEM . Les messages
MIC-ONLY ont besoin d un logiciel P E M pour tre transforms afin dtre lisibles par
un tre humain. Un message PE M est toujours sign ; il est optionnellement chiffr.
Le champ suivant, Content-Domain spcifie le type de message. Il na rien voir
avec la scurit. Le champ DEK-Info donne ses informations sur la Data Exchange
Key (D E K , clef dchange de donnes), lalgorithme utilis pour chiffrer le texte et
nimporte quels paramtres associs cet algorithme de chiffrement. Seul le DES,
ou DES-CBC est spcifi. Le second sous-champ spcifie lIV. D autres algorithmes
pourraient lavenir tre spcifis pour PE M ; leur utilisation sera indique dans le
champ DEK-Info et dans d autres champs qui identifient les algorithmes.
Pour les messages avec gestion de clefs clef secrte (voir figure 24.4), O rig in a tor-ID-Symmetric est le champ suivant, avec trois sous-champs. Le premier sous-champ
identifie lexpditeur par une adresse de courrier lectronique unique. Le deuxime souschamp est optionnel et identifie lautorit qui a mis la clef d change (lIK dcrite ciaprs). Le troisime sous-champ est un sous-champ optionnel V e rsion /E x p ira tion .
En continuant avec le cas de la gestion de clefs clef secrte, chaque destinataire sont
associs les deux champs: R ecipient-ID -Sym m etric et K ey-Inf o . Le champ
R ecipient-ID -Sym m etric a trois sous-champs; ils identifient le destinataire de la
mme manire que le champ O riginator-ID -Sym m etric identifie lexpditeur.
Le champ K ey-Inf o spcifie les paramtres de la gestion de clefs. Ce champ a quatre
sous-champs. Le premier sous-champ donne lalgorithme utilis pour chiffrer la DEK.
Comme la gestion de clefs pour ce message est clef secrte, lexpditeur et le desti-

24-10

Privacy-Enhanced Mail ( P E M )

609

BEGIN PRIVACY-ENHANCED MESSAGE----Proc-Type: 4,ENCRYPTED


Content-Domain: RFC822
DEK-Inf o : D E S - C B C ,BFF968AA74691A C 1
Driginator-Certificate:
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGAlUEBhMCVVMxIDAeBgNV
BAoTFlJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQx0DM4MTdaFw05MzA5MDMx0DM4MTZaMEUx
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWNlcml0eSwgSW5jLjEU
MBIGAlUEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZH17i+
yJcqDtjJCowzTdBJrdAiLAnSC+Cnnj0JELyuQiBgkGrgIh3j8/xOfM+YrsyFlu3F
LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAAlkACKr0PqphJYwlj+YPtcIq
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
5XUXGx7qusDgHQGs7Jk9W8CWlfuSWUgN4w==
Key-Info: RSA,
I3rRIGXUGWAF8js5wCzRTkdh034PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+
wGrtiUm/ovtKdinz6ZQ/aQ==
Issuer-Certificate:
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGAlUEBhMCVVMxIDAeBgNV
BAoTFlJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
BgNVBAsTBFRMQOEwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc10TU5Wj BRMQsw
CQYDVQQGEwJVUzEgMB4GAlUEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
BgNVBAsTBkJldGEgMTEPMA0GAlUECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
XwJYCsnp61QCxYykN10DwutF/jMJ3kL+3PjYyH0wk+/9rLg6X65B/LD4bJHt05XW
cqAz/7R7XhjYCmOPcqbdzoACZtHETrKrcJiDYoP+DkZ8klgCk7hQHpbIwIDAQAB
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMG0x
dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nB07CMxpUVRBcXUpE+x
EREZd9++32ofGBIXaiaIn0gVUn00zSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
MIC-Info: RSA-MD5.RSA,
UdFJR8u/TIGhfH65ieewe210W4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexv
Aj RFbHoNPzBuxwmOAFeAOHJszL4yBvhG
Recipient-ID-Asymmetric:
MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWNlcml0eSwgSW5j
LjEPMAOGA HJECxMGQmV0YSAxMQ8wDQYDVQQLEwZ0TlRBUlk=,
66
K ey-Info: R S A ,
D6BS1ww9CTyHPt S3bMLD+L0hej dvX6QvlHK2ds2sQPEaXhX8EhvVphHYTjwekdWv
7xOZ3Jx2vTAhOYHMcqqCjA==
qeWlj/YJ2Uf5ng9yznPbtD0mYloSwIuV9FRYx+gzY+8iXd/NQrXHfi6/MhPfPF3d
jIqCJAxvld2xgqQimUzoSla4r7kQQ5c/Iua4LqKeq3ciFzEv/MbZhA==
END PRIVACY-ENHANCED MESSAGE-----

FlG. 24.5 - Exemple de message encapsul chiffr ( clef publique)

nataire doivent partager une clef commune. C est ce que lon appelle l Interchange
Key (IK ) qui est utilise pour chiffrer la D E K . La D E K peut soit tre chiffre avec le
DES en mode E CB (dnot DES-ECB ) ou avec le DES- triple (dnot DES-EDE ).
Le deuxime sous-champ spcifie lalgorithme pour le CIM (M IC). Cela peut tre soit
MD2 (dnot RSA-MD2 ) soit M D 5 (dnot RSA-MD5 ). Le troisime sous-champ,

Chapitre 24

610

Exemples de ralisation

BEGIN PRIVACY-ENHANCED MESSAGE-------Proc-Type: 4,MIC-ONLY


Content-Domain: RFC822
Originator-Certificate:
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGAlUEBhMCVVMxIDAeBgNV
BAoTFlJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQx0DM4MTdaFw05MzA5MDMx0DM4MTZaMEUx
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWNlcml0eSwgSW5jLjEU
MBIGAlUEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZH17i+
yJcqDtjJCowzTdBJrdAiLAnSC+Cnnj0JELyuQiBgkGrgIh3j8/x0fM+YrsyFlu3F
LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAAlkACKr0PqphJYwlj+YPtcIq
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
5XUXGx7qusDgHQGs7 Jk9W8 CW 1f u SWUgN4w==
Issuer-Certificate:
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGAlUEBhMCVVMxIDAeBgNV
BAoTFlJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
BgNVBAsTBFRMQ0EwHhcN0TEw0TAxMDgwMDAwWhcN0TIw0TAxMDcl0TU5WjBRMQsw
CQYDVQQGEwJVUzEgMB4GAlUEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
BgNVBAsTBkJldGEgMTEPMA0GAlUECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
XwJYCsnp61QCxYykN10DwutF/jMJ3kL+3PjYyH0wk+/9rLg6X65B/LD4bJHt05XW
cqAz/7R7XhjYCmOPcqbdzoACZtHETrKrcJiDYoP+DkZ8klgCk7hQHpbIwIDAQAB
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMG0x
dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nB07CMxpUWRBcXUpE+x
EREZd9++32ofGBIXaialn0gVUn00zSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
MIC-Info: R S A - M D 5 ,R S A ,
jV20fH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZA0VRZ5q5+Ej15bQvqNeqOUNQj r6
EtE7K2QDeVMCyXsdJlA8fA==
LSBBIGllc3NhZ2UgZm9yIHVzZSBpbiB0ZXN0aW5nLg0KLSBGb2xsb3dpbmcgaXMg
YSBibGFuayBsaW510g0KDQpUaGlzIGlzIHRoZSBlbmQuDQo=
END PRIVACY-ENHANCED MESSAGE-----

F i g . 24.6 - Exemple de message M IC -ONLY encapsul ( clef publique)

la D EK , et le quatrime sous-champ, le CIM , sont tous deux chiffrs avec lIK.


Les figures 24.5 et 24.6 montrent des messages avec une gestion de clefs clef pu
blique (appele asymtrique en nomenclature P E M ). Les en-ttes sont diffrents.
Dans les messages ENCRYPTED , aprs le champ DEK-Info , vient le champ
Originator-Certif icate . Le certificat est conforme au standard X .509 (voir
24.9). Le champ suivant est Key-Info qui comporte deux sous-champs. Le pre
mier spcifie lalgorithme clef publique utilis pour chiffrer la D E K ; actuellement
seul le R SA est offert. Le second sous-champ est la D EK chiffre avec la clef publique
de lexpditeur. Cest un champ optionnel, destin permettre lexpditeur de d
chiffrer son propre message dans le cas o celui-ci serait renvoy lexpditeur par le
systme de courrier. Le champ suivant Issuer-Certif icate est le certificat de
celui qui a sign le Originator-Certif icate .
En continuant avec le cas de la gestion de clefs clef publique, le champ suivant
est MIC-Info Le premier sous-champ donne lalgorithme utilis pour calculer le
CIM . Le deuxime sous-champ dsigne lalgorithme avec lequel le CIM a t sign. Le

24-10

Privacy-Enhanced Mail / P E M )

611

troisime sous-champ contient le C IM sign avec la clef prive de lexpditeur.


Toujours avec la gestion de clefs clef publique, les champs suivants dcrivent les
destinataires. Recipient-ID-Asymmetric et Key-Info sont deux champs pr
sents pour chaque destinataire. Le champ Recipient-ID-Asymmetric a deux souschamps. Le premier identifie lautorit qui a mis la clef publique du destinataire ; le
second est un sous-champ optionnel Version/Expiration Le champ Key-Info
spcifie les paramtres de la gestion de clefs: le premier sous-champ identifie lalgo
rithme utilis pour chiffrer le message et le second sous-champ est la DEK chiffre
avec la clef publique du destinataire.

Scurit de PEM
Les clefs R S A dans PE M peuvent avoir de 508 1024 bits. Cela devrait tre assez long
pour les besoins de scurit de n importe qui. Une attaque plus probable serait contre
le protocole de gestion des clefs. Martin peut voler votre clef prive
ne lcrivez
jamais nul part
ou bien il peut essayer de vous duper en vous faisant accepter une
fausse clef publique. Les rgles de certification des clefs de PE M rendent improbable
une telle attaque pour autant que les utilisateurs suivent scrupuleusement les bonnes
procdures, mais les gens ont une tendance naturelle tre ngligents.
Une attaque plus insidieuse consisterait pour Martin modifier la ralisation de P E M
qui tourne sur votre systme. La ralisation modifie pourrait subrepticement envoyer
Martin tout votre courrier chiffr avec sa clef publique. Il pourrait mme senvoyer
une copie de votre clef prive. Si la ralisation modifie fonctionne correctement, vous
ne serez pas au courant de ce qui se passe.
U ny a pas de vrai moyen de se prmunir contre ce genre dattaque. Vous pouvez utiliser
une fonction de hachage sens unique pour associer une empreinte lexcutable de
PEM . Ainsi, chaque fois que vous lexcutez vous pouvez vrifier lempreinte pour
dtecter une modification ventuelle. Mais Martin peut modifier le code de calcul de
lempreinte en mme temps quil modifie le code de PE M . Vous pourriez calculer
lempreinte de lempreinte, mais Martin peut modifier cela aussi. En fait, si Martin a
accs votre machine, il peut subvertir la scurit de PEM .
La morale de cette histoire est que vous ne pouvez jamais vraiment faire confiance
un morceau de logiciel si vous ne pouvez pas avoir confiance dans la machine qui
lexcutera. Pour la plupart des gens, ce type de paranoa est injustifi. Pour d autres,
cest trs concret.

T IS/P E M
r u s t e d I n f o r m a t i o n S y s t e m s , partiellement subventionne par lagence Advan
ced Research Projects Agency du Gouvernement amricain, a conu et ralis une

rfrence de PE M (T IS /P E M ). Dveloppe pour des plates-formes U NIX, elle a ga


lement t porte sous V M S, M S- D O S et MS W i n d o w s .
Bien que la spcification P E M nindique quune seule hirarchie de certification pour
liN T E R N E T , T IS /P E M autorise lexistence de plusieurs hirarchies de certification.
Les sites peuvent spcifier un ensemble de certificats qui doivent tre considrs comme
valides, y compris les certificats mis par eux-mmes. Un site nest pas oblig de se
joindre la hirarchie In t e r n e t pour utiliser T IS /P E M .

612

Chapitre 24

Exemples de ralisation

T IS /P E M est actuellem ent disp on ib le p o u r tou tes les organisations et tou s les citoyens
am ricains et canadiens qui en fon t la dem ande. T IS /P E M est distribu sous form e de
co d e source. Les personnes intresses doivent co n ta cte r : P r iv a c y -E n h a n c e d M a il,
T r u s te d I n fo r m a t io n S y s te m s , I n c . , 3060 W a sh in g ton Road (R t e . 9 7 ) ,
G len w ood , MD 2 1 7 3 8 , USA; +1 (3 0 1 ) 8 5 4 - 6 8 8 9 ; F a x: +1 (3 0 1 ) 8 5 4 - 5 3 6 3 ;
I n t e r n e t : p e m -in fo @ t is .c o m .

RIPEM
R IP E M est un programme crit par Mark R i o r d a n qui ralise les protocoles PEM.
Bien que ce programme ne soit pas techniquement pas dans le domaine public, il est
disponible publiquement et peut tre utilis sans paiement de royalties pour les appli
cations usage individuel non commerciales. Une licence dexploitation accompagne
la documentation.
Le code ne peut pas tre export hors des Etats-Unis et du Canada. Naturellement, les
lois du Gouvernement amricain ne sappliquent pas hors des Etats-Unis et les gens ont
ignor les rgles d exportation. Le code de R IP E M est disponible travers le monde
entier sur des tableaux d affichage. Le R IP E M /S IG , qui ne fait que des signatures
digitales, est exportable.
A la parution de ce livre, R IPE M nest pas une ralisation complte des protocoles
PE M ; il ne ralise pas les certificats pour les clefs d authentification.
Avant dcrire R IP E M , R i o r d a n a crit un programme similaire appel R PE M . Ce
dernier devait tre un programme du domaine public de courrier lectronique chiffr.
Pour viter les problmes de brevet, R i o r d a n avait utilis lalgorithme de R a b i n (voir
19.5). Mais P u b l i c K e y P a r t n e r s prtendit que leurs brevets sont assez larges
pour couvrir toute la cryptographie clef publique et a menac dattaquer en justice ;
R i o r d a n a arrt de distribuer R PE M .
R P E M n est plus vraim ent utilis. Il n est pas com patible avec R IPE M . Com m e
R IP E M peut tre utilis avec la bndiction de P u b l i c K e y P a r t n e r s , il n y a
pas de raison de lui prfrer R PE M .

24.11

Message Security Protocol (MSP)

Le Message Security Protocol (abrg M SP) est lquivalent militaire de PEM . Il a


t dvelopp par la NSA la fin des annes 80 dans le cadre du programme Secure
Data Network System (abrg SDNS). C est un protocole compatible X .400 au
niveau des applications pour protger le courrier lectronique. Le M SP sera utilis
pour signer et chiffrer les messages au sein du rseau Defense Message System
(D M S) du Dpartement de la Dfense amricaine.
Le protocole Preliminary Message Security Protocol (P M S P ), destin tre utilis
pour des messages non classs mais sensibles, est une version adapte pour fonctionner
avec X .400 et T C P /I P . Ce protocole est galement appel Mosaic .
Tout comme pour P E M , les applications logicielles M SP et PM SP sont flexibles et
conues pour adapter une varit d algorithmes des fonctions de scurit, y compris
la signature, le hachage et le chiffrement. P M SP fonctionnera avec la puce C a p s t o n e
(voir 24.17).

24-i 2

Pretty Good Privacy (PGP)

24.12

613

Pretty Good Privacy (PGP)

P r e t t y G o o d P r i v a c y (P G P ) est un programme gratuit de protection du courrier


lectronique conu lorigine par Philip ZlMMERMANN [1654|J1. P G P utilise IDEA
pour le chiffrement, R SA (avec des clefs allant jusqu 2047 bits) pour la gestion des
clefs et les signatures digitales, et M D5 comme fonction de hachage sens unique.
Les clefs publiques alatoires P G P utilisent un test de primalit probabiliste et ob
tiennent leurs germes initiaux en mesurant les intervalles entre les touches frappes
au clavier par lutilisateur. P G P engendre des clefs ID E A alatoires en utilisant la
mthode prsente dans lannexe C du document ANSI X 9.17 (voir 8.1) [57], avec
ID E A comme algorithme clef secrte au lieu du DES. P G P chiffre galement la clef
prive de lutilisateur en utilisant lempreinte dune phrase clef au lieu dun mot de
passe.
Les messages chiffrs par P G P ont une structure de scurit en couches. La seule chose
quun cryptanalyste puisse apprendre d un message chiffr est lidentit de lexpditeur,
pour autant quil connaisse lidentificateur de la clef du destinataire. Ce nest quaprs
que le destinataire a dchiffr le message quil peut apprendre qui la sign, sil est sign.
Comparez cette approche P E M qui laisse quand mme un bon nombre dinformations
dans len-tte sous forme non chiffre concernant lexpditeur, les destinataires et le
message lui-mme.
Laspect le plus intressant de P G P est son approche la gestion de clefs distribue
(voir 8.12). Il ny a pas d autorit de certification ; P G P a instaur la place un
climat de confiance. Chaque utilisateur engendre et distribue sa propre clef publique.
Les utilisateurs signent mutuellement leur clefs publiques, crant ainsi une communaut
dutilisateurs de P G P interconnects.
Par exemple, Alice peut donner physiquement sa clef publique Bernard. Il connat
Alice et donc signe sa clef publique. Puis il lui redonne la clef signe et en garde une
copie. Quand Alice veut communiquer avec Christine, elle lui envoie une copie de la
clef que Bernard a signe. Christine, qui a dj la clef publique de Bernard (elle la
eue un autre moment) et qui fait confiance Bernard pour certifier les clefs dautres
personnes, vrifie sa signature sur la clef dAlice et laccepte. Bernard a prsent Alice
Christine.
P G P n a pas mis en place de politique en ce qui concerne la confiance ; les utilisateurs
sont libres de dcider qui ils font confiance et qui ils ne font pas confiance. P G P
fournit les mcanismes pour associer la confiance aux clefs publiques et pour utiliser
cette confiance. Chaque utilisateur a toute une collection de clefs publiques signes quil
garde dans un fichier appel a n n e a u d e c le fs p u b liq u e s . Chaque clef de ce rseau a
un champ de validit de clef qui indique le niveau auquel lutilisateur particulier fait
confiance en la validit de la clef. Plus le niveau de confiance est lev, plus lutilisateur
pense que la clef est valide. Un champ de confiance de signature indique le niveau de
confiance accord au signataire pour certifier les clefs publiques d autres utilisateurs.
Enfin, un champ de confiance du propritaire indique le niveau auquel lutilisateur
particulier fait confiance au propritaire de la clef pour signer dautres clefs publiques ;
ce champ est gr manuellement par lutilisateur.
11. P G P n est pas dans le dom aine public. Il porte un copyright de Philip ZlMMERMANN et il est
disponible librem ent suivant les termes de la C o p y le ft G e n e r a l P u b lic L ic e n s e de la FREE
S o f t w a r e F o u n d a tio n .

Chapitre 24

Exemples de ralisation

La figure 24 7 montre ce quoi un tel modle pourrait ressembler pour un utilisateur


particulier, Alice. La clef d Alice est au sommet, la valeur de confiance du propritaire
est maximum. Alice a sign les clefs de Bernard, Christine, David, Etienne et Francis.
Elle fait confiance Bernard et Christine, et partiellement confiance David et
Etienne, pour signer les clefs publiques d autres personnes. De mme, elle fait confiance
Gabrielle, mme si elle na pas elle-mme sign sa clef.

ig

. 2 4 .7

- Modle de confiance de PGP

Deux signatures dignes de confiance peuvent tre suffisantes pour certifier une clef.
Alice pense que la clef de Karine est valide car David et Etienne lont signe. Ce nest
pas automatique avec P G P ; Alice peut rgler son propre niveau de paranoa.
Ce nest pas parce quAlice croit quune clef est valide quelle doit lui faire confiance
pour signer les clefs dautres personnes. Elle ne fait pas confiance Francis pour signer
les clefs publiques d autres personnes, mme si elle a elle-mme sign sa clef. Elle ne
fait pas confiance en la signature de Jean sur la clef de Martin, ni en celle de Karine

24-13

Cartes puce

615

sur la clef de Nathalie.


La clef d Olivier ne marche nulle part sur le rseau; peut-tre quAlice la eue sur un
serveur de clefs. P G P pense que la clef nest pas valide ; Alice doit soit dclarer la clef
valide, soit dcider de faire confiance lun des signataires de la clef.
Bien entendu, rien nempche Alice dutiliser la clef en laquelle elle na pas confiance. Le
travail de P G P est de lalerter que la clef nest pas digne de confiance, pas dempcher
les communications.
Le lien le plus vulnrable de tout ce systme est la rvocation de clefs : il est impossible
de garantir que personne nutilisera une clef compromise. Si la clef prive dAlice est
vole, elle peut envoyer ce quon appelle un C E R T I F I C A T D E R V O C A T I O N D E C L E F ,
mais comme la distribution des clefs est ad hoc et suit largement le bouche oreille, il
ny a pas de garantie que ce certificat atteindra quiconque a sa clef publique sur son
rseau. De plus, comme Alice doit signer le certificat de rvocation avec sa clef prive,
si elle 1 a perdue, elle ne peut pas la rvoquer.
La dernire version de P G P est 2.6.2. Une nouvelle version, P G P 3.0 est prvue pour
la fin 1995. Les changements dans la version 3.0 inclut des options pour les algorithmes
DES, SH A et de clefs publiques, une sparation du chiffrement et de la signature des
paires clef publique / clef prive , une amlioration des procdures de rvocation
des clefs, de meilleures fonctions de gestion de rseau de clefs, un A P I pour intgrer
P G P dans d autres programmes et un code de base compltement rcrit.
P G P est disponible sous M S -D O S , U NIX, M a c i n t o s h , A m i g a et A t a r i . Il est
gratuit pour un usage personnel, usage non commercial, et est disponible sur de
nombreux sites ftp dInternet. Pour charger P G P du M IT , accdez getpgp sur
net-dist.mit.edu, rpondez aux questions puis transfrez et changez le nom dans la
sance telnet. Il est aussi disponible sur ftp.ox.ac.uk, ftp.dsi.unimi.it, ftp.demon.co.uk,
CO M PU SERVE, A O L , etc. Pour les utilisateurs commerciaux amricains, P G P peut tre
achet - avec licence - pour peu prs 100 dollars auprs de lentreprise ViaCrypt, 9033
N 24th Ave., Phoenix, AZ, 85021 ; +1 (602) 944 0773 ; viacrypt@acm.org. Plusieurs
shareware sont disponibles pour aider lintgration de P G P sous M S -D O S , WIN
DOWS, M a c i n t o s h et UNIX.
Il existe plusieurs livres sur P G P [604, 1398, 1502]. Le code source a mme t publi
dans un livre [1655] dans le seul but de frustrer le Dpartement d Etat amricain qui
soutient encore que le code source est exportable sur papier mais pas lectroniquement.
En supposant que vous faites confiance ID E A , P G P est sans aucun doute le systme
de chiffrement le plus proche de la classe militaire.

24.13

Cartes puce

Une carte puce est une carte en plastique de la taille dune carte de crdit avec une
puce lectronique. C est une vieille ide (les premiers brevets ont t dposs il y a
20 ans), mais des limitations pratiques ne les ont rendues faisables quil y a environ
cinq ans. Depuis, elles ont littralement explos, surtout en Europe. Beaucoup de pays
utilisent des cartes puce dans les cabines tlphoniques. Il y a aussi des cartes de crdit
puce, ainsi que des cartes puce pour d autres usages. Les compagnies amricaines
de cartes de crdit tudient cette technologie, et dici quelques annes, les amricains
auront des cartes puce dans leurs portefeuilles.

616

Chapitre 24

Exemples de ralisation

Une carte puce contient un petit ordinateur (habituellement un microprocesseur


8 bits), de la R A M ( peu prs un quart de kilo-octet), de la R O M (environ 6
8 kilo-octets) et soit de lE P R O M ou de lE E P R O M (quelques kilo-octets). Les
gnrations futures de cartes puce auront sans aucun doute plus de capacit, mais
des limitations physiques rendent son expansion difficile. La carte a ses propres systme
dexploitation, programmes et donnes. (Ce quelle na pas est la puissance ; ce quelle
obtient nanmoins lorsquon la branche un lecteur.) De plus, elle est sre. Dans un
monde o vous ne pouvez pas faire confiance lordinateur, au tlphone ou quoi
que ce soit de quelquun dautre, vous pouvez toujours avoir confiance en une carte que
vous gardez avec vous dans votre portefeuille.
Les cartes puce peuvent avoir diffrents protocoles et algorithmes cryptographiques
prprogramms. Elles peuvent tre configures en porte-monnaie lectronique et rece
voir ou dpenser de largent lectronique. Elles peuvent oprer avec des protocoles d au
thentification divulgation nulle ; elles peuvent avoir leurs propres clefs de chiffrement.
Elles pourraient signer des documents, dverrouiller des applications sur ordinateur.
Quelques cartes puce sont censes tre inviolables ; cela protge souvent linstitution
qui a fournit les cartes. Une banque ne voudrait srement pas que vous puissiez pirater
ses cartes puce afin de dtourner de largent.
Les cartes puce sont trs intressantes et beaucoup dinformation leur sujet sont
disponibles. Un bon article sur la cryptographie dans les cartes puce est [673].
CARTES est une confrence qui se tient Paris chaque mois doctobre et
CardTech se tient Washington, D.C. en avril. Les tenues de deux autres conf
rences sur les cartes puce sont [35, 3]. Il y a des centaines de brevets sur les cartes
puce, la plupart dposs par des entreprises europennes. Un article intressant sur les
applications futures possibles (vrification d intgrit, pistes daudit, protection contre
la copie, argent lectronique, adressages srs) est [1630].

24.14

Public-Key Cryptography Stan


dards (PKCS)

Les PK C S, standards de la cryptographie clef publique, sont les fruits d une tentative
de R S A D a t a S e c u r i t y , I n c . pour fournir une interface standard industrielle pour
la cryptographie clef publique. D habitude, ce type de dmarche est effectu par
ANSI, mais, en considrant la situation politique en ce qui concerne la cryptographie,
les gens de R SA D S I ont prfr le faire eux-mme. En travaillant en collaboration
avec de nombreuses entreprises, ils ont dvelopp une srie de standards. Certains sont
compatibles avec dautres, mais pas tous.
Ce ne sont pas des standards dans le sens propre du terme ; aucun office de standar
disation ne sest runi pour voter PK C S. C'est apparemment R SA D SI qui dtient
le seul pouvoir de dcision sur ses standards, et ils publierons des rvisions en temps
voulu [811].
Nanmoins, il y a l beaucoup de choses intressantes. Si vous ne savez pas quelle
syntaxe ou quelle structure de donnes utiliser pour programmer de la cryptographie
clef publique, ces standards sont sans aucun doute aussi bon que nimporte quel autre.
Qui plus est, comme ce ne sont pas de vrais standards, vous pouvez les modifier
volont afin quils rpondent vos besoins.

24-14

* Public-Key Cryptography Stan-

dards ('PKCS )

617

Les lignes suivantes dcrivent brivement chaque P K C S (PK C S # 2 et PK C S # 4 ont


t inclus dans P K C S # 1 ) .
PKCS # 1 [919] dcrit une mthode pour le chiffrement et le dchiffrement R SA ,
principalement pour construire les signatures et les enveloppes lectroniques dcrites
dans PK C S # 7 . Pour les signatures lectroniques, le message est hach puis chiffr
avec la clef prive du signataire. Le message et le hachage sont reprsents ensemble
comme on lexplique dans P K C S # 7 . Pour les enveloppes lectroniques (messages
chiffrs), le message est dabord chiffr avec un algorithme clef secrte, et la clef du
message est chiffre avec la clef publique du destinataire. Les message et clef chiffrs sont
reprsents ensemble conformment la syntaxe de P K C S # 7 . Ces deux mthodes sont
compatibles avec les standards PE M . P K C S # 1 dcrit aussi une syntaxe, identique
celle de X .509 et de PE M , pour les clefs publiques et prives RSA et pour les trois
algorithmes de signature (M D 2 et R SA , M D4 et R SA , M D5 et R S A ) signant les
certificats.
PK C S # 3 [921] dcrit une mthode pour appliquer lchange de clefs de DiffieHellman .
PKCS # 5 [922] dcrit une mthode pour chiffrer des messages avec une clef secrte
drive dun mot de passe. Elle utilise soit M D2 soit M D 5 pour driver la clef du
mot de passe, et chiffre avec le DES en mode C B C . Cette mthode est essentiellement
voue chiffrer les clefs prives quand on les transfre d un systme informatique vers
un autre, mais peut tre utilise pour chiffrer des messages.
PK C S # 6 [923] dcrit une syntaxe standard pour les certificats clef publique. La
syntaxe est une sur-couche dun certificat X.509, ainsi ce type de certificat peut tre
extrait si ncessaire. Bien plus que lensemble X .509, des qualits supplmentaires
tendent le processus de certification au-del de la seule clef publique. Celles-ci incluent
dautres informations, telle que ladresse lectronique.
PK C S # 7 [924] est une syntaxe gnrale pour des donnes qui peuvent tre chiffres
ou signes, telles que des enveloppes ou des signatures lectroniques. La syntaxe est
rcursive, ainsi les enveloppes peuvent tre empiles, ou quelquun peut signer des don
nes dj chiffres. La syntaxe a aussi dautres qualits, telle que la datation, pour tre
authentifie avec le contenu du message. P K C S # 7 est compatible avec PE M et les
messages signs et chiffrs peuvent tre convertis en messages P E M sans aucune opra
tion cryptographique, et vice-versa. PK C S # 7 supporte de nombreuses architectures
(PE M en est une) pour la gestion de clefs de certificats.
PK CS # 8 [925] dcrit une syntaxe pour linformation clef prive (incluant une clef
prive et un ensemble de qualits) et une syntaxe pour les clefs prives chiffres. PK CS
# 5 peut tre utilis pour chiffrer linformation clef prive.
PK C S # 9 [92G] dfinit les types de qualits slectionnes pour les certificats tendus
de PK C S # 6 , les messages signs lectroniquement de PK C S # 7 et linformation
clef prive de P K C S # 8 .
PK C S # 1 0 [920] dcrit une syntaxe standard pour les demandes de certification.
Une certification comprend un nom, une clef publique et (en option) un ensemble de
qualits, collectivement signs par la personne la demande de la certification. Les
demandes de certification sont envoyes une autorit de certification qui transforme
la demande soit en un certificat clef publique X.509, soit en un certificat P K C S # 6 .
PK C S # 1 1 [927], le bon cryptographique au standard A P I, spcifie une interfaceprogramme appele Cryptoki pour les matriels cryptographiques portables de

Chapitre 24

618

Exemples de ralisation

tout genre. Cryptoki prsente un modle commun de logique, permettant aux


applications de raliser des oprations cryptographiques sur du matriel portable sans
connatre les dtails de la technologie servant de base. Le standard dfinit aussi le profil
des applications : ensembles d algorithmes quun matriel peut accepter.
P K C S # 1 2 [928] dcrit une syntaxe pour stocker dans un logiciel les clefs publiques
dun utilisateur, les clefs prives protges, les certificats et dautres informations cryp
tographiques. Le but est de standardiser un dossier clef secrte parmi toute une varit
dapplications.
Ces standards sont dtaills mais pas exhaustifs. Beaucoup de sujets sont hors
de leurs champs d action : le problme de la nomination, des considrations noncryptographiques concernant la certification, les longueurs de clefs et les conditions
de diffrents paramtres. Ce que le P K C S fournit sont un format pour transfrer des
donnes bases sur la cryptographie clef publique et une infrastructure pour supporter
ce transfert.

24.15

Systme de paiement lectronique


universel

Le systme de paiement lectronique universel (UEPS pour Universal Electronic


Payment System ) est une carte puce bancaire, lorigine dveloppe pour les
parties rurales de lAfrique du Sud, mais finalement adopte par toutes les banques
majeures du pays. Au dbut 1995, environ 2 millions de cartes ont t distribues dans
ce pays. Elle a aussi t adopte en Namibie et est distribue par au moins une banque
en Russie.
Le systme procure une carte dbit sre, bien adapte dans des rgions o le sys
tme tlphonique dficient ne permet pas la vrification en ligne. Les clients et les
commerants ont des cartes ; les clients utilisent leurs cartes pour transfrer de largent
vers les commerants. Ces derniers mettent alors leurs cartes dans un tlphone et
dposent largent sur leurs comptes bancaires ; les clients peuvent mettre leurs cartes
dans un tlphone et transfrer de largent sur leur carte. Le but nest pas de garder
lanonymat, mais dempcher la fraude.
Voici le protocole de communication entre la cliente Alice et le marchand Bernard. (En
fait, Alice et Bernard branchent juste leur carte dans une machine et attendent que la
transaction se fasse.) Quand Alice a reu sa carte pour la premire fois, on lui a donn
une paire de clefs K\ et K 2 ; la banque les calcule partir de son nom et de quelques
fonctions secrtes. Seules les cartes des commerants ont les secrets ncessaires pour
oprer avec les clefs des clients.
1 Alice envoie Bernard son nom elle, A, son nom lui, B , et un nombre
alatoire, Ra, chiffr en utilisant le DES : d abord avec K 2 puis avec K\. Elle
lui envoie aussi son nom en clair.
A , E k 1 ( E k 2 ( A , B , Ra ))

2 Bernard calcule K i et K 2 partir du nom d Alice. Il dchiffre le message,


confirme que A et B sont corrects, puis chiffre le second message en clair
dAlice avec K 2.

24-15

Systme de paiement lectronique universel

619

E k 2(A, B, Ra ).
Bernard nenvoie pas ce message Alice; 56 bits du texte chiffr deviennent
K 3. Bernard envoie Alice son nom lui, son nom elle et un autre nombre
alatoire, R b , chiffr en utilisant le DES : dabord avec K 3 puis avec K\.
E k i (E k 3(B ,A,Rb ))-

3 Alice calcule K 3 de la mme manire que Bernard. Elle dchiffre le message de


Bernard, confirme que B et A sont corrects, puis chiffre le message en clair de
Bernard avec K 3.
E k 3(B, A, Rb )Alice nenvoie pas ce message Bernard; 56 bits du texte chiffr deviennent
K, i- Alice envoie Bernard son nom elle, son nom lui et un contrle digital,
C . Ce contrle contient les noms de lenvoyeur et du destinataire, une date,
un contrle de nombre, un montant et deux C A M , tous chiffrs avec le DES :
dabord avec K 4 puis avec K\. Un des C A M peut tre vrifi par la banque
dAlice, et lautre peut seulement tre vrifi par le centre dautorisation. Alice
dbite son compte du montant correcte.
E Kl (E k 4(A,B,C)).
4 Bernard calcule K 4 de la mme manire que Alice. Si tous les noms et le
contrle correspondent, il laccepte pour le paiement.

Un aspect trs intressant de ce protocole est que la clef de chiffrement pour chaque
message dpend du message prcdent. Chaque message double en tant quauthentifiant
de tous les prcdents messages. Ceci implique quon ne peut pas rejouer un ancien
message ; le destinataire ne pourrait jamais le dchiffrer. Je suis enthousiasm par cette
ide et espre quelle sera plus largement utilise une fois quelle sera plus connue.
Un autre aspect trs intressant de ce protocole est quil oblige les applications tre
correctes. Si le concepteur de lapplication n introduit pas correctement le protocole, il
ne marchera pas.
Les deux cartes gardent en mmoire le relev de toutes les transactions. Quand les
cartes sont mises en ligne pour communiquer avec la banque (quand le commerant
dpose son argent et que le client en retire), la banque charge ce relev dans un but de
contrle.
La puce rsistante linvestigation empche les participants daltrer les donnes;
Alice ne peut pas changer la valeur de sa carte. Des recherches intensives fournissent
les donnes pour identifier et tracer les transactions frauduleuses. U y a des secrets
universels dans les cartes (les clefs C A M dans les cartes-clients, les fonctions pour
convertir les noms des clients en K et K 2 dans les cartes-commerants) mais ils sont
supposs tre difficile dcouvrir.

Chapitre 24

620

Exemples de ralisation

Ce schma nest pas suppos tre parfait, simplement plus sr que les traditionnels
contrles sur papier ou cartes de dbit. La menace de la fraude ne vient pas de puis
sances militaires rivales, mais de clients et commerants opportunistes. UEPS protge
contre ce type d abus.
L change de messages est un excellent exemple de protocole robuste : chaque message
nomme les deux parties, inclut des informations uniques pour confirmer lactualit et
dpend explicitement de tous les messages prcdents.

24.16

Clipper

La puce C l i p p e r (aussi appele M Y K -7 8 T ) a t conue par la NSA, est du type VLSI


rsistante linvestigation et est ddi au chiffrement des conversations vocales ; cest
une des deux puces qui applique le standard de chiffrement par clefs sous dpt (EES
pour Escrowed Encryption Standard ) du gouvernement amricain [1173], VLSI
Technologies, Inc. fabrique la puce, et Mykotronx, Inc. la programme. Pour commencer,
la puce C l i p p e r sera intgre dans le modle 3600 du dispositif de scurit du tlphone
d A T & T (voir 24.18). La puce utilise lalgorithme de chiffrement S K IP J A C K (voir
13.12), conu par la NSA et class algorithme secret de chiffrement de clefs, en mode
O F B seulement.
Laspect le plus controvers de la puce C l i p p e r , et de tout lEES, est le protocole de
dpt de clef (voir 4.14). Chaque puce a une clef spciale, qui nest pas ncessaire pour
les messages. Cette clef est utilise pour chiffrer une copie de la clef utilise par chaque
utilisateur pour chiffrer ses messages. Lors du processus de syncronisation, la puce
C l i p p e r mettrice gnre et envoie un champ daccs de respect de la loi (L E A F pour
Law Enforcement Access Field ) la puce C l i p p e r rceptrice. Le L E A F contient
une copie de la clef de sance courante, chiffre avec une clef spciale (appele clef
d unit). Ceci permet au personnel du gouvernement12 de dcouvrir la clef de sance
et ainsi dcouter le contenu de la conversation.
D aprs le directeur du N IST [802] :
Un systme de dpt de clefs est prvu de manire ce que la puce
C l i p p e r soit utilise pour protger la vie prive des citoyens amricains
respectueux des lois. Chaque dispositif contenant la puce aura deux clefs
uniques, des nombres qui seront ncessaires aux agences autorises du gou
vernement pour dchiffrer les messages chiffrs avec le dispositif. Quand le
dispositif sera fabriqu, les deux clefs seront dposes sparment dans deux
bases de donnes de dpt de clefs mises en place par lattorney gnral.
Laccs ces clefs sera limit aux officiels du gouvernement qui disposent
dune autorisation lgale pour placer une coute.
Le gouvernement veut aussi encourager la vente de tlphones quips de cette puce
ltranger ; personne ne sait ce qui pourrait arriver ces bases de donnes de dpt de
clefs.
En laissant de ct la politique, la structure interne du LE A F vaut la peine que nous
nous y attardions [802, 1174, 1596, 465, 114, 468]. Le LE A F est une chane de 128 bits
qui contient assez dinformations pour permettre aux services de scurit de trouver
12. N o te d u tra d u cte u r : il s a g it ici d u G o u v e rn e m e n t a m rica in , d u m oin s ju s q u p rsent.

24-16

621

C l ip p e r

la clef de session, K s , en supposant que les deux agences d e d p t de clefs en


charge des bases de donnes cooprent. Le L E A F contient un identifiant dunit de
32 bits, U, unique pour la puce C l i p p e r . Il contient aussi la clef de sance courante
de 80 bits chiffre avec la clef dunit unique de la puce, Kjj, et une somme de contrle
de 16 bits, C , appele identifiant de dpt. Cette somme de contrle est une fonction
de la clef de sance, de lIV et probablement dautres informations. Ces trois champs
sont chiffrs avec une famille fixe de clefs, K f , partage par toutes les puces C l i p p e r
interoprables. La famille de clefs, les modes de chiffrement utiliss, les dtails de la
somme des contrles et la structure exacte du L E A F sont tous secrets. Cela ressemble
probablement :
E k , ( E K u ( K s ,U,C))
K f est programm dans la puce C l i p p e r au niveau de lusine. Cette clef est alors divi
se en deux (voir 3.5) et est stocke dans deux bases de donnes de dpt diffrentes,
gardes par deux agences de dpt diffrentes.
Si Estelle veut obtenir K s partir du L E A F , elle doit dabord dchiffrer le LEAF
avec Kp et retrouver U. Puis elle doit prsenter un ordre judiciaire chaque agence
de dpt, qui chacune lui donnera une moiti de K f pour le U donn. Estelle combine
par ou exclusif les deux moitis pour obtenir K f , puis elle utilise K f pour obtenir
K s , et K s pour espionner la conversation.
La somme de contrle est conue de faon ce que personne ne puisse contourner ce
schma ; la puce C l i p p e r rceptrice ne dchiffrera pas si cette somme de contrle ne
correspond pas. Nanmoins, il ny a que 216 valeurs possibles de sommes de contrle, et
un faux LE A F avec une somme de contrle correcte mais avec une mauvaise clef peut
tre trouv en peu prs 42 minutes [195]. Ce qui nest pas dune trs grande efficacit
pour les conversations vocales en mode C l i p p e r . D u fait que le protocole dchange
de clefs nest pas partie intgrante de la puce C l i p p e r , une attaque exaustive de 42
minutes doit tre mene aprs lchange de clefs ; elle ne peut pas tre mene avant
lappel tlphonique. Cette attaque peut fonctionner lors de transmissions de facsimils
ou avec la carte Fortezza (voir 24.17).
En principe, la puce C l i p p e r est rsistante linvestigation contre des adversaires
trs sophistiqus et trs bien financs [1174], mais des rumeurs disent que les Sandia
National Laboratories ont russi. Mme si ces rumeurs sont fausses, je suis persuad
que le plus grand constructeur de puces dans le monde peut violer la puce C l i p p e r ;
cest juste une question de temps avant que quelquun avec la bonne combinaison de
ressources et dthiques ny arrive.
Dnormes problmes de respect de la vie prive sont associs ce schma. Il y a de
nombreux groupes dfenseurs de la libert civile qui luttent activement contre tout
mcanisme de dpt de clef qui donnerait le droit au gouvernement despionner les
citoyens. Mais le problme est que cette ide nest jamais passe par le Congrs; le
NIST a publi le standard de chiffrement par clefs sous dpt en tant que FIPS [1173],
court,-cicuitant ainsi cet irritant processus lgislatif. A lheure actuelle, il semble que
lEES meurt dune mort lente et douce, mais les standards ont leur manire de vous
surprendre.
Le tableau 24.2 donne la liste des diffrentes agences participant ce programme.
Quelquun veut-il porter un jugement critique sur le fait que les deux agents de dpts
soient dans la branche excutive, ou sur le fait quils ne connaissent rien propos des
demandes d coutes et ne font que les approuver aveuglment, ou sur le fait que le

Chapitre 24

622

Exemples de ralisation

gouvernement impose un algorithme secret comme un standard commercial?

Tab.

24.2 - A g e n c e s

p a r t ic ip a n t

l EES

Ministre de la Justice Sponsor du systme et agent de famille de clefs


NIST Directeur de programme et agent de dpt
FBI Utilisateur du dchiffrement et agent de famille de clefs
Ministre des finances Agent de dpt
NSA Dveloppeur de programme
De toutes faons, lappication de C l i p p e r soulve dj assez de problmes pour sin
terroger de sa valeur en com' de justice. Souvenez-vous, C l i p p e r ne fonctionne quen
mode O FB. Malgr tout ce quon a pu vous dire de contraire, cela ne garantit pas
lintgrit et lauthentification. Imaginez quAlice soit en procs et quun appel tl
phonique chiffr en mode C l i p p e r soit une pice conviction. Alice affirme quelle
na jamais fait cet appel ; la voix nest pas la sienne. Lalgorithme de compression du
tlphone est si mauvais quil est dur de pouvoir reconnatre la voix dAlice, mais lac
cusation soutient que comme seule la clef sous dpt d Alice peut dchiffrer lappel,
alors il a d tre pass partir de son tlphone.
Alice affirme que lappel a t fauss de la manire suivante [993, 1351] : ayant les
textes chiffr et en clair, il est possible de les combiner par ou exclusif pour obtenir
le flux de codons. Celui-ci peut alors tre combin par ou exclusif avec un texte en
clair entirement diffrent pour former un texte chiffr fauss, qui peut ensuite tre
convertit en texte en clair fauss quand il passe par le dchiffrement C l i p p e r . Vrai ou
faux, cet argument pourrait facilement instaurer le doute dans lesprit des jurs afin
de ne pas retenir lappel tlphonique comme preuve.
Une autre attaque, appele attaque squeeze , permet Alice de piger Bernard. Voici
comment [577] : Alice appelle Bernard en utilisant C l i p p e r . Elle sauvegarde une copie
du L E A F de Bernard ainsi que de la clef de sance. Puis elle appelle Christine (quelle
sait mise sur coute). Pendant le rglage des clefs, Alice force la clef de sance tre
identique celle quelle a utilise avec Bernard ; cela exige de pirater le tlphone, mais
ce nest pas dur. Enfin, au lieu de lui envoyer son L E A F , elle envoie celui de Bernard.
Le LE A F est valide, donc le tlphone de Christine ne remarquera rien. Maintenant,
elle peut dire ce quelle veut Christine; quand la police dchiffrera le LE A F, elle
trouvera que cest celui de Bernard. Mme si Bernard na pas t pig par Alice, le
simple fait quil puisse dire cela en cour de justice contrecarre le but du schma.
Les autorits reprsentant la loi aux Etats-Unis ne devraient pas pouvoir rassembler des
informations dans des enqutes criminelles qui sont inutiles lors dun jugement. Mme
si le dpt de clefs tait une bonne ide, le L E A F en est une mauvaise application.

24.17

Capstone

C a p s t o n e (aussi appele M Y K -80) est lautre puce cryptographique VLSI dveloppe


par la NSA qui applique le standard de chiffrement par clefs sous dpt du gouverne
ment amricain [1173]. C a p s t o n e inclut les fonctions suivantes [1170, 468] :

- Lalgorithme

S K IP J A C K

dans les quatre modes basiques: E C B , C B C , C FB et

24-18

Modle 3600 du dispositif de scurit du tlphone dA T & T

623

OFB;
- Un algorithme d change de clefs clef publique K E A , probablement D i f f i e H ellm an ;

- Lalgorithme de signature numrique D S A ;


- L algorithme de hachage sr SHA ;
- Un algorithme dexponentiation polyvalent ;
- Un gnrateur de nombres alatoires polyvalent utilisant une vraie source de bruit
blanc.
C a p s t o n e fournit la fonctionnalit cryptographique ncessaire pour un commerce lec
tronique sr et pour dautres applications informatiques. La premire application de
C a p s t o n e est dans la carte P C M C IA appele Fortezza . (Autrefois, elle sappelait
Tessera jusqu ce quune compagnie appele Tessera, Inc. se plaigne.)
La NSA a pens rallonger la somme des contrles du L E A F de C a p s t o n e dans les
versions de commercialisation des cartes Fortezza , afin de contrecarrer les attaques
exaustives contre le L E A F dont nous avons dj discut. A la place, ils ont ajout
une fonction qui annule la carte aprs 10 mauvais LE A F. Cela ne fait quaugmenter
le temps ncessaire pour trouver un L E A F valide de 10 pourcents, 46 minutes. Cela
ne mimpressionne pas.

24.18

Modle 3600 du dispositif de scurit


du tlphone dAT& T

Le dispositif de scurit du tlphone d A T & T (T S D pour Tlphon Security Devi


ce ) est un tlphone C l i p p e r . En ralit, il existe quatre modles de T S D . Un premier
inclut la puce C l i p p e r , un second renferme un algorithme de chiffrement exportable
brevet A T & T , un troisime renferme un algorithme brevet pour un usage domes
tique plus un algorithme exportable, et un quatrime inclut les algorithmes C l i p p e r ,
domestique et exportable.
Les T SD utilisent une clef de sance diffrente chaque appel tlphonique. Une paire
de T S D gnre une clef de session en utilisant lechange de clefs D i f f i e - H e l l m a n ,
indpendant de la puce C l i p p e r . Comme D i f f i e - H e l l m a n nintgre pas dauthenti
fication, le T SD a deux mthodes pour djouer une attaque de lintercepteur.
La premire est un cran. Le TSD hache la clef de session et affiche cette empreinte
sur un petit cran avec un nombre hexadcimal quatre chiffres. Les personnes qui
conversent devraient confirmer que leurs crans affichent la mme chose. La qualit
dcoute est assez bonne pour pouvoir reconnatre la voix de son correspondant.
Estelle a toujours une attaque possible. Imaginez-la au beau milieu de la converstation
entre Alice et Bernard. Elle utilise un T S D en ligne avec Alice et un T SD modifi en
ligne avec Bernard ; entre les deux, elle relie les appels tlphoniques. Alice essaie dtre
prudente. Elle gnre une clef comme dhabitude, except quEstelle se fait passer pour
Bernard. Estelle obtient la clef, et en utilisant le T S D modifi, elle force la clef quelle

624

Chapitre 24

Exemples de ralisation

gnre avec Bernard avoir la mme valeur de hachage. Cette attaque ne semble peuttre pas tre probable, mais le T S D utilise une variante du protocole cliquets pour
la djouer.
Le T S D gnre des nombres alatoires en utilisant une source de bruits et un ampli
ficateur rtroaction numrique. Ceci cr un flot de bits, qui est ensuite transform
en bruit blanc par filtrage au moyen dun processeur de signaux numriques.
Malgr tout cela, le manuel du TSD ne parle absolument pas de scurit. En fait, il
dit [75] :
A T & T ne garantit pas que le T SD rsistera une attaque cryptanalytique d une transmission chiffre mene par une agence gouvernementale,
ses agents, ou une tierce personne. De plus, A T & T ne garantit pas que le
T SD rsistera une attaque utilisant des mthodes qui court-circuitent le
chiffrement.

Chapitre 25

Politique
25.1

National Security Agency (NSA)

La NSA(les jeux de mots No Such Agency ou Never Say Anything 1 ne sont plus
souvent utiliss) est lorganisme officiel de scurit du gouvernement amricain. Le pr
sident Harry T r u m a n la cre en 1952 sous le Dpartement de la Dfense et, pendant
de nombreuses annes, son existence mme a t garde secrte. La NSA renseigne sur
les signaux, son mandat est d'couter et de dcoder toutes les communications entrant
aux Etats-Unis et en sortant, qui pourraient prsenter un intrt pour la scurit du
pays.
Les paragraphes suivants sont extraits de la charte originelle de la NSA, signe par le
Prsident T r u m a n en 1952 puis classe pendant de nombreuses annes [1543] :
La mission C O M IN T de lAgence nationale de scurit (N SA) est de pro
curer une organisation efficace et unifie ainsi quun contrle des activits
de renseignement des communications des Etats-Unis diriges contre des
gouvernements trangers, afin de prvoir une politique et des procdures
oprationnelles adaptes. Tel quutilis dans cette directive, le ternie ren
seignement des communications ou C O M IN T (pour Communication
Intelligence ) comprend toutes les procdures et mthodes utilises pour
linterception de communications autres que la presse trangre et les mis
sions de propagande, ainsi que lobtention d informations de telles com
munications par une autre personne que son destinataire, mais proscrit la
censure de mme que la production et la dissmination de renseignements.
La nature spciale des agents du C O M IN T implique quils soient, en
tout point, considrs hors du cadre des autres activits gnrales de ren
seignement. Les ordres, directives, politiques ou recommandations dune
quelconque authorit de la Branche Excutive concernant le rassemble
ment, la protection, la scurit, le maniement, la dissmination ou luti
lisation de renseignements, et/ou de matriels classs, ne doivent pas tre
applicables aux agents du C O M IN T , moins que ce ne soit spcifique
ment, mentionn et ordonn par une authorit dpartementale comptente
1. Note du traducteur : Surtout pas une telle agence et Navouez jamais rien .

626

Chapitre 25

Politique

reprsente au Bureau. Les autres directives du National Security Council


Intelligence au Directeur de la Central Intelligence et les directives qui en
dcoulent doivent tre considres comme non-applicables aux activits du
C O M IN T , moins que le National Security Council ait rendu sa directive
spcifiquement applicable au C O M IN T .
La NSA mne de la recherche en cryptologie, la fois pour concevoir des algorithmes
srs afin de protger les communications amricaines et pour concevoir des techniques
de cryptanalyse permettant d couter les communications des autres. La NSA est
connue pour tre le plus gros employeur de mathmaticiens au monde ; elle est gale
ment le plus gros acheteur de matriel informatique au monde. La N SA possde une
expertise cryptographique qui est probablement en avance de nombreuses annes sur
ce qui se fait de mieux dans le domaine public (en algorithmes, mais probablement
pas en protocoles), et elle peut certainement casser de nombreux systmes utiliss en
pratique. Mais, pour des raisons de sret nationale, presque toutes les informations
concernant la NSA, mme son budget, sont classes secrtes. (Son budget pourrait
slever 13 milliards de dollars par an, incluant la participation militaire dans les
projets et le personnel de la N SA, et pourrait employer 16000 personnes.)
La NSA utilise sa puissance pour restreindre la disponibilit de la cryptographie au
sein du public vitant ainsi que d autres nations puissent employer des mthodes de
chiffrement que la NSA ne peut pas casser. James MASSEY dcrit cette lutte entre la
recherche acadmique et la recherche militaire en cryptographie [1013] :
Si lon considre que la cryptographie est la prrogative du gouverne
ment, on accepte que la plupart de la recherche en ce domaine se droule
derrire des portes closes. Sans aucun doute, le nombre de travailleurs enga
gs aujourdhui dans ce type de recherche cryptologique dpasse largement
le nombre de ceux engags dans la recherche cryptologique ouverte. Ce
nest que depuis 10 ans, en fait, que la recherche cryptologique ouverte se
rpand. Il y a eu, et il continuera dy avoir, des conflits entre ces deux com
munauts de recherche. La recherche ouverte est une qute commune de
la connaissance qui dpend de faon vitale du libre-change des ides par
le biais des prsentations lors des confrences ou des publications dans les
journaux scientifiques. Mais est-ce quune agence gouvernementale, char
ge de casser les algorithmes de chiffrement des autres nations, peut en
courager la publication d un algorithme de chiffrement quelle ne peut pas
casser? Est-ce quun chercheur peut en gardant bonne conscience, publier
un tel algorithme qui pourrait miner lefficacit des casseurs dalgorithmes
de chiffrement de son propre gouvernement? On pourrait argumenter que
la publication dun code dont il est prouv quil est sr forcerait tous les
gouvernements se comporter en gentlemen, mais il faut tre conscient du
fait que la recherche ouverte en cryptologie est lourde de considrations
politiques et thiques d une importance nettement plus grande que dans la
plupart des autres domaines scientifiques. Le miracle nest pas quil y ait
eu conflits entre les agences gouvernementales et les chercheurs publics en
cryptologie mais plutt que ces conflits (du moins ceux dont on a connais
sance) aient t si peu nombreux et si modrs.
Jam es B A M FO R D a crit un livre fascinant sur la

NSA: The Puzzle Palace [86]

25.2

National Computer Security Center ( N C S C )

rcemment mis jour par B a m f ORD et Wayne M

adsen

627
[87]

Commercial COM SEC Endorsement Program (CCEP)


Le C C E P qui est un programme dapprobation commerciale, de nom de code Overtake,
est une initiative de la NSA prise en 1984 afin de faciliter le dveloppement dordina
teurs et de produits de communications munis dune cryptographie intgre [92, 1165],
Les militaires staient toujours offerts ce genre de choses et cela tait trs cher. La
NSA pensait que si des constructeurs pouvaient vendre des quipements la fois aux
militaires et aux utilisateurs civils, mme outre Atlantique, les prix baisseraient et
tout le monde en bnificierait. Ils nhabiliteraient plus dquipement selon le Standard
Fdral 1027 et le C C E P pourrait fournir des quipement cryptographiques approuvs
par le gouvernement [711].
La NSA a dvelopp une srie de modules cryptographiques pour diverses utilisations.
Des Algorithmes diffrents taient utiliss dans les modules pour diffrentes applica
tions, et les constructeurs taient capable de retirer un module et de le remplacer par
un autre en fonction du client destinataire. Il y avait des modules usage militaire
(Type I), des modules usage gouvernemental non-class mais sensible (Type II),
des modules destins aux socits (Type III) et des modules destins lexport. Le
tableau 25.1 rsume les diffrents modules, applications et noms.

Tab.

25.1 - M

Application
Voix/donnes faible vitesse
Ordinateur
Donnes grande vitesse
Prochaine Gnration

odules

CCEP

Type I
Winster
Tepache
Foresee
Countersign I

Type II
Edgeshot
Bulletproof
Brushstroke
Countersign II

Ce programme est toujours en vigueur, mais nest jamais devenu populaire en dehors
du gouvernement. Tous les modules taient inviolables, tous les algorithmes taient
classs secrets et il fallait vous procurer vos clefs auprs de la NSA. Les socits n ont
jamais aim lide dutiliser des algorithmes classs secrets dicts par le gouvernement.
On pourrait penser que la NSA aurait appris cette leon et ne se serait pas lance dans
les Clipper, Skipjack et autres puces de chiffrement par clefs sous dpt.

25.2

National
Computer
Center (NCSC)

Security

Le National Computer Security Center est la branche de la NSA responsable des


programmes informatiques srs du Gouvernement amricain. Actuellement, le centre
value les produits commerciaux de scurit ( la fois logiciels et matriels), parraine et
publie la recherche, dveloppe des directives techniques et offre des conseils, du support
et de la formation en gnral.
Le NCSC dite le fameux O r a n g e B o o k [471], Son titre exact est Department
of Defense Trusted Computer System Evaluation Criteria mais c est long dire, et

628

Chapitre 25

le livre a une couverture orange. L O

range

ook

Politique

tente de dfinir les exigences en

matire de scurit, donne au x fabricants d o rdinateurs un m oyen o b je ctif de mesurer


le niveau de scurit de leurs systmes et les aide personnaliser leurs produits de
scurit. Il se concentre sur la scurit inform atique et ne dit vraim ent pas grand chose
propos de cryptographie.
L O r a n g e B o o k dfinit quatre grandes divisions de niveau de protection de scurit.
Il dfinit galement des classes de protection au sein de certaines de ces divisions. Elles
sont rsumes dans le tableau 25.2.

ab

25.2 - O r a n g e B o o k C

la ssific a tio n s

D : Scurit minimale
C : Protection discrte
C l : Protection par scurit discrte
C2 : Protection par contrle d accs
B : Protection obligatoire
B I : Protection par scurit tiquete
B2 : Protection structure
B3 : Domaines de scurit
A : Protection vrifie
A l : Conception vrifie
Quand les fabricants disent des choses comme nous offrons la scurit C2 , cest
de cela quils parlent. Pour plus dinformations ce propos, lisez [1367]. Le modle de
scurit informatique utilis dans ces critres sappelle le modle B e l l - L a P a d u l a [108,
107, 109, 110].

Le N CSC a publi toute une srie de livres sur la scurit informatique, parfois appels
les livres arc-en-ciel ( Rainbow Books , les couvertures ont chacune une couleur diff
rente). Par exemple, Trusted Network Interprtation of the Trusted Computer System
Evaluation Criteria [1148], parfois appel R e d B o o k , donne une interprtation de
I O r a n g e B o o k pour les rseaux et les quipements de rseau. Le Trusted Database
Management System Interprtation of the Trusted Computer System Evaluation Crite
ria [1150] je ne peux mme pas commencer dcrire la couleur de sa couverture

fait la mme chose pour les bases de donnes. Il y a ainsi plus de trente de ces livres
lheure actuelle, certains avec une couverture de couleur hideuse.
Pour commander un jeu complet des R a i n b o w B o o k s , crivez au Director,
National Security Agency, INFOSEC Awareness, Attention: C81, 9800
Savage Road, Fort
George G. Meade, MD 20755-6000, USA, Tl: +1 (301) 766-8729.
Ne leur dites pas que c est moi qui vous envoie.

25.3

National Institute of Standards and


Technology (NIST)

Le NIST est lInstitut national des standards et de la technologie, une division du


Dpartement du Commerce. Avant 19 88 , il tait dnomm Bureau national de nor

25.3

National Institute of Standards and Technology ('NIST )

629

malisation ( National Bureau of Standards (N B S)). Par le biais de son laboratoire


Computer Systems Laboratory (C SL), le N IST fait la promotion de standards
ouverts et de linterfonctionnement qui, ils lesprent, va favoriser le dveloppement
conomique de lindustrie informatique amricaine. cette fin, le N IST publie des
standards et des directives quil espre voir adopts par tous les systmes informa
tiques aux Etats-Unis. Les standards officiels sont publis sous forme de publications
dnommes FIPS ( Fdral Information Processing Standards ).
Si vous voulez des copies des FIPS (ou de toute autre publication du N IST), contactez
le National Technical Information Service (NTIS), U.S. Department o f Commerce, 5285
Port Royal Road, Springfield, VA 22161, USA, Tl: +1 (703) 487-4650; ou visitez le
site gopher. //csrc.ncsl.nist.gov.
Quand le Congrs amricain a fait passer le Computer Security Act en 1987, le
NIST fut mandat pour dfinir des standards garantissant la scurit des informations
sensibles mais non classes pour les systmes informatiques gouvernementaux2. Cet
acte autorise le N IST travailler avec d autres agences gouvernementales et lindustrie
prive pour valuer les propositions de normalisation technologique.
Le N IST publie des standards pour les fonctions cryptographiques. Les agences gou
vernementales amricaines doivent les utiliser pour les informations sensibles mais non
classes. Souvent, le secteur priv adopte galement ces standards. Le N IST a publi
le DES, le DSS, le SHS et le EES.
Tous ces algorithmes ont t dvelopps avec laide de la NSA, allant de lanalyse du
DES jusquau design du DSS et du SHS en passant par lalgorithme Skipjack du EES.
Certaines personnes ont critiqu le N IST pour avoir donn trop de contrle la NSA
sur ces standards, car les intrts de la NSA ne sont pas forcment les mmes que
ceux du NIST. On ignore quel point la NSA a influenc la conception et le dve
loppement de ces algorithmes. Etant donn les ressources limites du N IST aussi bien
en personnel quen budget ou en matriel, lintervention de la NSA est probablement
considrable. La NSA a des ressources significatives mettre contribution, y compris
des quipements informatiques qui nont pas leur pareil.
Le protocole daccord ( Mmorandum of understanding (M O U )) officiel entre
les deux agences est le suivant :
PROTOCOLE D ACCORD ENTRE LE DIRECTEUR DE LINSTITUT
NATIONAL DES STANDARDS ET DE LA TECHNOLOGIE ET LE
DIRECTEUR DE LAGENCE NATIONALE DE SCURIT QUANT
LAPPLICATION DU DROIT PUBLIC 100-235 Reconnaissant que: A.
En vertu de la section 2 du Computer Security Act de 1987 (Droit
Public 100-235), (lacte), lInstitut national des standards et de la techno
logie (NIST) est responsable devant le gouvernement fdral pour :
1. Dvelopper des standards et des recommandations techniques, de
gestion, physiques, et administratifs pour la scurit et la confidentialit
faible cot des informations sensibles dans les systmes informatiques
fdraux tels que dfinis par lActe ; et :
2. Sinspirer ce propos des recommandations techniques en matire
de scurit informatique de lAgence nationale de scurit (NSA) quand
2.
Les inform ations classes et les donnes qui sont dfinies par le W a r n e r A m e n d a ie n t sont
sous la ju rid iction de la N SA .

630

Chapitre 25

Politique

cela est appropri,


B. En vertu de la section 3 de lActe, le NIST doit coordonner ses ac
tivits en troite collaboration avec les autres agences et services, y compris
la NSA, pour garantir :
1. lutilisation maximale de tous les programmes, des tudes et des
rapports existants et planifis ayant trait la scurit et la confidentialit
des systmes informatiques, de faon viter des doubles emplois coteux
et inutiles; et,
2. autant que possible, la cohrence et la compatibilit des standards
dvelopps par le NIST dans le cadre de l Acte soient avec les standards
et les procdures dvelopps pour la protection des informations secrtes
(classes) dans les systmes informatiques fdraux,
C. en vertu de lActe, le Secrtaire d Etat au Commerce a la res
ponsabilit, quil dlgue au directeur du NIST, de dsigner les membres
du Conseil de la scurit et de la confidentialit informatique ( Computer
System Security and Privacy Advisory Board ), dont lun, au moins, doit
appartenir la NSA
En consquence, pour servir les objectifs de ce protocole daccord, le
directeur du NIST et le directeur de la NSA conviennent par la prsente de
ce qui suit :
I. Le NIST sengage :
1. Dsigner au moins un reprsentant choisi par le directeur de la NSA
dans le Conseil de la scurit et de la confidentialit informatique.
2. Sinspirer des recommandations en matire de scurit des systmes
informatiques dveloppes par la NSA, pour autant que le NIST considre
que de telles recommandations sont compatibles avec les exigences de pro
tection d informations sensibles dans les systmes informatiques fdraux.
3. Reconnatre la cote rsultant de lvaluation des systmes srs dans
le cadre du programme des critres dvaluation de la scurit des systmes
informatiques srs sans requrir une nouvelle valuation.
4. Dvelopper des standards de tlcommunications sres pour la pro
tection des donnes informatiques sensibles non classes, en sinspirant,
dans la mesure du possible, de lexprience et des produits de la NSA et ce,
de manire efficace en temps et en argent.
5. Eviter les doubles emplois l o cela est possible en concluant des
accords de soutien mutuel avec la NSA.
6. Requrir laide de la NSA pour toute matire lie aux algorithmes
et aux techniques cryptographiques, notamment la recherche, le dveloppe
ment, lvaluation ou lacceptation.
II. La NSA sengage :
1. Fournir au NIST les recommandations techniques en technologies
sres, en scurit des tlcommunications et en identification individuelle
qui peuvent tre utilises, de manire effective quant au cot, pour protger
des donnes informatiques sensibles.
2. Mener ou prendre linitiative de programmes de recherche et d
veloppement en tecnnologies lies la scurit, en scurit des tlcommu
nications, en techniques cryptographiques et en mthodes d identification

25.3

National Institute of Standards and Technology ( N I S T j

individuelle.
3. D tre lcoute des demandes du NIST en matire d aide pour
toutes les matires lies aux algorithmes et aux techniques cryptogra
phiques, notamment la recherche, le dveloppement, lvaluation ou lac
ceptation.
4. Appliquer les standards et participer lacceptation des produits
pour les applications informatiques de scurit couvertes par la section 23.15
(10 USC) (lamendement Warner).
5. A la requte des agences fdrales, de leur contractants et des autres
entits subventionnes par le gouvernement, dassurer lvaluation du risque
dattaque par des agents hostiles des systmes informatiques fdraux, et
de fournir aide technique et recommandations quant aux produits accepts
pour les applications des systmes de scurit visant lutter contre ces
attaques.
III. Le NIST et la NSA sengagent :
1. Examiner conjointement les projets pour la scurit et la confiden
tialit des systmes informatiques soumis au NIST et la NSA en accord
avec la section 6(b) de lActe.
2. Echanger les standards techniques et les recommandations nces
saires pour raliser les objectifs de lActe.
3. Collaborer pour atteindre les objectifs de ce protocole avec la plus
grande efficacit possible, en vitant les doubles emplois inutiles.
4. Entretenir un dialogue ouvert pour garantir que chaque organi
sation reste au courant des technologies et des thmes naissants affectant
lautomatisation de la scurit de linformation dans les systmes informa
tiques.
5. Crer un groupe de travail technique qui examinera et analysera les
sujets dintrt mutuel relevant de la protection des informations sensibles
ou non classes. Le groupe devrait tre compos de six employs fdraux,
trois choisis par le NIST et trois choisis par la NSA et il serait augment
si ncessaire par des reprsentants des autres agences. Les sujets pourront
tre proposs au groupe par le sous-directeur la scurit de linformation
de la NSA, ou pourront tre soulevs et traits par le groupe lui-mme avec
lapprobation du sous-directeur la scurit de linformation de la NSA
et du sous-directeur du NIST. Pendant la priode d valuation dun sujet
soumis au groupe soit par le sous-directeur la scurit de linformation de
la NSA soit par le sous-directeur du NIST, le groupe fournira des rapports
sur ltat d avancement et des plans pour les ventuelles analyses futures.
6. Echanger des plans de travail sur une base annuelle pour tous les
projets de recherche et de dveloppement relevants de la protection des sys
tmes qui traitent des informations sensibles ou non classes, y compris les
technologies sres, pour la prservation de lintgrit et de la disponibilit
des donnes, la scurit des tlcommunications et les mthodes didentifi
cation individuelles. Les mises jour des projets seront changes tous les
trimestres et les valuations des projets seront fournies lautre partie sur
demande.
7. Garantir lanalyse par le groupe de travail technique, avant toute

631

632

Chapitre 25

Politique

divulgation publique, de toutes les matires concernant les techniques de


scurit des systmes dvelopps pour la protection d informations sensibles
dans les systmes informatiques fdraux, afin de garantir quils sont com
patibles avec la scurit nationale des Etats-Unis. Si le NIST et la NSA ne
sont pas en mesure de conclure sur un tel sujet dans les 60 jours, lune des
agences peut dcider de soumettre le cas au Secrtaire d Etat la Dfense
ou au Secrtaire d Etat au Commerce. Il est convenu quun tel cas pourra
tre soumis pour dcision au prsident [des Etats-Unis] par le biais de la
NSC. Aucune action ne devra tre entreprise sur un tel cas tant que la
dcision nest pas prise.
8. Spcifier des accords d organisation additionnels dans des annexes
au prsent protocole tels que convenus par la NSA et le NIST.
IV. Chaque partie peut mettre fin au prsent protocole d accord
moyennant un pravis crit de six mois. Le prsent protocole d accord entre
en application dater de lapprobation par les deux signataires. /s i g n /
RAYMOND G. KAM M ER
Directeur intrimaire, National Institute o f Standards and Technology, 24
Mars 1989
W . O. STUDEMAN
Vice-amiral, U.S. Navy ; Directeur, National Security Agency, 23 Mars 1989

25.4

RSA Data Security, Inc.

R SA D a t a S e c u r i t y , I n c . (R S A D S I)a t fonde en 1982 pour dvelopper, octroyer


des licences et commercialiser le brevet R SA . Elle offre quelques produits commerciaux,
dont un logiciel mono-station de scurit pour courrier lectronique et diverses biblio
thques cryptographiques (disponibles soit sous forme de code source soit sous forme
binaire). R SA D SI commercialise galement les algorithmes clef secrte RC2 et RC4
(voir 13.8). R SA L a b o r a t o r i e s , un laboratoire de recherche associ RSADSI,
effectue des recherches sur la cryptographie fondamentale et fournit des services de
consultation en cryptographie.
Toute personne intresse par ces brevets ou ces produits doit contacter le Director
of Sales, RSA Data Security, Inc., 100 Marine Parkway, Redwood City, CA
94065, USA, Tl: +1 (415) 595-8782, Fax: +1 (415) 595-1873.

25.5

Public Key Partners (PKP)

Les (PKP) sont les partenaires de la clef publique . Les cinq brevets du tableau 25.3
sont dtenus par (PKP) de Sunnyvale, Californie, qui est un partenariat entre R SA D SI
et C a r o - K a h n , I n c . - compagnie parente de C y l i n k . (R SA D SI dtient 65 pourcent
des profits et C a r o - K a h n 35 pourcent.) P K P affirme que ces brevets, et plus parti
culirement le 4218 582, sappliquent toutes les applications de cryptographie clef
publique.
Dans [576], P K P crit :
Ces brevets [4 200 770, 4 218 582, 4 405 829 et 4 424 414] couvrent toutes

25.5

Public Key Partners ( 'P K P )

Ta

Numro de brevet
4200 770

25.3 - Les brevets de P u b l i c K


Date
29/3/80
19/8/80

ey

Inventeurs
H ellm
M

4 218 582

633

an

, D

iffie,

Couverture du brevet
Echange de clef
D iffie - H

er kle

H ellm

Partners

an

, M

er kle

Empilements
M

4405 829

20/9/83

iv e s t ,

d lem an

Sh a m ir ,

4424414

3 /3 /8 4

H ellm

4995082

19/2/91

Sch n o r r

an

, P

o h lig

ellm an

erkle

-H

ellm an

R SA
P

o h lig - H e l l m a n

Signatures
de S c h n o r r

les mthodes connues dans la pratique de lart de la clef publique, y compris


les variantes connues collectivement sous le nom E l G a m a l .
Du fait de la large acceptation des signatures numriques R SA
travers la communaut internationale, P u b l i c K e y P a r t n e r s appuie for
tement son incorporation dans un standard de signature numrique. Nous
affirmons toutes les parties intresses que P u b l i c K e y P a r t n e r s res
pectera tous les rglements d ANSI et d IEEE en ce qui concerne la dispo
nibilit des licences pour pratiquer cet art. Spcifiquement, en soutien au
standard de signature numrique R SA qui pourrait tre adopt, P u b l i c
K e y P a r t n e r s donne par la prsente sa garantie que des licences pour pra
tiquer lart des signatures R SA seront octroyes en des termes raisonnables
et des conditions fondes sur des bases non discriminatoires.
La vracit de ceci dpend de votre interlocuteur. Les licences P K P ont principalement
t secrtes, il ny a donc pas de moyens de vrifier si elles sont standard. Bien quils
prtendent navoir jamais refus de licence qui que ce soit, au moins deux compagnies
disent stre vues refuser une telle licence. P K P protge ses brevets de prs, attaquant
quiconque essaie de se servir de la cryptographie clef publique sans licence. En partie,
cela est d aux lois amricaines sur les brevets. Si vous dtenez un brevet et que vous
ne pourchassez pas les infractions, vous pouvez perdre votre brevet. Il y a eu beaucoup
de discussions quant savoir si ces brevets sont lgaux mais jusqu prsent c en est
rest au stade des discussions. Toutes les tentatives de mise en doute des brevets P K P
ont t retires avant que le jugement nait, lieu.
Je ne vais pas vous donner de conseils lgaux en matire de brevets dans cet ouvrage.
Peut-tre que le brevet R S A ne tiendrait pas devant une cour de justice. Peut-tre que
les brevets ne sappliquent pas toute la cryptographie clef publique. (Honntement,
je ne vois pas comment il peuvent couvrir E l G a m a l o u les systmes cryptographiques
courbe elliptique.) Peut-tre que quelquun va finalement gagner un procs contre PK P
ou R SA D SI. Mais gardez en mmoire que des compagnies qui ont de grands dpar
tements juridiques telles que IB M , M i c r o s o f t , L o t u s , A p p l e , N o v e l l , D i g i t a l ,
N a t i o n a l S e m i c o n d u c t o r , A T & T et S u n ont toutes demand une licence pour
lutilisation de R SA dans leurs produits, plutt que d intenter un procs en justice. Et

634

Chapitre 25

Politique

des socits telles que B o e i n g , S h e l l O l , D u P o n t . R a y t h e o n et C i t i c o r p ont


toutes acquis des licences pour lutilisation de R SA des fins internes.
Dans une affaire, P K P a attaqu T R W C o r p o r a t i o n en justice pour avoir utilis
E l G a m a l sans licence. T R W prtendait ne pas avoir besoin d une licence. PK P et
T R W sont arrivs un arrangement en juin 1992. Les dtails de cet arrangement sont
inconnus, mais ils comprenaient un accord de T R W d obtenir une licence d exploitation
des brevets. Ce nest pas de bonne augure. T R W peut se payer de bons avocats;
je crois que sils avaient pens pouvoir gagner le procs sans dpenser des sommes
exhorbitantes, ils se seraient battu.
Pendant ce temps, P K P avait ses propres problmes internes. En juin 1994, C a r o K a h n a intent un procs contre R SA D S I arguant, entre autre, que le brevet RSA
est non valide et non remis en cause [386]. Les deux partenaires essaient d annuler leur
collaboration. Les brevets sont-ils valides ou pas? Les utilisateurs de lalgorithme RSA
devront-ils obtenir une licence de C a r o - K a h n ? Qui dtiendra le brevet de S c h n o r r ?
Une solution sera sans aucun doute trouve avant que ce livre ne soit publi.
Les brevets sont valables pour seulement 17 ans et ne sont pas renouvelables. A partir
du 29 mars 1997, lchange de clef D i f f i e - H e l l m a n (et lalgorithme E l G a m a l ) seront
domaine public. Le 20 septembre 2000, R SA entrera dans le domaine public. Notez-le
sur vos calendriers.

25.6

International
Association
Cryptologie Research (IACR)

for

LAssociation internationale pour la recherche cryptologique ((IACR) pour


International Association for Cryptologie Research ) est lorganisation internatio
nale de recherche en cryptographie. Son but dclar est de faire avancer la thorie et la
pratique en cryptologie et dans les domaines associs. Nimporte qui peut en devenir
membre. Lassociation parraine deux confrences annuelles, C r y p t o (tenue Santa
Barbara au mois daot) et E u r o c r y p t (tenue en Europe en mai), et publie trimes
triellement le journal The Journal of Cryptology et le bulletin IACR Newsletter .
Ladresse du bureau de lIA C R change chaque changement de prsident. Ladresse ac
tuelle est IACR Business Office, Aarhus Science Park, Gustav Wieds Vej 10,
DK-8000 Aarhus C, Danemark.

25.7

RACE Integrity Primitives Evalua


tion (RIPE)

Le programme de recherche et de dvelopement des technologies de communications


avances en Europe (R A C E pour Research and Development in Advanced Commu
nication Technologies in Europe R A C E ) a t lanc par la Communaut europenne
pour aider les travaux pr-comptitifs et pr-normatifs pour les standards et la tech
nologie des communications, avec comme but de promouvoir l Integrated Broadband
Communication (IB C ). Dans le cadre de cet effort, R A C E a tabli le projet dva
luation de procdures d intgrit ( RACE Integrity Primitives Evaluation (R IP E ) afin

25.8

Conditional Access for Europe (C AFE)

635

de rassembler un ensemble de techniques destines satisfaire les niveaux de scurit


de riB C .
Six groupes europens la pointe de la recherche cryptographique sont membres
du consortium R IP E : Center for Mathematics and Computer Science, Amsterdam;
Siemens A.G. ; Philips Crypto BV ; Royal P T T Nederland NV, P T T Research ;
Katholieke Universiteit Leuven ; et Aarhus Universitet. Aprs des appels dalgorithmes
en 1989 et 1991 [1566], 32 soumissions venant du monde entier et un projet dvaluation
de 350 hommes- mois, le consortium a publi RIPE Integrity Primitives [1316, 1343].
Le rapport inclut une introduction, une description des concepts d intgrit fondamen
taux et les primitives suivantes: M D C -4 (voir 14.11), R IP E -MD (voir 14.8),
R IP E -M A C (voir 18.14), IB C -H A SH , SK ID (voir 3.2), R SA , C O M S E T (voir
16.1), et la gnration de clefs RSA .

25.8

Conditional Access for Europe


(CAFE)

LAccs conditionnel pour lEurope (C A F E ) est un projet du programme (E SPR ITde


lUnion Europenne. Les travaux ont commenc en dcembre 1992 et devraient se finir
vers la fin 1995. Ce consortium se divise en des groupes pour des tudes de march
et des tudes sociales ( Cardware , Institut fr Sozialforschung ), des fabricants
de matriels et de logiciels ( DigiCash , Gemplus , Ingenico , Siemens ) et
des cryptographes ( C W I Amsterdam , P T T Research Netherlands , SPET ,
Sintef Delab Trondheim , Universities of Arhus , Hdesheim and Leuven ).
Le but est de dvelopper des systmes daccs conditionnels, particulirement les sys
tmes digitaux de paiement. Les systmes de paiement doivent pouvoir donner une
certitude lgale tout le monde et tout moment et doivent demander un minimum
de confiance - cette certitude ne devrait pas dpendre de la rsistance la falsification
dun quelconque des mcanismes.
La machine de base pour C A F E est un portefeuille lectronique: un petit ordinateur
qui ressemble plus ou moins une calculatrice de poche. Il y a une pile, un clavier,
un cran et un canal infrarouge pour communiquer avec d autres portefeuilles. Chaque
utilisateur possde et se sert de son portefeuille qui gre ses droits et garanti sa scurit.
Une machine avec un clavier et un cran a un avantage sur la carte puce ; elle peut
fonctionner sans laide d un terminal. Un utilisateur peut directement rentrer son mot
de passe et le montant du paiement. Il na pas donner son portefeuille pour conclure
une transaction, ce qui nest pas le cas avec les cartes de crdit.
Les autres caractristiques sont :
- Des transactions offline . Le but de ce systme est de remplacer les petites
transactions dargent ; un systme online serait trop encombrant.
- Tolrance la perte. Si un utilisateur perd son portefeuille, si il le casse ou se le
fait voler, il peut rcuprer son argent.
- Est compatible avec plusieurs monnaies.

636

Chapitre 25

Politique

- Une architecture et un systme ouverts. Un utilisateur doit tre capable de payer

son shopping, le tlphone et les transports publiques en utilisant diffrents prestateurs de services. Le systme doit tre compatible entre les diffrents four
nisseurs dargent lectronique et entre les diffrents types et constructeurs de
portefeuilles.

- Cot faible.

Il existe dj une version logicielle de ce systme et le consortium travaille darrachepied pour mettre au point un prototype le ralisant en matriel.

25.9

ISO /IE C 9979

Au milieu des annes 1980, ISO a essay de standardiser DES, qui tait dj un stan
dard FIPS et ANSI. Aprs des querelles politiques, ISO a dcid de ne pas standardiser
dalgorithmes cryptographiques, mais la place de les dposer. Seuls des algorithmes
de chiffrement peuvent tre dposs; les fonctions de compilation et les schmas de
signatures ne peuvent pas ltre. Toute entit nationale peut soumettre un algorithme
pour inscription.
Au jour daujourdhui, seuls trois algorithmes ont t soumis (voir tableau 25.5). Une
soumission comprend des informations propos des applications, des paramtres, de
lexcution, des modes et des vecteurs tests. Une description dtaille est optionnelle ;
il est possible de soumettre des algorithmes secrets pour inscription.

ab

ab

25.5

Nom
0001
0002
0003

25.4 - IS O /IE C 9979


A

lg o r ith m es d po ss

Numro dinscription
B-CRYPT
IDEA
LUC

Une inscription dalgorithme nest ni une garantie sur sa qualit, ni son approbation
par IS O /IE C . L inscription indique tout juste quune simple entit nationale veut
enregistrer lalgorithme, bas sur un critre considr par cette entit.
Je ne suis pas emball par cette ide. L inscription bloque le processus de standardisa
tion. Plutt que d accepter quelques algorithmes, ISO autorise linscription de tous les
algorithmes, avec si peu de contrle sur ce qui est inscrit, affirmant quun algorithme
IS O /IE C 9979 Registered est bien mieux quil ne parait tre.
Dans tous les cas, le registre est tenu par le National Computer Centre Ltd., Oxford
Road, Manchester, M l 7ED, Royaume-Uni.

5.10

Groupes industriels, de dfense des liberts civiles, et professionnelles

55.10

637

Groupes industriels, de dfense des


liberts civiles, et professionnelles

Electronic Privacy Information Center (EPIC)


EPIC est le centre dinformation pour la confidentialit lectronique et a t fond en
394 pour attirer lattention du public sur les problmes mergents de la confidentialit
i relation avec le National Information Infrastructure , tel que la puce Clipper, la
roposition de Digital Telephony , les numros et systmes d identit nationale, la
Mifidentialit des dossiers mdicaux et la vente de donnes. E P IC mne des procs,
3onsorise des confrences, produit des rapports, publie E P IC Alert et mne des
unpagnes sur les problmes de la confidentialit.
bute personne dsireuse de joindre lE PIC doit contacter lElectronic Privacy
nformation Center, 666 Pennsylvania Avenue SE, Suite 301, Washington
.C. 20003, USA, Tl: +1 202 544-9240, Fax: +1 202 547-5482, Internet:
nfo@epic.org.

Electronic Fondation Frontier (EFF)


a EFF est la fondation de la frontire lectronique et se consacre la protection
es droits civils dans le cyber-espace. En ce qui concerne les rglements du gouverement amricain en matire de cryptographie, elle soutient que linformation concerant la cryptographie et son accs sont des droits fondamentaux et quils doivent donc
re libres de toute contrainte gouvernementale. Cette fondation a organis le groupe
Digital Privacy and Security Working Group , une coalition de 50 organisations.
e groupe a fait opposition au projet de loi de Digital Telephony et linitiative
C lip p e r. LE FF participe galement au procs contre les contrles d exportation de
t cryptographie [150].
bute personne dsireuse de rejoindre les rangs de lE FF peut contacter lElectronic
rontier Foundation, 1001 G Street NW, Suite 950E, Washington D.C.
0001, USA, Tl: +1 202 347-5400, Fax: +1 202 393-5509, Internet:
ff@eff .org.

Association for Computing Machinery (A C M )


A C M qui est lassociation pour les machines informatiques, est une organisation
ternationale dindustries en informatiques. En 1994, le U.S. A C M Public Policy
lommitt.ee a produit un excellent rapport sur la politique amricaine de crypjgraphie [946]. Ce rapport devrait tre lu par quiconque est intress par la potique en cryptographie. Il est disponible via ftp anonyme : in fo .a cm .o rg in
reports/acm _crypt_\\ stu d y/acm _crypto_study.ps.

Institute of Electrical qnd Electronics Engineers (IEEE)


i IE E E ,

institut des ingnieurs lectriciens et lectroniciens, est une autre organisation


rofessionnelle. L e bureau am ricain en qute et fait des recom m andation s p ro p o s des
uestions sur la confidentialit, com pren an t la p olitiq u e de chiffrem ent, les num ros
'identit et les p rotection s d e la confidentialit sur Internet.

Chapitre 25

638

Politique

Software Publisher Association (SPA)


La SPA qui est lassociation des diteurs de logiciels, est un syndicat professionnel
regroupant plus de 1000 entreprises de logiciels pour micro-ordinateurs. Elles ont fait
pression pour faire diminuer les contrles sur lexportation de la cryptographie et en
tretiennent une liste de produits trangers de cryptographie disponibles.

25.11

Sci.crypt

S c i .CRY p t est le forum Usenet pour la cryptologie. Il est lu par peu prs 100000 per
sonnes travers le monde entier. La plupart des messages ne veulent rien dire ou sont
polmiques, voire les deux ; certains sont de nature politique et le reste consiste princi
palement en des demandes d informations ou des questions lmentaires. Occasionnel
lement, il y a des ppites dinformationsneuves et utiles qui sontadresses auforum.
Si vous suivez rgulirement s c i . cryp t, vous apprendrez commentutiliser ce qui sap
pelle le tueur de fichiers .
Un autre forum Usenet est le sci.scrypt.research, un forum modr dvou aux discus
sions sur la recherche cryptologique. Il y a moins de messages et ils sont plus intres
sants.

25.12

Cypherpunks

Les CYPHERPUNKS sont un groupe informel de gens intresss par lenseignement


et lapprentissage de la cryptographie. Ils exprimentent galement la cryptographie et
essaient de la mettre en uvre. De leur point de vue, toute la recherche cryptographique
au monde ne sert rien pour la socit si elle nest pas mise en uvre.
Dans A Cypherpunks Manifesto , E r i c H u g h e s crit [746] :
Nous, les C y p h e r p u n k s , vouons nos efforts la construction de systmes
anonymes. Nous protgeons notre vie prive grce la cryptographie, avec
des systmes denvois de courriers anonymes, avec des signatures digitales
et avec de largent lectronique.
Les C y p h e r p u n k s crivent un algorithme de chiffrement. Nous savons
que quelquun doit crire un logiciel pour protger la vie prive, et comme
lintimit concerne chacun dentre-nous, nous allons crire ce programme.
Nous publions notre algorithme de chiffrement afin que nos camarades
de C y p h e r p u n k s puissent sentraner et jouer avec. Notre algorithme de
chiffrement est gratuit pour toute utilisation, dans le monde entier. Nous
ne nous soucions gure de savoir si vous approuvez ou pas. Nous savons
quun logiciel ne peut tre dtruit et que des systmes largement diffuss
ne peuvent pas tre arrts.
Les personnes souhaitant tre incluses dans la liste courrier des C y p h e r p u n k s sur
Internet peuvent envoyer un courrier majordomo@toad.com.. Ce listing est archiv
ftp.csua.berkeley.edu dans /pub/cypherpunks.

25.13

Brevets

25.13

639

Brevets

La problmatique des brevets3 en matire de logiciel dpasse largement le cadre de cet


ouvrage. Quils soient bons ou mauvais, ils existent. Les algorithmes, algorithmes cryp
tographiques inclus, peuvent tre brevets aux Etats-Unis. IB M dtenait les brevets du
DES [516]. Presque tous les algorithmes de cryptographie clef publique sont brevets.
Le N IST a mme un brevet pour le D SA . Certains brevets cryptographiques ont t
bloqus la demande de la NSA, dans le cadre des pouvoirs qui lui sont confrs par
l Invention Secrecy Act de 1940 et le National Security Act de 1947. Ceci veut
dire qu la place dun brevet, linventeur obtient un ordre de discrtion et il lui est
interdit de discuter de son invention avec qui que ce soit.
La N SA a une dispense spciale quand il sagit de brevets. Elle peut faire une demande
de brevet puis bloquer son homologation. L encore, cest un ordre de discrtion, mais
la NSA est alors la fois linventeur et lautorit donnant lordre. Quand, bien plus
tard, lordre de discrtion est lev, le Census Office octroie le brevet pour les 17
annes rglementaires. Ceci protge clairement linvention tout en la gardant secrte.
Si quelquun d autre invente la mme chose, la NSA a dj fait une demande de brevet.
Si personne dautre ne fait la mme invention, alors elle reste secrte.
Non seulement ce systme est une entorse tout le processus de dlivrance des brevets,
qui est cens rvler et protger les inventions, mais il permet aussi la NSA de
conserver un brevet pendant plus de 17 ans. Le dcompte des annes commence en
effet aprs que le brevet soit dlivr, et non pas quand la demande est enregistre. Les
perspectives dvolution de ce systme, maintenant que les Etats-Unis ont ratifi le
G A T T , ne sont pas claires.

25.14

Rglementation amricaine lex


portation

Daprs le gouvernement amricain4, la cryptographie peut tre une munition. Cela


signifie quelle est couverte par les mmes rgles quun missile anti-tank ou un tank
M l A b r a m s . Si vous vendez de la cryptographie aux Etats-Unis des acheteurs tran
gers sans licence dexportation approprie, alors vous tes considr comme trafiquant
darmes international. A moins que vous ne pensiez quun sjour dans un pnitencier
fdral fasse bonne impression dans votre curriculum vit, faites attention cette
rglementation.
Avec lavnement de la Guerre Froide en 1949, tous les pays membres de lOTAN
(except lIslande), et plus tard lAustralie, le Japon et lEspagne, ont form le Coordinating Committee for Multilatral Export Controls ( C o C o m ). C est une organisation
3. N ote du traducteur : les brevets don t il est question dans cette section sont tous amricains.
4. N ote du traducteur : toutes les inform ations reprises dans cette section concernent principalement
les rgles d exportation amricaines. Elles ne s appliquent vous que si vous devez exporter de la
cryptographie hors des Etats-Unis. T outefois ces rgles vous concernent mm e si vous ne vivez pas
aux Etats-Unis car elles conditionnent la nature des dispositifs cryptographiques mis votre disposition
dans le reste du m onde (quand ceux-ci sont originaires des Etats-Unis bien sr). Chaque pays a ses
propres rglem entations en m atire de cryptographie. Avant d im porter ou d exporter des dispositifs
cryptographiques, prenez les conseils d une personne avise et spcialise en ces matires (il est conseill
de consulter un b on avocat).

640

Chapitre 25

Politique

non officielle et non contractuelle, cre pour coordonner les restrictions nationales sur
lexportation de technologies militaires sensibles vers lUnion Sovitique, vers dautres
pays du Pacte de Varsovie et vers la Rpublique Populaire de Chine. Des exemples de
technologies contrles sont les ordinateurs, les machines-outils telles que les fraiseuses
et la cryptographie. Le but recherch tait de ralentir le transfert de technologie vers
ces pays, et par consquent de maintenir leurs forces armes un niveau infrieur.
Depuis la fin de la Guerre Froide, les pays du C oC om ont ralis que beaucoup de leurs
contrles taient obsoltes. Aussi, ils seraient en train de dfinir un New Forum ,
une autre organisation multinationale dont le but sera de stopper le flot de technologies
militaires vers des pays que les membres napprcient pas particulirement.
De toutes faons, la politique amricaine dexportation des biens stratgiques est d
finie par l Export Administration Act , l Arms Export Control Act , l Atomic
Energy Act et le Nuclear Non-Proloferation Act Les contrles tablis par toutes
ces lgislations sont effectus par de nombreuses ordonnances, aucune dentre-elles
ntant en coordination avec les autres. Plus dune douzaine dagences, y compris les
services militaires, effectuent des contrles ; souvent, leurs programmes sentremlent
ou se contredisent.
Les technologies contrles apparaissent sur plusieurs listes. La cryptographie a tou
jours t classe comme arme de guerre et apparait sur la U.S. Munitions List
(U SM L), la International Munitions List (IM L), la Commerce Control List
(C C L ) et la International Industrial List (HL). Le Dpartement d Etat est res
ponsable de la USM L ; elle est publie dans les International Traffic in Arms
Rgulations (IT A R ) [472, 473].
Deux agences gouvernementales contrlent lexportation de cryptographie. L une est
le Bureau of Export Administration (B X A ) au Dpartement du Commerce, rgie
par les Export Administration Rgulations (E A R ). Lautre est l Office of Defense
Trade Controls (D T C ) du Dpartement dEtat, rgie par les IT A R . A vue de nez, le
B X A du Dpartement du Commerce est beaucoup moins exigeant, mais le D T C du
Dpartement d Etat (qui prend ses conseils techniques et de scurit nationale auprs
de la NSA et qui semble toujours suivre ces conseils) analyse toutes les exportations
de cryptographie en premier et peut refuser le transfert de la juridiction au B X A .
Les IT A R rglent ces matires5 ; ce changement de dnomination est probablement
le rsultat d un effort de relations publiques destin nous faire oublier quil sagit
darmes et de bombes. Historiquement, le D T C tait rticent accorder des licences
dexportation pour des produits de codage suprieurs un certain niveau bien quil
nait jamais dclar publiquement quel tait ce niveau.
Les paragraphes suivants, qui ont trait la cryptographie, sont extraits des IT A R [472,
473]6 :
120.10 Donnes techniques.
Donnes techniques dsigne, pour les besoins de ce sous-chapitre :
(1) Des informations, autres que du logiciel tel que dfini par
120.10(d), qui sont ncessaires pour la conception, le dveloppement, la
5.
Avant 1990, l O ffice de con trle du com m erce de la dfense ( O ffic e o f D e fe n s e Trade C o n tr o ls )
sappelait lO ffice de con trle des armes ( O ffic e o f M u n itio n s C o n tr o ls ).
6- Note du traducteur : la traduction du docum ent qui suit na pas de valeur lgale. Si vous devez
tre soum is cette rglem entation, prenez connaissance du docum ent original et, com m e le dit lauteur,
prenez les conseils d un hom m e de loi qui le com prend.

25.14

Rglementation amricaine lexportation

production, le traitement, la fabrication, lassemblage, lutilisation, la r


paration, lentretien ou la modification darticles de dfense. Cela inclut,
par exemple, les informations sous formes de projets, de dessins, de pho
tographies, de plans, de modes d emploi ou de documentation. (2) Des
informations classes relatives des articles ou des services de la dfense ;
(3) Des informations couvertes par un ordre de prservation du secret
de linvention ;
(4) Le logiciel tel que dfini par la section 121.8(f) directement relatif
aux articles de dfense ;
(5) Cette dfinition n inclut pas les informations relevant des prin
cipes gnraux scientifiques, mathmatiques ou techniques enseigns dans
les coles, collges et universits du domaine public comme dfinit au
120.11. Elle ninclut pas non plus les informations commerciales de base
sur la fonction ou lobjet ni la description globale darticles de dfense.
120.11 Domaine public.
Domaine public dsigne toute information qui a t publie et qui
est gnralement accessible et disponible au public :
(1) Par la vente en kiosques et en libraires ;
(2) Par les abonnements qui sont disponibles sans restrictions qui
conque dsire obtenir ou acheter de linformation publie ;
(3) Par des mailings de deuxime classe accords par le gouvernement
amricain ;
(4) Dans les bibliothques ouvertes au public ou auprs desquelles le
public peut obtenir des documents ;
(5) Par les brevets disponibles dans tout bureau de brevets ;
(6) Par la distribution non restreinte lors de confrences, desmi
naires, de foires ou d expositions accessibles sans restriction au public, aux
Etats-Unis ;
(7) Par la publication publique (cest--dire, une publication non res
treinte) sous toute forme (cest--dire, pas ncessairement sous forme pu
blie) aprs lapprobation du dpartement ou de lagence concerne du gou
vernement amricain (voir galement 125.4(b)(13)) ;
(8) Par la recherche fondamentale en sciences et techniques dans des
institutions accrdites denseignement suprieur aux Etats-Unis, o les r
sultats de recherche sont publis et largement partags par la communaut
scientifique. La recherche fondamentale dsigne la recherche lmentaire
et exprimentale en sciences et techniques o les rsultats sont publis et
largement partags par la communaut scientifique, bien distincte de la re
cherche dont les rsultats sont classs secrets pour des raisons de proprit
ou par des contrles spcifiques daccs et de dissmination du gouverne
ment amricain. La recherche universitaire ne sera pas considre comme
fondamentale si :
(i) luniversit ou ses chercheurs acceptent d autres restrictions sur la
publication des rsultats de leurs projets scientifiques ou techniques, ou
(ii) la recherche a t initie par le gouvernement amricain et des
contrles spcifiques daccs et de dissmination protgeant les rsultats de
leurs recherches sont applicables.

641

642

Chapitre 25

Politique

120.17 Exportation
Exporter signifie:
(1) Envoyer ou emporter hors des Etats-Unis de quelque faon que ce
soit des documents lis la dfense, lexception des connaissances tech
niques personnelles qui voyagent de par le dplacement de leur dtenteur ;
ou
(2) Transfrer un enregistrement, un contrle ou un titre de proprit
une personne trangre dun avion, dun navire, ou dun satellite repris
dans la liste des munitions amricaines, que ce soit aux Etats-Unis ou
ltranger ; ou
(3) Divulguer (oralement ou visuellement) ou transfrer au sein des
Etats-Unis tout article de dfense auprs d une ambassade, toute agence
ou reprsentation d un gouvernement tranger (par exemple, les reprsen
tations diplomatiques) ; ou
(4) Divulguer (oralement ou visuellement) ou transfrer des donnes
techniques une personne trangre, que ce soit aux Etats-Unis ou ltran
ger; ou
(5) Offrir des services lis la dfense la place de ou pour le bnfice
d une personne trangre, que ce soit aux Etats-Unis ou ltranger.
(6) Une fuse de lancement ou sa charge utile ne doivent pas, de par
le lancement d un tel vhicule, tre considrs comme une exportation dans
le sens de ce sous-chapitre. Toutefois, pour certains objectifs restreints (voir
126.1 de ce sous-chapitre), le contrle de ce sous-chapitre sapplique la
vente et autres transferts d articles ou de services de dfense.
Partie 121 La liste amricaine des munitions
121.1 Gnralits. La liste amricaine des munitions
Catgorie XIII- -Equipements militaires auxiliaires
(1) Les systmes cryptographiques (y compris ceux de gestion de clef),
les quipements, les pices dtaches, les modules, les circuits intgrs, les
composants ou logiciels ayant la capacit de garantir la discrtion et la
confidentialit des informations ou des systmes dinformations, except les
quipement cryptographiques et les logiciels qui sont :
(i) Dlimits aux fonctions de dcodage spcialement tudis pour
pouvoir utiliser des logiciels protgs contre la copie, pourvu que les fonc
tions de dchiffrement ne soient pas accessibles lutilisateur.
(ii) Spcifiquement tudis, dvelopps ou modifis pour utilisation
dans des machines bancaires ou des transactions d argent, et uniquement
ddis de telles transactions. Les machines bancaires ou les transactions
d argent incluent les guichets automatiques, les imprimantes automatiques
de position de compte, les terminaux de points de vente ou les quipements
de chiffrage des transactions interbancaires.
(iii) Bass uniquement sur des techniques analogiques pour fournir
un chiffrement qui assure la scurit de linformation dans les applications
suivantes...
(iv) Des cartes puce personnalises utilisant la cryptographie dont
lusage est limit des quipements ou des systmes ntant pas sous le
contrle de la USML.

25.14

Rglementation amricaine lexportation

(v) Limits aux accs contrls, tels que les guichets automatiques,
les imprimantes automatiques de position de compte ou les terminaux de
points de vente, protgs par un mot de passe ou un code d identification
(Personal Identification Number - PIN) ou des donnes similaires pour em
pcher laccs non autoris aux installations, mais qui ne permettent pas
le chiffrement de fichiers ou de textes, mis part ce qui est directement
affect la protection du PIN.
(vi) Limits aux authentifications de donnes qui calculent un
Message Authentication Code (C A M ) ou un rsultat similaire pour
sassurer quaucune altration de texte nest apparue, ou pour identifier
lutilisateur, mais ne permet pas le chiffrement de donnes, de textes ou
dun autre mdia autre que ceux ncessaires lauthentification.
(vii) Limits des techniques de compression ou de chiffrement de
donnes fixes.
(viii) Limits la rception d missions radios, tlvision page ou
tout autre mission destine un public restreint, sans chiffrement digital et
o le dchiffrement digital est limit la vido, laudio ou des fonctions
de gestion.
(ix) Des logiciels crs ou modifis pour se protger de tout piratage
informatique (un virus par exemple).
(2) Des systmes cryptographiques (y compris ceux de gestion de clef),
des quipements, des pices dtaches, des modules, des circuits intgrs,
des composants ou logiciels capables de produire des codes correcteurs pour
des systmes ou des quipements spectraux de diffusion.
(3) Des systmes cryptographiques, des quipements, des pices d
taches, des modules, des circuits intgrs, des composants ou des logiciels.
125.2 Exportations de donnes techniques non classes.
(a) Gnralits. Une licence (DSP-5) est ncessaire pour lexportation
de donnes techniques non classes, moins que lexportation soit exempte
des exigences de licence de ce sous-chapitre. Dans le cas dune visite d usine,
les dtails des prsentations prvues doivent tre transmises lOffice de
contrle du commerce de la dfense pour approbation sur le contenu tech
nique. Sept copies des donnes techniques ou des dtails des prsentations
doivent tre fournies.
(b) Brevets. Une licence octroye par lOffice de contrle du com
merce de la dfense est ncessaire pour lexportation de donnes techniques,
chaque fois que les donnes dpassent ce qui est normalement ncessaire
lobtention d un brevet domestique, ou lobtention dun brevet ltran
ger quand aucune demande domestique nest faite. Les requtes pour les
demandes de brevets dans un pays tranger et les requtes pour ladjonc
tion damendements, de modifications ou de supplments de tels brevets
doivent tre conformes aux rglementations de lOffice des brevets et des
marques en accord avec larticle 37 CFR partie 5. L exportation de donnes
techniques pour lobtention et lenregistrement dun brevet dans des pays
trangers est soumise aux rglementations mises par lOffice des brevets
et des marques conformment larticle 35 U.S.C. 184.

64S

644

Chapitre 25

Politique

(c) Divulgations. Sauf exemption explicite reprise dans ce souschapitre, une licence est requise pour la divulgation orale, visuelle ou docu
mentaire de donnes techniques par des personnes amricaines des per
sonnes trangres. Une licence est ncessaire indpendamment de la manire
dont les donnes techniques sont transmises (en personne, par tlphone,
par courrier, par moyens lectroniques, etc.). Une licence est ncessaire pour
de telles divulgations par des personnes amricaines dans le cadre de visites
des reprsentations diplomatiques et des offices consulaires.
Et ainsi de suite. Il y a beaucoup d autres informations dans ce document. Si vous avez
lintention d exporter de la cryptographie, je vous suggre de vous procurer la fois
une copie du document complet et un homme de loi qui parle ce langage.
En ralit, la N SA a le contrle de lexportation des produits cryptographiques. Si
vous voulez une Commodity Juridiction (C J), vous devez soumettre votre produit
lapprobation de la N SA et soumettre votre demande de CJ au Dpartement d Etat.
Aprs avoir obtenu lautorisation du Dpartement d Etat, laffaire passe dans la ju
ridiction du Dpartement du Commerce, qui ne sest jamais vraiment proccup de
lexportation de la cryptographie. Toutefois, le Dpartement dEtat naccordera jamais
une CJ sans lapprobation de la NSA et, pour autant que lon sache, il na jamais
refus ime licence aprs lapprobation de la NSA.
En 1977, un employ de la NSA appel Joseph A. M e y e r a crit une lettre non
autorise, d aprs le compte rendu officiel de lincident destine lIEEE, les aver
tissant que la prsentation prvue de larticle original concernant le R SA violerait la
rglementation IT A R . Voici un extrait de Puzzle Palace :
Il marquait un point. IT A R couvrait toute information non classe
qui pouvait tre utilise, ou adapte pour tre utilise, dans la conception,
la production, la fabrication, la rparation, la rvision, le traitement, lin
gnierie, le dveloppement, lopration, lentretien ou la reconstruction
des matriels cits, aussi bien que toute technologie qui permettait lam
lioration du nec plus ultra ou tablissait un nouvel art dans un domaine
significatif d application militaire aux Etats-Unis . Et exporter comprenait
le transfert dinformations la fois sous forme crite ou par des moyens
oraux ou visuels, y compris les briefings et les symposiums auxquels des
trangers taient prsents.
Mais, pris la lettre, les rglements vagues et exagrment tendus
sembleraient indiquer que toute personne dsirant prendre la parole publi
quement ou crire sur un des sujets repris sur la liste des munitions devrait
obtenir lapprobation du Dpartement dEtat une perspective peu r
jouissante qui va manifestement lencontre du premier amendement et
qui na pas encore t porte en justice.
En fin de compte, la N SA a dsavou lacte de M e y e r , et larticle sur le R S A a t
prsent comme prvu. Aucune action n a t entame contre ses inventeurs, bien que
leurs travaux ont bel et bien amlior les capacits trangres de cryptographie plus
que tout ce qui a t diffus depuis.
La dclaration suivante de la NSA concerne lexportation de la cryptographie [367] :
La technologie cryptographique est vitale aux intrts nationaux de

25.14

Rglementation amricaine lexportation

645

scurit. Ceux-ci comprennent les intrts conomiques, militaires et des


affaires trangres
Nous ne sommes pas daccord avec les implications de laudience du
7 mai 1992 du House Judiciary Committee et les articles rcents pa
rus dans la presse qui prtendent que les lois d exportation amricaines
empchent la fabrication et lutilisation par les firmes amricaines dqui
pements de chiffrement de haute tenue. Nous ne connaissons aucun cas de
socit amricaine qui aurait t empche de fabriquer et dutiliser des
quipements de chiffrement au sein de ce pays, ou pour un usage par des
socits amricaines ou ses filiales en des localisations hors Etats-Unis. De
fait, la N SA a toujours soutenu lutilisation du chiffrement par les socits
amricaines oprant lintrieur et hors de nos frontires pour protger les
informations sensibles.
En ce qui concerne lexportation vers des pays trangers, la N SA en
tant que composante du Dpartement de la Dfense (avec le Dpartement
d Etat et le Dpartement du Commerce) analyse les licences dexporta
tion pour des technologies de scurit des informations contrles par les
Export Administration Rgulations ou les International Traffic and
Arms Rgulations . Des systmes similaires de contrle des exportations
sont en place dans tous les pays faisant partie du Coordinating Committee
for Multilatral Export Controls (C o C o m ) ainsi que dans de nombreux
pays ne faisant pas partie du C o C o m , car ces technologies sont univer
sellement considres comme sensibles. De telles technologies ne sont pas
interdites d exportation et sont analyses cas par cas. Dans le cadre du
processus danalyse de demandes dexportation, des licences peuvent tre
ncessaires pour ces systmes et celles-ci sont analyses pour dterminer
limpact quaurait une telle exportation sur les intrts de la scurit na
tionale. Les licences dexportation sont octroyes ou refuses sur la base du
type d quipement impliqu, de lutilisation finale prvue et de lutilisateur
final envisag.
Notre analyse indique que les Etats-Unis sont les leaders mondiaux
en matire de fabrication et d exportation de technologies de scurit de
linformation. Parmi ces produits cryptologiques soumis la N SA par le
Dpartement du Commerce pour lobtention dune licence dexportation,
nous en approuvons rgulirement plus de 90 %. Les licences d exportation
pour des produits de scurit de linformation, qui sont sous la juridiction
du Dpartement du Commerce, sont traites et approuves sans en rfrer
la N SA ou au Dpartement de la Dfense. Ceci inclut les produits qui
utilisent des technologies telles que le DSS ou R SA pour offrir des possibi
lits d authentification et de contrle daccs dordinateurs ou de rseaux.
En fait, de par le pass la NSA a jou un rle majeur en militant avec
succs pour le relchement des contrles dexportation pour le R S A et des
technologies similaires utilises des fins d authentification. De telles tech
niques sont extrmement utiles pour lutter contre les pirates et lutilisation
non autorise de ressources.
Cest la rgle affirme de la NSA de ne pas restreindre lexportation des produits dau
thentification, seuls les produits de chiffrement tant concerns. Si vous voulez exporter

646

Chapitre 25

Politique

un produit uniquement dauthentification, lobtention de lapprobation peut consister


juste montrer que votre produit nest pas facilement utilisable pour le chiffrement.
De plus, les procdures administratives sont nettement plus simples pour les produits
d authentification que pour les produits de chiffrement. Un produit d authentification
a besoin de lapprobation du Dpartement d Etat ime fois seulement pour le C J ; un
produit de chiffrement peut ncessiter une approbation pour chaque rvision, ou mme
pour chaque vente.
Sans un CJ, vous devez demander une autorisation dexportation chaque fois que
vous voulez exporter le produit. Le Dpartement d Etat napprouve pas lexporta
tion de produits avec de puissants chiffrements, mme ceux utilisant le DES. Des
exceptions isoles incluent les exportations vers des auxiliaires amricains des fins
de communications vers les Etats-Unis, les exportations pour quelques applications
bancaires et les exportations vers des utilisateurs militaires amricains appropris. La
Software Publishers Association (SPA ) a ngoci avec le gouvernement pour as
souplir les restrictions dexportation de licences . Un arrangement de 1992, entre eux
et le Dpartement d Etat, a assoupli les rgles dexportation pour les deux algorithmes
RC2 et R C 4, pour autant que la clef soit ait 40 bits ou moins. Voyez la section 7.1
pour plus d informations.
En 1993, Maria C a n t w e l l (D -W A ) a dpos un projet de loi sur ordre de lindustrie
informatique pour relcher les contrles sur les exportations de logiciels de chiffrement.
Le Snateur Patty M u r r a y (D W A ) a dpos un projet de loi similaire au Snat.
Le projet de C a n t w e l l fut annex la lgislation sur le contrle des exportations
gnrales passant au Congrs, mais fut supprim par le House Intelligence Committe
aprs un gros effort de pression de la part de la NSA. Quoi quait pu faire la NSA,
ce fut trs impressionnant ; le comit a vot lunanimit la suppression du projet de
loi. Je narrive pas me souvenir de la dernire fois o un ensemble de lgislateurs ont
vot lunanimit pour quoi que ce soit.
En 1995, Dan B e r n s t e in , avec laide de lE FF, a attaqu en justice le gouvernement
amricain, cherchant ainsi lempcher de restreindre la publication de documents
et de logiciels cryptographiques [150]. Le procs a conclu que les lois de contrle des
exportations sont anticonstitutionnelles, une "insupportable contrainte la parole, en
violation avec le Premier Amendement. Spcifiquement, les charges indiquent que le
procd actuel de contrle des exportations
permet aux bureaucrates de restreindre la publication sans jamais aller en cour
de justice,
- procure trop peu de procdures de scurit pour respecter le Premier
Amendement,
requiert des diteurs une inscription auprs du gouvernement, crant ainsi une
"presse accrdite ,
- nautorise pas la publication gnrale en exigeant que les destinataires soient
individuellement identifis,
est trop vague pour que des personnes ordinaires puissent savoir quelle conduite
est autorise et laquelle ne lest pas,

25.15

Importation et exportation de cryptographie

- englobe trop de choses car il interdit une conduite qui est clairement protge
(parler des trangers aux Etats-Unis, par exemple),
- est trop largement appliqu, en interdisant lexportation de logiciels qui ne
contiennent pas de cryptographie, se basant sur la thorie que lon pourrait ajou
ter de la cryptographie plus tard,
- viole aisment le Premier Amendement en interdisant un discours priv sur la
cryptographie car le gouvernement veut que ce soit son opinion sur la cryptogra
phie qui guide le public,
- dpasse son autorit accorde par le Congrs pour les lois de contrle des expor
tations, ainsi que celle accord par la Constitution.
Tout le monde pense que statuer sur ce cas prendra plusieurs annes et personne ne
sait comment cela finira.
Entre-temps, le Computer Security and Privacy Advisory Board , un comit consul
tatif officiel du N IST, a vot en mars 1992 pour recommander la rvision des rgles
nationales en matire de cryptographie, y compris les rgles d exportation. Ils disent
que les rglements sont dicts exclusivement par les agences impliques dans la scurit
nationale, sans consultation des agences concernes par lencouragement du commerce.
Les agences proccupes par la scurit nationale font tout leur possible pour sassurer
que ces rglements ne changent pas, mais il va bien falloir quils voluent.

25.15

Importation et exportation de cryp


tographie

Les autres pays ont leurs propres rglementations sur limportation et lexporta
tion [316]. Ce rsum est incomplet et probablement dpass. Des pays peuvent avoir
une rglementation et lignorer, ou ne pas en avoir mais restreindre limportation, lex
portation et lutilisation de toutes faons.
- LAustralie impose un certificat d importation pour la cryptographie la seule
demande du pays exportateur.
- Le Canada ne procde pas des contrles dimportations et les contrles dex
portations sont similaires ceux effectus par les Etats-Unis. Lexportation de
matriels du Canada peut tre sujet restriction sils sont inclus dans l Export
Control List , conformment l Export and Import Permits Act . Le Canada
se conforme au rglement du C o C o m en ce qui concerne la technologie crypto
graphique. Les systmes de chiffrement sont dcrits dans la catgorie cinq, partie
deux de la rglementation des exportations canadiennes. Ces dispositions sont si
milaires la catgorie cinq amricaine de l Export Administration Rgulations .
- La Chine a un plan dautorisation pour les marchandises importes ; les exporta

teurs doivent dposer un dossier auprs du Ministre du commerce extrieur. Se


basant sur la liste chinoise, tablie en 1987, des importations et exportations pro
hibes ou restreintes, la Chine limite limportation et lexportation de systmes
de chiffrement de voix.

Chapitre 25

648

Politique

- La France na pas de rglement spcial pour limportation de la cryptographie,


mais il y a des rgles concernant la vente et lutilisation de la cryptographie dans
leur pays. Tous les produits doivent tre certifis : soit ils correspondent une
spcification publie, soit la spcification de lentreprise propritaire est commu
nique au gouvernement. Le gouvernement peut aussi demander deux units pour
son propre usage. Les entreprises doivent avoir une autorisation pour vendre de la
cryptographie en France ; cette autorisation spcifie le march cible. Les utilisa
teurs doivent avoir une autorisation pour acheter et se servir de la cryptographie ;
cette autorisation inclus une clause stipulant que les utilisateurs doivent cder
leurs clefs au gouvernement jusqu quatre mois aprs utilisation. Cette restric
tion peut tre leve dans certains cas : les banques, les entreprises importantes,
etc... U ny a pas de licence d exploitation pour la cryptographie exportable des
Etats-Unis.
- L Allemagne suit les directives du C o C o m , exigeant une autorisation pour ex
porter la cryptographie. Ils gardent spcifiquement le contrle des logiciels de
cryptographie dans le domaine publique et le march de masse.
- Isral a des restrictions sur limportation, mais personne ne semble les connatre.
- La Belgique, lItalie, le Japon, la Hollande et le Royaume-Uni se conforment
aux directives du C o C o m sur la cryptographie, exigeant une autorisation pour
exporter.
- Le Brsil, lInde, le Mexique, la Russie, lArabie-Saoudite, lEspagne, lAfrique
du Sud, la Sude et la Suisse nexercent pas de contrles sur limportation ou
lexportation de cryptographie.

25.16

Lgalit

Est-ce que les signatures numriques sont de vraies signatures? Ont-elles une valeur
en justice? Certaines investigations lgales prliminaires indiquent que les signatures
numriques pourraient satisfaire les critres de signatures liant leur signataire pour la
plupart des utilisations, notamment lutilisation commerciale telle que dfinie par le
Universal Commercial Code (U C C ). Une dcision du Government Accounting
Office (G A O ), prise la requte du N IST, confirme que les signatures numriques
satisferaient les standards lgaux des signatures manuscrites [366].
Le Utah Digital Signature Act a pris effet le 1er mai 1995, procurant un cadre lgal
pour lutilisation de signatures digitales dans le systme judiciaire. La Californie en
mesure les effets, lOrgon et Washington crivent encore le leur. Le Texas et la Floride
suivent derrire. D ici la publication de ce livre, dautres Etats auront suivi.
L American Bar Association (ED I et 1 Information Technology Division
de la Science and Technology Section ) propose un modle d acte que les Etats
peuvent utiliser pour leur propre lgislation. Cet acte tente dincorporer les signa
tures digitales dans linfrastructure existante lgale pour les signatures : le Uniform
Commercial Code , la rglementation de la United States Fdral Reserve , la loi
commune des contrats et signatures, la United Nations Convention on Contracts for

25.16

Lgalit

649

the International Sale of Goods et la United Nations Convention on International


Bls of Exchange and International Promissory Committees . Sont inclus dans cet

acte les responsabilits et les obligations des autorits de certification, les termes de
laccord, de ses limites et de sa politique
Aux Etats-Unis, les lois sur les signatures, les contrats et les transactions commerciales
sont des lois dEtat. Le but ultime est un acte fdral, mais si tout ceci dmarre au
niveau de lEtat, il y a moins de chances pour que la NSA vienne gcher le travail.
Mme ainsi, la validit des signatures numriques n a pas encore t mise en doute en
cour de justice ; leur statut lgal est encore indfini. Pour que les signatures numriques
aient la mme valeur que des signatures manuscrites, elles doivent primo tre utilises
pour signer mi document liant le signataire de manire lgale et elles doivent secundo
tre mises en question en justice par lune des parties. La cour devrait alors juger de
la scurit du schma de signature et mettre un jugement. Au fil du temps, comme
il est de coutume, une jurisprudence mergerait concernant les mthodes de signature
numrique et la taille de clef requise pour quune signature numrique soit lgalement
contraignante. Ceci risque de prendre des annes.
En attendant, si deux personnes veulent utiliser des signatures numriques pour des
contrats (ou des bons de commande, ou des demandes de travaux, ou quoique ce soit),
il est recommand quelles signent un contrat papier par lequel elles saccordent tre
lies dans le futur par tout document quelles signeraient numriquement [1105] Ce
document prciserait lalgorithme, la taille de la clef et tout autre paramtre ; il devrait
aussi dcrire comment les disputes doivent tre rsolues.

Postface de Matt Blaze


Un des plus dangereux aspects de la cryptologie (et par extension, de ce livre), est que
vous pouvez presque la mesurer. La connaissance de la longueur de clef, de la mthode
de factorisation et des techniques cryptanalytiques rend possible lestimation (en lab
sence dune relle thorie de la conception dalgorithmes de chiffrement) du facteur
travail ncessaire pour casser un algorithme de chiffrement particulier. Il est trop
tentant d abuser de ces estimations, comme si elles ntaient en gnral quune scurit
adapte aux systmes dans lesquels elles sont utilises. Le monde rel offre latta
quant, un menu bien plus riche en options quune simple cryptanalyse. Les protocoles
dattaques sont souvent plus inquitants, le cheval de Troie, les virus, la surveillance
lectromagntique, les compromis physiques, le chantage et les intimidations des d
tenteurs de clefs, les bogues des systmes dexploitation, les bogues des programmes
dapplication, les problmes de matriels, les erreurs de l'utilisateur, les oreilles indis
crtes, la corruption et la fouille de poubelles, pour en nommer quelques-uns.
Les chiffres et les protocoles de bonne qualit sont des outils importants, mais sont
de pauvres substituts une rflexion sur ce qui est vritablement protg et sur les
diffrentes manires dont une dfense peut seffondrer (les pirates, aprs tout, se li
mitent rarement aux modles de menaces propres et bien dfinis du monde acad
mique). Ross A n d er so n nous donne des exemples de systmes cryptographiques forts
(dans le domaine bancaire) qui ont cd sous des attaques relles [44, 45]. Mme quand
un assaillant na accs quau texte chiffr, des brches apparemment mineures dans
dautres parties du systme peuvent laisser fuir assez d information pour que de bons
systmes cryptographiques deviennent inutiles. Les Allis pendant la Seconde Guerre
Mondiale ont cass le trafic par E n ig m a allemands en exploitant largement les erreurs
des oprateurs [1589].
Une connaissance employe la N SA ironise, quand on lui demande si le gouvernement
peut casser le trafic DES, sur le fait que les vrais systmes sont si peu srs quils
nont pas besoin de sen donner la peine. Hlas, il nexiste pas de recette facile pour
rendre un systme sr, aucun substitut une conception soigneuse et critique, avec une
attention minutieuse. Les bons systmes cryptographiques ont la proprit de rendre
la vie des assaillants beaucoup plus dure que celle des simples utilisateurs ; ce nest pas
le cas dans la plupart des autres aspects concernant la scurit des ordinateurs et des
communications. Regardez la liste suivante des dix plus grandes menaces la scurit
des systmes rels ; toutes sont plus faciles exploiter qu viter.
1. Ltat dsastreux du logiciel. Chacun sait que personne ne sait crire un logiciel.
Les systmes modernes sont complexes, avec des centaines de milliers de lignes
de codes ; chacune d entre-elles a des chances de compromettre la scurit. Des

652

Postface de Matt Blaze


erreurs fatales peuvent mme tre trs loignes de la partie ddie la protection
du logiciel.

2. Protection inefficace contre les attaques de refus de service. Quelques protocoles


cryptographiques autorisent lanonymat. Il peut tre spcialement dangereux de
dployer des protocoles anonymes sils augmentent les opportunits dinterrup
tion de service par des vandales non-identifis ; les systmes anonymes ont donc
besoin d tre tout particulirement rsistant aux attaques de refus de service.
Les rseaux robustes peuvent supporter plus facilement lanonymat ; pensez que
presque personne ne se soucie beaucoup des millions de points d entre anonymes
des rseaux plus robustes tels que le systme tlphonique ou le service postal,
o il est relativement difficile (ou cher) pour quelquun de causer des pannes
grande chelle.
3. Manque de place pour stocker les secrets. Les systmes cryptographiques pro
tgent les secrets importants par des plus petits (clefs). Hlas, les ordinateurs
modernes ne sont pas vraiment bons pour protger mme les plus petits secrets.
Les stations de travail multi-utilisateurs en rseau peuvent tre infiltres et leurs
mmoires compromises. Les units utilisateur unique peuvent tre voles ou
infectes par des virus qui distillent des secrets de faon asynchrone. Les serveurs
isols, o il peut ne pas y avoir d utilisateur pour entrer le mot de passe (voir
menace n5), sont un problme particurement dlicat.
4. Gnration alatoire de nombre peu performante. Les clefs et les variables de
session ont besoin de bonnes sources de bits non prvisibles. Un ordinateur qui
fonctionne possde en soi beaucoup dentropie mais fournit rarement des appli
cations qui en permettent une exploitation pratique et fiable. Un certain nombre
de techniques ont t proposes pour obtenir de vrais nombres alatoires dans
les logiciels (profiter d vnements imprvisibles comme les dates d arrives des
entres-sorties, les dcalages des horloges et les chronomtres et mme la turbu
lence de lair lintrieur du disque), mais tout ceci est trs sensible au moindre
changement d environnement dans lequel ils sont utiliss.
5. Faibles phrases-mots de passe. La plupart des programmes cryptographiques
traitent les problmes de stockage et de gnration de clef en se reposant sur
les mots de passe de lutilisateur, qui sont censs tre assez imprvisibles pour
tre de bonnes clefs et qui sont aussi assez faciles retenir pour ne pas avoir
tre stocks. Alors que les attaques des petits mots de passe avec laide du dic
tionnaire sont un problme bien connu, on ignore les lignes dattaque contre des
phrases entires de mots de passe. Selon S h a n n o n , un texte anglais prsente
peine plus d un bit d entropie par caractre, ce qui semblerait mettre la plupart
des phrases-mots de passe la porte d une recherche exhaustive. On ignore ce
pendant comment numrer les phrases-mots de passe afin d exploiter cela. Tant
que nous ne comprendrons pas mieux la manire dattaquer les phrases-mots de
passe, nous naurons aucune ide de leur robustesse.
6. Une confiance mal place. La plupart des programmes de cryptographie actuel
lement disponibles supposent que lutilisateur exerce un contrle direct sur les
systmes auxquels il fait appel et emprunte un chemin sr. Par exemple, les inter
faces vers un programme tel que P G P supposent que la saisie des phrases-mots

Postface de Matt Blaze

653

de passe est toujours opre par lutilisateur et par une voie sre, telle quune
console locale. Ce nest pas toujours le cas, bien sr ; considrez le problme de
la lecture de votre courrier chiffr quand vous tes connect un rseau. Ce que
lditeur de systme pense tre sr peut ne pas rpondre aux besoins et aux at
tentes des utilisateurs, tout particulirement quand le logiciel peut tre contrl
distance travers des rseaux peu srs.
7. Des interactions de protocole et de service mal comprises. Au fur et mesure
que les systmes grossissent et deviennent plus complexes, des fonctionnalits
bnignes reviennent frquemment nous hanter, et il est dur de savoir o chercher
lerreur. INTERNET sest propag via une fonction obscure et lapparence inno
cente quest le programme d envoi de courrier; combien encore de fonctions dans
combien dautres programmes ont des consquences inattendues qui attendent
juste d tre dcouvertes?

8. Une valuation qui nest pas raliste de la menace et des risques. Les experts de la
scurit ont tendance se concentrer sur les menaces quils connaissent et dont ils
savent se protger. Hlas, les pirates se concentrent sur ce quils savent exploiter,
et les deux visions sont rarement identiques. De trop nombreux systmes srs
sont raliss sans considrer ce que les pirates sont vraiment susceptibles de faire.
9. Les interfaces qui rendent la scurit chre et spciale. Si des fonctions de scurit
peuvent tre utilises, elles doivent tre assez pratiques et transparentes pour que
les gens puissent les activer. Il est facile de raliser des mcanismes de chiffrement
au seul prix de la performance ou de la facilit d emploi, et il est encore plus facile
de raliser des mcanismes qui poussent lerreur. La scurit devrait tre plus
dure dsactiver qu activer ; seulement, peu de systmes fonctionnent vraiment
comme cela.
10. Peu dengoment gnral pour la scurit. C est un problme bien connu de
la plupart de ceux qui ont voulu faire fortune en vendant des produits et des
services de scurit. Tant quil ny aura pas une large demande pour une scurit
transparente, les outils et linfrastructure ncessaires pour la supporter seront
chers et maccessibles pour beaucoup dapplications. C est en partie un problme
de comprhension et dexplication des menaces et des risques dans les applications
relles, mais aussi un dfaut des systmes qui nincluent pas la scurit comme
une fonction de base mais plutt comme un additif.
Une liste et une discussion plus compltes sur ce type de menaces pourrait facilement
remplir un livre de cette taille sans pour autant gratigner la surface du problme. Ce
qui les rend spcialement difficiles et dangereuses est quil nexiste pas de techniques
magiques, mis part une bonne organisation et une surveillance de tous les instants.
La leon pour un aspirant cryptographe est quil faut respecter les limites de lart.
M att B l a z e

New York, NY

Cinquime partie
Code source

DES
d3des.h
/* d3des.h -

*
*

Headers and defines for d3des.c

Graven Imagery,

1992.

*
* Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge
*

(GEnie : OUTER; CIS : [71755,204])

*/
#define D2_DES

/* include double-length support */

#define D3_DES

/* include triple-length support */

#ifdef D3_DES
#ifndef D2_DES
/* D2_DES is needed for D3_DES */

#define D2.DES
#endif
#endif
#define ENO

/ * MODE == encrypt */

#define DE1

/* MODE == decrypt * /

/ * A useful alias on 68000-ish machines, but NOT USED HERE. */


typedef imion {
unsigned long b l o k [2];
unsigned short w o r d [ 4 ] ;
unsigned char byte[8];
> M68K;
typedef union -[
unsigned long d b l ok[4];
unsigned short d w o rd[8];
unsigned char dbyte[16];
> M68K2 ;
extern void deskey(unsigned char *, short);
/*

h e x k e y [8]

MODE

DES

658
* Sets the internai key register according to the hexadcimal
* key contained in the 8 bytes of hexkey,

according to the DES,

* for encryption or decryption according to MODE.

*/
extern void usekey(unsigned long *);
/*

c ookedkey[32]

* Loads the internai key register with the data in cookedkey.

*/
extern void cpkey(unsigned long *);
/*

cookedkey [32]

* Copies the contents of the internai key register into the storage
* located at fecookedkey[0].

*/
extern void des(unsigned char *, unsigned char *);
/*

from[8]

to[8]

* Encrypts/Decrypts (according to the key currently loaded in the


* internai key register) one block of eight
* into

the

block at address t o .

bytes at address

They can

f r o m

be the same.

*/
#ifdef D2_DES
#define desDkey(a.b)

des2key((a), (b))

extern v oid des2key(unsigned char *, short);


/*

h e x k e y [16]

MODE

* Sets

the internai

key registerS according to the hexadcimal

* keyS

contained in the 16 bytes of hexkey, according to the DES,

* for DOUBLE encryption or decryption according to MODE.


* NOTE: this clobbers ail three key registers!

*/
extern void Ddes(unsigned char *, unsigned char *);
/*

from[8]

to[8]

* Encrypts/Decrypts (according to the keyS currently loaded in the


* internai

key registerS) one block of eight bytes

at address f r o m

* into the

block at address

the

t o .

They can be

same.

*/
extern void D2des(unsigned char *, unsigned char *);
/*

from[16]

to[16]

* Encrypts/Decrypts (according to the keyS currently loaded in the


* internai

key registerS) one block of SIXTEEN

bytes at address f r o m

* into the

block at address t o .

the

They can be

same.

*/
extern void makekey(char *, unsigned char *);
/*

*password,

single-length k e y [8]

* With a double-length default key, this routine hashes a NULL-terminated

659

DES

* string into an eight-byte random-looking key, suitable for use with the
* deskeyO

routine.

*/
#define makeDkey(a,b)

make2key((a),(b))

extern void make2key(char *, unsigned char *);


/*

*password,

double-length k e y [16]

* With a double-length default key, this routine hashes a NULL-terminated


* string into a sixteen-byte random-looking key, suitable for use with the
* des2key() routine.

*/
#ifndef D3_DES

/ * D2_DES only */

#define useDkey(a)

use2key((a))

#define cpDkey(a)

cp2key((a))

extern void use2key(unsigned long *);


/*

c ookedkey[64]

* Loads the internai key registerS with the data in cookedkey.


* NOTE: this clobbers ail three key registers!

*/
extern void cp2key(unsigned long *) ;
/*

cookedkey[64]

* Copies the contents of the internai key registerS into the storage
* located at ftcookedkey[0].

*/
#else

/* D3_DES too */

#define useDkey(a)

use3key((a))

#define cpDkey(a)

cp3key((a))

extern void des3key(unsigned char *, short);


/*

h e x k e y [24]

MODE

* Sets the internai key registerS according to the hexadcimal


* keyS contained in the 24 bytes of hexkey,

according to the DES,

* for DOUBLE encryption or decryption according to MODE.

*/
extern void use3key(unsigned long *);
/*
cookedkey[96]
* Loads the 3 internai key registerS with the data in cookedkey.

*/
extern void cp3key(unsigned long *);
/*

cookedkey[96]

* Copies the contents of the 3 internai key registerS into the storage
* located at &c o o kedkey[0].

*/

660

D ES

extern void make3key(char *, unsigned char *);


/*

*password,

triple-length key[24]

* With a triple-length default key, this routine hashes a NULL-terminated


* string into a twenty-four-byte random-looking key, suitable for use with
* the des3key() routine.

*/
#end^f

/* D3_DES */

#endif

/ * D2.DES */

/* d3des.h V 5 .09 rwo 9208.04 15:06 Graven Imagery

d3des.c
/* D3DES (V5.0A) *

* A portable, public domain, version of the Data Encryption Standard.

*
* Written with S y m a n t e c s THINK (Lightspeed) C by Richard Outerbridge.
* Thanks to: Dan Hoey for his excellent Initial and Inverse permutation
* code;

Jim Gillogly & Phil Karn for the DES key schedule code; Dennis

* Ferguson, Eric Young and Dana How for comparing notes; and Ray Lau,
* for humouring me on.

*
* Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge.
* .(GEnie : 0UTER; CIS : [71755,204]) Graven Imagery,

1992.

*/
#include "d3des.h"
static void

scrunch(unsigned

char *, unsigned

static void

unscrun(unsigned

long *, unsigned

long *);
char *);

static void

desfunc(unsigned

long *, unsigned

long *);

static void cookey(unsigned long *);


static unsigned

long KnL[32] = { 0L };

static unsigned

long KnR[32] = { 0L >;

static unsigned

long Kn3[32] = { 0L };

static unsigned

char Df_Key[24] = {

0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
Oxf e ,O x d c ,Oxba,0x98,0x76,0x54,0x32,0x10,
0x89,O x a b ,O x c d ,O x e f ,0x01,0x23,0x45,0x67 };
static unsigned short bytebit [8]

= {

0200, 0100, 040, 020, 010, 04, 02, 01 };


static unsigned long bigbyte[24] = {
0 x 8 0 0 0 0 0L,

0 x400000L,

0x200000L,

OxlOOOOOL,

661

DES

0 x 8 0 0 0 0 L,

0 x 4 0000L,

0x20000L,

OxlOOOOL,

0x8000L,

0x4000L,

0x2000L,

OxlOOOL,

0x800L,

0x400L,

0x200L,

OxlOOL,

0x80L,

0x40L,

0x20L,

OxlOL,

0x8L,

0x4L,

Ox2L,

OxlL

>;

/ * Use the key schedule specified in the Standard (ANSI X3.92-1981). */


static unsigned char pci [56] = -(
56, 48,
9,

40, 32, 24, 16,

8,

1,

58, 50, 42, 34, 26,

62, 54,

46, 38, 30, 22, 14,

13,

60, 52, 44, 36, 28,

5,

0, 57, 49, 41, 33, 25,


18, 10,

17,

2, 59, 51, 43,

35,

6, 61, 53, 45, 37, 29,

21,

20, 12,

4, 27, 19, 11,

3 };

static unsigned char totrot[16] = -[


1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 >;
static unsigned char pc2[48] = {
13, 16,

10, 23,

22, 18,

11,

0,

4,

40, 51,

30, 36, 46, 54, 29, 39, 50, 44, 32, 47,

3, 25,

2, 27,

7, 15,

5, 20,

9,

6, 26, 19, 12,

14,

1,

43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 };
void deskey(key, edf)

/* Thanks to James Gillogly & Phil Karn!

unsigned char * k e y ;
short e d f ;

1
int i, j, 1, m, n;
unsigned char pclm[56] , pcr[56] ;
unsigned long k n [ 3 2 ] ;
for ( j = 0; j < 56; j++ ) {
1 = pcl[j] ;
m = 1 & 07;
pclm[j] = (key[l

3] & bytebitDn]) ? 1 : 0;

>
for( i = 0; i < 16; i++ ) {
i f ( edf == DE1 ) m = (15 - i)

1;

else m = i << 1;
n = m + 1;
kn[m] = kn[n]
for( j = 0;

= OL;

j < 28; j++ ) {

1 =

j + totrot [i] ;

if(

1 < 28 ) pcr[j] = pclm[l] ;

else pcr[j] = pclm[l - 28] ;

>
for( j = 28; j < 56; j++ ) {
1 = j + totrot [i] ;
if( 1 < 56 ) pcr[j] = pclm[l];
else pcr[j] = pclm[l - 28];

>

*/

DES

662

for( j = 0; j < 24; j++ ) {


i f ( pcr [pc2[j]]

) kn[m]

1= bigbyte[j];

i f ( pcr[pc2[j+24]] ) kn[n]

|= bigbyte[j];

}
}
cookey(kn);
return;

>
static void cookey(rawl)
unsigned long *rawl;

{
unsigned long *cook, rawO;
unsigned long d ough[32];
int i;
cook = dough;
for( i = 0; i < 16; i++, rawl++ ) {
rawO = rawl++;
= (rawO & OxOOfcOOOOL)
cook
cook
cook
cook++
cook
cook
cook
cook++

1= (rawO & OxOOOOOfcOL)


1= (rawl & OxOOfcOOOOL)
1= (rawl & OxOOOOOfcOL)
= (rawO & 0x0003f000L)
1= (rawO & 0x0000003fL)
1= (rawl & OxOO03fOOOL)
1= (rawl & 0x0000003fL) 1

>
u s ekey(dough);
return;

>
void cpkey(into)
unsigned long *into;
unsigned long *from, endp;
from = KnL, endp = &KnL[ 3 2 ] ;
w h i l e ( from < endp ) *into++ = from+t;
return;

}
void usekey(from)
unsigned long *from;
unsigned long *to, *endp;
to = KnL, endp = & K n L [32];
w h i l e ( to < endp ) *to++ = *from++;
return;

6;
10;
10;
6;
12;
16;
4;

663

DES

v o id d e s ( in b lo c k ,

o u tb lo c k )

u n s ig n e d c h a r * i n b l o c k ,

* o u tb lo c k ;

u n s ig n e d l o n g w o r k [ 2 ] ;
s c r u n c h (in b lo c k , w o rk );
d e s f u n c ( w o r k , K n L );
u n s c r u n (w o r k ,

o u tb lo c k );

retu rn ;

>
s t a t i c v o id s c r u n c h (o u to f, in t o )
u n s ig n e d c h a r * o u t o f ;
u n s ig n e d l o n g * i n t o ;
i n t o
i n t o
in to
in t o + +
in to
in to
i n t o
in to
retu rn ;

= ( O U to f++ ft O x f fL )
1= ( O U to f++ & O x ffL )
1= ( o u t o f ++ & O x f fL )
1= C * o u t o f ++ & O x f f L ) ;
= ( * o u t o f + + k O x f fL )
1= ( * o u t o f + + & O x f fL )
1= ( * o u t o f ++ & O x f fL )
& O x ffL );
1= ( * o u t o f

24;
16;
8;
24;
16;
8;

>
s t a t i c v o id u n s c r u n (o u t o f, in t o )
u n s ig n e d l o n g * o u t o f ;
u n s ig n e d c h a r * i n t o ;
* in to + + = (u n sig n e d c h a r ) ( ( * o u t o f
* in to + + = (u n s ig n e d c h a r ) ( ( * o u t o f
* i n t o + + = ( u n s ig n e d c h a r ) ( ( * o u t o f

2 4 ) & O x ffL )
1 6 ) & O x f fL )
8 ) k O x f fL )

* in t o + + = ( u n s i g n e d c h a r ) ( * o u t o f ++
* in to + + = (u n sig n e d c h a r ) ( ( * o u t o f

2 4 ) k O x f fL )

1 6 ) k O x f fL )

* in to + + = (u n s ig n e d c h a r ) ( ( * o u t o f
= ( u n s ig n e d c h a r ) ( * o u t o f
in to

8 ) k O x f fL )
k O x ffL )

* in to + + = (u n s ig n e d c h a r ) ( ( o u to f

k O x f fL )

retu rn ;

>
s t a t i c u n s ig n e d l o n g SP1C64] = {
0 x 0 1 0 1 0 4 0 0 L , OxOOOOOOOOL, OxOOOlOOOOL, 0 x 0 1 0 1 0 4 0 4 L ,
0 x 0 1 0 1 0 0 0 4 L , 0 x 0 0 0 1 0 4 0 4 L , 0 x 0 0 0 0 0 0 0 4 L , OxOOOlOOOOL,
0x00000400L , 0x01010400L , 0x01010404L , 0x00000400L ,
0 x 0 1 0 0 0 4 0 4 L , 0 x 0 1 0 1 0 0 0 4 L , OxOlOOOOOOL, 0 x 0 0 0 0 0 0 0 4 L ,
0x00000404L , 0x01000400L , 0x01000400L , 0x00010400L ,
0 x 0 0 0 1 0 4 00 L , OxOlOlOOOOL, OxOlOlOOOOL, 0 x 0 1 0 0 0 4 0 4 L ,
0x00010004L, 0x01000004L, 0x01000004L , 0x00010004L,
OxOOOOOOOOL, 0 x 0 0 0 0 0 4 0 4 L , 0 x 0 0 0 1 0 4 0 4 L , OxOlOOOOOOL,

DES

664

OxOOOlOOOOL, 0x01010404L, 0x00000004L,


0x01010400L, OxOlOOOOOOL, OxOlOOOOOOL,
0x01010004L, OxOOOlOOOOL, 0x00010400L,
0x00000400L, 0x00000004L, 0x01000404L,
0x01010404L, OxOOO10004L, OxOlOlOOOOL,
0x01000004L, 0x00000404L, 0x00010404L,
0x00000404L, 0x01000400L, 0x01000400L,
0x00010004L, 0x00010400L, OxOOOOOOOOL,

OxOlOlOOOOL,
0x00000400L,
0x01000004L,
0x00010404L,
0x01000404L,
0x01010400L,
OxOOOOOOOOL,
0x01010004L >;

static unsigned long SP2 [64] = {


0x80108020L, 0x80008000L, 0x00008000L,
OxOOlOOOOOL, 0x00000020L, 0x80100020L,
0x80000020L, 0x80108020L, 0x80108000L,
0x80008000L, OxOOlOOOOOL, 0x00000020L,
0x00108000L, 0x00100020L, 0x80008020L,
0x80000000L, 0x00008000L, 0x00108020L,
0x00100020L, 0x80000020L, OxOOOOOOOOL,
0x00008020L, 0x80108000L, 0x80100000L,
OxOOOOOOOOL, 0x00108020L, 0x80100020L,
0x80008020L, 0x80100000L, 0x80108000L,
0x80100000L, 0x80008000L, 0x00000020L,
0x00108020L, 0x00000020L, 0x00008000L,
0x00008020L, 0x80108000L, OxOOlOOOOOL,
0x00100020L, 0x80008020L, 0x80000020L,
0x00108000L, OxOOOOOOOOL, 0x80008000L,
0x80000000L, 0x80100020L, 0x80108020L,

0x00108020L,
0x80008020L,
0x80000000L,
0x80100020L,
OxOOOOOOOOL,
0x80100000L,
0x00108000L,
0x00008020L,
OxOOlOOOOOL,
0x00008000L,
0x80108020L,
0x80000000L,
0x80000020L,
0x00100020L,
0x00008020L,
0x00108000L };

static unsigned long SP3[64] = {


0x00000208L, 0x08020200L, OxOOOOOOOOL,
0x08000200L, OxOOOOOOOOL, 0x00020208L,
0x00020008L, 0x08000008L, 0x08000008L,
0x08020208L, 0x00020008L, 0x08020000L,
0x08000000L, 0x00000008L, 0x08020200L,
0x00020200L, 0x08020000L, 0x08020008L,
0x08000208L, 0x00020200L, 0x00020000L,
0x00000008L, 0x08020208L, 0x00000200L,
0x08020200L, 0x08000000L, 0x00020008L,
0x00020000L, 0x08020200L, 0x08000200L,
0x00000200L, 0x00020008L, 0x08020208L,
0x08000008L, 0x00000200L, OxOOOOOOOOL,
0x08000208L, 0x00020000L, 0x08000000L,
0x00000008L, 0x00020208L, 0x00020200L,
0x08020000L, 0x08000208L, 0x00000208L,
0x00020208L, 0x00000008L, 0x08020008L,

0x08020008L,
0x08000200L,
0x00020000L,
0x00000208L,
0x00000200L,
0x00020208L,
0x08000208L,
0x08000000L,
0x00000208L,
OxOOOOOOOOL,
0x08000200L,
0x08020008L,
0x08020208L,
0x08000008L,
0x08020000L,
0x00020200L >;

static unsigned long SP4 [64] = {


0x00802001L, 0x00002081L,
0x00802080L, 0x0080008IL,
OxOOOOOOOOL, 0x00802000L,
0x00000081L, OxOOOOOOOOL,
0x0000000IL, 0x00002000L,

0x00000080L,
0x0000200IL,
0x0080208IL,
0x00800001L,
0x0080200IL,

0x00002081L,
0x0080000IL,
0x00802000L,
0x00800080L,
0x00800000L,

665

DES

0x00000080L, 0x00800000L , 0x00002001L , 0x00002080L,


0 x 0 0 8 0 0 0 8 1 L , OxOOOOOOOlL, 0 x 0 0 0 0 2 0 8 0 L , 0 x 0 0 8 0 0 0 8 0 L ,
0 x 0 0 0 0 2 0 0 0 L , 0 x 0 0 8 0 2 0 8 0 L , 0 x 0 0 8 0 2 0 8 I L , 0 x 0 0 0 0 0 0 8 IL ,
0x00800080L , 0x00800001L , 0x00802000L , 0x00802081L,
0 x 0 0 0 0 0 0 8 I L , OxOOOOOOOOL, OxOOOOOOOOL, 0 x 0 0 8 0 2 0 0 0 L ,
0 x 0 0 0 0 2 0 8 0 L , 0 x 0 0 8 0 0 0 8 0 L , 0 x 0 0 8 0 0 0 8 1 L , OxOOOOOOOlL,
0x0080200IL , 0x0000208IL , 0x00002081L , 0x00000080L,
0 x 0 0 8 0 2 0 8 1 L , 0 x 0 0 0 0 0 0 8 1 L , OxOOOOOOOlL, 0 x 0 0 0 0 2 0 0 0 L ,
0x0080000I L , 0x00002001L , 0x00802080L , 0x00800081L ,
0x0 0 0 0 20 0 IL ,

0x00002080L , 0x00800000L , 0x00802001L ,

0x00000080L , 0x00800000L , 0x00002000L , 0x00802080L > ;


s t a t i c u n s ig n e d l o n g S P 5 [6 4 ] = {
0 x00000100L, 0x02080100L , 0x02080000L , 0x42000100L,
0 x 0 0 0 8 0 0 0 0 L , OxOOOOOlOOL, 0 x 4 0 0 0 0 0 0 0 L , 0 x 0 2 0 8 0 0 0 0 L ,
0x4 0 0 8 0 100L, 0x00080000L , 0x02000100L , 0x40080100L ,
0x42000100L , 0x42080000L , 0x00080100L , 0x40000000L,
0 x 0 2 0 0 0 0 0 0 L , 0 x 4 0 0 8 0 0 0 0 L , 0 x 4 0 0 8 0 0 0 0 L , OxOOOOOOOOL,
0x40000100L , 0x42080100L , 0x42080100L , 0x02000100L ,
0 x 4 2 0 8 0 0 0 0 L , 0 x 4 0 0 0 0 1 0 0 L , OxOOOOOOOOL, 0 x 4 2 0 0 0 0 0 0 L ,
0x02080100L ,

0x02000000L , 0x42000000L , 0x00080100L ,

0 x 0 0 0 8 0 0 0 0 L , 0 x 4 2 0 0 0 1 0 0 L , OxOOOOOlOOL, 0 x 0 2 0 0 0 0 0 0 L ,
0x40000000L , 0x02080000L , 0x42000100L , 0x40080100L ,
0 x 0 2 0 0 0 1 0 0 L , 0 x 4 0 0 0 0 0 0 0 L , 0 x 4 2 0 8 0 0 0 0 L , 0 x 0 2 0 8 0 100L ,
0 x 4 0 0 8 0 1 0 0 L , OxOOOOOlOOL, 0 x 0 2 0 0 0 0 0 0 L , 0 x 4 2 0 8 0 0 0 0 L ,
0x42080100L , 0x00080100L , 0x42000000L , 0x42080100L,
0 x 0 2 0 8 0 0 0 0 L , OxOOOOOOOOL, 0 x 4 0 0 8 0 0 0 0 L , 0 x 4 2 0 0 0 0 0 0 L ,
0 x 0 0 0 8 0 100L, 0 x 0 2 0 0 0 100L, 0 x40000100L , 0x00080000L ,
OxOOOOOOOOL, 0 x 4 0 0 8 0 OOOL, 0 x 0 2 0 8 0 1 0 0 L , 0 x 4 0 0 0 0 1 0 0 L > ;
s t a t i c u n s ig n e d l o n g SP6C64] = {
0 x 2 0 0 0 0 0 1 0 L , 0 x 2 0 4 0 0 0 0 0 L , 0 x 0 0 0 0 4 0 0 0 L , 0 x 2 0 4 0 4 0 10L ,
0 x 2 0 4 0 0 0 0 0 L , OxOOOOOOIOL, 0 x 2 0 4 0 4 0 1 0 L , 0 x 0 0 4 0 0 0 0 0 L ,
0x20004000L , 0x00404010L , 0x00400000L , 0x20000010L ,
0x00400010L , 0x20004000L , 0x20000000L , 0x00004010L ,
OxOOOOOOOOL, 0 x 0 0 4 0 0 0 1 0 L , 0 x 2 0 0 0 4 0 1 0 L , 0 x 0 0 0 0 4 0 0 0 L ,
0 x 0 0 4 0 4 0 0 0 L , 0 x 2 0 0 0 4 0 1 0 L , OxOOOOOOIOL, 0 x 2 0 4 0 0 0 1 0 L ,
0 x 2 0 4 0 0 0 1 0 L , OxOOOOOOOOL, 0 x 0 0 4 0 4 0 1 0 L , 0 x 2 0 4 0 4 0 0 0 L ,
0x00004010L , 0x00404000L , 0x20404000L , 0x20000000L,
0 x 2 0 0 0 4 0 0 0 L , OxOOOOOOIOL, 0 x 2 0 4 0 0 0 1 0 L , 0 x 0 0 4 0 4 0 0 0 L ,
0x20404010L , 0x00400000L , 0x00004010L , 0x20000010L ,
0x00400000L , 0x20004000L , 0x20000000L , 0x00004010L,
0x20000010L , 0 x 2 0 4 0 40 10L, 0x00404000L , 0x20400000L ,
0 x 0 0 4 0 4 0 1 0 L , 0 x 2 0 4 0 4 0 0 0 L , OxOOOOOOOOL, 0 x 2 0 4 0 0 0 1 0 L ,
OxOOOOOOIOL, 0 x 0 0 0 0 4 0 0 0 L , 0 x 2 0 4 0 0 0 0 0 L , 0 x 0 0 4 0 4 0 1 0 L ,
0 x 0 0 0 0 4 0 0 0 L , 0 x 0 0 4 0 0 0 1 0 L , 0 x 2 0 0 0 4 0 1 0 L , OxOOOOOOOOL,
0 x20404000L , 0x20000000L , 0 x00400010L , 0x20004010L > ;
s t a t i c u n s ig n e d l o n g S P 7 [6 4 ] = {
0 x 0 0 2 0 0 0 0 0 L , 0 x 0 4 2 0 0 0 0 2 L , 0 x 0 4 0 0 0 8 0 2 L , OxOOOOOOOOL,
0x00000800L , 0x04000802L , 0x00200802L , 0x04200800L ,

666

DES

0 x 0 4 2 0 0 8 0 2 L , 0 x 0 0 2 0 0 0 0 0 L , OxOOOOOOOOL, 0 x 0 4 0 0 0 0 0 2 L ,
0 x00000002L , 0x04000000L , 0 x0 4 2 0 0002L , 0x00000802L ,
0x04000800L , 0x00200802L, 0x00200002L , 0x04000800L,
0x04000002L , 0x04200000L , 0x04200800L , 0x00200002L ,
0x04200000L , 0x00000800L , 0x00000802L , 0x04200802L,
0x00200800L, 0x00000002L, 0x04000000L, 0x00200800L,
0x04000000L, 0x00200800L, 0x00200000L, 0x04000802L,
0x04000802L , 0x04200002L , 0x04200002L , 0x00000002L ,
0x00200002L , 0x04000000L,

0x04000800L , 0x00200000L ,

0x04200800L , 0x00000802L, 0x00200802L , 0x04200800L ,


0x00000802L , 0x04000002L , 0x04200802L, 0x04200000L,
0 x 0 0 2 0 0 8 0 0 L , OxOOOOOOOOL, 0 x 0 0 0 0 0 0 0 2 L , 0 x 0 4 2 0 0 8 0 2 L ,
OxOOOOOOOOL, 0 x 0 0 2 0 0 8 0 2L , 0 x 0 4 2 0 0 0 0 0 L , 0 x 0 0 0 0 0 8 0 0 L ,
0 x 0 4 0 0 0002L ,

0 x 0 4 0 0 0 8 0 0 L , 0 x 0 0 0 0 0 8 0 0 L , 0 x0 0 2 0 0 0 0 2 L > ;

s t a t i c u n s ig n e d l o n g S P 8 [6 4 ] = -f
0 x l0 0 0 1 0 4 0 L , OxOOOOlOOOL, 0 x 0 0 0 4 0 0 0 0 L , 0 x l0 0 4 1 0 4 0 L ,
OxlOOOOOOOL, 0 x l0 0 0 1 0 4 0 L , 0 x 0 0 0 0 0 0 4 0 L , OxlOOOOOOOL,
0 x 0 0 0 4 0 0 4 0 L , 0 x l0 0 4 0 0 0 0 L , 0 x l0 0 4 1 0 4 0 L , 0 x 0 0 0 4 1 0 0 0 L ,
0 x l0 0 4 1 0 0 0 L , 0 x 0 0 0 4 1 0 4 0 L , OxOOOOlOOOL, 0 x 0 0 0 0 0 0 4 0 L ,
0 x l0 0 4 0 0 0 0 L , 0 x l0 0 0 0 0 4 0 L , OxlOOOlOOOL, 0 x 0 0 0 0 1 0 4 0 L ,
0 x 0 0 0 4 1 0 0 0 L , 0 x 0 0 0 4 0 0 4 0 L , 0 x l0 0 4 0 0 4 0 L , 0 x l0 0 4 1 0 0 0 L ,
0 x 0 0 0 0 1 0 4 0 L , OxOOOOOOOOL, OxOOOOOOOOL, 0 x l0 0 4 0 0 4 0 L ,
0 x l0 0 0 0 0 4 0 L , OxlOOOlOOOL, 0 x 0 0 0 4 1 0 4 0 L , 0 x 0 0 0 4 0 0 0 0 L ,
0 x 0 0 0 4 1 0 4 0 L , 0 x 0 0 0 4 0 0 0 0 L , 0 x l0 0 4 1 0 0 0 L , OxOOOOlOOOL,
0 x 0 0 0 0 0 0 4 0 L , 0 x l0 0 4 0 0 4 0 L , OxOOOOlOOOL, 0 x 0 0 0 4 1 0 4 0 L ,
OxlOOOlOOOL, 0 x 0 0 0 0 0 0 4 0 L , 0 x l0 0 0 0 0 4 0 L , 0 x l0 0 4 0 0 0 0 L ,
0 x l0 0 4 0 0 4 0 L , OxlOOOOOOOL, 0 x 0 0 0 4 0 0 0 0 L , 0 x l0 0 0 1 0 4 0 L ,
OxOOOOOOOOL, 0 x l0 0 4 1 0 4 0 L , O x0 0 0 4 00 4 0 L , 0 x l0 0 0 0 0 4 0 L ,
0 x l0 0 4 0 0 0 0 L ,

OxlOOOlOOOL, 0 x l0 0 0 1 0 4 0 L , OxOOOOOOOOL,

0 x l0 0 4 1 0 4 0 L , 0 x 0 0 0 4 1 0 0 0 L , 0 x 0 0 0 4 1 0 0 0 L , 0 x 0 0 0 0 1 0 4 0 L ,
0 x 0 0 0 0 1 0 4 0 L , 0 x 0 0 0 4 0 0 4 0 L , OxlOOOOOOOL, 0 x l0 0 4 1 0 0 0 L } ;
s t a t i c v o id d e s fu n e (b lo c k , k e y s)
u n s ig n e d l o n g * b l o c k , * k e y s ;

{
u n s ig n e d l o n g f v a l ,

w ork , r i g h t ,

le ftt ;

in t rou n d ;
le ftt

= b lo c k C O ];

r i g h t = b l o c k [1 ] ;
w ork = ( ( l e f t t

4)

* r ig h t)

& O xO fO fO fO fL ;

r i g h t ~= w o rk ;
le ftt

= (w o rk

w o rk = ( ( l e f t t

4 );

>> 1 6 )

" r i g h t ) & O xO O O O ffffL ;

r i g h t " = w o rk ;
le ftt

= (w o rk << 1 6 ) ;

w ork = ( ( r i g h t

le ftt)

& 0x33333333L;

r i g h t ~= (w o rk

2 );

w ork = ( ( r i g h t

8) * le f t t )

& O xO O ffO O ffL ;

le ftt

2)

= w o rk ;

667

DES

leftt ~= work ;
right ~= (work 8);
right = ((right 1) 1 ((right

31) & IL)) & OxffffffffL;

work = (leftt right) & OxaaaaaaaaL;


leftt '= work;
right "= work;
leftt

= ((leftt

for( round =

1)

I ((leftt 31)

& IL)) & OxffffffffL;

0; round < 8; round++ ) {

work

= (right

28)

| (right

4);

w ork ~= *keys++;
fval

= SP7[ work

fval

& 0x3fL];

|= S P 5 [(work

8) & 0 x 3 f L ] ;

fval

1= SP3[(work

16) & 0x3fL] ;

fval

|= SPl[(work

24) & 0 x 3 f L ] ;

work

= right ' *keys++;

fval

1= SP8[ work

fval

& 0x3fL];

1= SP6[(work

8) & 0 x 3 f L ] ;

fval 1= SP4[(work

16) & 0 x 3fL];

fval

24) & 0 x 3 f L ] ;

1= SP2[(work

leftt ~= fval;
work

= (leftt

28)

I (leftt

work ~= *keys++;
fval
= SP7[ work

4);
& 0x3fL];

fval

|=

SP5[(work

8) & 0 x 3 f L ] ;

fval

1=

SP3[(work

16) & 0 x 3fL];

fval

|=

SPl[(work

24) ft 0 x 3fL];

work

= leftt ' *keys++;

fval

I= S P 8 [ work

& 0 x 3fL];

fval

|=

SP6[(work

8) & 0 x 3 f L ] ;

fval

1=

SP4[(work

16) ft 0 x 3 f L ] ;

fval

|=

SP2[(work

24) & 0 x 3 f L ] ;

right ~= fval;

>
right = (right

31)

I (right

1);

work = (leftt * right) & OxaaaaaaaaL;


leftt "= work;
right ~= work;
leftt = (leftt 31) I (leftt 1);
work = ((leftt >> 8) ~ right) & OxOOffOOffL;
right *= work;
leftt

(work

8);

work = ((leftt >> 2) right) & 0x33333333L;


right '= work;
leftt = (work

2);

work = ((right

16) leftt) & OxOOOOffffL;

leftt = work;
right = (work
work = ((right
leftt = work;

16);
4) " leftt) & OxOfOfOfOfL;

668

DES

right = (work << 4);


block++ = right;
block = leftt;
return;

}
#ifdef D2_DES
void des2key(hexkey, mode)

/ stomps on Kn3 too /

unsigned chair hexkey;

/ unsigned c h a r [16] /

short mode;

{
short revmod;
revmod = (mode == ENO) ? DE1

: ENO;

d eskey(&hexkey[8], rev m o d ) ;
cpkey(KnR);
deskey(hexkey, mode);
/ Kn3 = KnL /

c p k e y(Kn3);
return;

>
void Ddes(from, into)
unsigned char from, into;

/ unsigned c h a r [8] /

{
unsigned long w o r k [2];
scrunch(from, w o r k ) ;
desfunc(work, KnL);
desfune(work, KnR) ;
desfunc(work, K n 3 ) ;
unscrun(work, into);
return;

>
void D2des(from, into)
unsigned char from;

/ unsigned char[16]

unsigned char into;

/ unsigned c h a r [16] /

i
unsigned long right,

+11, swap;

unsigned long leftt [2], bufR[2] ;


right = bufR;
11 = ftleftt [1];
scrunch(from, l e f t t ) ;
scrunch(&from[8], r i g h t ) ;
d esfune(leftt, K n L ) ;
de s f u n e(right, K n L ) ;
swap = +11;
11 = right;
right = swap;

669

DES

d e sfune(leftt, K n R ) ;
d esfune(right, K n R ) ;
swap = *11 ;
*11 = *right;
right = swap;
d esfune(leftt, K n 3 ) ;
d esfune(right, K n 3 ) ;
unscrun(leftt,

into);

unscrun(right, feinto[8]);
return;

}
void makekey(aptr, kptr)
char *aptr;

/* NULL-terminated

unsigned char *kptr;

*/

/* unsigned c h a r [8] */

{
unsigned char *store;
int first, i;
unsigned long savek[96];
cpDkey(savek);
des2key(Df_Key, ENO);
for( i = 0; i < 8; i++ ) kptrti] = Df_Key[i] ;
first = 1;
w h i l e ( (*aptr != \ 0 ) Il first ) {
store = kptr;
for( i = 0; i < 8 && (*aptr != \ 0 ); i++ ) {
*store++ ~= *aptr & 0x7f;
*aptr++ = \ 0 ;

>
Ddes(kptr, kptr);
first = 0;

>
useDkey(savek);
return;

>
void ma k e 2 k ey(aptr, kptr)
char *aptr;

/* NULL-terminated

unsigned char *kptr;

/* unsigned c h a r [16) */

{
unsigned char *store;
int first, i;
unsigned long savek[96];
cpDkey(savek);
d es2key(Df_Key, ENO);
for( i = 0; i < 16; i++ ) kptr[i] = Df_Key[i] ;
first = 1;
w h i l e ( (*aptr

!= \ 0 ) Il first ) [

store = kptr;

*/

670

DES

for( i = 0; i < 16 && (*aptr != \ 0 ); i++ ) {


*store++ "= *aptr & 0x7f;
*aptr++ = \ 0 ;

>
D2des(kptr, kptr);
first = 0;

>
u s e D k ey(savek);
return;

>
#ifndef D3_DES

/ * D2_DES only */

void cp2key(into)
unsigned long *into;

/* unsigned long[64]

*/

i
unsigned long *from, *endp;
cpkey(into);
into = &into[32];
from = KnR, endp =
w h i l e ( from <

& K n R[32];

endp ) *into++ = *from++;

return;

>
void use2key(from)
unsigned long *from;
unsigned long

/* stomps on Kn3 too */


/ * unsigned l o n g [64] */
*to, *endp;

u s e k e y (from);
from = & f r o m [32];
to = KnR, endp = & K n R[32];
w h i l e ( to < endp ) *to++ = *from++;
/* Kn3 = KnL */

c p k e y(Kn3);
return;

y
#else

/ * D3_DES too */

static void D3des(unsigned char *, unsigned char *);


void d es3key(hexkey, mode)
unsigned char * hexkey;
short mode;

{
unsigned char *first, *third;
short revmod;
if( mode == ENO ) {
revmod = D E 1 ;

/ * unsigned c h a r [24] */

671

DES

first = hexkey;
third = fchexkey[16];

>
else -[
revmod = ENO;
first = & h exkey[16];
third = hexkey;

}
deskey(fehexkey[8], revmod);
cpkey(KnR);
deskey(third, mode);
c pkey(Kn3);
d e s key(first, mode);
return;

}
void cp3key(into)
unsigned long *i n t o ;

/* unsigned l o n g [96] */

unsigned long *from, *endp;


cpkey(into);
into = ftinto[32];
from = KnR,

endp =

&KnR[32];

w h i l e ( from

< endp

) *intc++ =*from++;

from = K n 3 , endp = & K n 3 [32];


w h i l e ( from

< endp

) *into++ = *from++;

return;

}
void use3key(from)
unsigned long *from;

/* unsigned long[96]

*/

1
unsigned long *to, *endp;
us e key(from);
from = &from[32] ;
to = KnR, endp = & K n R[32];
w h i l e ( to < endp ) *to++ - *from++;
to = Kn3, endp = &Kn3[32];
w h i l e ( to < endp ) *to++ = *from++;
return;

}
static void D3des(unsigned char*, unsigned
static void D3des(from, into)

/*

c h ar*);

amateur theatrics */

unsigned char *from;

/* unsigned c h a r [24] */

unsigned char *into;

/* unsigned

cha r [24] */

unsigned long swap, l e f t t [2], middl[2], r i g h t [2];

DES

672

scrunch(from, l e f t t ) ;
scrunch(&from[8], m i d d l ) ;
scrunch(&from[16], right);
d e s f u n c(leftt, KnL);
desfune(middl, K n L ) ;
desfunc(right, KnL);
swap = l e f t t [1];
leftt [1] = middl [0];
m i d d l [0] = swap;
swap = m i d d l [1];
middl [1] = right [0];
right [0] = swap ;
desfunc(leftt, KnR);
de sfunc(middl, K n R ) ;
de sfunc(right, K n R ) ;
swap = leftt [1];
leftt [1] = middl [0];
m i d d l [0] = swap;
swap = m i d d l [1];
middl [1] = right [0];
r i g h t [0] = swap;
desfunc(leftt, Kn3);
d e s f u n e(middl, K n 3 ) ;
d e s f u n e(right, K n 3 ) ;
u n s c r u n d e f t t , into);
u nscrun(middl, feinto[8]);
un s c r u n(right, feinto[16]);
return;

}
void mak e 3 k e y ( a ptr, kptr)
char *aptr;

/* NULL-terminated

unsigned char * k p t r ;

*/

/* unsigned c h a r [24] */

f
unsigned char *store;
int first, i;
unsigned long savek[96];
cp3key(savek);
des3key(Df_Key, ENO);
for( i = 0; i < 24; i++ ) kptr[i]

= Df_Key[i] ;

first = 1 ;
while(

(*aptr != \ 0 )

Il first ) {

store = kptr;
f o r ( i = 0; i < 24 && (*aptr != \ 0 ); i++ ) {
*store++ "= *aptr & 0 x 7 f ;
*aptr++ = \ 0 ;

>
D3des(kptr, kptr);
first = 0;

673

DES

>
u s e 3 k e y (s a v e k );
retu rn ;

>
# e n d if

/*

D3_DES * /

# e n d if

/*

D2_DES * /

/* V a lid a t io n

sets:

*
* S in g le -le n g th k ey ,
* Key

: 0123

s in g le -le n g t h p la in te x t

4567 89ab c d e f

* P la in

: 0123

4567 89ab cd e7

* C ip h e r

: c95 7

4 4 2 5 6 a 5 e d31d

*
* D o u b le -le n g th k e y , s i n g le -le n g t h p la in t e x t * Key

: 0123

4567 89ab c d e f f e d c

* P la in

: 0123

4567 89ab cd e7

* C ip h e r

:7 fld

0 a77 8 2 6 b 8 a f f

b a 9 8 7 654 3 2 1 0

*
* D o u b le -le n g th k e y , d o u b le -le n g t h p la in t e x t * Key

: 0123

4567 89ab c d e f f e d c

ba98 7654 3210

* P la in

: 0123

4567 89ab c d e f 0123

4567 89ab c d f f

* C ip h e r

: 27a0

8440 406a d f6 0 2 7 8 f

4 7 c f 4 2 d 6 15d7

*
* T r ip le -le n g th k ey,

s in g le -le n g t h p la in te x t -

* Key

: 0123

4567 89ab c d e f f e d c

* P la in

: 0123

4567 89ab cd e7

* C ip h e r

: deOb

7 c 0 6 a e 5 e 0 ed 5

b a 9 8 7 6 5 4 3 2 1 0 8 9 a b c d e f 0 1 2 3 4 567

*
* T r ip le -le n g t h k e y , d o u b le -le n g t h p la in t e x t * K ey

: 0123

4567 89ab c d e f f e d c

b a 9 8 7 6 5 4 3 2 1 0 8 9 a b c d e f 0123 4 567

* P la in

: 0123

4567 89ab c d e f 0123

4567 89ab c d f f

* C ip h e r

: adOd

lb 3 0 a c l 7 c f 0 7 O e d l

l c 6 3 8 1 e 4 4 d e5

* d 3 d e s V 5.0 A rw o 9 2 1 1 .0 9 1 3 :5 5 G ra ven Im a g ery

LOKI 91
loki.i
/*
*

loki.i - contains the fixed permutation and substitution tables

for a 64 bit L0KI89 & LDKI91 implmentations.

*
*

Modifications:

vl.O

original tables

Aug 1989 lpb

v2.0

add various speed/size versions

Apr 1990 lpb

*
*

v2.1

install into RCS system for production control 5/90 lpb

v3.0

L0KI89 & L0KI91 now supported

10/92 lpb

Author: Laurence Brown <lpb@csadfa.oz>

Aug 1989

Computer Science, UC UNSW, ADFA, Canberra, ACT 2600, Australia.

Copyright 1989 by Lawrence Brown and UNSW. Ail rights reserved.

This program may not be sold or used as inducement to buy a

product without the written permission of the author.

*/
/ * 32-bit permutation function P */
/*

spcifis which input bit is permuted to output bits */

/*

31 30 29 ... 2 1 0 respectively (ie in MSB to LSB order) */

char P[32] = {
31,

23, 15, 7, 30, 22,

14, 6,

29,

21, 13, 5, 28, 20,

12, 4,

27,

19, 11, 3, 26, 18,

10, 2,

25,

17, 9, 1, 24, 16, 8, 0

>;
/*
*

sfn_desc - a desriptor table specifying which irreducible polynomial

and exponent

the Loki S-box

is to be used for each of the 16 S functions

in

*/
typedef struct -{
short

gen;

/* irreducible polynomial used in

this field */

short

exp;

/* exponent used to generate this

s function */

} sfn_desc;

676

L O K I 91

/*
*

sfn - the table specifying the irreducible polys & exponents used

in the Loki S-boxes for the Loki algorithm

*/
sfn_desc sfn[] = {
/*

101 11 0 1 1 1 * / 3 7 5 ,
101111011 * / 3 7 9 ,

/*

110 00 0 1 1 1 * / 3 9 1 ,

31}

/*

110001011 * / 3 9 5 ,

31}

/*

110 00 1 1 0 1 * / 3 9 7 , 3 1 }
1 1 0 011111 * / 4 1 5 , 3 1 }
1 10 10 0 0 1 1 * / 4 1 9 , 3 1 }

/*

/*
/*

110101001 * / 4 2 5 ,
1 1 0 11 0 0 0 1 * / 4 3 3 ,

/*
/*

31}
31}

31}
31}
31}

/*

1 1 0 11 1 1 0 1 * / 4 4 5 ,
11 1 00 0 0 1 1 * / 4 5 1 ,
1 1 1 00 1 1 1 1 * / 4 6 3 ,

/*

111010111 * / 4 7 1 ,

31}

/*
/*

111011101 * / 4 7 7 , 3 1 }
111100111 * / 4 8 7 , 3 1 }

/*

111110011 * / 4 9 9 ,

/*
/*

00,

31}
31}

31}

00}

loki. h
/*
*
*
*

loki.h - spcifis the interface to the LOKI encryption routines.


This library proviloki routines to expand a key, encrypt and
decrypt 64-bit data blocks.

The LOKI D ata Encryption Algorithm

is a block cipher which ensures that

function of its input and the key.

its output is

a complex

*
*

Authors:

Lawrie Brown <Lawrie.Brown@adfa.oz.au>

Aug 1989

Matthew Kwan <mkwan@cs.adfa.oz.au>

Sep 1991

*
*

Computer Science, UC UNSW, Australian Defence Force Academy,

Canberra, ACT 2600, Australia.

*
*

Version:

vl.O -

of loki64.o is current 7/89 lpb

v2.0 -

of loki64.c is current 9/91 mkwan

v3.0 -

now have loki89.c & loki91.c 10/92 lpb

*
*

Copyright 1989 by Lawrie Brown and UNSW. Ail rights reserved.

This program may not be sold or used as inducement

product without the written permission of

*
*

Description:

to buy a

the author.

677

L O K I 91

The routines provided by the library are:

*
*

lokikey(key)

- expands a key into subkey, for use

char k e y [8];

in

encryption and decryption oprations.

*
*

enloki(b)

- main LOKI encryption routine, this

char b [8];

routine

encrypts one 64-bit block b with subkey

*
*

deloki(b)

- main LOKI decryption routine, this

char b [ 8 ] ;

routine

decrypts one 64-bit block b with subkey

*
*

The 64-bit d ata & key blocks used in the algorithm are specified as eight

unsigned chars. For the purposes of implementing the LOKI algorithm,

these MUST be word aligned with bits are numbered as follows:

*
*

[63.-56]

[55..48]

b[0]

b[l]

in

...
b[2]

b[3]

b[4]

[7..0]
b[5]

b[6]

b[7]

*/
#define LOKIBLK 8

/* Ko of bytes in a LOKI data-block

*/

#define ROUNDS

/* Ko of LOKI rounds

*/

16

typedef unsigned long


extern Long
extern char
#ifdef

Long; /* type spcification for aligned LOKI blocks */

lokikey[2];

/* 64-bit key used by LOKI routines

*loki_lib_ver;/* String with version no. & copyright

STDC

/* dclar prototypes for library functions

*/
*/
*/

extern void enloki(char b[LOKIBLK]);


extern void deloki(char b[LOKIBLK]);
extern void setlokikey(char key[LOKIBLK] ) ;
#else

/* else just dclar library functions extern */

extern void e n l o k i O , d e l o k i O ,

setlokikey() ;

#endif __STDC__

loki91.c
/*
*

loki91.c - library routines for a 64 bit L0KI89 implmentation

*
* Designed b y

Matthew Kwan <mkwan@crypto.cs.adfa.oz.au> and

Lawrence Brown <lpb@cs.adfa.oz.au>

Modifications:

v2.0 - original set of code by mkwan 9/91

v3.0 - support both L0KI89 & L0KI91 versions

10/92 lpb

*
*

Copyright 1991 by Lawrence Brown and UNSW. Ail rights reserved.

This prograin may not be sold or used as inducement to buy a

product without the written permission of the author.

L O K I 91

678
*

nb: if this program is compiled on a little-endian machine (eg Vax)

#define LITTLE_ENDIAN

in order to enable the byte swapping

routines

*
*

if a detailed trace of L0KI91 function f is required for debugging

#define TRACE=n

n=l print blocks, n=2 print fn f also

n=3 print individual S-box cales also

*
*

these routines assume that the 8-byte char arrays used to pass

the 64-bit blocks fall on a word

may be read as longwords for efficiency reasons.

boundary, so that the blocks

not true, the load & save

If this is

of the parameters will need changing.

*/

#include <stdio.h>
#include "loki.h"

/* include Interface Spcification header file */

#include "loki.i"

/* include Interface Spcification header file */

/*
*

string specifying version and copyright message

*/
char

*loki_lib_ver =
"L0KI91 library v3.0, Copyright (C) 1991 Lawrence Brown & UNSW";

Long

loki_subkeys[ROUNDS];

/* subkeys at the 16 rounds */

static Long

f ();

/* dclar LOKI function f */

static short

sO;

/* dclar LOKI S-box fn s */

/*
*

R0L12(b)

- macro to rotate 32-bit block

left by 12 bits

R0L13(b)

- macro to rotate 32-bit block

left by 13 bits

*/
#define R0L12(b)

b = ((b

12)

I (b

20));

#define R0L13(b)

b = ((b

13)

I (b

19));

/*
*

bswap(b) - exchanged bytes in each longword of a 64-bit data block

on little-endian machines where byte order is reversed

*/
#ifdef

LITTLE.ENDIAN

#define bswap(cb) -[
register char

\
c;

c = cb[0] ; cb [0] = cb [3] ; cb [3] = c ;


c = cb[l] ; cb[l] = cb[2];

cb [2] = c ;

c = c b [4] ; cb[4] = cb [7] ; cb[7] = c;


c = cb [5] ; cb [5] = cb [6] ; cb[6] = c;

>
#endif

679

L O K I 91

/*
*

setlokikey(key) - save 64-bit key for use in encryptions & dcryptions

and compute sub-keys using the key schedule

*/
void
setlokikey(key)
char

/* Key to use, stored as an array of Longs

k e y[LOKIBLK];

*/

i
register

i;

register Long

KL, KR;

#ifdef LITTLE_ENDIAN
/* swap bytes round if little-endian * /

b s w a p(key);
#endif
#if

TRACE >= 1
fprintf (stderr, "

keyinit(%081x, */,081x) \n ,

((Long *)key)[0],

((Long *)key)[l]);

#endif
KL = ((Long * ) key)[0];
K R = ((Long *)key) [1];
for (i=0; i<R0UNDS;

i+=4) {

/ * Generate the 16 subkeys */

loki_subkeys[i] = K L ;
R0L12

(KL);

loki_subkeys[i+l] = KL;
RDL13 (KL);
loki_subkeys[i+2] = KR;
R0L12 (KR);
loki_subkeys[i+3] = KR;
R0L13 (KR);

>
Jfifdef LITTLE_ENDIAU
bswap(key);

/* swap bytes back if little-endian */

#endif

/*
*
*

enloki(b) - main L0KI91 encryption routine, this routine encrypts one


64-bit block b using the LDKI91 algorithm with loki^subkeys

*
*
*
*
*

nb: The 64-bit block is passed as two longwords. For the


purposes of the L0KI89 algorithm, the bits are numbered:
[6362 .. 33 32] [31 30 ... 1 0]
The L (left) half is b[0], the R (right) half is b[l]

680

L O K I 91

*/
void
enloki

(b)

char

b [LOKIBLK];

{
register

i;

register Long

L, R;

/* left & right data halves

*/

#ifdef LITTLE_ENDIAN
bswap(b);

/* swap bytes round if little-endian */

#endif
#if

TRACE >= 1
fprintf (stderr, "

enlo k i ( /,0 8 1 x , y,081x)\n",

((Long *)b) [0] , ((Long *)b)[l]);


#endif
L = ((Long * ) b ) [0];
R = ((Long *)b) [1] ;
for (i=0; i<R0UNDS; i+=2)

/* Encrypt with the 16subkeys

*/

L ~= f (R, loki_subkeys[i]);
R = f (L, loki_subkeys[i+1] );

}
((Long *)b) [0] = R;

/* Y = swap(LR)

*/

((Long * ) b ) [1] = L;
#if

TRACE >= 1
fprintf (stderr,"

enloki returns "/.081x, %081x\n",

((Long *)b) [0] , ((Long *)b)[l]);


#endif
#ifdef LITTLE_ENDIAN
bswap(b);

/* swap bytes round if little-endian * /

#endif

>

/*
*

deloki(b) - main

L0KI91 decryption

routine, this routine decrypts one

64-bit block b using the L0KI91 algorithm with loki_subkeys

*
*

Decryption uses the same algorithm as encryption, except that

the subkeys are used in reverse order.

*/
void
deloki(b)
char

b [LOKIBLK];

681

L O K I 91

register

i;

register Long

L, R;

/* left ft right data halves

*/

#ifdef LITTLE_ENDIAN
bswap(b);

/* swap bytes round if little-endian */

#endif
#if

TRACE >= 1
fprintf (stderr, "

deloki(y,081x, /081x)\nM ,

((Long *)b)[0],

((Long *)b)[l]);

#endif
/ * LR = X XOR K */

L = ((Long * ) b ) [0];
R = ((Long * ) b ) [1];
for (i=R0UNDS;

/ * subkeys in reverse order */

i>0; i-=2) {

L ~= f(R, loki_subkeys[i-l]);
R ~= f(L, loki_subkeys[i-2]);

1
((Long * ) b ) [0] = R;

/* Y = LR XOR K */

((Long *)b)[l] = L;
#if

TRACE >= 1
fprintf (stderr, "

deloki returns 7,081x, /.081x\n",

( (Long *)b) [0] , ( (Long *)b) [1] ) ;


#endif
#ifdef LITTLE.ENDXAK
b s w a p ( b );

/* swap bytes round if little-endian */

#endif

/*
*

f(r, k) - is the complex non-linear LOKI function,

whose output

is a complex function of both input data and sub-key.

*
*

The d ata is XORed with the subkey, then

expanded into

4 x 12-bit

values, which are fed into the S-boxes.

The 4 x 8-bit

outputs

from the S-boxes are permuted together to form the

which is returned.

32-bit value

*
*

In this implmentation the outputs from

pre-permuted and stored in lookup tables.

the S-boxes have been

*/
define M A S K 12
static Long
f (r, k)

OxOfff

/ * 12 bit mask for expansion E */

L O K I 91

682
register Long

r;

/* Data value R(i-l) */

Long

k;

/* Key

*/

K(i)

{
Long

a, b, c;

/* 32 bit S-box output, & P output */

a = r ' k;

/* A = R(i-l) XOR K(i) */

/ * want to use slow speed/small size version * /


/* B = S(E(R(i-l))'K(i)) */
b = ((Long)s((a

& MASK12))

((Long)s(((a

8) & MASK12))

8)

((Long)s(((a

16) & MASK12))

16)

((Long)s((((a

24)

I (a

perm32(&c, &b, P ) ;
#if

) I

TRACE >= 2

8)) & MASK12))

24);

/* C = P(S( E(R(i-l)) XOR

K(i))) */

/* If Tracing, dump A, K(i), and f(R(i-l),K(i)) */

fprintf (stderr,"

fC/.081x, %081x) = P.S(*/081x) = PC/.081x) = /.081x\n",

r, k, a, b, c ) ;
#endif
r e t u r n (c);

/* f returns the resuit

C */

/*
*

s(i) - return S-box value for input i

*/
static short s(i)
/ * return S-box value for input i */

register Long i;

{
register short
short

r, c, v, t;
/ * exponentiation routine for GF(28) */

exp8();

r =

( ( i 8 ) & Oxc) I (i & 0x3);

/* row value-top 2 & bottom 2 */

c =

(i2)

/* column value-middle 8 bits

t =

(c + ((r * 17) * Oxff)) & Oxff;

v =

exp8(t, sfn[r].exp, sfn[r].gen); / * Sfn[r] = t exp m od gen */

& Oxff;

*/

/* base value for Sfn */

#if TRACE >= 3


fprintf (stderr, "

s(Xlx= [*/,d,
/,d] ) = 7,x sup
/id m o d Xd =
/.x\n" ,

i, r, c, t, sfn[r].exp, sfn[r] .gen, v) ;


#endif
r e t u r n ( v);

}
/*
*

perm32(out, in, perm) is the gnral permutation of a 32-bit input

block to a 32-bit output block, under the

permutation array perm. Each element of perm spcifis

control of a

input bit is to be permuted to the output

index as the array ele m e n t .

which

bit with the same

683

L O K I 91

nb: to set bits in the output word, as mask with a single 1 in it is


used. On each step, the 1 is shifted into the next location

*/
ffdefine MSB
perm32(out,

/* MSB of 32-bit word */

0x80000000L
in

perm)

Long

*out;

/* Output 32-bit block

to be permuted

Long

*in;

/* Input

after permutation

char

perm[32];

/* Permutation array

32-bit block

*/
*/
*/

{
Long

mask = MSB;

/* mask used to set bit in output

*/

register int

i, o, b;

/* input bit no, output bit no, value */

register char

*p = perm;

/ * ptr to permutation array

*/

*out = 0;

/* clear output block */

for (o=0; o<32; o++) {


i =(int)*p++;

/* get input bit permuted to output o */

b = (*in

/ * For each output bit position o */

i)

01;/* value of input bit i */


/* If the input bit i is set */

if (b)
*out
m ask =

|= mask;

/*

1;

OR in mask to output i */

/* Shift mas k to next bit

*/

/*
*

mult8(a, b, gen) - returns the product of two binary

strings a and b using the generator gen as the modulus

mult = a * b mod gen

gen generates a suitable Galois field in GF(2~8)

*/
#define SIZE 256

/* 256 elements in GF(2~8) */

short mult8(a, b, gen)


short

a, b;

/* operands for multiply */

short

gen;

/* irreducible polynomial generating

Galois Field */

{
short

product = 0 ;

while(b != 0) {

/* resuit of multiplication */
/* while multiplier is non-zero */

if (b

& 01)

a =

1;

if (a

>= SIZE)

b =

1;

product = a; /*

a ~= gen;

>
return(product);

add multiplicand if LSB of b set */

/*

shift multiplicand one place */

/*

and modulo reduce if needed */

/*

shift multiplier one place

*/

684

L O K I 91

>
/*
*

exp8( b ase, exponent, gen) - returns the resuit of

exponentiation given the base, exponent, generator of GF,

exp = base " exp mod gen

*/
short exp8(base, exponent, gen)
short
short

base;
exponent;

/* base of exponentiation
/* exponent

short

gen;

/ * irreducible polynomial generating Galois Field * /

short

accum = base;

short

resuit = 1 ;

if (base == 0)
r e turn(O);
while (exponent

+/
*/

/ * superincreasing sequence of base

*/

/ * resuit of exponentiation

*/

/* if zro base specified then

*/

/ * the resuit is "0" if base = 0

*/

!= 0) { / *

repeat while exponent non-zero * /

if (( exponent & 0x0001) == 0x0001)

/* multiply if exp 1 */

resuit = mult8(result, accum, gen);


exponent =
accum =

y
return(result);

>

1;

/* shift exponent to next digit */

mult8(accum, accum,

gen);

/ * & square

*/

IDEA
usuals.h
/ * usuals.h - The usual typedefs, etc.

*/
#ifndef USUALS /* Assures no redfinitions of usual t y p e s . . . * /
#define USUALS
typedef

unsigned char boolean;

/* values are TRUE or FALSE */

typedef

unsigned char byte;

/* values are 0-255 */

typedef

byte *byteptr; /* pointer to byte */

typedef

char *string;

/* pointer to ASCII character string

typedef unsigned short wordl6;


#ifdef

*/

/* values are 0-65535 * /

alpha

typedef unsigned int word32;

/* values are 0-4294967295 */

#else
typedef unsigned long word32;

/* values are 0-4294967295 */

#endif
#ifndef TRUE
#define FALSE 0
#define TRUE (!FALSE)
#endif

/* if TRUE not already defined */

#ifndef min

/* if min macro not already defined */

#define min(a.b)

(((a)<(b))

? (a) :(b)

#define max(a.b)

(((a)>(b))

? (a) :(b)

#endif

/* if min macro not

/ * void for use in pointers

already defined */
*/

#ifndef N0_V0ID_STAP.
ffdefine VOID

void

#else
#define VOID

char

#endif
/* Zero-fill the byte buffer.
#define fillOCbuffer,count)

*/

memsetC buffer, 0, count )

/* This macro is for burning sensitive data.

Many of the

686

ID E A

file I/O routines use it for zapping buffers */


#define burn(x) fillOCCVOID *)&(x).sizeof(x))
#endif

/* if USUALS not already defined */

randpool.h
#include "usuals.h"
/* Set this to whatever you need (must be > 512) */
#define RANDPOOLBITS 3072
void randPoolStir(void);
void randPoolAddBytes(byte const *buf, unsigned l e n ) ;
void randPoolGetBytesCbyte *buf, unsigned len);
byte randPoolGetByte(void);

idea.h
#ifndef IDEA_H
#define IDEA.H

/*
*

idea.h - header file for idea.c

*/
#include "usuals.h"

/* typedefs for byte, wordl6, boolean, etc. */

#define IDEAKEYSIZE 16
#define IDEABLOCKSIZE 8
#define IDEAROUNDS 8
#define IDEAKEYLEN (6*IDEAR0UNDS+4)

/*
* iv[] is used as a circular buffer.

bufleft is the number of

* bytes at the end which have to be filled in before we crank


* the block cipher again.

We do the block cipher opration

* lazily: bufleft may be

0. When we need one more byte, we

* crank the block cipher

and

set bufleft to 7.

*
* oldcipherl] holds the previous 8 bytes of ciphertext, for use
* by i d e a C f b S y n c O

and P h i l 1s, ahem, unique (not insecure, just

* unusual) way of doing CFB encryption.

*/
struct IdeaCfbContext {
byte o ldcipher[8];
byte iv[8] ;
wordl6 key[IDEAKEYLEN];

687

ID E A

int bufleft;

>;
struct IdeaRandContext {
byte o u t b u f [8];
wordl6 key[IDEAKEYLEN];
int bufleft;
byte i n ternalbuf[8];

>;
void ideaCfbReinit(struct IdeaCfbContext *context, byte const * i v ) ;
void ideaCfblnit(struct IdeaCfbContext *context, byte const (key[16]));
void ideaCfbSync(struct IdeaCfbContext *context);
void ideaCfbDestroy(struct IdeaCfbContext *context);
void ideaCfbEncrypt(struct IdeaCfbContext *context,
byte const *src, byte *dest, int count);
void ideaCfbDecrypt(struct IdeaCfbContext *context,
byte const *src, byte *dest, int count);
void ideaRandlnit(struct IdeaRandContext *context, byte const

(key[16]),

byte const (seed[8]));


byte ideaRandByte(struct IdeaRandContext *c) ;
void ideaRandWash(struct IdeaRandContext * c ,

struct IdeaCfbContext *c f b ) ;

void ideaRandState(struct IdeaRandContext *c, byte k e y [16], byte seed[8]);


#endif /*

IDEA_H */

idea.c
/*
*
*

idea.c - C source code for IDEA block cipher.


IDEA (International Data Encryption Algorithm), formerly known as

IPES (Improved Proposed Encryption Standard).

Algorithm developed by Xuejia Lai and James L. Massey, of ETH Zurich.

This implmentation modified and derived from original C code

developed by Xuejia Lai.

Zero-based indexing added, names changed from IPES to IDEA.

CFB functions added.

Random number routines added.

*
*

Extensively optimized and restructured by Colin Plumb.

There are two adjustments that can be made to this code to

speed it up.

pays off significantly if selectively set or not s e t .

Experiment to see what works best for your machine.

Defaults may be used for PCs.

Only the -DIDEA32

*
*

Multiplication: default is inline, -DAVOID_JUMPS uses a

diffrent version that does not do

jumps (a few percent worse on a S P ARC), while

any conditional

-DSMALL_CACHE takes it out of line

within a small on-chip code cache.

to stay

ID E A

688
*

V a x i a b l es: normally,

16-bit variables are used, but some

machines (notably RISCs) do not have 16-bit registers,

so they do

register variables and masks explicitly only where

a great deal of masking.

necessary. On a SPARC,

performace

for example,

-DIDEA32 uses "int"


this boosts

by 307..

*
*

The IDEA(tm) block cipher is covered by patents held by ETH and a

Swiss company called Ascom-Tech AG.

PCT/CH91/00117, the European patent number is EP 0 482 154 Bl, and

the U.S. patent number is US005214703.

Ascom-Tech AG.

use.

Profos, Ascom Tech AG, Solothurn Lab, Postfach 151, 4502 S o l o t h u m ,

Switzerland, Tel +41 65 242885, Fax +41 65 235761.

The Swiss patent number is


IDEA(tm) is a trademark of

There is no license fee required for noncommercial

Commercial users may obtain licensing dtails from Dieter

The IDEA block cipher uses a 64-bit block size, and a 128-bit key

size.

because ail of the primitive inner oprations are done with 16-bit

arithmetic.

16-bit words.

It breaks the 64-bit cipher block into four 16-bit words


It likewise breaks the 128-bit cipher key into eight

For further information on the IDEA cipher, see the book:

Xuejia Lai,

ETH Sris on Information Processing Ced. J.L. Massey) Vol 1,

"On the Design and Security of Block Ciphers",

Hartung-Gorre Verlag, Konstanz, Switzerland,

3-89191-573-X.

1992.

ISBN

This code runs on

order to make the

arrays of bytes by taking pairs in big-endian


16-bit words that IDEA uses internally.

produces the same

resuit regard]ess of the byte order of the

native CPU.

This

*/
#include idea.h"
#include randpool.h"
/ * Use > 16-bit temporaries */

#ifdef IDEA32
#define lowl6(x)

((x) & OxFFFF)

typedef unsigned int uintl6;

/* at LEAST 16 bits, maybe more */

#else
#define lowl6(x)

(x)

/* this is only ever applied to u i n t l 6 s */

typedef wordl6 uintl6;


#endif
#ifdef _GNUC_
/*

const

simply means there are no side effects for this function,

* which is useful info for the gcc optimizer

*/
#define CONST
#else

const__

689

ID E A

#define CONST
#endif

/*
*

Multiplication, modulo (2**16)+1

* Note that this code is structured on the assumption that


* untaken branches are cheaper than taken branches, and the
* compiler d o e s n t schedule branches.

*/
#ifdef SMALL_CACHE
CONST static uintl6
mul(register uintl6 a, register uintl6 b)
register word32 p;
p = (word32)a * b;
if (p) {
b = l o w l6(p);
a = p16;
return (b - a) + (b < a) ;
} else if (a) {
return 1-b;
} else {
return 1-a;

>
) /* inul * /
#endif /* SMALL_CACHE */

/*
* Compute the multiplicative inverse of x, modulo 65537, using E u c l i d s
* algorithm. It is unrolled twice to avoid swapping the registers each
* itration, and some subtracts of t have been changed to adds.

*/
CONST static uintl6
mullnv(uintl6 x)
uintl6 tO, tl;
uintl q, y;
if (x <= 1)
return x;

/* 0 and 1 are self-inverse */

tl = OxlOOOlL / x;

/* Since x >= 2, this fits into 16 bits */

y = OxlOOOlL '/. x;
if (y = = 1)
return lowl6(l-tl);
tO = 1;
do {
q = x / y;
x = x 7. y;
tO += q * tl;
if (x == 1)

ID E A

690
return tO;
q = y / x;

y = y /. x ;
tl += q * tO;
> while (y != 1);
return lowl6(l-tl);
} / * muklnv */

/*
* Expand a 128-bit user key to a working encryption key EK

*/
static void
ideaExpandKey(byte const *userkey, wordl6 *EK)
int i , j ;
for (j=0; j<8; j++) {
EK[j] = ( u s e r key[0]8) + userkey [1] ;
userkey += 2;

>
for (i=0; j < IDEAKEYLEN; j++) {
i++;
EK[i+7] = EK[i & 7]

9 I EK[i+l & 7]

7;

EK += i k 8;
i &= 7;

>
J /* ideaExpandKey */

/*
* Compute IDEA decryption key DK from an expanded IDEA encryption key EK
* Note that the input and output may be the same.

Thus, the key is

* inverted into an internai buffer, and then copied to the output.

*/
static void
ideaInvertKey(wordl6 const *EK, wordl6 DK[IDEAKEYLEN])
int i;
uintl6 tl, t2, t3;
wordl6 temp[IDEAKEYLEN];
wordl6 *p = temp + IDEAKEYLEN;
tl = m u lInv(*EK++);
t2 = -*EK++;
t3 = -*EK++;
* p = mulInv(*EK++);
* p = t3;
* p = t2;
* p = tl;
for (i = 0; i < IDEAR0UNDS-1; i++) {
tl = *EK++;

691

ID E A

* p = *EK++;
* p = tl;
tl = mulInv(*EK++);
t2 = -*EK++;
t3 = -*EK++;

* p = mul!nv(*EK++);
* p = t2;
* p = t3;
* p = tl;
}
tl = EK++;
*
*

p
p

= *EK++;
= tl;

tl = m u lInv(*EK++);
t2 = -*EK++;
t3 = - * E K + + ;

* P
* P

= mulInv(*EK++);

= t3;
* p = t2;
* P = tl;
/* Copy and destroy temp copy */
memcpyCDK, temp, sizeof(temp));
bu r n (temp);
} /* idealnvertKey */

/*
* MUL(x,y) computes x = x*y, modulo 0x10001.
* tl6 and t32.

Requires two temps,

x is modified, and must me a side-effect-free lvalue.

* y m a y be anything, but unlike x, must be strictly 16 bits even if


* lowl6() is #defined.
* Ail of these are quivalent - see which is faster on your machine

*/
#ifdef SMALL_CACHE
#define ML(x,y)

(x = mul(lowl6(x),y))

#else /* !SMALL_CACHE */
#ifdef AV0ID_JUMPS
#define ML(x,y)

(x = lowl6(x-l), tl6 = lowl6((y)-l), \


t32 = Cword32)x*tl6 + x + tl6 + 1, x = lowl6(t32), \
tl6 = t 3 2 1 6 ,

#else /*

x = (x-tl6) + (x<tl6) )

!AV0ID_JUMPS (default) */

#define ML(x,y) \
( (tl6 = (y)) ? \
(x=lowl6(x)) ? \
t32 = (word32)x*tl6,
x = lowl6(t32), \
tl6 = t 3 2 1 6 ,

x = (x-tl6)+(x<tl6) \

: \

(x = l - t l 6 ) \

ID E A

692
: \
(x = 1-x))
#endif
#endif
/*

IDEA encryption/decryption algorithm */

/ * Note that in and out can be the same buffer * /


static void
ideaCipher(byte const (inbuf[8]), byte (outbuf[8]), wordl6 const *key)

{
register uintl6 xl, x2, x3, x4, s2, s3;
wordl6 *in, * o u t ;
#ifndef SMALL_CACHE
register uintl6 tl6;

/ * Temporaries needed by ML macro */

register word32 t32;


#endif
int r = IDEAROUNDS;
in = (wordl6 *)inbuf;
xl = *in++;

x2 = *in++;

x3 = *in++;

x4 = *in;

#ifndef HIGHFIRST
xl = ( x l 8 )

I (xl8) ;

x2 = ( x 2 8 )

I (x28) ;

x3 = ( x 3 8 )

I (x38);

x4 = ( x 4 8 )

I (x48);

#endif
do {
MUL(xl,*key++) ;
x2 += *key++;
x3 += *key++;
MUL(x4, * key++);
s3 = x3;
x3 *= xl;
MUL(x3, *key++);
s2 = x2;
x2 "= x4;
x2 += x3;
MUL(x2, *key++);
x3 += x2;
xl "= x2;

x4 = x3;

x2 "= s3;

x3 = s2;

} while ( r ) ;
MUL(xl, *key++);
x3 += *key++;
x2 += *key++;
MUL(x4, *k e y ) ;

693

ID E A

out = (wordl6 *)outbuf;


#ifdef HIGHFIRST
out++ = x l ;
out++ = x3;
*out++ = x2;
out = x4;
#else / .'HIGHFIRST /
xl = lowl6(xl);
x2 = 1 o w 16( x 2);
x3 = 1 o w 16( x 3);
x4 = lowl6(x4);
out++ = ( x l 8 )

I (xl8);

out++ = ( x 3 8 )

I (x38);

out++ = ( x 2 8 )

I (x28) ;

out

I Cx4<<8) ;

= (x48)

#endif
} / ideaCipher /

/*

*/

#ifdef TEST
#include <stdio.h>
#include <time.h>

/
This is the number of Kbytes of test data to encrypt.
It defaults to 1 MByte.

/
#ifndef BLOCKS
#ifndef KBYTES
#define KBYTES 1024
#endif
#define BLOCKS (64+KBYTES)
#endif
int
main(void)
{
/ Test driver for IDEA cipher /
int i, j, k;
byte userkey [16];
wordl6 EK[IDEAKEYLEN], DK[IDEAKEYLEN];
byte XX [8], YY[8] , ZZ[8];
clock_t start, end;
long 1;
/ Make a sample user k ey for testing... /
for(i=0; i<16; i++)
userkey[i] = i+1;
/ Compute encryption subkeys from user key...
ideaExpandKey(userkey, EK);

ID E A

694
p r i n t f ("\nEncryption key subblocks:

);

for (j=0; j<IDEAR0UNDS+1; j++) {


printf ("\nround "/.d:

", j+1) ;

if (j < IDEAROUNDS)
for(i=0; i<6; i++)
printf ("
/.6u" , EK [j *6+i] ) ;
else
for(i=0;

i<4; i++)
printf C

y.6u", EK [j*6+i] ) ;

}
/* Compute decryption subkeys from encryption subkeys... */
idealnvertKey(EK, D K ) ;
p r i n t f ("\nDecryption key subblocks:

");

for (j=0; j<IDEAROUNDS+l; j++) {


p r i n t f ("\nround '/.A:

", j+1);

if (j < IDEAROUNDS)
for(i=0;

i<6; i++)
printf (" */,6u", DK [j *6+i] ) ;

else
for(i=0;

i<4; i++)
printf (" V.6u", DK [j *6+i] ) ;

}
/* Make a sample plaintext pattern for t e s ting... */
for (k=0; k<8; k++)
XX [k] = k;
printf("\n Encrypting

y.d

bytes

(*/.ld blocks)...", BL0CKS*16, BLOCKS);

fflush(stdout);
start = c l o c k O ;
memcpy(YY, XX, 8);
for ( 1 = 0 ;

1 < BLOCKS; 1++)

ideaCipher(YY, YY, E K ) ; /* repeated encryption */


memcpy(ZZ, YY, 8);
for ( 1 = 0 ;

1 < BLOCKS; 1++)

ideaCipher(ZZ, ZZ, D K ) ; /* repeated decryption */


end = c l o c k O - start;
1 = end

/ (CL0CKS_PER_SEC/1000) + 1;

i = 1/1000;
j = 15C1000;
1 = (16 * BLOCKS * (CL0CKS_PER_SEC/1000)) / (end/1000);
printf ("Xd.y,03d seconds = V.ld bytes per second\n", i, j, 1);
printf("\nX */.3u
X X [0], XX [1],
printf ("\nY y.3u
YY[0] , YY[1] ,
printf ("\nZ V.3u
ZZ[0], ZZ[1],

y.3u y.3u

/.3u
/.3u

*/.3u y.3u y.3u\n",

XX [2], XX [3], XX [4], XX [5],


*/.3u y.3u

*/.3u
/.3u

YY[2] , YY[3] , YY[4], YY[5] ,


7.3u y,3u

/,3u */,3u

XX [6] , XX [7]);

y,3u y.3u y.3u\n",


YY[6] , YY[7]);

*/,3u "/,3u y,3u\n ,

ZZ[2], ZZ[3] , ZZ[4] , ZZ[5] ,

ZZ[6] , ZZ[7]);

695

ID E A

/ * Now decrypted ZZ should be same as original XX */


for (k=0; k<8; k++)
if (XX [k]

!= ZZ [k] ) {

p r i n t f ("\n\07Error!
exit(-l);

Noninvertable encryption.\n");

/* error exit */

>
printf (\nNormal exit A n " ) ;
return 0;

/* normal exit */

}- /* main */
#endif /* TEST */

Z * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

void
ideaCfbReinit(struct IdeaCfbContext *context, byte const *iv)
if (iv)
memcpy(context->iv, iv, 8);
else
fillO(context->iv, 8);
context->bufleft = 0;

}
void
ideaCfblnit(struct IdeaCfbContext *context, byte const
ideaExpandKey(key,

(key[16]))

context->key);

ideaCfbReinit(context,0);

>
void
ideaCfbDestroy(struct IdeaCfbContext *context)
burn(*context);

>
/*
* Dkay, explanation time:
* Phil invented a unique way of doing CFB t h a t s sensitive to semantic
* boundaries within the data being encrypted.

One way to phrase

* CFB en/decryption is to say that you XOR the current 8 bytes with
* IDEA(previous 8 bytes of ciphertext).

Normally, you repeat this

* at 8-byte intervais, but Phil decided to resync things on the


* boundaries between elements in the stream being encrypted.

*
* That is, the last 4 bytes of a 12-byte field are en/decrypted using
* the first 4 bytes of IDEA(previous 8 bytes of ciphertext), but then
* the last 4 bytes of that IDEA computation are thrown away, and the
* first 8 bytes of the next field are en/decrypted using

696

ID E A

* IDEA(last 8 bytes of ciphertext).

This is quivalent to using a

* shorter feedback length (if y o u re familiar with the gnral CFB


* technique) briefly, and d o e s n t weaken the cipher any (using shorter
* CFB lengths makes it stronger, actually), it just makes it a bit unusual.

*
* Anyway, to accomodate this behaviour, every time we do an IDEA
* encrpytion of 8 bytes of ciphertext to get 8 bytes of XOR mask,
* we remember the ciphertext.

Then if we have to resync things

* after having processed, say, 2 bytes, we refill the iv buffer


* with the last 6 bytes of the old ciphertext followed by the
* 2 bytes of new ciphertext stored in the front of the iv buffer.

*/
void
ideaCfbSync(struct IdeaCfbContext *context)

{
int bufleft = context->bufleft;
if (bufleft) {
memmove(context->iv+bufleft, context->iv, 8-bufleft);
memcpy(context->iv, context->oldcipher+8-bufleft, bufleft);
context->bufleft = 0;

>
>
/*
* Encrypt a buffer of data, using IDEA in CFB mode.
* There are more compact ways of writing this, but this is
* written for speed.

*/
void
ideaCfbEncrypt(struct IdeaCfbContext *context, byte const *src,
byte *dest, int count)

{
int bufleft = context->bufleft;
byte *bufptr = context->iv + 8-bufleft;
/* If there are no more bytes to encrypt that there are bytes
* in the buffer, XOR them in and return.

*/
if (count <= bufleft) {
context->bufleft = bufleft - count;
while (count ) {
*dest++ = *bufptr++ ~= *src++;

>
return;

>
count -= bufleft;
/* Encrypt the first bufleft

(0 to 7) bytes of the input by XOR

* with the last bufleft bytes in the iv buffer.

*/
while (bufleft ) {

697

ID E A

*dest++ = (*bufptr++

*src++);

>
/* Encrypt middle blocks of the input by cranking the cipher,
* XORing 8-byte blocks, and repeating until the count
* is 8 or less.

*/
while (count > 8) {
bufptr = context->iv;
memcpy(context->oldcipher, bufptr, 8);
ideaCipher(bufptr, bufptr, context->key);
bufleft = 8;
count -= 8;
do {
*dest++ = (*bufptr++ *= *src++);
} while ( b u f left);

}
/* Do the last 1 to 8 bytes */
bufptr = context->iv;
memcpy(context->oldcipher, bufptr, 8);
ideaCipher(bufptr, bufptr, context->key);
context->bufleft = 8-count;
do

I
*dest++ = (*bufptr++ = * src++);

> while ( count);

/*
* Decrypt a buffer of data, using IDEA in CFB mode.
* There are more compact ways of writing this, but this is
* written for speed.

*/
void
ideaCfbDecrypt(struct IdeaCfbContext *context, byte const *src,
byte *dest, int count)

{
int bufleft = context->bufleft;
static byte *bufptr;
byte t;
bufptr = context->iv + (8-bufleft);
if (count <= bufleft) -f
context->bufleft = bufleft - count;
while (count ) {
t = *bufptr;
*dest++ = t ~ (*bufptr++ = * src++);

>
return;

}
count -= bufleft;
while (bufleft ) {

ID E A

698
t = *bufptr;
*dest++ = t

(*bufptr++ = * src++);

}
while (count > 8) {
bufptr = context->iv;
memcpy(context->oldcipher, bufptr, 8);
ideaCipher(bufptr, bufptr, context->key);
bufleft = 8;
count -= 8;
do {
t = *bufptr;
*dest++ = t " (*bufptr++ = *src++);
} while ( bufleft) ;

>
bufptr = context->iv;
m emcpy(context->oldcipher, bufptr, 8);
ideaCipher(bufptr, bufptr, context->key);
context->bufleft = 8-count;
do {
t = *bufptr;
*dest++ = t (*bufptr++ = * src++);
} while ( coun t ) ;

>
/ ********************************************************************/
/*
* Cryptographically strong pseudo-random-number generator.
* The design is from Appendix C of ANSI X9.17,
* Institution Key Management

"Financial

(Wholesale)", with IDEA

* substituted for the DES.

*/
/*
* Initialize a cryptographie random-number generator.
* key and seed should be arbitrary.

*/
void
ideaRandlnit(struct IdeaRandContext *context, byte const (key[16]),
byte const (seed[8]))

{
int i;
ideaExpandKey(key, context->key);
context->bufleft = 0;
m emcpy(context->internalbuf, seed, 8);

>

/*
* Read out the R N G s state.

699

ID E A

*/
void
ideaRandState(struct IdeaRandContext *context, byte k e y [16], byte seed[8])
int i;
memcpyCseed, c o n t e x t - > i n t e m a l b u f , 8);
for (i = 0; i < 8; i++) {
key[2*i] = context->key[i]

8;

key[2*i+l] = context->key[i] ;

>
>
/*
* Encrypt the R N G s state with the given CFB encryptor.

*/
void
ideaRandWash(struct IdeaRandContext *context, struct IdeaCfbContext *cfb)

{
byte k eyseed[16+8];
int i;
ideaRandState(context, keyseed, keyseed+16);
ideaCfbEncrypt(cfb, keyseed, keyseed, 16+8);
ideaRandInit(context, keyseed, keyseed+16);
memset(keyseed, 0, 16+8);

}
/*
* Cryptographie pseudo-random-number generator, used for generating
* session keys.

*/
byte
ideaRandByte(struct IdeaRandContext *c)

int i;
if (!c->bufleft) {
byte timestamp[8] ;
/* Get some true-random noise to help */
randPoolGetBytes(timestamp,

sizeof(timestamp));

/* Compute next 8 bytes of output */


for (i=0; i<8; i++)
c->outbuf[i] = c->internalbuf [i] ~ timestamp[i] ;
ideaCipher(c->outbuf, c->outbuf, c ->key);
/* Compute new seed vector */
for (i=0; i<8; i++)

700

ID E A

c->internalbuf[i] = c->outbuf[i]

~ timestamp[i];

ideaCipher(c->internalbuf, c->internalbuf, c->key);


burn(timestamp);
c->bufleft = 8;

>
return c ->outbuf[ c->bufleft];

>
/* end of idea.c */

GOST
gost.c
/*
* The GOST 28147-89 cipher
*

* This is based on the 25 Movember 1993 draft translation


* by Aleksandr Malchik, with Whitfield Diffie, of the Government
* Standard of the U.S.S.R. GOST 28149-89,
* Algorithm", effective 1 July 1990.

"Cryptographie Transformation

(Wiitfield.Diffieeng.sun.com)

*
* That is a draft, and may contain errors, which will be faithfully
* reflected here, along with possible exciting new bugs.
*

* Some dtails have been cleared up by the paper "Soviet Encryption


* Algorithm" by Josef Pieprzyk and Leonid Tombak of the University
* of Wollongong, New South Wales.

(josef/leoScs.adfa.oz.au)

* The standard is written by A. Zabotin (project leader), G.P. Glazkov,


* and V.B. Isaeva.

It was accepted and introduced into use by the

* action of the State Standards Committee of the USSFt on 2 June 89 as


* No.

1409.

It was to be reviewed in 1993, but whether anyone wishes

* to take on this obligation from the USS R is questionable.

*
* This code is placed in the public domain.

*/
/*
* If you r ead the standard,

it belabors the point of copying corresponding

* bits from point A to point B quite a b i t .

It helps to understand that

* the standard is uniformly little-endian, although it numbers bits from


* 1 rather than 0, so bit n has value 2~(n-l).

The least significant bit

* of the 32-bit words that Eure manipulated in the algorithm is the first,
* lowest-numbered, in the bit string.

*/

/* A 32-bit data type */


#ifdef

alpha

/* Any other 64-bit machines? */

typedef unsigned int word32;

GOST

102

#else
typedef unsigned long word32;
#endif

/*
* The standard does not specify the contents of the 8 4

bit->4 bit

* substitution boxes, saying

network

* being set up.

t h e y re a parameter of the

For illustration purposes here, I have used

* the first rows of the 8 S-boxes from the DES.

(Note that the

* DES S-boxes are numbered starting from 1 at the msb.


* with the rest of the GOST,

In keeping

I have used little-endian numbering.

* T h u s , k8 is S-box 1.

*
* Obviously, a careful look at the cryptographie properties of the cipher
* must be undertaken before "production" substitution boxes are defined.

*
* The standard also does not specify a standard bit-string reprsentation
* for the contents of these blocks.

*/
static unsigned char const k8[16] = {
14,
4, 13,
1,
3, 10,
2, 15, 11 , 8,

6, 12,

5,

9,

0,

static unsigned char const k7[16] = {


3 , 4,
15,
1, 8, 14,
9,
7,
6, 11,

2, 13, 12,

0,

5, 10 >

4,

2,

static unsigned char const k6[16] = {


5,
1, 13, 12,
10,
0,
9, 14,
3, 15
6,

7, u ,

static unsigned char const k 5 [16] = {


7, 13, 14,
3,
6,
9 10,
1,
0,
2,

8,

5, 11, 12,

static unsigned char const k4[16] = {


2, 12,
4,
1, 7, 10, 11
6,
8,
5,

3, 15, 13,

0, 14,

static unsigned char const k3[16] = {


12,
1, 10, 15,
2,
6
8,
0, 13,
9,

3,

4, 14,

7,

static unsigned char const k2[16] = {


4, U ,
2, 14, 15,
0,
8
13,
3, 12,

9,

7,

static unsigned char const k l [16] = {


13,
2,
8, 4,
9,
6, 15, U
1, 10,

3, 14,

/* Byte-at-a-time substitution boxes */


static unsigned char k 8 7 [256];
static unsigned char k65[256];
static unsigned char k43[256];
static unsigned char k 2 1 [256];

/*
* Build byte-at-a-time subtitution tables.
* This must be called once for global setup.

*/
void
kboxinit(void)

{
int i;
for (i = 0; i < 256; i++) {

5, 10,
5,

7 >

8 >

4, 15 >
9 >

5, 11 >
6,

1 >

0, 12,

7 >

703

GOST

k87[i]

= k8 [i

4]

k65 [i]

= k6ti

4] 4

Ik7[i ft 15]

k43[i]

= k4[i

4]

Ik3[i & 15]

k21[i]

= k2[i

4]

Ikl[i & 15]

Ik5[i & 15]

>
}
/*
* Do the substitution and rotation that are the core of the opration,
* like the expansion, substitution and permutation of the DES.
* It would be possible to perform DES-like optimisations and store
* the table entries as 32-bit words, already rotated, but the
* efficiency gain is questionable.
*

* This should be inlined for maximum speed

*/
#if

GNUC__

inline__
#endif
static word32
f(word32 x)

{
/* Do substitutions */
#if 0

k 6 [ x 2 0 k 15]
k 4 [ x 1 2 & 15]
k 2 [ x 4 & 15]

28 1 k 7 [ x 2 4 k 15]
20 1 k 5 [ x 1 6 k 15]
12 1 k3 [ x 8 k 15]

A
A

A
A

/* This is annoyingly slow */


x = k 8 [ x 2 8 k 15]

4 1 kl[x

24
16
8

k 15];i

#else
/* This is faster */
x = k 8 7 [ x 2 4 & 255]

24 I k 6 5 [ x 1 6 & 255]

k 4 3 [ x 8 k 255]

16 I

8 I k21[x k 255];

#endif
/* Rotate left 11 bits */
return x l l

I x(32-ll);

>
/*
* The GOST standard defines the input in terms of bits 1..64, with
* bit 1 being the lsb of in[0] and bit 64 being the msb of i n [ l ] .
*

* The keys are defined similarly, with bit 256 being the msb of k e y [7].
*/
void
gostcrypt(word32 const in [ 2 ] , word32 o u t [2], word32 const k e y [8])

{
register word32 ni, n2; /* As named in the GOST */
ni = in [0] ;

GOST

704
n2 = in[l] ;
/ * Instead of swapping halves, swap names each round */
n2

f ( n l + k e y [0] )

ni

f (n2+key [1] )

n2 ~= f (nl+key [2])
ni = f (n2+key [3] )
n2 "= f (nl+key [4])
ni "= f ( n 2 + k e y [5])
n2 '= f (nl+key [6])
ni "= f ( n 2 + k e y [7])
n2 = f ( n l + k e y [0] )
ni "= f (n2+key[l])
n2 '= f ( n l + k e y [2])
ni "= f(n2+key [3])
n2 "= f ( n l + k e y [4])
ni "= f (n2+key [5] )
n2 *= f(nl+key [6])
ni

f ( n 2 + k e y [7] )

n2 *= f (nl+key [0])
ni "= f (n2+key[l])
n2 '= f ( n l + k e y [2])
ni '= f( n 2 + k e y [3])
n2 = f(nl+key [4])
ni '= f (n2+key [5] )
n2 '= f ( n l + k e y [6])
ni "= f ( n 2 + k e y [7])
n2 -= f (nl+key [7])
ni

f(n2+key [6])

n2

f ( n l + k e y [5])

ni ~= f ( n 2 + k e y [4])
n2 = f(nl+key [3] )
ni *= f ( n 2 + k e y [2])
n2 ~= f ( n l + k e y [1])
ni *= f ( n 2 + k e y [0])
/* There is n o swap after the last round */
out[0] = n2;
out[l] = ni;

/*
* The ke y schedule is somewhat diffrent for decryption.
* (The key table is used once forward and three times backward.)
* You could define an expanded key, or just write the code twice,
* as done here.

*/

705

GOST
void
gostdecrypt(word32 const in[2], word32 o u t [2], word32 const k e y [8])
register word32 ni, n2; /* As named in the GOST */
ni = in [0] ;
n2 = in[l] ;
n2 '= f(nl+key [0]);
ni "= f (n2+key[l]) ;
n2 = f (nl+key [2]) ;
ni ~= f ( n 2 + k e y (3]);
n 2 '=

f(nl+key [4]);

ni = f ( n 2 + k e y [5]);
n2 ~= f(nl+key [6]);
ni = f( n 2 + k e y [7]);
n2 = f ( n l + k e y [7]);
ni "= f(n2+key [6] ) ;
n2 "= f ( n l + k e y [5]);
ni

f ( n 2 + k e y [4]);

n2 ** f(nl+key [3]);
ni "= f ( n 2 + k e y (2]);
n2 '= f ( n l + k e y [1] ) ;
ni = f ( n 2 + k e y [0]);
n2

f ( n l + k e y [7]);

ni '= f(n 2 + k e y [ 6] ) ;
n2 '= f(nl+key [5]);
ni = f(n2+key[4]);
n2 "= f(n l + k e y [3]);
ni "= f (n2+key [2] ) ;
n2 ~= f ( n l + k e y [1]);
ni = f(n2+key [0] ) ;
n2 '= f (nl+key [7]) ;
ni = f (n2+key [ 6 ] ) ;
n2 = f (nl+key [5]);
ni "= f ( n 2 + k e y [4]);
n2 = f(n l + k e y [3]);
ni = f ( n 2 + k e y [2]);
n2 "= f (nl+key [1]) ;
ni "= f ( n 2 + k e y [0]);
out [0] = n2 ;
out[l] = ni;

>
/*
* The GOST "Output feedback" standard.

It seems d o s e r morally

* to the counter feedback mode some people have proposed for DES.

706

GOST

* The avoidance of the short cycles that are possible in OFB seems
* like a Good Thing.

*
* Calling it the stream mode makes more sense.

*
* The IV is encrypted with the key to produce the initial counter value.
* Then, for each output block, a constant is added, modulo 2*32-1
* (0 is represented as all-ones, not all-zeros), to each half of
* the counter, and the counter is encrypted to produce the value
* to XOR with the output.

*
* Le n is the number of b l o c k s .

Sub-block encryption is

* left as an exercise for the user.

Remember that the

* standard defines everything in a little-endian manner,


* so you want to use the low bit of g a m m a [0] first.

*
* OFB is, of course, self-inverse, so there is only one f u n ction.

*/
/ * The constants for addition */
#define Cl 0x01010104
#define C2 0x01010101
void
gostofb(word32 const *in, word32 *out, int len,
word32 const i v [ 2 ] , word32 const k e y [8])

{
word32 temp [2];

/*

Counter */

word32 g a m m a [2];

/*

Output XOR value * /

/ * Compute starting value for counter */


gostcrypt(iv, temp, key);
while (len ) {
temp[0] += C2;
if (temp[0] < C2)
temp[0]++;

/*

Wrap modulo 2 32? * /

/ * Make it modulo 2*32-1 */

temp[l] += Cl;
if (temp[l] < Cl)
temp[l]++;

/*

Wrap modulo 2*32? * /

/ * Make it modulo 2*32-1 */

gostcrypt(temp, gamma, key);


*out++ = *in++ ' g a m m a [0];
*out++ = *in++ g a m m a [1];

>
>
/*
* The CFB mode is just what y o u d expect.

Each block of ciphertext y[] is

* derived from the input x[] by the following pseudocode:

GOST

707

* y[i] = x[i]

* gostcrypt (y [i-l])

* x[i] = y [i] " gostcrypt (y [i-l])


* Where y[-l] is the IV.

*
* The IV is modified in place.

Again, len is in *blocks*.

*/
void
gostcfbencrypt(word32 const *in, word32 *ont, int len,
word32 iv [2], word32 const k e y [8])

{
while (len ) {
gostcrypt(iv,

iv, key);

iv[0] = *out++ *= iv[0];


iv[l] = *out++ *= iv[l] ;

>
}
void
gostcfbdecrypt(word32 const *in, word32 *out, int len,
word32 i v [2], word32 const k e y [8])
word32 t;
while (len ) -{
gostcrypt(iv, iv, key);
t = *out;
*out++ = iv[0];
iv[0] = t;
t = *out;
*out++ '= iv [1];
iv[l] = t;

>
}

/*
* The message suthetication code uses only 16 of the 32 rounds.
* There *is* a swap after the 16th round.
* The last block should be padded to 64 bits with zros.
* len is the number of *blocks* in the input.

*/
void
gostmac(word32 const *in, int len, word32 o u t [2], word32 const k e y [8])

i
register word32 ni, n2; /* As named in the GOST * /
ni = 0;
n2 = 0;
while (len ) {
ni ~= *in++;

GOST

708
n2 = *in++;
/* Instead of swapping halves, swap names each round */
n2 = f ( n l + k e y [0]);
ni = f ( n 2 + k e y [1]);
n2 = f ( n l + k e y [2]);
ni = f ( n 2 + k e y [3]);
n2 ~= f ( n l + k e y [4]);
ni "= f (n2+key [5] ) ;
n2 "= f (nl+key [6] ) ;
ni "= f ( n 2 + k e y [7]);
n2 *= f ( n l + k e y [0]);
ni ~= f (n2+key[l]);
n2 = f ( n l + k e y [2]);
ni "= f (n2+key [3] ) ;
n2 ~= f ( n l + k e y [4]);
ni ~= f(n2+key [5]);
n 2 ~= f(n l + k e y [6]);
ni ~= f(n 2 + k e y [7]);

}
out [0] = ni ;
outl] = n2;

}
#ifdef TEST
#include <stdio.h>
#include <stdlib.h>
/* Designed to cope with 15-bit r a n d Q
#define RAND32 ((word32)rand()
int
main(void)

{
word32 k e y [8];
word32 plain [2];
word32 c i p h e r [2];
int i, j;
kboxinitO ;
printf("GOST 21847-89 test driver.\n");
for (i = 0; i < 1000; i++) {
for (j = 0; j < 8; j++)
keytj] = RAND32;
p l a i n [0] = R A N D 3 2 ;
p l a i n [1] = RAND32;

implmentations * /

17 (word32)rand()

rarndO)

709

GOST

printf ("73d\r", i) ;
Cflush(stdout);
gostcrypt(plain, cipher, key);
for (j = 0; j < 99; j++)
gostcrypt(cipher, cipher, key);
for (j = 0; j < 100; j++)
gostdecrypt(cipher, cipher, key);
if (plain[0]

!= c i p h e r [0]

fprintf (st d e r r , "\nError!

Il plain[l]

return 1;

>
}
printf("Ail tests passed.\n");
return 0;

}
(fendif /* TEST */

!= c i p h e r [1]) {

i = 7,d\n", i) ;

Blowfish
blowfsh.c
#include <jnath.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#ifdef little_endian

/* Eg: Intel */

#include <alloc.h>
#endif
#include <ctype.h>
#ifdef little_endian

/* Eg: Intel */

#include <dir.h>
#include <bios.h>
#endif
#ifdef big_endian
#include <Types.h>
#endif
typedef struct {
unsigned long S [4] [256] , P[18] ;
> blf_ctx;
#define MAXKEYBYTES 56 /* 448 bits */
/*// #define little-endian 1 / * Eg: Intel * /
#define big_endian 1 /* Eg: Motorola */
void Blowfish_encipher(blf_ctx * c , unsigned long *xl, unsigned long * x r ) ;
void Blowfish_decipher(blf_ctx * c ,

unsigned long *xl, unsigned long * xr);

short InitializeBlowfish(blf_ctx *c, char k e y [ ] , short k e ybytes);


#define N
#define noErr

16
0

#define DATAERROR
#define KEYBYTES

-1
8

712

B l o w f is h

unsigned long F(blf_ctx * b c , unsigned long x)

{
unsigned short a;
unsigned short b;
unsigned short c;
unsigned short d;
unsigned long

y;

d = x & OxOOFF;
x =

8;

c = x & OxOOFF;
x >>= 8;
b = x ft OxOOFF;
x = 8;
a = x & OxOOFF;
/*// y = C (bc->S [0] [a] + bc->S[l] [b] ) ' bc->S [2] [c] ) + b c - > S [3] [d] ; */
y = bc->S[0] [a] + bc->S[l] [b] ;
y = y bc->S [2] [c] ;
y = y + bc->S [3] [d] ;
return y;

>
void B lowfish_encipher(blf_ctx *c, unsigned long *xl, unsigned long *xr)

{
unsigned long

XI;

unsigned long

Xr;

unsigned long

temp;

short

i;

XI = *xl;
Xr = * x r ;
for (i = 0; i < N; ++i) {
XI = XI ' c->P[i] ;
Xr = F(c,Xl)

' Xr;

temp = XI;
XI = Xr;
Xr = temp;

>
temp = XI;
XI = Xr;
Xr = temp;
Xr = Xr " c->P[N] ;
XI = XI * c->P [N + 1] ;
*xl = XI;
*xr = Xr;

713

Bl o w f is h

toid

Blowfish_decipher(blf_ctx *c, unsigned long *xl, unsigned long *xr)

[
unsigned long

XI;

unsigned long

Xr;

unsigned long

temp;

short

i;

XI = *xl;
Xr = * x r ;
for ( i = N + l ; i > l ;

i) {

XI = XI " c->P[i] ;
Xr = F(c,Xl)

' Xr;

/ * Exchange XI and X r */
temp = XI;
XI = Xr;
Xr = temp;

>
/* Exchange XI and Xr */
temp = XI;
XI = Xr;
Xr = temp;
Xr = Xr c->P[i];
XI = XI * c - > P [0];
*xl = XI;
*xr = Xr;

>
short InitializeBlowfish(blf_ctx *c, char k e y [ ] , short keybytes)

i
short
short
short
short

i;
j;
k;
error;

short

numread;

unsigned long

data;

unsigned long

datai;

unsigned long

datar;

unsigned long ks0[] =

-t

0xdl310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8elafed, 0x6a267e96,


0xba7c9045, 0xfl2c7f99, 0x24al9947, 0xb3916cf7, 0x801f2e2, 0x858efcl6,
0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0xd95748f, 0x728eb658,
0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
0xc5dlb023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603al80e,

714

B l o w f is h

0x6c9e0e8b, 0xb01e8a3e, 0xd71577cl

0xbd314b27, 0x78af2fda, 0x55605c60,

0xe65525f3, 0xaa55ab94, 0x57489862

0x63e81440, Ox55ca396a, 0x2aabl0b6,

0xb4cc5c34, 0xll41e8ce, 0xal5486af

0x7c72e993,

0x2ba9c55d, 0x741831f6, 0xce5c3ei6

0x9b87931e, 0xafd6ba33, 0x6c24cf5c,

0x7a325381, 0x28958677, 0x3b8f4898

0x6b4bb9af, 0xc4bfe81b, 0x66282193,

0x61d809cc, 0xfb21a991, 0x487cac60

0x5dec8032, 0xef845d5d, 0xe98575bl,

0 x d c 262302, 0xeb651b88, 0x23893e81


0x 2 e 0b4482, 0xa4842004, 0x69c8f04a

Ox9elf9b5e, 0x21c66842, 0xf6e96c9a,

0x670c9c61, 0xabd388f0, 0x6a51a0d2

0xd8542f68, 0x960fa728, 0xab5133a3,

0xb3eel411, 0x636fbc2a,

0xd396acc5, 0xf6d6ff3, 0x83f44239,

0x6eef0b6c, 0xl37a3be4, 0xba3bf050

0x7efb2a98, 0xalfl651d, 0x39af0176,

0x66ca593e, 0x82430e88, 0x8cee8619

0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,

0xe06f75d8, 0x85cl2073, 0x401a449f: 0x56cl6aa6, 0x4ed3aa62, 0x363f7706,


Oxlbfedf72, 0x429b023d, 0x37d0d724

0xd00al248, 0xdb0fead3, 0x49flc09b,

0x75372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,


0x976ce0bd, 0x4c006ba, 0xcla94fb6, 0x409f60c4, 0x5e5c9ec2, 0xl96a2463,
0 x 6 8 fb6faf, 0x3e6c53b5, 0xl339b2eb; 0x3b52ec6f, Ox6dfc511f, 0x9b30952c,
0xcc814544, 0xaf5ebd09, 0xbee3d004; 0xde334afd, 0x660f2807, 0xl92e4bb3,
0xc0cba857, 0x45c8740f, 0xd20b5f39; 0xb9d3fbdb, 0x5579c0bd, 0xla60320a,
0x679f25fe,

0xfblfa3cc, 0x8ea5e9f8, 0xdb3222f8,

0x3c75 1 6 d f , 0xfd616bl5, 0x2f501ec8,

0xad0552ab, 0x323db5fa, 0xfd238760,

0x53317b48, 0x3e00df82, 0x9e5c57bb

0xca6f8ca0, Oxla87562e, 0xdfl769db,

0xd6al00c6, 0x402c7279,

0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, Ox695b27bO, 0xbbca58c8,


0xelffa35d, 0xb8f011a0, 0xl0fa3d98,

0xfd2183b8, 0x4afcb56c, 0x2ddld35b,

0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xelddf2da, 0xa4cb7e33,


0x62fbl341, 0xcee4c6e8, 0xef20cada

0x36774c01, 0xd07e9efe, 0x2bfllfb4,

0x95dbda4d, 0xae909198, 0xeaad8e71.

0x6b93d5a0, 0xd08edld0, 0xafc725e0,

0 x 8 e 3c5b2f, 0x8e7594b7, 0x8ff6e2fb

Oxf2122b64, 0x8888b812, 0x900df01c,

0x4fad5ea0, 0x688fc31c, Oxdlcff191.

0xb3a8clad, 0x2f2f2218, 0xbe0el777,

0xea752dfe, 0x8b021fal, 0xe5a0cc0f,

0xb56f74e8, 0xl8acf3d6, 0xce89e299,


0xb4a84fe0, 0xfdl3e0b7, 0x7cc43b81; 0xd2ada8d9, 0xl65fa266, 0x80957705,
0 x 9 3 cc7314, 0x211al477, 0xe6ad2065: 0x77b5fa86, Oxc75442f5, 0xfb9d35cf,
OxebcdafOc, 0x7b3e89a0, 0xd6411bd3; 0xaele7e49, 0x250e2d, 0x2071b35e,
0x226800bb, 0x57b8e0af, 0x2464369b,

0xf009b91e, 0x5563911d, 0x59dfa6aa,

0x78cl4389, 0xd95a537f, 0x207d5ba2,

0x2e5b9c5, 0x83260376, 0x6295cfa9,

0xllc81968, 0x4e734a41, 0xb3472dca,

0x7bl4a94a, 0xlb510052, 0x9a532915,

0xd60f573f, 0xbc9bc6e4, 0x2b60a476,

0x81e67400, Ox8ba6fb5, 0x571be91f,

Oxf296ec6b, 0x2a0dd915, 0xb663652i,

0xe7b9f9b6, Oxff34052e, 0xc5855664,

0x53b02d5d, 0xa99f8fal, 0x8ba4799, 0x6e85076a};


unsigned long ksi [] = {
0x4b7a70e9, 0xb5b32944, 0xdb75092e,

0xc4192623, Oxad6ea6bO, 0x49a7df7d,

0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699al7ff, 0x5664526c, 0xc2bl9eel,


0xl93602a5, 0x75094c29, 0xa0591340,

0xe4183a3e, 0x3f54989a, 0x5b429d65,

0x6b8fe4d6, 0x99f73fd6, 0xald29c07,

0xefe830f5, 0x4d2d38e6, 0xf0255dcl,

0x4cdd2086, 0x8470eb26, 0x6382e9c6,

0x21ecc5e, Ox9686b3f, 0x3ebaefc9,

0x3c971814, 0x6b6a70al, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,


0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,

0x5716f2b8, 0xb03ada37, 0xf0500c0d,

0xf01clf04, 0x200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,


0xdl9113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
0xc8b57634, 0x9af3dda7, 0xa9446146, 0xfd0030e, 0xecc8c73e, 0xa4751e41,
0 x e 2 38cd99, 0x 3bea0e2f, 0x3280bbal, 0xl83eb331, 0x4e548b38, 0x4f6db908,

715

B l o w f is h

0x6f420d03, 0xf60a04bf, 0x2cb81290 , 0x24977c79, 0x5679b072, 0xbcaf89af,


xde9a77if, 0xd9930810, 0xb38bael2 , 0xdccf3f2e, 0x5512721f, 0x2e6b7l24,
0x501adde6, 0x9f84cd87, 0x7a584718 , 0x7408dal7, 0xbc9f9abc, 0xe94b7d8c,
0xec7aec3a, 0xdb851dfa, 0x63094366 , 0xc464c3d2, 0xeflcl847, 0x3215d908,
0xdd433b37, 0x24c2bal6, 0xl2al4d43 , 0x2a65c451, 0x50940002, 0xl33ae4dd,
0x71dff89e, 0xl0314e55, 0x81ac77d6 , 0x5f11199b, 0x43556f1, 0xd7a3c76b,
0x3clll83b, 0x5924a509, 0xf28fe6ed , 0x97flfbfa, 0x9ebabf2c, 0xlel53c6e,
0x86e34570, 0xeae96fbl, 0x860e5e0a , 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
0x2965dcb9, 0x99e71d0f, 0x803e89d6 , 0x5266c825, 0x2e4cc978, 0x9cl0b36a,
0xc6150eba, 0x94e2ea78, 0xa5fc3c53 , 0xle0a2df4, 0xf2f74ea7, 0x361d2b3d,
0xl939260f, 0xl9c27960, 0x5223a708 , 0xf71312b6, 0xebadfe6e, 0xeac31f66,
0xe3bc4595, 0xa67bc883, 0xbl7f37dl , 0xl8cff28, 0xc332ddef, 0xbe6c5aa5,
0x65582185, 0x68ab9802, 0xeecea50f , 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
0x152lb628, 0x29076170, 0xecdd4775 , 0x6l9f1510, 0xl3cca830, 0xeb61bd96,
0x334fele, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaadel4,
0xeecc86bc, 0x60622ca7, 0x9cab5cab , 0xb2f3846e, 0x648bleaf, 0xl9bdf0ca,
0xa02369b9, 0x655abb50, 0x40685a32 , 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
0x9b540bl9, 0x875fa099, 0x95f7997e , 0x623d7da8, Oxf837889a, 0x97e32d77,
0xlled935f, 0x16681281, 0xe358829, 0xc7e61fd6, 0x96dedfal, 0x7858ba99,
0x57f584a5, 0xlb227263, 0x9b83c3ff: 0xlac24696, 0xcdb30aeb, 0x532e3054,
0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
0x8fd948e4, 0x6dbc3128, 0x58ebf2ef
0 x 5 d 4al4d9, 0xe864b7e3, Ox42105dl4.

0x203el3e0, 0x45eee2b6, 0xa3aaabea,

0xdb6c4f15, 0xfacb4fd0, 0xc742f442; 0xef6abbb5, 0x654f3bld,

0x41cd2105,

0xd81e799e, 0x86854dc7, 0xe44b476a: 0x3d816250, 0xcf62alf2, 0x5b8d2646,


0xfc8883a0, 0xclc7b6a3, 0x7fl524c3.

0x69cb7492, 0x47848a0b, 0x5692b285,

0x95bbf00, 0xadl9489d, 0xl462bl74, 0x23820e00, 0x58428d2a, 0xc55f5ea,


0xldadf43e, 0x233f7061, 0x3372f092,

0 x8d937e41, 0xd65fecfl,

0x7cde3759, 0xcbee7460, 0x4085f2a7,

0xce77326e, 0xa6078084, 0xl9f8509e,

0x6c223bdb,

0xe8efd855, 0x61d99735, 0xa969a7aa,

0xc50c06c2,

0x9e447a2e, 0xc3453484, 0xfdd56705,

0xele9ec9, 0xdb73dbd3, 0xl05588cd,

0x5a04abfc, 0x800bcadc,

0x675fda79, 0xe3674340, 0xc5c43465,

0x713e38d8, 0x3d28f89e, 0xfl6dff20,

0xl53e21e7, 0x8fb03d4a, 0xe6e39f2b

0xdb83adf7>;

unsigned long ks2[] = {


0xe93d5a68, 0x948140f7, 0xf64c261c,

0x94692934, 0x411520f7, 0x7602d4f7,

0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,


0xle39f62e, 0x97244546, 0xl4214f74, 0xbf8b8840, 0x4d95fcld, 0x96b591af,
0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x3bd9785, 0x7fac6dd0, 0x31cb8504,
0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,
0xa2c86da, 0xe9b66dfb, 0x68dcl462, 0xd7486900, 0x680ec0a4, 0x27al8dee,
0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaacele7c, 0xd3375fec,
0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3bl24e8b,
0xldc9faf7, 0x4b6dl856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,
0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xall59a58,
0xcca92963, 0x99eldb33, 0xa62a4a56, 0x3f3125f9, 0x5ef47elc, 0x9029317c,
Oxfdf8e802, 0x4272f70, 0x80bbl55c, 0x5282ce3 , 0x95cll548, 0xe4c66d22,
0x48cll33f, 0xc70f86dc, 0x7f9c9ee, 0x41041fOf, 0x404779a4, 0x5d886el7,
0x325f51eb, 0xd59bc0dl, 0xf2bccl8f, 0x41113564, 0x257b7834, 0x602a9c60,
0xdff8e8a3, 0xlf636clb, 0xel2b4c2, 0x2el329e, 0xaf664fdl, 0xcadl8115,
0x6b2395e0, 0x333e92el, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,

716

B l o w f ish

0xde720c8c, 0x2da2f728,

0xd0127845, 0x95b794fd,

0x5449a36f, 0x877d48fa,

0xc39dfd27, 0xf33e8dle,

0x647d0862, 0xe7ccf5f0,
0xa476341, 0x992eff74,

0x3a6f6eab, 0xf4f8fd37,

0xa812dc60, 0xalebddf8,

0x991bel4c, 0xdb6e6b0d,

0xc67b5510, 0x6d672c37,

0x2765d43b, 0xdcd0e804,

Oxf1290dc7, 0xcc00ffa3,

0xb5390f92, 0x690fed0b,

0x667b9ffb, 0xcedb7d9c,

0xa091cf0b, 0xd9155ea3,

0xbbl32f88, 0x515bad24,

0x7b9479bf, 0x763bd6eb,

0x37392eb3, 0xccll5979,

0x8026e297, 0xf42e312d,

0x6842ada7, 0xc66a2b3b,

0xl2754ccc, 0x782efllc,

0x6al24237, 0xb79251e7, 0x6albbe6, 0x4bfb6350, 0xla6bl018, Oxllcaedfa,


0x3d25bdd8, 0xe2elc3c9, 0x44421659, 0xal21386, 0xd90cec6e, 0xd5abea2a,
0x64af674e, 0xda86a85f,

0xbebfe988, 0x64e4c3fe,

0x9dbc8057, 0xf0f7c086,

0x60787bf8, 0x6003604d,

0xdlfd8346, 0xf6381fb0,

0x7745ae04, 0xd736fccc,

0x83426b33, 0xf01eab71,

0xb0804187, 0x3c005e5f,

0x77a057be, 0xbde8ae24,

0x55464299, 0xbf582e61,

0x4e58f48f, 0xf2ddfda2,

0xf474ef38, 0x8789bdc2,

0x5366f9c3, 0xc8b38e74,

0xb475f255, 0x46fcd9b9,

0x7aeb2661, 0x8blddf84,

0x846a0e79, 0x915f95e2,

0x466e598e, 0x20b45770,

0x8cd55591, 0xc902de4c,

0xb90bacel, 0xbb8205d0,

0xlla86248, 0x7574a99e,

0xb77fl9b6, 0xe0a9dc09,

0x662d09al, 0xc4324633, 0xe85alf02, 0x9f0be8c, 0x4a99a025, 0xld6efel0,


0xlab93dld, 0xba5a4df, 0xal86f20f, 0x2868fl69, 0xdcb7da83, 0x573906fe,
0xale2ce9b, 0x4fcd7f52,

0x50115e01, 0xa70683fa,

0xa002b5c4, 0xde6d027,

0x9af88c27, 0x773f8641,

0xc3604c06, 0x61a806b5,

0xf0177a28, 0xc0f586e0,

0x6058aa, 0x30dc7d62, 0xlle69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,


0xbbcbee56, 0x90bcb6de,

0xebfc7dal, 0xce591d76, 0x6f05e409, 0x4b7c0188,

0x39720a3d, 0x7c927c24,

0x86e3725f, 0x724d9db9, 0xlacl5bb4, 0xd39eb8fc,

0xed545578, 0x8fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0xle50ef5e, 0xbl61e6f8,


0xa28514d9, 0x6c51133c,

0x6fd5c7e7, 0x56el4ec4, 0x362abfce, 0xddc6c837,

0xd79a3234, 0x92638212,

0x670efa8e, 0x406000e0>;

unsigned long ks3[] = {


0x3a39ce37, 0xd3faf5cf,

0xabc27737, 0x5ac52dlb, 0x5cb0679e, 0x4fa33742,

0xd3822740, 0x99bc9bbe,

0xd5118e9d, 0xbf0f7315, 0xd62dlc7e, 0xc700c47b,

0xb78clb6b, 0x21al9045,

0xb26eblbe, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,

0xc6a376d2, 0x6549c2c8,

0x530ff8ee, 0x468dde7d, 0xd5730ald, 0x4cd04dc6,

0x2939bbdb, 0xa9ba4650,

0xac9526e8, 0xbe5ee304, 0xalfad5f0, 0x6a2d519a,

0x63ef8ce2, 0x9a86ee22,

0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,

0x83c061ba, 0x9be96a4d,

0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ael,

0x4ba99586, 0xef5562e9,

0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,

0x80e4a915, 0x87b08601,

0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,

0x2cf0b7d9, 0x22b8b51, 0x96d5ac3a, 0xl7da67d, 0xdlcf3ed6, 0x7c7d2d28,


0xlf9f25cf, 0xadf2b89b,

0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,

0x47b0acfd, 0xed93fa9b,

0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,

0x785f0191, 0xed756055,

0xf7960e44, 0xe3d35e8c, 0xl5056dd4, 0x88f46dba,

0x3al6125, 0x564f0bd, 0xc3eb9el5, 0x3c9057a2, 0x97271aec, 0xa93a072a,


0xlb3f6d9b, 0xle6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xbl55fdf5,
0x3563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
0x4de81751, 0x3830dc8e,

0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,

0x5121ce64, 0x774fbe32,

0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,

0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x9072166, 0xb39a460a, 0x6445c0dd,


0x586cdecf, 0xlc20c8ae,

0x5bbef7dd, 0xlb588d40, 0xccd2017f, 0x6bb4e3bb,

0xdda26a7e, 0x3a59ff45,

0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,

0x8d6612ae, 0xbf3c6f47,

0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,

0x740e0d8d, 0xe75bl357,

0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,

111

B l o w f is h

0x34d2466a, 0xll5af84, 0xelb00428, Ox95983ald, 0x6b89fb4, 0xce6ea048,


0x6f3f3b82, 0x3520ab82, 0xllald4b, 0x277227f8, 0x611560bl, 0xe7933fdc,
0xbb3a792b, 0x344525bd, 0xa08839el , 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
0xelcc87e, 0xbcc7dlf6,

0xcflllc3 , 0xale8aac7,

0xla908749, Oxd44fbd9a,

OxdOdadecb, 0xd50ada38, 0x339c32a, 0xc6913667, 0x8df9317c, 0xe0bl2b4f,


0xf79e59b7, 0x43f5bb3a, 0xf2d519ff , 0x27d9459c, 0xbf97222c, 0xl5e6fc2a,
0xf91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0xl2baa8dl,
0xb6cl075e, 0xe3056a0c, 0xl0d25065 , 0xcb03a442, 0xe0ec6e0e, 0xl698db3b,
0x4c98a0be, 0x3278e964, 0x9flf9532 , 0xe0d392df, 0xd3a0342b, 0x8971f21e,
0xlb0a7441, 0x4ba3348c, 0xc5be7120 , 0xc37632d8, 0xdf359f8d, 0x9b992f2e,
0xe60b6f47, 0xfe3flld, 0xe54cda54, 0xledad891, 0xce6279cf, 0xcd3e7e6f,
0xl618bl66, 0xfd2cld05, 0x848fd2c5,

Oxf6fb2299, 0xf523f357, 0xa6327623,

0x93a83531, 0x56cccd02, Oxacf08162,

0x5a75ebb5, 0x6el63697, 0x88d273cc,

Oxde966292, 0x81b949d0, 0x4c50901b,

0x71c65614, 0xe6c6c7bd, 0x327al40a,

0x45eld006, 0xc3f27b9a, 0xc9aa53fd,

0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,

0x71126905, 0xb2040222, 0xb6cbcf7c,

0xcd769c2b, 0x53113ec0, 0xl640e3d3,

0x38abbd60, 0x2547adf0,

0xf746ce76, 0x77afalc5, 0x20756060,

0xba38209c,

0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0xl948c25c, 0x2fb8a8c,


0xlc36ae4, 0xd6ebelf9, 0x90d4f869,

0xa65cdea0, 0x3f09252d, 0xc208e69f,

0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6};

/ * Initialize S-boxes without file read. */


for(i = 0; i < 256; ++i){
c->S[0][i]

= ks0[i];

c->S[l][i] = k s l [ i ] ;
c->S [2] [i] = ks2 [i] ;
c->S[3][i] = k s 3 [ i ] ;

>
j = 0;
for (i = 0; i < N + 2 ;

++i) {

data = 0x00000000;
for (k = 0; k < 4; ++k) {
data = (data

8)

I key[j] ;

j = j + i;
if (j >= keybytes) {
j = 0;

>
}
c->P[i] = c->P[i]

* data;

>
datai = 0x00000000;
datar = 0x00000000;
for (i = 0; i < N + 2; i += 2) C
Blowfish_encipher(c.fedatal, fcdatar);
c->P[i] = datai;

718

B lo w f is h

c->P[i + 1] = datar;

>
for (i = 0; i < 4; ++i) {
for (j = 0 ;

j < 256; j += 2) {

Blowfish_encipher(c,&datal, ftdatar);
c->S[i][j] = datai;
c->S[i] [j + 1] = datar;

}
>
void blf_key(blf_ctx *c, char *k, int len){
InitializeBlowfish(c,k,len);

>
void blf_enc(blf_ctx *c, unsigned long *data,

int b l o c k s M

unsigned long *d;


int i;
d = data;
for(i = 0; i < blocks; i++){
B lowfxsh_encipher(c,d,d+l);
d += 2;

>
>
void blf_dec(blf_ctx *c, unsigned long *data, int blocks){
unsigned long *d;
int i;
d = data;
for(i = 0; i < blocks;

i++){

Blowfish_decipher(c,d,d+l);
d += 2;

>

y
void main(void){
blf_ctx c;
char key[] = "AAAAA" ;
unsigned long d a t a[10];
int i;
for(i = 0; i < 10; i++) data[i] = i;
blf_key(&c,key,5);
blf_enc(&c,data,5);
blf_dec(&c,data,l);

719

B l o w f is h

blf_dec(&c,data+2,4);
for(i = 0; i < 10; i += 2) printf("Block XOld decrypts to:
y.081x y.081x.\n", i/2, data[i] , data[i+l]);

3-Way
3way.c
#define

STRT_E

OxObOb /* round constant of first encryption round

*/

#define

STRT_D

Oxblbl /* round constant of first decryption round

*/

#define

NMBR

#ifdef

alpha

11 / * number of rounds is 11

/* Any other 64-bit machines? * /

typedef unsigned int word32;


#else
typedef unsigned long word32;
#endif
/* the program only works correctly if long = 32bits */
/ * inverts the order of the bits of a */

void mu(word32 *a)

t
int i ;
word32 b[3]

b[0] = b[l] = b[2] = 0 ;


for( i=0 ; i<32 ; i++ )

{
b[0] <<= 1

; b[l] =

if(a[0]&l)

b[2]

if(a[l]fcl)
if(a[2]&l)
a[0] = 1

b[l] 1= 1 ;
b[0] 1= 1 ;
; a[l] = 1

; b[2]

1 ;

; a[2]

1 ;

1= 1 ;

>
a[0] = b[0]

; a[l] = b[l]

; a[2] = b[2]

>
void gaimna(word32 *a)

/* the nonlinear step */

t
word32 b [3]
b[0]

= a[0] * (a[l]|(~a[2]))

b[l]

= a[l] ' (a[2] I(~a[0]))

b[2]

= a[2] * (a[0]|('a[l]>)

*/

122

3 -W

a[0] = b[0]

; a[l] = b[l]

; a[2] = b[2]

>

void theta(word32 *a)

/* the linear step */

{
word32 b [ 3 ] ;
b[0] = a[0]

b[l] = a[l]

b[2] = a [2]

a[0] = b[0]

* ( a [ 2 ] 1 6 )

(a[0] 1 6 )

" (a[l]16)

(a[l]16)

(a[l]24)

" (a[2]8)

(a[2]8)

(a[0]24)

(a [ 2 ] 1 6 )

* (a[0]16)

(a [2] 2 4 )

(a[0]8)

(a[l]16)

' (a[2]16)

(a [2] 1 6 )

(a[0]16)
* (a[l]24)

(a [ 2 ] 2 4 )

' (a[0]8)

(a[0] 8 )

(a[0]16)

" (a[l]16)

(a[0] 2 4 )

(a[l]8)

(a[2]16)
(a[0]24)

(a[0]16)
(a[l]8)

(a[0]16)

(a[l]16)

(a[l]16)

* (a[2]16)

(a[l]8)
(a[l]24)

(a[2]8)

a[l] = b[l]

a [2] = b[2]

void pi_l(word32 *a)

{
(a[0]10) * (a[0]22);

a [2]

= (a[2]l)

* (a [ 2 ] 3 1 ) ;

>
void pi_2(word32 *a)

{
a[0]

= (a[0]l)

' (a[0]31) ;

a [2]

=( a [ 2 ] 1 0 )

* (a[2]22);

>
void rho(word32 *a)

/* the round function

*/

{
thta(a)
pi_l(a)

;
;
;

gamma(a)
pi_2(a)

}
void rndcon_gen(word32 strt,word32 *rtab)
{

/* generates the round constants */

int i ;
for(i=0 ; i<=NMBR ; i++ )

{
rtab[i] = strt
strt = 1 ;

if( strt&OxlOOOO ) strt = 0x11011 ;

**
9
**

(a [2] 2 4 )

>

a[0]

ay

723

- W a y

roid encrypt (word32 *a, word32 *k)

[
Lnt i ;
ord32 rcon [NMBR+1]

rndcon_gen(STRT_E,rcon)
Cor( i=0 ; K N M B R
atO]

= k[]

; i++ )

* (rcon [i] 1 6 )

a[l] = k[l]

a [2] ~= k[2]

' rcon[i]

rho(a)

y
i[0] = k[0]

(rcontNMBR] 1 6 )

itl] '= k[l]

i[2] = k[2] * rcontNMBR]


b h eta(a)

iroid decrypt(word32 *a, word32 *k)

(
int i ;
ord32 ki[3]

/* the i nverse key

ord32 rconfNMBR+1]
kifO] = ktO]
theta(ki)
Bu(ki)

; ki[l] = ktl]

; kit2] = k[2]

rndcon_gen(STRT_D,rcon)

mu(a) ;
for( i=0 ; i<NMBR ; i++ )

{
a[0]

~= ki[0]

* (rcon [i] 1 6 )

a[l]

~= ki[l]

a [2] '= ki[2]


rho(a)

* rcon[i]

>
atO] = kifO]

* (rcon[NMBR] <<16)

a[l] ~= ki[l]

a [2] ~= k i [2] * rcontNMBR]


theta(a)
mu(a)

>
#ifdef TEST

*/

/ * the in v e r s e round constants * /

724

3 -W

#include <stdio.h>
ttinclude <stdlib-h>
#define RAND32 ((word32)rand()

17 ' (uord32)rand()

void printvec(word32 *a)

i.
#ifdef

alpha

printf ("*/i08x
/,08x */.08x\nM ,a[2] ,atl] ,a[0] ) ;
#else
printf ( '7.081x 7.081x 7.081x\n",a [2] ,a tl] ,a [0] ) ;
#endif

>
void m a i n O

{
word32 vector[3], key [3] ,plain [3] ;
int i , j ;
p r intf(3-way test run\nM);
for (i = 0; i < 10; i++) {
for (j = 0; j < 3; j++) {
key [j] = RAND32 ;
p l a i n [j]=vector tj] = R A N D 3 2 ;

>
printf ("7.3d\r", i) ;
fflush(stdout);
for (j = 0; j < 100; j++)
encrypt(vector,key);
for (j = 0; j < 100; j++)
decrypt(vector.key);
if (vector[0]
vector[2]

!= plaintO]

Il vectortl]

fprintf (stderr, "\nError!

i = '/.d\n", i);

exit(l);

}
>
printf("Ail tests passed.\n");
key[0]=4; key[l]=5; k e y [2] =6;
vector[0]=l; vectortl] =2; vectorf2]=3;
e ncrypt(vector.key);
printvec(vector);

>
#endif
/*

!= plaintl]

!= plain [2] ) t

TEST VALUES

key

: 00000000 00000000 00000000

plaintext

: 00000001 00000001 00000001

Il

9 * randO)

ay

3 -W

725

ay

ciphertext

: ad21ecf7 83ae9dc4 4059c76e

key
plaintext

: 00000004 00000005 00000006


: 00000001 00000002 00000003

ciphertext

: cab920cd d6144138 d2f05b5e

key

: bcdef012 456789ab def01234

plaintext

: 01234567 9abcdef0 23456789

ciphertext

: 7 cdb76b2 9cdddb6d 0aa55dbb

key

: cab920cd d6144138 d2f05b5e

plaintext

: ad21ecf7 83ae9dc4 4059c76e

ciphertext

: 15bl55ed 6bl3f17c 478ea871

RC5
rc5.c
/* RC5REF.C

Reference implmentation of RC5-32/12/16 in C.

/ * Copyright (C) 1995 RSA Data Security, Inc.

*/
*/

#include <stdio.h>
#include <time.h>
typedef unsigned long int WORD; /* Should

be 32-bit = 4 bytes

*/

#define w

32

/* word size in bits

*/

#define r

12

/* number

of rounds

*/

#define b

16

/ * number

of bytes in key

*/

#define c

#define t

26

WORD S [ t ] ;

/ * number

words in key = ceil(8*b/w)*/

/ * size of table S = 2*(r+l) words

*/

/ * expanded key table

*/

/ * magic constants

WORD P = 0xb7el5163, Q = 0x9e3779b9;

*/

/ * Rotation operators. x must be unsigned, to get logical right shift*/


#define ROTL(x,y)

( ( (x)(y&(w-l)))

I ((x)(w-(y&(w-l)))))

#define ROTR(x,y)

C ( ( x ) (y&(w-1)))

I ((x)(w-(y&(w-l)))))

void RC5_ENCRYPT(W0RD *pt, WORD *ct) /* 2 WORD input pt/output ct

*/

{ WORD i, A=pt [0] + S [0] , B = p t [1] + S [1] ;


for (i=l; i<=r; i++)
{ A = R0TL(A"B,B)+S[2*i] ;
B = R0TL(BA,A)+S[2*i+1];

>
ct[0] = A; ct[l] = B;

>
void RC5_DECRYPT(W0RD *ct, WORD *pt) /* 2 WORD input ct/output pt
l

*/

WORD i, B = c t [1], A = c t [0];


for (i=r; i>0; i )
{ B = R0TR(B-S[2*i+1],A)-A;
A = R0TR(A-S[2*i],B)"B;

y
pt[l] = B-S[l] ; pt[0] = A-S[0] ;

void RC5_SETUP(unsigned char *K) /* secret input key K[0...b-1]


{

WORD i, j, k, u=w/8, A, B, L[c];


/* Initialize L, then S, then mix key into S */

*/

728

RC5

for (i=b-l,L[c-l]=0; i !=1 ; i ) L[i/u] = (L[i/u]8)+K[i] ;


for (S[0]=P,i=l; i<t; i++) S[i] = S[i-1]+Q;
for (A=B=i=j=k=0; k<3*t; k++,i=(i+l)y.t, j = (j+l)V.c)

/* 3*t > 3*c */

{ A = S[i] = ROTL(S[i] + (A+B) ,3) ;


B = L[j] = ROTL(L[j] + (A+B) , (A+B)) ;

>

void m a i n O
{ WORD i, j, p t l [2] , p t 2 [2] , ct[2] = {0,0};
unsigned char key[b];
time_t tO, tl;
if (sizeof(WORD)!=4)
printf ("RC5 error: WORD has '/.d bytes.\n".sizeof (WORD)) ;
printf("RC5-32/12/16 examples:\ n );
for (i=l;i<6;i++)
{ /* Initialize ptl and key pseudorandomly based on previous ct */
pt 1 [0] =ct [0] ; pt 1 [1] =ct [1] ;
for (j=0; j<b; j++) key[j]

= ct[0]7.(255-j) ;

/* Setup, encrypt, and decrypt */


RC5_SETUP(key);
RC5_ENCRYPT(pt1,c t ) ;
RC5_DECRYPT(ct,pt2);
/ * Print out results, checking for decryption failure */
p r i n t f ("\nJCd. key = ",i);
for (j=0; j<b; j++) p r i n t f 2 X
printf("\n

,key[j]);

plaintext */,.81X V..81X

>

ciphertext X.81X X.81X

ptl[0], ptl[l], ct[0], ct [1] ) ;


if (ptl [0] !=pt2 [0] Il ptl[l] !=pt2[l] )
printf("Decryption Error!");

>
time (&t0);
for (i=l;i<100000;i++)
R C5.ENCRYPT(ct,c t ) ;
time (fttl);
printf ("\n

Time_t for 100000 blocks:

V.ld \ n " , tl-tO) ;

\n",

A5
a5.c
static int threshold(rl, r2, r3)
unsigned int rl;
unsigned int r2;
unsigned int r3;

{
int total;
total =

(((rl

9) &

0x1) == 1) +

(((r2

11) &

0x1) == 1) +

(((r3

11) fc 0x1) == 1);

if (total > 1)
return (0);
else
return (1);

}
unsigned long clock_rl(ctl, rl)
int ctl;
unsigned long rl;

{
unsigned long feedback;

/*
* Primitive polynomial x**19 + x**5 + x**2 + x + 1

*/
ctl = ((rl

9) & 0x1);

if (ctl)

{
feedback = (rl
rl = (rl

18) ' (rl

1) & 0 x7ffff;

if (feedback fe 0x01)
rl "= 0x01;

}
return (rl);

17) " (rl

16) ' (rl

13);

A5

730

unsigned long clock_r2(ctl, r2)


int ctl;
unsigned long r2;

{
unsigned long feedback;

/*
* Primitive polynomial x**22 + x**9 + x**5 + x + 1

*/
ctl '= ((r2

11) ft 0x1);

if (ctl)

{
feedback = (r2
r2 = (r2

21) (r2

20) * (r2

16) ~ (r2

12);

1) & 0x3fffff;

if (feedback & 0x01)


r2 "= 0x01;

}
return (r2);

>
unsigned long clock_r3(ctl, r3)
int ctl;
unsigned long r3;
unsigned long feedback;

/*
* Primitive polynomial x**23 + x**5 + x**4 + x + 1

*/
ctl ~= ((r3

11) & 0x1);

if (ctl)

{
feedback = (r3
r3 = (r3

22) * (r3

21) * (r3

18) (r3

1) & 0x7fffff;

if (feedback ft 0x01)
r3 *= 0x01;

>
return (r3);

int keystream(key, frame, alice, bob)


*/

unsigned char

*key;

/* 64 bit session key

imsigned long

frame;

/* 22 bit frame sequence number

*/

unsigned char

*alice;

/ * 114 bit Alice to Bob key stream

*/

unsigned char

*bob;

/* 114 bit Bob to Alice key stream

*/

C
unsigned long rl;

/ * 19 bit shift register */

17);

A5_________________________________________________________________________ 731
*/

unsigned long r2;

/* 22 bit shift register

unsigned long r3;

/* 23 bit shift register

*/

int i;

/* counter for loops

*/

int clock_ctl;

/* xored with clock enable on each shift register */

unsigned char *ptr; / * current position in keystream * /


unsigned char byte; /* byte of keystream being assembled * /
unsigned int bits;

/* number of bits of keystream in byte */

unsigned int bit;

/* bit output from keystream generator * /

/ * Initialise shift registers from session key */


rl = (key[0]

I (key[l]

r2 = ((key[2]

3)

8)

I (key [2]

I (key[3]

16) ) fe 0x7ffff;

5)

I (key[4]

13)

I (key[5]

7)

I (key[7]

15) ) fe 0x7fffff;

21))

fe 0x3fffff ;
r3 = ((keyt5]

1)

I (key [6]

/ * Merge frame sequence number into shift register State, by x o r ing it


* into the feedback path

*/
for (i=0;i<22;i++)

i
clock_ctl = threshold(rl, r2, r 2 ) ;
rl = clock_rl(clock_ctl, r l ) ;
r2 = clock_r2(clock_ctl, r 2 ) ;
r3 = clock_r3(clock_ctl, r 3 ) ;
if (frame fe 1)

{
rl *= 1;
r2 *- 1;
r3 *= 1;

>
frame = frame

1;

>
/ * Rini shift registers for 100 clock ticks to allow frame nimber to
* be diffused into ail the bits of the shift registers

*/
for (i=0;i<100;i++)

{
clock_ctl = threshold(rl, r2, r 2 ) ;
rl = clock_rl(clock_ctl, rl);
r2 = clock_r2(clock_ctl, r 2 ) ;
r3 = clock_r3(clock_ctl, r 3 ) ;

>
/* Produce 114 bits of Alice->Bob key stream */
ptr = alice;

A5

732
bits = 0;
byte = O;
for (i=0;i<114;i++)

{
clock_ctl = thresholdCrl, r2, r 2 ) ;
rl = clock_rl(clock_ctl, rl);
r2 = clock_r2(clock_ctl, r 2 ) ;
r3 = clock_r3(clock.ctl, r 3 ) ;
bit = ((rl

18) " (r2

byte = (byte

1)

21) * (r3

22)) & 0x01;

I bit;

bits++;
if (bits == 8)
*ptr = byte;
ptr++;
bits = 0;
byte = 0;

>
>
if (bits)
*ptr = byte;
/* Run shift registers for another 100 bits to hide relationship between
* Alice->Bob key stream and Bob->Alice key stream.

*/
for (i=0;i<100;i++)

{
clock.ctl = threshold(rl, r2, r 2 ) ;
rl = clock_rl(clock_ctl, r l ) ;
r2 = clock_r2(clock_ctl, r 2 ) ;
r3 clock_r3(clock_ctl, r 3 ) ;

/ * Produce 114 bits of Bob->Alice key stream */


ptr = bob;
bits = 0;
byte = 0;
for (i=0;i<114;i++)

{
clock.ctl * threshold(rl, r2, r2) ;
rl = clock_rl(clock_ctl, rl) ;
r2 clock_r2(clock_ctl, r 2 ) ;
r3 * clock_r3(clock_ctl, r 3 ) ;
bit ((rl

18) * (r2

byte * (byte
bits++;
if (bits "

8)

1)

I bit;

21) " (r3

22)) t

0x01;

733

A5

i
*ptr = byte;
ptr++;
bits = 0;
byte = 0;

}
>
if (bits)
*ptr = byte;
return (0);

>

SEAL
seal.c
/ * SEAL */
#define ALG_OK 0
#define ALG.NOTOK 1
#define WORDS_PER_SEAL_CALL 1024
typedef struct {
unsigned long t[520]; /* 512 rounded up to a multiple of 5 + 5*/
unsigned long s [265]; / * 256 rounded up to a multiple of 5 + 5*/
unsigned long r [ 2 0 ] ; /* 16 rounded u p to multiple of 5 * /
unsigned long counter; / * 32-bit synch value. */
unsigned long ks_buf[WORDS_PER_SEAL_CALL];
int ks_pos;
}- seal_ctx;
#define R0T2(x)

(((x) 2 )

I ((x)

30))

#define R0T8(x)

(((x) 8 )

I ((x)

24))

#define R0T9(x)

(((x) 9 )

I ((x)

23))

#define

R0T16(x) (((x)

16) I

((x)

16))

#define

R0T24(x) (((x)

24) I

((x)

8))

#define

R0T27(x) (((x)

27) I

((x)

5))

#define

WORD(cp) ( (cp[0] 2 4 ) I(cp[l) 1 6 ) I (cp[2] 8 ) I(cp[3] ))

#define

Fl(x, y, z)

(((x) & (y)) I (( (x)) & (z)))

#define

F2(x, y, z)

((x) ' (y) * (z))

#define

F3(x, y, z)

(((x) & (y)) I ((x)

#define

F4(x, y, z)

((x) ~ (y) ~ (z))

fe (z))

int g(in,i,h)
unsigned chaur *in;
int i;
unsigned long *h;

{
unsigned long h0,hl,h2,h3,h4,a,b,c,d,e,temp;
unsigned char *kp;

I ((y) & (z)))

SEAL

736
unsigned long w [ 8 0 ] ;
kp =

in;

hO =

WDRD(kp); kp += 4;

hl =

WOR D ( k p ) ; k p += 4;

h2 =

WORD(kp); kp += 4;

h3 =

WORD(kp); kp += 4;

h4 =

W ORD(kp); k p += 4;

w[0] = i;
for (i=l;i<16;i++) u[i] = 0;
for (i=16;i<80;i++) w[i] = v[i-3] ~w[i-8] ~w[i-14] ~w[i-l6] ;
a = hO; b * hl; c = h2; d = h3; e = h4;
for(i=0;i<20;i++) {
temp = R0T27(a)
+ Fl(b, c, d) + e + w[i] + 0x5a827999;
e = d; d = c; c

= R 0 T 2 ( b ) ; b = a; a = temp;

>
for (i=20;i<40;i++) {
temp = R0T27(a)
+ F2(b, c, d) + e + w[i] + 0x6ed9ebal;
e = d; d = c; c

= R0T2(b); b = a; a = temp;

>
for (i=40;i<60;i++) {
temp = R0T27(a)
+ F3(b, c, d) + e + w[i] + 0x8flbbcdc;
e = d; d = c; c
= R0T2(b); b = a; a = temp;

>
for (i=60;i<80;i++)

temp = R0T27(a)

+ F4(b, c, d) + e + w[i] + 0xca62cld6;

e = d; d = c; c

= R0T2(b); b = a; a = temp;

>
h[0] = hO+a; h[l] = hl+b; h[2] = h2+c; h[3] = h3+d; h[4] = h4+e;
return (ALG_0K);

}
unsigned long gamma (a,i)
unsigned char *a;
int i;

{
unsigned long h [5];
(void) g(a,

i/5, h);

return h[i 7, 5] ;

>
int seal_init( seal_ctx *result, unsigned char key )

737

SEAL
int i;
unsigned long h [ 5 ] ;
for (i=0;i<510;i+=5)
g(key, i/5, fc(result->t[i]));
/* horrible spcial case for the end */
g(key, 510/5, h);
for(i=510;i<512;i++)
result->t[i] = h[i-510] ;
/* 0x1000 mo d 5 is +1, so have horrible spcial case for the staxt */
g(key,

(-1+0x1000)/5, h);

for (i=0;i<4;i++)
result->s[i] = h[i+l] ;
for (i=4;i<254;i+=5)
g(key,

(i+0xl000)/5, &(result->s[i])) ;

/* horrible spcial case for the end */


g(key,

(254+0xl000)/5, h);

for (i=254;i<256;i++)
result->s[i] = h [ i - 2 5 4 ] ;
/* 0x2000 m o d 5 is +2, so have horrible spcial case at the start */
g(key,

(-2+0x20005/5, h);

for(i=0;i<3;i++)
result->r[i] = h[i+2] ;
for (i=3;i<13;i+=5)
g ( k e y ,(i+0x2000)/5,fe(result->r[i]));
/* horrible spcial case for the end */
g (key,

( 1 3 + 0 x 2 0 0 0 /5, h);

for (i=13;i<16;i++)
result->r[i] = h[i-13] ;
return (ALG_0K);

}
int seal(seal_ctx *key, unsigned long in, unsigned long *out)

{
int i , j ,1;
unsigned long a,b,c,d,nl,n2,n3,n4.*wp;
unsigned short p,q;
p = out;
for (1=0;1<4;1++) {
a = in

key->r [4*1] ;

b = R0T8(in) * k e y - > r [4*1+1];


c = R0T16(in) * k e y - > r [4*1+2];
d = R0T24(in)

k e y - > r [4*1+3];

>
for (j=0;j<2;j++) {
p= a & 0x7fc;
b += key->t [p/4] ;
a = R0T9(a) ;

738

SEAL

p = b & 0x7fc;
c += k e y ->t[p/4];
b = R0T9(b);
p = c & 0x7fc;
d += key->t[p/4];
c = R0T9(c) ;
p = d & 0x7fc;
a += key- > t [ p / 4 ];
d = R0T9(d);
ni = d; n2=b; n3=a; n4=c;
p = a & 0x7fc;
b += key->t[p/4];
a = R0T9(a);
p = b & 0x7fc;
c += key->t[p/4];
b = R0T9(b);
p = c & 0x7fc;
d += key->t[p/4];
c = R0T9(c);
p = d & 0x7fc;
a += key->t [p/4];
d = R0T9(d);
/* This generates 64 32-bit words, or 256 bytes of keystream.
for Ci=0;i<64;i++) {
p = a & 0x7fc;
b += key->t[p/4];
a = R0T9(a);
b = a;
q = b k 0x7fc;
c = k e y ->t[q/4];
b = R0T9(b);
c += b;
p = (p+c) & 0x7fc;
d += key->t[p/4];
c = R0T9(c);
d *= c;
q = Cq+d) k 0x7fc;
a "= k e y - >t[q/4];
d = R0T9(d);

*/

739

SEAL

a += d;
p = Cp+a) & Ox7fc;
b ~= key->t[p/4] ;
a = R0T9(a);
q = Cq+b) & 0x7fc;
c += key->t[q/4];
b = R0T9(b);
p = (p+c) k Ox7fc;
d = key->t[p/4];
c = RQT9(c);
q = (q+d) & 0x7fc;
a += k e y - >t[q/4];
d = R0T9(d);
*wp =

b + key->s[4*i];

*wp =

c key->s[4*i+l] ;

wp++;

*wp =

d + k ey - >s[4*i+2]; wp++;

*vrp =

wp++;

key->s [4*i+3] ; wp++;

if(i&l) {
a += n3;
c += n4;
} else {
a += ni;
c += n2;

}
y
return (ALG_OK);

>

/ * Added call to refill ks_buf and reset counter and ks_pos. * /


void seal_refill_buffer(seal_ctx *c){
seal(c,c->counter,c->ks_buf);
c->counter++;
c->ks_pos = 0;

}
void seal_key(seal_ctx *c, unsigned char *key){
seal_init(c,key);
c->counter = 0 ; /* By default, init to zro.

*/

c->ks_pos = WORDS_PER_SEAL_CALL;
/ * Refill keystream buffer on next call. * /

>
/* This encrypts the next w words with SEAL. */

SEAL
void seal_encrypt(seal_ctx * c , unsigned long *data_ptr, int w){
int i;
f or (i=0 ;i<w; i++) {
if(c->ks_pos>=WORDS_PER_SEAL_CALL) seal_refill_buffer(c);
data_ptr[i]~=c->ks_buf[c->ks_pos];
c->ks_pos++;

>
>
void seal_decrypt(seal_ctx *c, unsigned long *data_ptr, int w) {
seal_encrypt(c,data_ptr,w);

>
void seal_resynch(seal_ctx *c, unsigned long synch_word){
c->counter = synch_word;
c->ks_pos = WORDS_PER_SEAL_CALL;

}
void main(void){
seal_ctx sc;
unsigned long b u f [1000],t;
int i.flag;
unsigned char key[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 };
p r intf("l\n");
seal_key(&sc,k e y ) ;
printf("2\n");
for(i=0;i<1000;i++) buf[i]=0;
p rintf("3\n");
seal_encrypt(ftsc,buf,1000);
pr intf("4\n");
t = 0;
for(i=0;i<1000;i++) t = t " buf[i];
printf ("XOR of buf is 5C081x. \n ,t) ;
seal_key(&sc,key);
seal_decrypt(ftsc,buf,1);
seal_decrypt(ftsc,buf+l,999);
flag - 0;
for(i=0;i<1000;i++) if(buf[i]!=0)flag=l;
if(flag) printf("Decrypt failed.\n");
else printf ("Decrypt s u c c e e d e d A n " ) ;

Lexique anglaisfranais
All-or-Nothing Disclosure O f Secrets (A N D O S ) :
secrets
Data Encryption Standard (D ES):
Elliptic Curve M ethod (E C M ) :
Euler phi function :

divulgation tout ou rien de

standard de chiffrement de donnes

mthode des courbes elliptiques

fonction dEuler

Euler totient function :

fonction dEuler

M A C (Message Authentification Code) : code d authentification de messages


Number Field Sieve (N FS) :

crible sur corps numrique

Pollards M onte Carlo algorithm :


Secure Hash Algorithm (SH A ) :

algorithme Monte-Carlo de Pollard

algorithme de hachage sr

Secure Hash Standard (SHS) :

standard de hachage sr

absolute rate o f the language :

taux absolu du langage

accrditation :

accrditation

adaptative-chosen-plaintext attack: attaque texte en clair choisi adaptative,


attaque texte en clair choisi dynamique
birthday attack :
blob :

attaque des anniversaires

pt

block chaining :

chanage de blocs

block cipher : algorithme de chiffrement par blocs


block replay :

attaque par blocs rejous

breakable : vulnrable, cassable


brute-force attack : attaque exhaustive
chosen-ciphertext attack : attaque texte chiffr choisi

Lexique anglais-franais
chosen-key attack : attaque clef choisie
chosen-plaintext attack: attaque texte en clair choisi, attaque texte en clair
choisi statique
chosen-text attack : attaque texte choisi
cipher : algorithme cryptographique, chiffre, chiffrement, code
ciphertext : texte chiffr, cryptogramme
ciphertext-only attack : attaque texte chiffr seulement
cleartext : texte en clair
codebook : livre des codes, carnet de codage
coin ffipping : jouer pile ou face
compromise : compromission
computationally secure algorithm : algorithme invulnrable par calcul, algorith
me fort
continued fraction :

fraction continue

cryptanalysis : cryptanalyse
cryptanalyst : cryptanalyste
cryptographer : cryptographe
cryptographie algorithm : algorithme cryptographique, chiffre, chiffrement, code
cryptography : cryptographie
cryptologist : cryptologue
cryptology: cryptologie
cryptosystem : systme cryptographique, cryptosystme, chiffre, code
decrypt (to) : dchiffrer
decryption : dchiffrement, dcryptage, dcodage
decryption algorithm : algorithme de dchiffrement
designated confirmer signature :
dictionary attack :

signature vrificateur ddi

attaque par dictionnaire

double large prime variation o f the multiple polynomial quadratic sieve :


variante 2 grands facteurs premiers du crible quadratique multipolynomial
eavesdropper : oreille indiscrte, espion, mouchard

Lexique anglais-franais
encrypt (to) : chiffrer
encryption: chiffrement, encryption, codage
encryption algorithm : algorithme de chiffrement
end-to-end encryption :

chiffrement de bout en bout233

entrusted undeniable signature :


error extension :

signature incontestable arbitre

amplification derreur

feedback with carry shift register :


framing :

registre dcalage rtroaction avec retenue

encadrement

gloabal dduction : obtentionn globale


group signature :
hard :

signature collective

difficile, dur

homophonie substitution cipher : chiffre substitution homophonique, chiffre


substitution simple reprsentation multiple
host computer :

ordinateur hte

implmentation : ralisation
information dduction : obtention d information
initialization vector : vecteur d initialisation
interlock protocol : protocole cliquets
intractable :

non soluble

introducer :

parrain

key: clef
key crunching :

broyage de clef186

key management :

gestion des clefs

keyspace : espace des clefs


keystream generator :
knapsack algorithm :
knapsack problem :

gnrateur de codons
algorithme empilement

problme d empilement

known-plaintext attack : attaque texte en clair connu

linear congruential generators : gnrateurs linaires congruentiels

Lexique anglais-franais
linear feedback shift register :
link-by-Iink encryption :
linking protocol :

registre dcalage rtroaction linaire

chiffrement lien par lien

protocole de filiation

login: accs
man-in-the-middle attack :
meet-in-the-middle attack :

attaque de lintercepteur
attaque par collisions

message: message
mimic function : fonction mimtique
minimum-disclosure proof :
mix-and-mash :

preuve divulgation minimale

mlange-et-broie

multiple encryption:

surchiffrement

multiple polynomial quadratic sieve :

crible quadratique multipolynomial

multispeed inner-product generator :

gnrateur multivitesse produit scalaire

nonce :

nombre alatoire

obfuscation :

dissimulation

oblivious transfer :

transfert inconscient

obtention locale : obtention locale


one-key algorithm : algorithme clef secrte
one-time pad : masque jetable
padding :
password :

remplissage
mot de passe

plaintext : texte en clair


polyalphabetic substitution cipher : chiffre substitution polyalphabtique
polygram substitution cipher : chiffre substitution simple par polygrammes
privacy : vie prive, confidentialit
private key : clef prive, clef secrte
probabilistic encryption :
proxy signature :

chiffrement probabiliste

signature par procuration

public key : clef publique

Lexique anglais-franais
public-key algorithm : algorithme clef publique, algorithme clef rvle
quadratic sieve :
random noise :

crible quadratique
bruit alatoire, bruit blanc

rate of the language :

taux du langage

receiver: destinataire
relativized cryptography :

cryptographie relativise

restricted algorithm : algorithme restreint


reverse engineering:

reconstruction

rotor machine : machine tambours, machine rotors


sait :

sel, salage

secrecy : confidentialit
secret sharing :

partage de secret

secret splitting :

morcellement de secret, rpartition de secret

secret-key algorithm : algorithme clef secrte


secure multiparty computation :

calcul rparti sr

seed : germe
self-decimated generator :
self-recovering :

gnrateur auto-cadenc

auto-rcuprant

self-shrinking generator :

gnrateur auto-rduction

sender : expditeur, metteur


shrinking generator :

gnrateur rduction

simple substitution cipher : chiffre substitution simple


single-key algorithm : algorithme clef secrte
smart card :

carte puce

stop-and-go generator :

gnrateur signal darrt

stream cipher : algorithme de chiffrement en continu


strong algorithm : algorithme invulnrable par calcul, algorithme fort
strong prime :

nombre premier fort

substitution cipher : chiffre substitution

Bibliographie
superincreasing :

super-croissant

symmetric algorithm : algorithme clef secrte


tap sequence :

squence de drivation

threshold generator :
threshold scheme :
timestamp :

gnrateur seuil

schma seuil

datation (substantif ), dater (verbe)

timestamping service :

service de datation

total break : cassage complet


tractable :
truste:

soluble

dpositaire, fidicommissaire

uncertainty :

incertitude

unconditionally secure : inconditionnellement sr, absolument sr


undeniable signature :
unicity distance :
unicity point :

signature incontestable

distance dunicit

point dunicit

work factor : effort


working frame :

cadre courant

zero-knowledge proof :

preuve divulgation nulle

Vous aimerez peut-être aussi